* [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM
@ 2016-07-06 4:28 Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem() Vignesh R
` (12 more replies)
0 siblings, 13 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
This series converts davinci_spi driver to adapt to driver model
framework. And enables the driver on k2l, k2e, k2hk evms. Also,
added support for davinci_spi on k2g evm.
Tested on k2l, k2e, k2hk and k2g evms.
Resend:
Rebased on top of v2016.07-rc3
Vignesh R (12):
dm: core: implement dev_map_phsymem()
spi: davinci_spi: Convert to driver to adapt to DM
keystone2: spi: do not define DM_SPI and DM_SPI_FLASH for SPL build
ARM: dts: keystone2: add SPI aliases for davinci SPI nodes
ARM: dts: k2hk: Enable Davinci SPI controller
defconfig: k2hk_evm_defconfig: enable SPI driver model
ARM: dts: k2e: Enable Davinci SPI controller
defconfig: k2e_evm_defconfig: enable SPI driver model
ARM: dts: k2l: Enable Davinci SPI controller
defconfig: k2l_evm_defconfig: enable SPI driver model
ARM: dts: k2g: add support for Davinci SPI controller
defconfig: k2g_evm_defconfig: enable SPI driver model
arch/arm/dts/k2e-evm.dts | 3 +-
arch/arm/dts/k2g-evm.dts | 24 +++
arch/arm/dts/k2g.dtsi | 47 +++++
arch/arm/dts/k2hk-evm.dts | 3 +-
arch/arm/dts/k2l-evm.dts | 3 +-
arch/arm/dts/keystone.dtsi | 3 +
configs/k2e_evm_defconfig | 2 +
configs/k2g_evm_defconfig | 2 +
configs/k2hk_evm_defconfig | 2 +
configs/k2l_evm_defconfig | 2 +
drivers/core/device.c | 11 ++
drivers/spi/davinci_spi.c | 329 +++++++++++++++++++++++++----------
include/configs/ti_armv7_keystone2.h | 4 +
include/dm/device.h | 13 ++
14 files changed, 356 insertions(+), 92 deletions(-)
--
2.9.0
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem()
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
@ 2016-07-06 4:28 ` Vignesh R
2016-07-06 23:19 ` Simon Glass
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v6 02/12] spi: davinci_spi: Convert to driver to adapt to DM Vignesh R
` (11 subsequent siblings)
12 siblings, 1 reply; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
This API helps to map physical register addresss pace of device to
virtual address space easily. Its just a wrapper around map_physmem()
with MAP_NOCACHE flag.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Suggested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jagan Teki <jteki@openedev.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
drivers/core/device.c | 11 +++++++++++
include/dm/device.h | 13 +++++++++++++
2 files changed, 24 insertions(+)
diff --git a/drivers/core/device.c b/drivers/core/device.c
index eb75b1734f9b..f7fb0cc0fa7c 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <asm/io.h>
#include <fdtdec.h>
#include <fdt_support.h>
#include <malloc.h>
@@ -697,6 +698,16 @@ void *dev_get_addr_ptr(struct udevice *dev)
return (void *)(uintptr_t)dev_get_addr_index(dev, 0);
}
+void *dev_map_physmem(struct udevice *dev, unsigned long size)
+{
+ fdt_addr_t addr = dev_get_addr(dev);
+
+ if (addr == FDT_ADDR_T_NONE)
+ return NULL;
+
+ return map_physmem(addr, size, MAP_NOCACHE);
+}
+
bool device_has_children(struct udevice *dev)
{
return !list_empty(&dev->child_head);
diff --git a/include/dm/device.h b/include/dm/device.h
index f03bcd3b49ee..1bfcf3bcbc01 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -467,6 +467,19 @@ fdt_addr_t dev_get_addr(struct udevice *dev);
void *dev_get_addr_ptr(struct udevice *dev);
/**
+ * dev_map_physmem() - Read device address from reg property of the
+ * device node and map the address into CPU address
+ * space.
+ *
+ * @dev: Pointer to device
+ * @size: size of the memory to map
+ *
+ * @return mapped address, or NULL if the device does not have reg
+ * property.
+ */
+void *dev_map_physmem(struct udevice *dev, unsigned long size);
+
+/**
* dev_get_addr_index() - Get the indexed reg property of a device
*
* @dev: Pointer to a device
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v6 02/12] spi: davinci_spi: Convert to driver to adapt to DM
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem() Vignesh R
@ 2016-07-06 4:28 ` Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 03/12] keystone2: spi: do not define DM_SPI and DM_SPI_FLASH for SPL build Vignesh R
` (10 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
Convert davinci_spi driver so that it complies with SPI DM framework.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
drivers/spi/davinci_spi.c | 329 +++++++++++++++++++++++++++++++++-------------
1 file changed, 240 insertions(+), 89 deletions(-)
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index 0bd4f88926f1..20aa99a451dc 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -14,6 +14,7 @@
#include <malloc.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
+#include <dm.h>
/* SPIGCR0 */
#define SPIGCR0_SPIENA_MASK 0x1
@@ -51,6 +52,7 @@
/* SPIDEF */
#define SPIDEF_CSDEF0_MASK BIT(0)
+#ifndef CONFIG_DM_SPI
#define SPI0_BUS 0
#define SPI0_BASE CONFIG_SYS_SPI_BASE
/*
@@ -83,6 +85,9 @@
#define SPI2_NUM_CS CONFIG_SYS_SPI2_NUM_CS
#define SPI2_BASE CONFIG_SYS_SPI2_BASE
#endif
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
/* davinci spi register set */
struct davinci_spi_regs {
@@ -114,16 +119,17 @@ struct davinci_spi_regs {
/* davinci spi slave */
struct davinci_spi_slave {
+#ifndef CONFIG_DM_SPI
struct spi_slave slave;
+#endif
struct davinci_spi_regs *regs;
- unsigned int freq;
+ unsigned int freq; /* current SPI bus frequency */
+ unsigned int mode; /* current SPI mode used */
+ u8 num_cs; /* total no. of CS available */
+ u8 cur_cs; /* CS of current slave */
+ bool half_duplex; /* true, if master is half-duplex only */
};
-static inline struct davinci_spi_slave *to_davinci_spi(struct spi_slave *slave)
-{
- return container_of(slave, struct davinci_spi_slave, slave);
-}
-
/*
* This functions needs to act like a macro to avoid pipeline reloads in the
* loops below. Use always_inline. This gains us about 160KiB/s and the bloat
@@ -144,15 +150,14 @@ static inline u32 davinci_spi_xfer_data(struct davinci_spi_slave *ds, u32 data)
return buf_reg_val;
}
-static int davinci_spi_read(struct spi_slave *slave, unsigned int len,
+static int davinci_spi_read(struct davinci_spi_slave *ds, unsigned int len,
u8 *rxp, unsigned long flags)
{
- struct davinci_spi_slave *ds = to_davinci_spi(slave);
unsigned int data1_reg_val;
/* enable CS hold, CS[n] and clear the data bits */
data1_reg_val = ((1 << SPIDAT1_CSHOLD_SHIFT) |
- (slave->cs << SPIDAT1_CSNR_SHIFT));
+ (ds->cur_cs << SPIDAT1_CSNR_SHIFT));
/* wait till TXFULL is deasserted */
while (readl(&ds->regs->buf) & SPIBUF_TXFULL_MASK)
@@ -175,15 +180,14 @@ static int davinci_spi_read(struct spi_slave *slave, unsigned int len,
return 0;
}
-static int davinci_spi_write(struct spi_slave *slave, unsigned int len,
+static int davinci_spi_write(struct davinci_spi_slave *ds, unsigned int len,
const u8 *txp, unsigned long flags)
{
- struct davinci_spi_slave *ds = to_davinci_spi(slave);
unsigned int data1_reg_val;
/* enable CS hold and clear the data bits */
data1_reg_val = ((1 << SPIDAT1_CSHOLD_SHIFT) |
- (slave->cs << SPIDAT1_CSNR_SHIFT));
+ (ds->cur_cs << SPIDAT1_CSNR_SHIFT));
/* wait till TXFULL is deasserted */
while (readl(&ds->regs->buf) & SPIBUF_TXFULL_MASK)
@@ -209,16 +213,15 @@ static int davinci_spi_write(struct spi_slave *slave, unsigned int len,
return 0;
}
-#ifndef CONFIG_SPI_HALF_DUPLEX
-static int davinci_spi_read_write(struct spi_slave *slave, unsigned int len,
- u8 *rxp, const u8 *txp, unsigned long flags)
+static int davinci_spi_read_write(struct davinci_spi_slave *ds, unsigned
+ int len, u8 *rxp, const u8 *txp,
+ unsigned long flags)
{
- struct davinci_spi_slave *ds = to_davinci_spi(slave);
unsigned int data1_reg_val;
/* enable CS hold and clear the data bits */
data1_reg_val = ((1 << SPIDAT1_CSHOLD_SHIFT) |
- (slave->cs << SPIDAT1_CSNR_SHIFT));
+ (ds->cur_cs << SPIDAT1_CSNR_SHIFT));
/* wait till TXFULL is deasserted */
while (readl(&ds->regs->buf) & SPIBUF_TXFULL_MASK)
@@ -237,7 +240,115 @@ static int davinci_spi_read_write(struct spi_slave *slave, unsigned int len,
return 0;
}
-#endif
+
+
+static int __davinci_spi_claim_bus(struct davinci_spi_slave *ds, int cs)
+{
+ unsigned int mode = 0, scalar;
+
+ /* Enable the SPI hardware */
+ writel(SPIGCR0_SPIRST_MASK, &ds->regs->gcr0);
+ udelay(1000);
+ writel(SPIGCR0_SPIENA_MASK, &ds->regs->gcr0);
+
+ /* Set master mode, powered up and not activated */
+ writel(SPIGCR1_MASTER_MASK | SPIGCR1_CLKMOD_MASK, &ds->regs->gcr1);
+
+ /* CS, CLK, SIMO and SOMI are functional pins */
+ writel(((1 << cs) | SPIPC0_CLKFUN_MASK |
+ SPIPC0_DOFUN_MASK | SPIPC0_DIFUN_MASK), &ds->regs->pc0);
+
+ /* setup format */
+ scalar = ((CONFIG_SYS_SPI_CLK / ds->freq) - 1) & 0xFF;
+
+ /*
+ * Use following format:
+ * character length = 8,
+ * MSB shifted out first
+ */
+ if (ds->mode & SPI_CPOL)
+ mode |= SPI_CPOL;
+ if (!(ds->mode & SPI_CPHA))
+ mode |= SPI_CPHA;
+ writel(8 | (scalar << SPIFMT_PRESCALE_SHIFT) |
+ (mode << SPIFMT_PHASE_SHIFT), &ds->regs->fmt0);
+
+ /*
+ * Including a minor delay. No science here. Should be good even with
+ * no delay
+ */
+ writel((50 << SPI_C2TDELAY_SHIFT) |
+ (50 << SPI_T2CDELAY_SHIFT), &ds->regs->delay);
+
+ /* default chip select register */
+ writel(SPIDEF_CSDEF0_MASK, &ds->regs->def);
+
+ /* no interrupts */
+ writel(0, &ds->regs->int0);
+ writel(0, &ds->regs->lvl);
+
+ /* enable SPI */
+ writel((readl(&ds->regs->gcr1) | SPIGCR1_SPIENA_MASK), &ds->regs->gcr1);
+
+ return 0;
+}
+
+static int __davinci_spi_release_bus(struct davinci_spi_slave *ds)
+{
+ /* Disable the SPI hardware */
+ writel(SPIGCR0_SPIRST_MASK, &ds->regs->gcr0);
+
+ return 0;
+}
+
+static int __davinci_spi_xfer(struct davinci_spi_slave *ds,
+ unsigned int bitlen, const void *dout, void *din,
+ unsigned long flags)
+{
+ unsigned int len;
+
+ if (bitlen == 0)
+ /* Finish any previously submitted transfers */
+ goto out;
+
+ /*
+ * It's not clear how non-8-bit-aligned transfers are supposed to be
+ * represented as a stream of bytes...this is a limitation of
+ * the current SPI interface - here we terminate on receiving such a
+ * transfer request.
+ */
+ if (bitlen % 8) {
+ /* Errors always terminate an ongoing transfer */
+ flags |= SPI_XFER_END;
+ goto out;
+ }
+
+ len = bitlen / 8;
+
+ if (!dout)
+ return davinci_spi_read(ds, len, din, flags);
+ if (!din)
+ return davinci_spi_write(ds, len, dout, flags);
+ if (!ds->half_duplex)
+ return davinci_spi_read_write(ds, len, din, dout, flags);
+
+ printf("SPI full duplex not supported\n");
+ flags |= SPI_XFER_END;
+
+out:
+ if (flags & SPI_XFER_END) {
+ u8 dummy = 0;
+ davinci_spi_write(ds, 1, &dummy, flags);
+ }
+ return 0;
+}
+
+#ifndef CONFIG_DM_SPI
+
+static inline struct davinci_spi_slave *to_davinci_spi(struct spi_slave *slave)
+{
+ return container_of(slave, struct davinci_spi_slave, slave);
+}
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
{
@@ -313,6 +424,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
}
ds->freq = max_hz;
+ ds->mode = mode;
return &ds->slave;
}
@@ -324,104 +436,143 @@ void spi_free_slave(struct spi_slave *slave)
free(ds);
}
+int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
+ const void *dout, void *din, unsigned long flags)
+{
+ struct davinci_spi_slave *ds = to_davinci_spi(slave);
+
+ ds->cur_cs = slave->cs;
+
+ return __davinci_spi_xfer(ds, bitlen, dout, din, flags);
+}
+
int spi_claim_bus(struct spi_slave *slave)
{
struct davinci_spi_slave *ds = to_davinci_spi(slave);
- unsigned int scalar;
- /* Enable the SPI hardware */
- writel(SPIGCR0_SPIRST_MASK, &ds->regs->gcr0);
- udelay(1000);
- writel(SPIGCR0_SPIENA_MASK, &ds->regs->gcr0);
+#ifdef CONFIG_SPI_HALF_DUPLEX
+ ds->half_duplex = true;
+#else
+ ds->half_duplex = false;
+#endif
+ return __davinci_spi_claim_bus(ds, ds->slave.cs);
+}
- /* Set master mode, powered up and not activated */
- writel(SPIGCR1_MASTER_MASK | SPIGCR1_CLKMOD_MASK, &ds->regs->gcr1);
+void spi_release_bus(struct spi_slave *slave)
+{
+ struct davinci_spi_slave *ds = to_davinci_spi(slave);
- /* CS, CLK, SIMO and SOMI are functional pins */
- writel(((1 << slave->cs) | SPIPC0_CLKFUN_MASK |
- SPIPC0_DOFUN_MASK | SPIPC0_DIFUN_MASK), &ds->regs->pc0);
+ __davinci_spi_release_bus(ds);
+}
- /* setup format */
- scalar = ((CONFIG_SYS_SPI_CLK / ds->freq) - 1) & 0xFF;
+#else
+static int davinci_spi_set_speed(struct udevice *bus, uint max_hz)
+{
+ struct davinci_spi_slave *ds = dev_get_priv(bus);
- /*
- * Use following format:
- * character length = 8,
- * clock signal delayed by half clk cycle,
- * clock low in idle state - Mode 0,
- * MSB shifted out first
- */
- writel(8 | (scalar << SPIFMT_PRESCALE_SHIFT) |
- (1 << SPIFMT_PHASE_SHIFT), &ds->regs->fmt0);
+ debug("%s speed %u\n", __func__, max_hz);
+ if (max_hz > CONFIG_SYS_SPI_CLK / 2)
+ return -EINVAL;
- /*
- * Including a minor delay. No science here. Should be good even with
- * no delay
- */
- writel((50 << SPI_C2TDELAY_SHIFT) |
- (50 << SPI_T2CDELAY_SHIFT), &ds->regs->delay);
+ ds->freq = max_hz;
- /* default chip select register */
- writel(SPIDEF_CSDEF0_MASK, &ds->regs->def);
+ return 0;
+}
- /* no interrupts */
- writel(0, &ds->regs->int0);
- writel(0, &ds->regs->lvl);
+static int davinci_spi_set_mode(struct udevice *bus, uint mode)
+{
+ struct davinci_spi_slave *ds = dev_get_priv(bus);
- /* enable SPI */
- writel((readl(&ds->regs->gcr1) | SPIGCR1_SPIENA_MASK), &ds->regs->gcr1);
+ debug("%s mode %u\n", __func__, mode);
+ ds->mode = mode;
return 0;
}
-void spi_release_bus(struct spi_slave *slave)
+static int davinci_spi_claim_bus(struct udevice *dev)
{
- struct davinci_spi_slave *ds = to_davinci_spi(slave);
+ struct dm_spi_slave_platdata *slave_plat =
+ dev_get_parent_platdata(dev);
+ struct udevice *bus = dev->parent;
+ struct davinci_spi_slave *ds = dev_get_priv(bus);
+
+ if (slave_plat->cs >= ds->num_cs) {
+ printf("Invalid SPI chipselect\n");
+ return -EINVAL;
+ }
+ ds->half_duplex = slave_plat->mode & SPI_PREAMBLE;
- /* Disable the SPI hardware */
- writel(SPIGCR0_SPIRST_MASK, &ds->regs->gcr0);
+ return __davinci_spi_claim_bus(ds, slave_plat->cs);
}
-int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
- const void *dout, void *din, unsigned long flags)
+static int davinci_spi_release_bus(struct udevice *dev)
{
- unsigned int len;
+ struct davinci_spi_slave *ds = dev_get_priv(dev->parent);
- if (bitlen == 0)
- /* Finish any previously submitted transfers */
- goto out;
+ return __davinci_spi_release_bus(ds);
+}
- /*
- * It's not clear how non-8-bit-aligned transfers are supposed to be
- * represented as a stream of bytes...this is a limitation of
- * the current SPI interface - here we terminate on receiving such a
- * transfer request.
- */
- if (bitlen % 8) {
- /* Errors always terminate an ongoing transfer */
- flags |= SPI_XFER_END;
- goto out;
+static int davinci_spi_xfer(struct udevice *dev, unsigned int bitlen,
+ const void *dout, void *din,
+ unsigned long flags)
+{
+ struct dm_spi_slave_platdata *slave =
+ dev_get_parent_platdata(dev);
+ struct udevice *bus = dev->parent;
+ struct davinci_spi_slave *ds = dev_get_priv(bus);
+
+ if (slave->cs >= ds->num_cs) {
+ printf("Invalid SPI chipselect\n");
+ return -EINVAL;
}
+ ds->cur_cs = slave->cs;
- len = bitlen / 8;
+ return __davinci_spi_xfer(ds, bitlen, dout, din, flags);
+}
- if (!dout)
- return davinci_spi_read(slave, len, din, flags);
- else if (!din)
- return davinci_spi_write(slave, len, dout, flags);
-#ifndef CONFIG_SPI_HALF_DUPLEX
- else
- return davinci_spi_read_write(slave, len, din, dout, flags);
-#else
- printf("SPI full duplex transaction requested with "
- "CONFIG_SPI_HALF_DUPLEX defined.\n");
- flags |= SPI_XFER_END;
-#endif
+static int davinci_spi_probe(struct udevice *bus)
+{
+ /* Nothing to do */
+ return 0;
+}
-out:
- if (flags & SPI_XFER_END) {
- u8 dummy = 0;
- davinci_spi_write(slave, 1, &dummy, flags);
+static int davinci_ofdata_to_platadata(struct udevice *bus)
+{
+ struct davinci_spi_slave *ds = dev_get_priv(bus);
+ const void *blob = gd->fdt_blob;
+ int node = bus->of_offset;
+
+ ds->regs = dev_map_physmem(bus, sizeof(struct davinci_spi_regs));
+ if (!ds->regs) {
+ printf("%s: could not map device address\n", __func__);
+ return -EINVAL;
}
+ ds->num_cs = fdtdec_get_int(blob, node, "num-cs", 4);
+
return 0;
}
+
+static const struct dm_spi_ops davinci_spi_ops = {
+ .claim_bus = davinci_spi_claim_bus,
+ .release_bus = davinci_spi_release_bus,
+ .xfer = davinci_spi_xfer,
+ .set_speed = davinci_spi_set_speed,
+ .set_mode = davinci_spi_set_mode,
+};
+
+static const struct udevice_id davinci_spi_ids[] = {
+ { .compatible = "ti,keystone-spi" },
+ { .compatible = "ti,dm6441-spi" },
+ { }
+};
+
+U_BOOT_DRIVER(davinci_spi) = {
+ .name = "davinci_spi",
+ .id = UCLASS_SPI,
+ .of_match = davinci_spi_ids,
+ .ops = &davinci_spi_ops,
+ .ofdata_to_platdata = davinci_ofdata_to_platadata,
+ .priv_auto_alloc_size = sizeof(struct davinci_spi_slave),
+ .probe = davinci_spi_probe,
+};
+#endif
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 03/12] keystone2: spi: do not define DM_SPI and DM_SPI_FLASH for SPL build
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem() Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v6 02/12] spi: davinci_spi: Convert to driver to adapt to DM Vignesh R
@ 2016-07-06 4:28 ` Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 04/12] ARM: dts: keystone2: add SPI aliases for davinci SPI nodes Vignesh R
` (9 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
Since Keystone2 devices do not have support DM in SPL, do not define
DM_SPI and DM_SPI_FLASH for SPL build.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
include/configs/ti_armv7_keystone2.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
index 2ee26c403670..4aa262e1a871 100644
--- a/include/configs/ti_armv7_keystone2.h
+++ b/include/configs/ti_armv7_keystone2.h
@@ -89,6 +89,10 @@
#define CONFIG_SYS_SPI2
#define CONFIG_SYS_SPI2_BASE KS2_SPI2_BASE
#define CONFIG_SYS_SPI2_NUM_CS 4
+#ifdef CONFIG_SPL_BUILD
+#undef CONFIG_DM_SPI
+#undef CONFIG_DM_SPI_FLASH
+#endif
/* Network Configuration */
#define CONFIG_PHYLIB
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 04/12] ARM: dts: keystone2: add SPI aliases for davinci SPI nodes
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (2 preceding siblings ...)
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 03/12] keystone2: spi: do not define DM_SPI and DM_SPI_FLASH for SPL build Vignesh R
@ 2016-07-06 4:28 ` Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 05/12] ARM: dts: k2hk: Enable Davinci SPI controller Vignesh R
` (8 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
Add aliases for SPI nodes in order for it to be probed by the DM
framework.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
arch/arm/dts/keystone.dtsi | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/dts/keystone.dtsi b/arch/arm/dts/keystone.dtsi
index f39b969f8d43..be97f3f21f92 100644
--- a/arch/arm/dts/keystone.dtsi
+++ b/arch/arm/dts/keystone.dtsi
@@ -19,6 +19,9 @@
aliases {
serial0 = &uart0;
+ spi0 = &spi0;
+ spi1 = &spi1;
+ spi2 = &spi2;
};
chosen {
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 05/12] ARM: dts: k2hk: Enable Davinci SPI controller
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (3 preceding siblings ...)
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 04/12] ARM: dts: keystone2: add SPI aliases for davinci SPI nodes Vignesh R
@ 2016-07-06 4:28 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 06/12] defconfig: k2hk_evm_defconfig: enable SPI driver model Vignesh R
` (7 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:28 UTC (permalink / raw)
To: u-boot
Now that davinci_spi driver has been converted to DM framework, enable
the same in DT. Also add "spi-flash" as compatible property to
n25q128a11 node as it is required for flash device to be probed in
U-Boot.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
arch/arm/dts/k2hk-evm.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/k2hk-evm.dts b/arch/arm/dts/k2hk-evm.dts
index 660ebf58d547..c5cad2c9da80 100644
--- a/arch/arm/dts/k2hk-evm.dts
+++ b/arch/arm/dts/k2hk-evm.dts
@@ -147,10 +147,11 @@
};
&spi0 {
+ status = "okay";
nor_flash: n25q128a11 at 0 {
#address-cells = <1>;
#size-cells = <1>;
- compatible = "Micron,n25q128a11";
+ compatible = "Micron,n25q128a11", "spi-flash";
spi-max-frequency = <54000000>;
m25p,fast-read;
reg = <0>;
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 06/12] defconfig: k2hk_evm_defconfig: enable SPI driver model
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (4 preceding siblings ...)
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 05/12] ARM: dts: k2hk: Enable Davinci SPI controller Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 07/12] ARM: dts: k2e: Enable Davinci SPI controller Vignesh R
` (6 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Enable SPI and SPI Flash driver model as K2HK SPI controller driver
supports driver model.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
configs/k2hk_evm_defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
index 278eaf32fd8d..8623e1ca88d5 100644
--- a/configs/k2hk_evm_defconfig
+++ b/configs/k2hk_evm_defconfig
@@ -28,6 +28,8 @@ CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y
CONFIG_DM=y
CONFIG_TI_AEMIF=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_DM_ETH=y
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 07/12] ARM: dts: k2e: Enable Davinci SPI controller
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (5 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 06/12] defconfig: k2hk_evm_defconfig: enable SPI driver model Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 08/12] defconfig: k2e_evm_defconfig: enable SPI driver model Vignesh R
` (5 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Now that davinci_spi driver has been converted to DM framework, enable
the same in DT. Also add "spi-flash" as compatible property to
n25q128a11 node as it is required for flash device to be probed in
U-Boot.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
arch/arm/dts/k2e-evm.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/k2e-evm.dts b/arch/arm/dts/k2e-evm.dts
index 50c83c21d911..e2c3fb49102a 100644
--- a/arch/arm/dts/k2e-evm.dts
+++ b/arch/arm/dts/k2e-evm.dts
@@ -119,10 +119,11 @@
};
&spi0 {
+ status = "okay";
nor_flash: n25q128a11 at 0 {
#address-cells = <1>;
#size-cells = <1>;
- compatible = "Micron,n25q128a11";
+ compatible = "Micron,n25q128a11", "spi-flash";
spi-max-frequency = <54000000>;
m25p,fast-read;
reg = <0>;
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 08/12] defconfig: k2e_evm_defconfig: enable SPI driver model
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (6 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 07/12] ARM: dts: k2e: Enable Davinci SPI controller Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 09/12] ARM: dts: k2l: Enable Davinci SPI controller Vignesh R
` (4 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Enable SPI and SPI Flash driver model as K2E SPI controller driver
supports driver model.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
configs/k2e_evm_defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
index 9fcdfe9b9fa7..65561b1393ee 100644
--- a/configs/k2e_evm_defconfig
+++ b/configs/k2e_evm_defconfig
@@ -28,6 +28,8 @@ CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y
CONFIG_DM=y
CONFIG_TI_AEMIF=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_DM_ETH=y
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 09/12] ARM: dts: k2l: Enable Davinci SPI controller
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (7 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 08/12] defconfig: k2e_evm_defconfig: enable SPI driver model Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 10/12] defconfig: k2l_evm_defconfig: enable SPI driver model Vignesh R
` (3 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Now that davinci_spi driver has been converted to DM framework, enable
the same in DT. Also add "spi-flash" as compatible property to
n25q128a11 node as it is required for flash device to be probed in
U-Boot.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
arch/arm/dts/k2l-evm.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/k2l-evm.dts b/arch/arm/dts/k2l-evm.dts
index 9a69a6b55374..da0661ba3e8a 100644
--- a/arch/arm/dts/k2l-evm.dts
+++ b/arch/arm/dts/k2l-evm.dts
@@ -96,10 +96,11 @@
};
&spi0 {
+ status ="okay";
nor_flash: n25q128a11 at 0 {
#address-cells = <1>;
#size-cells = <1>;
- compatible = "Micron,n25q128a11";
+ compatible = "Micron,n25q128a11", "spi-flash";
spi-max-frequency = <54000000>;
m25p,fast-read;
reg = <0>;
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 10/12] defconfig: k2l_evm_defconfig: enable SPI driver model
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (8 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 09/12] ARM: dts: k2l: Enable Davinci SPI controller Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 11/12] ARM: dts: k2g: add support for Davinci SPI controller Vignesh R
` (2 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Enable SPI and SPI Flash driver model as K2L SPI controller driver
supports driver model.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
configs/k2l_evm_defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configs/k2l_evm_defconfig b/configs/k2l_evm_defconfig
index 8417e0ab0758..9aa429cf5fc0 100644
--- a/configs/k2l_evm_defconfig
+++ b/configs/k2l_evm_defconfig
@@ -28,6 +28,8 @@ CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y
CONFIG_DM=y
CONFIG_TI_AEMIF=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_DM_ETH=y
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 11/12] ARM: dts: k2g: add support for Davinci SPI controller
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (9 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 10/12] defconfig: k2l_evm_defconfig: enable SPI driver model Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model Vignesh R
2016-07-06 7:25 ` [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Jagan Teki
12 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
K2G SoC has 4 SPI instances that are compatible with davinci_spi
controller(present on previous generation of Keystone2 devices). Add DT
nodes for the same. K2G EVM has a N25Q128A13 SPI NOR flash connected on
SPI-1. Add DT bindings for the same.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
---
arch/arm/dts/k2g-evm.dts | 24 ++++++++++++++++++++++++
arch/arm/dts/k2g.dtsi | 47 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 71 insertions(+)
diff --git a/arch/arm/dts/k2g-evm.dts b/arch/arm/dts/k2g-evm.dts
index 0ca36ef39ad3..38ca7ae1b6b9 100644
--- a/arch/arm/dts/k2g-evm.dts
+++ b/arch/arm/dts/k2g-evm.dts
@@ -31,3 +31,27 @@
&gbe0 {
phy-handle = <ðphy0>;
};
+
+&spi1 {
+ status = "okay";
+
+ spi_nor: flash at 0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "spi-flash";
+ spi-max-frequency = <50000000>;
+ m25p,fast-read;
+ reg = <0>;
+
+ partition at 0 {
+ label = "u-boot-spl";
+ reg = <0x0 0x80000>;
+ read-only;
+ };
+
+ partition at 1 {
+ label = "misc";
+ reg = <0x80000 0xf80000>;
+ };
+ };
+};
diff --git a/arch/arm/dts/k2g.dtsi b/arch/arm/dts/k2g.dtsi
index a3ed444d3c31..88b1a8e998ac 100644
--- a/arch/arm/dts/k2g.dtsi
+++ b/arch/arm/dts/k2g.dtsi
@@ -19,6 +19,10 @@
aliases {
serial0 = &uart0;
+ spi0 = &spi0;
+ spi1 = &spi1;
+ spi2 = &spi2;
+ spi3 = &spi3;
};
memory {
@@ -88,5 +92,48 @@
ti,lpsc_module = <1>;
};
+ spi0: spi at 21805400 {
+ compatible = "ti,keystone-spi", "ti,dm6441-spi";
+ reg = <0x21805400 0x200>;
+ num-cs = <4>;
+ ti,davinci-spi-intr-line = <0>;
+ interrupts = <GIC_SPI 64 IRQ_TYPE_EDGE_RISING>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ spi1: spi at 21805800 {
+ compatible = "ti,keystone-spi", "ti,dm6441-spi";
+ reg = <0x21805800 0x200>;
+ num-cs = <4>;
+ ti,davinci-spi-intr-line = <0>;
+ interrupts = <GIC_SPI 66 IRQ_TYPE_EDGE_RISING>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ spi2: spi at 21805c00 {
+ compatible = "ti,keystone-spi", "ti,dm6441-spi";
+ reg = <0x21805C00 0x200>;
+ num-cs = <4>;
+ ti,davinci-spi-intr-line = <0>;
+ interrupts = <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ spi3: spi at 21806000 {
+ compatible = "ti,keystone-spi", "ti,dm6441-spi";
+ reg = <0x21806000 0x200>;
+ num-cs = <4>;
+ ti,davinci-spi-intr-line = <0>;
+ interrupts = <GIC_SPI 70 IRQ_TYPE_EDGE_RISING>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
};
};
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (10 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 11/12] ARM: dts: k2g: add support for Davinci SPI controller Vignesh R
@ 2016-07-06 4:29 ` Vignesh R
2016-07-06 7:16 ` Jagan Teki
2016-07-06 7:25 ` [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Jagan Teki
12 siblings, 1 reply; 18+ messages in thread
From: Vignesh R @ 2016-07-06 4:29 UTC (permalink / raw)
To: u-boot
Enable SPI and SPI Flash driver model as K2G SPI controller driver
supports driver model.
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
---
configs/k2g_evm_defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index 8efa58c8c43a..802eeee882bd 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -27,6 +27,8 @@ CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y
CONFIG_DM=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_DM_ETH=y
--
2.9.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model Vignesh R
@ 2016-07-06 7:16 ` Jagan Teki
0 siblings, 0 replies; 18+ messages in thread
From: Jagan Teki @ 2016-07-06 7:16 UTC (permalink / raw)
To: u-boot
On 6 July 2016 at 09:59, Vignesh R <vigneshr@ti.com> wrote:
> Enable SPI and SPI Flash driver model as K2G SPI controller driver
> supports driver model.
>
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Jagan Teki <jteki@openedev.com>
thanks!
--
Jagan.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
` (11 preceding siblings ...)
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model Vignesh R
@ 2016-07-06 7:25 ` Jagan Teki
12 siblings, 0 replies; 18+ messages in thread
From: Jagan Teki @ 2016-07-06 7:25 UTC (permalink / raw)
To: u-boot
On 6 July 2016 at 09:58, Vignesh R <vigneshr@ti.com> wrote:
>
> This series converts davinci_spi driver to adapt to driver model
> framework. And enables the driver on k2l, k2e, k2hk evms. Also,
> added support for davinci_spi on k2g evm.
>
> Tested on k2l, k2e, k2hk and k2g evms.
>
> Resend:
> Rebased on top of v2016.07-rc3
Applied to u-boot-spi/master
--
Jagan.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem()
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem() Vignesh R
@ 2016-07-06 23:19 ` Simon Glass
2016-07-09 14:50 ` Jagan Teki
0 siblings, 1 reply; 18+ messages in thread
From: Simon Glass @ 2016-07-06 23:19 UTC (permalink / raw)
To: u-boot
Hi,
On 5 July 2016 at 22:28, Vignesh R <vigneshr@ti.com> wrote:
> This API helps to map physical register addresss pace of device to
> virtual address space easily. Its just a wrapper around map_physmem()
> with MAP_NOCACHE flag.
>
nit: dev_map_physmem() in the subject
> Signed-off-by: Vignesh R <vigneshr@ti.com>
> Suggested-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Jagan Teki <jteki@openedev.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> ---
> drivers/core/device.c | 11 +++++++++++
> include/dm/device.h | 13 +++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index eb75b1734f9b..f7fb0cc0fa7c 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -10,6 +10,7 @@
> */
>
> #include <common.h>
> +#include <asm/io.h>
> #include <fdtdec.h>
> #include <fdt_support.h>
> #include <malloc.h>
> @@ -697,6 +698,16 @@ void *dev_get_addr_ptr(struct udevice *dev)
> return (void *)(uintptr_t)dev_get_addr_index(dev, 0);
> }
>
> +void *dev_map_physmem(struct udevice *dev, unsigned long size)
> +{
> + fdt_addr_t addr = dev_get_addr(dev);
> +
> + if (addr == FDT_ADDR_T_NONE)
> + return NULL;
> +
> + return map_physmem(addr, size, MAP_NOCACHE);
> +}
> +
> bool device_has_children(struct udevice *dev)
> {
> return !list_empty(&dev->child_head);
> diff --git a/include/dm/device.h b/include/dm/device.h
> index f03bcd3b49ee..1bfcf3bcbc01 100644
> --- a/include/dm/device.h
> +++ b/include/dm/device.h
> @@ -467,6 +467,19 @@ fdt_addr_t dev_get_addr(struct udevice *dev);
> void *dev_get_addr_ptr(struct udevice *dev);
>
> /**
> + * dev_map_physmem() - Read device address from reg property of the
> + * device node and map the address into CPU address
> + * space.
> + *
> + * @dev: Pointer to device
> + * @size: size of the memory to map
> + *
> + * @return mapped address, or NULL if the device does not have reg
> + * property.
> + */
> +void *dev_map_physmem(struct udevice *dev, unsigned long size);
> +
> +/**
> * dev_get_addr_index() - Get the indexed reg property of a device
> *
> * @dev: Pointer to a device
> --
> 2.9.0
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem()
2016-07-06 23:19 ` Simon Glass
@ 2016-07-09 14:50 ` Jagan Teki
2016-07-11 4:39 ` Vignesh R
0 siblings, 1 reply; 18+ messages in thread
From: Jagan Teki @ 2016-07-09 14:50 UTC (permalink / raw)
To: u-boot
On 7 July 2016 at 04:49, Simon Glass <sjg@chromium.org> wrote:
> Hi,
>
> On 5 July 2016 at 22:28, Vignesh R <vigneshr@ti.com> wrote:
>> This API helps to map physical register addresss pace of device to
>> virtual address space easily. Its just a wrapper around map_physmem()
>> with MAP_NOCACHE flag.
>>
>
> nit: dev_map_physmem() in the subject
Thanks for the nit Simon, updated the same!
--
Jagan.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem()
2016-07-09 14:50 ` Jagan Teki
@ 2016-07-11 4:39 ` Vignesh R
0 siblings, 0 replies; 18+ messages in thread
From: Vignesh R @ 2016-07-11 4:39 UTC (permalink / raw)
To: u-boot
On Saturday 09 July 2016 08:20 PM, Jagan Teki wrote:
> On 7 July 2016 at 04:49, Simon Glass <sjg@chromium.org> wrote:
>> Hi,
>>
>> On 5 July 2016 at 22:28, Vignesh R <vigneshr@ti.com> wrote:
>>> This API helps to map physical register addresss pace of device to
>>> virtual address space easily. Its just a wrapper around map_physmem()
>>> with MAP_NOCACHE flag.
>>>
>>
>> nit: dev_map_physmem() in the subject
>
> Thanks for the nit Simon, updated the same!
>
Thanks for fixing this!
--
Regards
Vignesh
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2016-07-11 4:39 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-06 4:28 [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v5 01/12] dm: core: implement dev_map_phsymem() Vignesh R
2016-07-06 23:19 ` Simon Glass
2016-07-09 14:50 ` Jagan Teki
2016-07-11 4:39 ` Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v6 02/12] spi: davinci_spi: Convert to driver to adapt to DM Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 03/12] keystone2: spi: do not define DM_SPI and DM_SPI_FLASH for SPL build Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 04/12] ARM: dts: keystone2: add SPI aliases for davinci SPI nodes Vignesh R
2016-07-06 4:28 ` [U-Boot] [RESEND PATCH v3 05/12] ARM: dts: k2hk: Enable Davinci SPI controller Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 06/12] defconfig: k2hk_evm_defconfig: enable SPI driver model Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 07/12] ARM: dts: k2e: Enable Davinci SPI controller Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 08/12] defconfig: k2e_evm_defconfig: enable SPI driver model Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 09/12] ARM: dts: k2l: Enable Davinci SPI controller Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 10/12] defconfig: k2l_evm_defconfig: enable SPI driver model Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 11/12] ARM: dts: k2g: add support for Davinci SPI controller Vignesh R
2016-07-06 4:29 ` [U-Boot] [RESEND PATCH v3 12/12] defconfig: k2g_evm_defconfig: enable SPI driver model Vignesh R
2016-07-06 7:16 ` Jagan Teki
2016-07-06 7:25 ` [U-Boot] [RESEND PATCH v3 00/12] Convert davinci_spi to DM Jagan Teki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.