Skip to contentSkip to conversation

davinci: Add SPI support for da8xx platforms

PATCH New Michael Williamson 3 participants 14 messages Feb 1, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover davinci: Add SPI support for da8xx platforms

This patch series adds the necessary SPI resources and registration routines for da850/OMAP-L138/AM18x and da830/OMAP-L137/AM17x devices. It also adds on-board SPI FLASH devices for the da830 evm, the da850 evm, and the MityDSP-L138/MityARM-1808 platforms.

These patches are based on work done during testing of davinci SPI driver submissions incorporated in version 2.6.38 of the kernel, at [1].

The da850 and da830 EVM portions of this patch need verification / ack.

The MityDSP-L138 platform patch has been tested.

The patch series is against commit 8fb837c158e342413d08d6f211b5b8f67d5adc2f of kevin's tree.

[1] http://arago-project.org/git/projects/?p=linux-davinci.git;a=shortlog;h=refs/heads/davinci-spi-rewrite

Michael Williamson (2):
davinci: da8xx/omap-l1: add support for SPI
davinci: add spi devices support for MityDSP-L138/MityARM-1808
platform

Sekhar Nori (2):
davinci: add spi devices support for da850/omap-l138/am18x evm
davinci: add spi devices support for da830/omap-l137/am17x evm

 arch/arm/mach-davinci/board-da830-evm.c    |   82 ++++++++++++++++++++++
 arch/arm/mach-davinci/board-da850-evm.c    |   88 +++++++++++++++++++++++
 arch/arm/mach-davinci/board-mityomapl138.c |  104 ++++++++++++++++++++++++++++
 arch/arm/mach-davinci/da850.c              |   16 ++++
 arch/arm/mach-davinci/devices-da8xx.c      |   88 +++++++++++++++++++++++
 arch/arm/mach-davinci/include/mach/da8xx.h |    2 +
 6 files changed, 380 insertions(+), 0 deletions(-)
#1 lore raw

PATCH 1/4 davinci: da8xx/omap-l1: add support for SPI

Add SPI registration routines, clocks, and driver resources for DA850/OMAP-L138/AM18x and DA830/OMAP-L137/AM17x platforms.

---
 arch/arm/mach-davinci/da850.c              |   16 +++++
 arch/arm/mach-davinci/devices-da8xx.c      |   88 ++++++++++++++++++++++++++++
 arch/arm/mach-davinci/include/mach/da8xx.h |    2 +
 3 files changed, 106 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/da850.c +16 -0
index 3443d97..68fe4c2 100644
@@ -359,6 +359,20 @@ static struct clk usb20_clk = {
 	.gpsc		= 1,
 };
 
+static struct clk spi0_clk = {
+	.name		= "spi0",
+	.parent		= &pll0_sysclk2,
+	.lpsc		= DA8XX_LPSC0_SPI0,
+};
+
+static struct clk spi1_clk = {
+	.name		= "spi1",
+	.parent		= &pll0_sysclk2,
+	.lpsc		= DA8XX_LPSC1_SPI1,
+	.gpsc		= 1,
+	.flags		= DA850_CLK_ASYNC3,
+};
+
 static struct clk_lookup da850_clks[] = {
 	CLK(NULL,		"ref",		&ref_clk),
 	CLK(NULL,		"pll0",		&pll0_clk),
@@ -403,6 +417,8 @@ static struct clk_lookup da850_clks[] = {
 	CLK(NULL,		"aemif",	&aemif_clk),
 	CLK(NULL,		"usb11",	&usb11_clk),
 	CLK(NULL,		"usb20",	&usb20_clk),
+	CLK("spi_davinci.0",	NULL,		&spi0_clk),
+	CLK("spi_davinci.1",	NULL,		&spi1_clk),
 	CLK(NULL,		NULL,		NULL),
 };
 
arch/arm/mach-davinci/devices-da8xx.c +88 -0

91 lines not on this page · raw message

arch/arm/mach-davinci/include/mach/da8xx.h +2 -0
index cfcb223..1f4cf5f 100644
@@ -23,6 +23,7 @@
 #include <mach/mmc.h>
 #include <mach/usb.h>
 #include <mach/pm.h>
+#include <mach/spi.h>
 
 extern void __iomem *da8xx_syscfg0_base;
 extern void __iomem *da8xx_syscfg1_base;
@@ -77,6 +78,7 @@ void __init da850_init(void);
 int da830_register_edma(struct edma_rsv_info *rsv);
 int da850_register_edma(struct edma_rsv_info *rsv[2]);
 int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
+int da8xx_register_spi(int instance, struct davinci_spi_platform_data *pdata);
 int da8xx_register_watchdog(void);
 int da8xx_register_usb20(unsigned mA, unsigned potpgt);
 int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata);
Signature · 1 line
1.7.0.4
#2 lore raw

PATCH 1/4 davinci: da8xx/omap-l1: add support for SPI

Hello.

Quoted 4 lines · Michael Williamson

Add SPI registration routines, clocks, and driver resources for DA850/OMAP-L138/AM18x and DA830/OMAP-L137/AM17x platforms.

[...]

Quoted 8 lines
arch/arm/mach-davinci/devices-da8xx.c +0 -0
index beda8a4..5f8ff96 100644
@@ -725,3 +725,91 @@ int __init da8xx_register_cpuidle(void)
 
  	return platform_device_register(&da8xx_cpuidle_device);
  }

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 737

Quoted 10 lines
arch/arm/mach-davinci/devices-da8xx.c +10 -0
+
+static struct resource da8xx_spi0_resources[] = {
+	[0] = {
+		.start = 0x01c41000,
+		.end   = 0x01c41fff,
+		.flags = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start = IRQ_DA8XX_SPINT0,
+		.start = IRQ_DA8XX_SPINT0,

You mean '.end'?

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 742

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_IRQ,
+	},
+	[2] = {
+		.start = EDMA_CTLR_CHAN(0, 14),
+		.end = EDMA_CTLR_CHAN(0, 14),

Could you align = uniformly with resource 0 -- preferably with a tab?

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 747

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_DMA,
+	},
+	[3] = {
+		.start = EDMA_CTLR_CHAN(0, 15),
+		.end = EDMA_CTLR_CHAN(0, 15),

Same here.

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 752

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_DMA,
+	},
+	[4] = {
+		.start = 0,
+		.end = 0,

There's no need to init to 0.

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 765

Quoted 13 lines
arch/arm/mach-davinci/devices-da8xx.c +13 -0
+		.flags = IORESOURCE_DMA,
+	},
+};
+
+static struct resource da8xx_spi1_resources[] = {
+	[0] = {
+		.start = 0x01f0e000,
+		.end   = 0x01f0efff,
+		.flags = IORESOURCE_MEM,
+	},
+	[1] = {
+		.start = IRQ_DA8XX_SPINT1,
+		.start = IRQ_DA8XX_SPINT1,

You meand '.end'?

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 770

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_IRQ,
+	},
+	[2] = {
+		.start = EDMA_CTLR_CHAN(0, 18),
+		.end = EDMA_CTLR_CHAN(0, 18),

Could you align = uniformly with resource 0 -- preferably with a tab?

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 775

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_DMA,
+	},
+	[3] = {
+		.start = EDMA_CTLR_CHAN(0, 19),
+		.end = EDMA_CTLR_CHAN(0, 19),

Same here.

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 752

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+		.flags = IORESOURCE_DMA,
+	},
+	[4] = {
+		.start = 0,
+		.end = 0,

There's no need to init to 0.

Quoted 18 lines
arch/arm/mach-davinci/devices-da8xx.c +18 -0
+		.flags = IORESOURCE_DMA,
+	},
+};
+
+static struct platform_device da8xx_spi_device[] = {
+	[0] = {
+		.name = "spi_davinci",
+		.id = 0,
+		.num_resources = ARRAY_SIZE(da8xx_spi0_resources),
+		.resource = da8xx_spi0_resources,
+	},
+	[1] = {
+		.name = "spi_davinci",
+		.id = 1,
+		.num_resources = ARRAY_SIZE(da8xx_spi1_resources),
+		.resource = da8xx_spi1_resources,
+	},
+};

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void)

Quoted 10 lines
arch/arm/mach-davinci/devices-da8xx.c +10 -0
+
+int __init da8xx_register_spi(int instance,
+			      struct davinci_spi_platform_data *pdata)
+{
+	struct platform_device *pdev;
+
+	if (instance == 0)
+		pdev =&da8xx_spi_device[0];
+	else if (instance == 1)
+		pdev =&da8xx_spi_device[1];
    Why not:

	if (instance == 0 || instance == 1)
		pdev = &da8xx_spi_device[instance];

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 815

Quoted 7 lines
arch/arm/mach-davinci/devices-da8xx.c +7 -0
+	else
+		return -EINVAL;
+
+	pdev->dev.platform_data = pdata;
+
+	return platform_device_register(pdev);
+}

WBR, Sergei

#3 lore raw

PATCH 1/4 davinci: da8xx/omap-l1: add support for SPI

Hi Sergei,

Quoted 16 lines · Sergei Shtylyov

Hello.

Quoted 4 lines · Michael Williamson

Add SPI registration routines, clocks, and driver resources for DA850/OMAP-L138/AM18x and DA830/OMAP-L137/AM17x platforms.

[...]

Quoted 6 lines
arch/arm/mach-davinci/devices-da8xx.c +0 -0
index beda8a4..5f8ff96 100644
@@ -725,3 +725,91 @@ int __init da8xx_register_cpuidle(void)
 
Quoted 15 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 737

Quoted 12 lines
arch/arm/mach-davinci/devices-da8xx.c +10 -0
      return platform_device_register(&da8xx_cpuidle_device);
  }
+
+static struct resource da8xx_spi0_resources[] = {
+    [0] = {
+        .start = 0x01c41000,
+        .end   = 0x01c41fff,
+        .flags = IORESOURCE_MEM,
+    },
+    [1] = {
+        .start = IRQ_DA8XX_SPINT0,
+        .start = IRQ_DA8XX_SPINT0,

You mean '.end'?

Yes. I will correct.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 742

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_IRQ,
+    },
+    [2] = {
+        .start = EDMA_CTLR_CHAN(0, 14),
+        .end = EDMA_CTLR_CHAN(0, 14),

Could you align = uniformly with resource 0 -- preferably with a tab?

Sure.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 747

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_DMA,
+    },
+    [3] = {
+        .start = EDMA_CTLR_CHAN(0, 15),
+        .end = EDMA_CTLR_CHAN(0, 15),

Same here.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 752

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_DMA,
+    },
+    [4] = {
+        .start = 0,
+        .end = 0,

There's no need to init to 0.

OK.

Quoted 7 lines
Quoted 7 lines
arch/arm/mach-davinci/devices-da8xx.c +7 -0
+        .flags = IORESOURCE_DMA,
+    },
+};
+
+static struct resource da8xx_spi1_resources[] = {
+    [0] = {
+        .start = 0x01f0e000,
Quoted 9 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 765

Quoted 6 lines
arch/arm/mach-davinci/devices-da8xx.c +6 -0
+        .end   = 0x01f0efff,
+        .flags = IORESOURCE_MEM,
+    },
+    [1] = {
+        .start = IRQ_DA8XX_SPINT1,
+        .start = IRQ_DA8XX_SPINT1,

You meand '.end'?

I did, but I see that .end is not used by platform_get_irq(), only .start. [wondering why testing didn't catch this, and why no compiler warnings on
double assignment]. I will correct. Thanks.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 770

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_IRQ,
+    },
+    [2] = {
+        .start = EDMA_CTLR_CHAN(0, 18),
+        .end = EDMA_CTLR_CHAN(0, 18),

Could you align = uniformly with resource 0 -- preferably with a tab?

Sure.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 775

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_DMA,
+    },
+    [3] = {
+        .start = EDMA_CTLR_CHAN(0, 19),
+        .end = EDMA_CTLR_CHAN(0, 19),

Same here.

Got it.

Quoted 8 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 752

Quoted 5 lines
arch/arm/mach-davinci/devices-da8xx.c +5 -0
+        .flags = IORESOURCE_DMA,
+    },
+    [4] = {
+        .start = 0,
+        .end = 0,

There's no need to init to 0.

OK.

Quoted 25 lines
Quoted 25 lines
arch/arm/mach-davinci/devices-da8xx.c +25 -0
+        .flags = IORESOURCE_DMA,
+    },
+};
+
+static struct platform_device da8xx_spi_device[] = {
+    [0] = {
+        .name = "spi_davinci",
+        .id = 0,
+        .num_resources = ARRAY_SIZE(da8xx_spi0_resources),
+        .resource = da8xx_spi0_resources,
+    },
+    [1] = {
+        .name = "spi_davinci",
+        .id = 1,
+        .num_resources = ARRAY_SIZE(da8xx_spi1_resources),
+        .resource = da8xx_spi1_resources,
+    },
+};
+
+int __init da8xx_register_spi(int instance,
+                  struct davinci_spi_platform_data *pdata)
+{
+    struct platform_device *pdev;
+
+    if (instance == 0)
Quoted 9 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 808

Quoted 3 lines
arch/arm/mach-davinci/devices-da8xx.c +3 -0
+        pdev =&da8xx_spi_device[0];
+    else if (instance == 1)
+        pdev =&da8xx_spi_device[1];
   Why not:

    if (instance == 0 || instance == 1)
        pdev = &da8xx_spi_device[instance];

OK.

Quoted 9 lines

arch/arm/mach-davinci/devices-da8xx.c int __init da8xx_register_cpuidle(void) · line 815

Quoted 7 lines
arch/arm/mach-davinci/devices-da8xx.c +7 -0
+    else
+        return -EINVAL;
+
+    pdev->dev.platform_data = pdata;
+
+    return platform_device_register(pdev);
+}

WBR, Sergei

Thanks for the review Sergei.

-Mike

#4 lore raw

PATCH 2/4 davinci: add spi devices support for MityDSP-L138/MityARM-1808 platform

In reply to Michael Williamson

This patch adds support for accessing the on board SPI NOR FLASH device for MityDSP-L138 and MityARM-1808 SoMs.

---
 arch/arm/mach-davinci/board-mityomapl138.c |  104 ++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-mityomapl138.c +104 -0
index 0ea5932..9dd88d7 100644
@@ -17,6 +17,8 @@
 #include <linux/i2c.h>
 #include <linux/i2c/at24.h>
 #include <linux/etherdevice.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -25,6 +27,7 @@
 #include <mach/da8xx.h>
 #include <mach/nand.h>
 #include <mach/mux.h>
+#include <mach/spi.h>
 
 #define MITYOMAPL138_PHY_ID		"0:03"
 
@@ -294,6 +297,104 @@ static int __init pmic_tps65023_init(void)
 }
 
 /*
+ * SPI Devices:
+ *	SPI1_CS0: 8M Flash ST-M25P64-VME6G
+ */
+static struct mtd_partition spi_flash_partitions[] = {
+	[0] = {
+		.name		= "ubl",
+		.offset		= 0,
+		.size		= SZ_64K,
+		.mask_flags	= MTD_WRITEABLE,
+	},
+	[1] = {
+		.name		= "u-boot",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_512K,
+		.mask_flags	= MTD_WRITEABLE,
+	},
+	[2] = {
+		.name		= "u-boot-env",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_64K,
+		.mask_flags	= MTD_WRITEABLE,
+	},
+	[3] = {
+		.name		= "periph-config",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_64K,
+		.mask_flags	= MTD_WRITEABLE,
+	},
+	[4] = {
+		.name		= "reserved",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_256K + SZ_64K,
+	},
+	[5] = {
+		.name		= "kernel",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_2M + SZ_1M,
+	},
+	[6] = {
+		.name		= "fpga",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= SZ_2M,
+	},
+	[7] = {
+		.name		= "spare",
+		.offset		= MTDPART_OFS_APPEND,
+		.size		= MTDPART_SIZ_FULL,
+	},
+};
+
+static struct flash_platform_data mityomapl138_spi_flash_data = {
+	.name		= "m25p80",
+	.parts		= spi_flash_partitions,
+	.nr_parts	= ARRAY_SIZE(spi_flash_partitions),
+	.type		= "m24p64",
+};
+
+static struct davinci_spi_config spi_eprom_config = {
+	.io_type	= SPI_IO_TYPE_DMA,
+	.c2tdelay	= 8,
+	.t2cdelay	= 8,
+};
+
+static struct spi_board_info mityomapl138_spi_flash_info[] = {
+	{
+		.modalias		= "m25p80",
+		.platform_data		= &mityomapl138_spi_flash_data,
+		.controller_data	= &spi_eprom_config,
+		.mode			= SPI_MODE_0,
+		.max_speed_hz		= 30000000,
+		.bus_num		= 1,
+		.chip_select		= 0,
+	},
+};
+
+static struct davinci_spi_platform_data mityomapl138_spi1_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect	= 1,
+	.intr_line	= 1,
+};
+
+static void __init mityomapl138_init_spi1(struct spi_board_info *info,
+					  unsigned len)
+{
+	int ret;
+
+	ret = spi_register_board_info(info, len);
+	if (ret)
+		pr_warning("%s: failed to register board info : %d\n",
+				__func__, ret);
+
+	ret = da8xx_register_spi(1, &mityomapl138_spi1_pdata);
+	if (ret)
+		pr_warning("%s: failed to register spi 1 device : %d\n",
+				__func__, ret);
+}
+
+/*
  * MityDSP-L138 includes a 256 MByte large-page NAND flash
  * (128K blocks).
  */
@@ -448,6 +549,9 @@ static void __init mityomapl138_init(void)
 
 	mityomapl138_setup_nand();
 
+	mityomapl138_init_spi1(mityomapl138_spi_flash_info,
+			       ARRAY_SIZE(mityomapl138_spi_flash_info));
+
 	mityomapl138_config_emac();
 
 	ret = da8xx_register_rtc();
Signature · 1 line
1.7.0.4
#5 lore raw

PATCH 2/4 davinci: add spi devices support for MityDSP-L138/MityARM-1808 platform

Hi Mike,

Quoted 10 lines · Michael Williamson

This patch adds support for accessing the on board SPI NOR FLASH device for MityDSP-L138 and MityARM-1808 SoMs.

---
 arch/arm/mach-davinci/board-mityomapl138.c |  104 ++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 0 deletions(-)

arch/arm/mach-davinci/board-mityomapl138.c static int __init pmic_tps65023_init(void) · line 379

Quoted 8 lines
arch/arm/mach-davinci/board-mityomapl138.c +6 -0
 
 
+
+static struct davinci_spi_platform_data mityomapl138_spi1_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect	= 1,
+	.intr_line	= 1,
+};

This platform data is better placed in devices-da8xx.c as most of it is common across all DA8xx platforms. Only num_chipselect and chip_sel array are expected to be board specific so only those should be passed on from board files.

Thanks,
Sekhar

#6 lore raw

PATCH 2/4 davinci: add spi devices support for MityDSP-L138/MityARM-1808 platform

Hi Sekhar,

Quoted 27 lines · Sekhar

Hi Mike,

Quoted 10 lines · Michael Williamson

This patch adds support for accessing the on board SPI NOR FLASH device for MityDSP-L138 and MityARM-1808 SoMs.

---
 arch/arm/mach-davinci/board-mityomapl138.c |  104 ++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 0 deletions(-)

arch/arm/mach-davinci/board-mityomapl138.c static int __init pmic_tps65023_init(void) · line 379

Quoted 8 lines
arch/arm/mach-davinci/board-mityomapl138.c +6 -0
 
 
+
+static struct davinci_spi_platform_data mityomapl138_spi1_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect	= 1,
+	.intr_line	= 1,
+};

This platform data is better placed in devices-da8xx.c as most of it is common across all DA8xx platforms. Only num_chipselect and chip_sel array are expected to be board specific so only those should be passed on from board files.

Quoted 2 lines

Thanks,
Sekhar

I will move this to devices-da8xx.c and create a placeholder for spi0.

Thanks.

-Mike

#7 lore raw

PATCH 3/4 davinci: add spi devices support for da850/omap-l138/am18x evm

In reply to Michael Williamson

From: Sekhar Nori <[email protected]>

This patch adds the on-board SPI flash device to the DA850/OMAP-L138/AM18x EVM. It also registers the SPI flash device to the MTD subsystem.

Based on SPI flash device support for MityDSP-L138F platform.

---
 arch/arm/mach-davinci/board-da850-evm.c |   88 +++++++++++++++++++++++++++++++
 1 files changed, 88 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-da850-evm.c +88 -0
index 11f986b..6eb6cf2 100644
@@ -29,6 +29,8 @@
 #include <linux/regulator/machine.h>
 #include <linux/regulator/tps6507x.h>
 #include <linux/input/tps6507x-ts.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -38,6 +40,7 @@
 #include <mach/nand.h>
 #include <mach/mux.h>
 #include <mach/aemif.h>
+#include <mach/spi.h>
 
 #define DA850_EVM_PHY_ID		"0:00"
 #define DA850_LCD_PWR_PIN		GPIO_TO_PIN(2, 8)
@@ -48,6 +51,89 @@
 
 #define DA850_MII_MDIO_CLKEN_PIN	GPIO_TO_PIN(2, 6)
 
+static struct davinci_spi_platform_data da850evm_spi1_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect = 1,
+	.intr_line      = 1,
+};
+
+static struct mtd_partition da850evm_spiflash_part[] = {
+	[0] = {
+		.name = "UBL",
+		.offset = 0,
+		.size = SZ_64K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[1] = {
+		.name = "U-Boot",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_512K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[2] = {
+		.name = "U-Boot-Env",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_64K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[3] = {
+		.name = "Kernel",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_2M + SZ_512K,
+		.mask_flags = 0,
+	},
+	[4] = {
+		.name = "Filesystem",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_4M,
+		.mask_flags = 0,
+	},
+	[5] = {
+		.name = "MAC-Address",
+		.offset = SZ_8M - SZ_64K,
+		.size = SZ_64K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+};
+
+static struct flash_platform_data da850evm_spiflash_data = {
+	.name		= "m25p80",
+	.parts		= da850evm_spiflash_part,
+	.nr_parts	= ARRAY_SIZE(da850evm_spiflash_part),
+	.type		= "m25p64",
+};
+
+static struct davinci_spi_config da850evm_spiflash_cfg = {
+	.io_type	= SPI_IO_TYPE_DMA,
+	.c2tdelay	= 8,
+	.t2cdelay	= 8,
+};
+
+static struct spi_board_info da850evm_spi_info[] = {
+	{
+		.modalias		= "m25p80",
+		.platform_data		= &da850evm_spiflash_data,
+		.controller_data	= &da850evm_spiflash_cfg,
+		.mode			= SPI_MODE_0,
+		.max_speed_hz		= 30000000,
+		.bus_num		= 1,
+		.chip_select		= 0,
+	},
+};
+
+static void __init da850evm_init_spi1(struct spi_board_info *info, unsigned len)
+{
+	int ret;
+
+	ret = spi_register_board_info(info, len);
+	if (ret)
+		pr_warning("failed to register board info : %d\n", ret);
+
+	ret = da8xx_register_spi(1, &da850evm_spi1_pdata);
+	if (ret)
+		pr_warning("failed to register spi 1 device : %d\n", ret);
+}
+
 static struct mtd_partition da850_evm_norflash_partition[] = {
 	{
 		.name           = "bootloaders + env",
@@ -1167,6 +1253,8 @@ static __init void da850_evm_init(void)
 	if (ret)
 		pr_warning("da850_evm_init: suspend registration failed: %d\n",
 				ret);
+
+	da850evm_init_spi1(da850evm_spi_info, ARRAY_SIZE(da850evm_spi_info));
 }
 
 #ifdef CONFIG_SERIAL_8250_CONSOLE
Signature · 1 line
1.7.0.4
#8 lore raw

PATCH 3/4 davinci: add spi devices support for da850/omap-l138/am18x evm

Hello.

Quoted 9 lines · Michael Williamson

From: Sekhar Nori <[email protected]>

This patch adds the on-board SPI flash device to the DA850/OMAP-L138/AM18x EVM. It also registers the SPI flash device to the MTD subsystem.

Based on SPI flash device support for MityDSP-L138F platform.

Why Sekhar hasn't signed off on this patch?

WBR, Sergei

#9 lore raw

PATCH 4/4 davinci: add spi devices support for da830/omap-l137/am17x evm

In reply to Michael Williamson

From: Sekhar Nori <[email protected]>

This patch adds the on-board SPI flash device to the DA830/OMAP-L137/AM17x EVM. It also registers the SPI flash device to the MTD subsystem.

Based on SPI flash device support for MityDSP-L138F platform.

---
 arch/arm/mach-davinci/board-da830-evm.c |   82 +++++++++++++++++++++++++++++++
 1 files changed, 82 insertions(+), 0 deletions(-)
arch/arm/mach-davinci/board-da830-evm.c +82 -0
index b52a3a1..15077a0 100644
@@ -20,6 +20,8 @@
 #include <linux/i2c/at24.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/flash.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -30,6 +32,7 @@
 #include <mach/da8xx.h>
 #include <mach/usb.h>
 #include <mach/aemif.h>
+#include <mach/spi.h>
 
 #define DA830_EVM_PHY_ID		""
 /*
@@ -534,6 +537,83 @@ static struct edma_rsv_info da830_edma_rsv[] = {
 	},
 };
 
+static struct davinci_spi_platform_data da830evm_spi0_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect = 1,
+	.intr_line      = 1,
+};
+
+static struct mtd_partition da830evm_spiflash_part[] = {
+	[0] = {
+		.name = "DSP-UBL",
+		.offset = 0,
+		.size = SZ_8K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[1] = {
+		.name = "ARM-UBL",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_16K + SZ_8K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[2] = {
+		.name = "U-Boot",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_256K - SZ_32K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[3] = {
+		.name = "U-Boot-Environment",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_16K,
+		.mask_flags = 0,
+	},
+	[4] = {
+		.name = "Kernel",
+		.offset = MTDPART_OFS_APPEND,
+		.size = MTDPART_SIZ_FULL,
+		.mask_flags = 0,
+	},
+};
+
+static struct flash_platform_data da830evm_spiflash_data = {
+	.name		= "m25p80",
+	.parts		= da830evm_spiflash_part,
+	.nr_parts	= ARRAY_SIZE(da830evm_spiflash_part),
+	.type		= "w25x32",
+};
+
+static struct davinci_spi_config da830evm_spiflash_cfg = {
+	.io_type	= SPI_IO_TYPE_DMA,
+	.c2tdelay	= 8,
+	.t2cdelay	= 8,
+};
+
+static struct spi_board_info da830evm_spi_info[] = {
+	{
+		.modalias		= "m25p80",
+		.platform_data		= &da830evm_spiflash_data,
+		.controller_data	= &da830evm_spiflash_cfg,
+		.mode			= SPI_MODE_0,
+		.max_speed_hz		= 30000000,
+		.bus_num		= 0,
+		.chip_select		= 0,
+	},
+};
+
+static void __init da830evm_init_spi0(struct spi_board_info *info, unsigned len)
+{
+	int ret;
+
+	ret = spi_register_board_info(info, len);
+	if (ret)
+		pr_warning("failed to register board info : %d\n", ret);
+
+	ret = da8xx_register_spi(0, &da830evm_spi0_pdata);
+	if (ret)
+		pr_warning("failed to register spi 0 device : %d\n", ret);
+}
+
 static __init void da830_evm_init(void)
 {
 	struct davinci_soc_info *soc_info = &davinci_soc_info;
@@ -590,6 +670,8 @@ static __init void da830_evm_init(void)
 	ret = da8xx_register_rtc();
 	if (ret)
 		pr_warning("da830_evm_init: rtc setup failed: %d\n", ret);
+
+	da830evm_init_spi0(da830evm_spi_info, ARRAY_SIZE(da830evm_spi_info));
 }
 
 #ifdef CONFIG_SERIAL_8250_CONSOLE
Signature · 1 line
1.7.0.4
#10 lore raw

PATCH 4/4 davinci: add spi devices support for da830/omap-l137/am17x evm

Hello.

Quoted 9 lines · Michael Williamson

From: Sekhar Nori<[email protected]>

This patch adds the on-board SPI flash device to the DA830/OMAP-L137/AM17x EVM. It also registers the SPI flash device to the MTD subsystem.

Based on SPI flash device support for MityDSP-L138F platform.

Why Sekhar hasn't signed off on this patch?

Quoted 4 lines
arch/arm/mach-davinci/board-da830-evm.c +0 -0
index b52a3a1..15077a0 100644

[...]

Quoted 30 lines
arch/arm/mach-davinci/board-da830-evm.c +26 -0
@@ -534,6 +537,83 @@ static struct edma_rsv_info da830_edma_rsv[] = {
  	},
  };
 
+static struct davinci_spi_platform_data da830evm_spi0_pdata = {
+	.version	= SPI_VERSION_2,
+	.num_chipselect = 1,
+	.intr_line      = 1,
+};
+
+static struct mtd_partition da830evm_spiflash_part[] = {
+	[0] = {
+		.name = "DSP-UBL",
+		.offset = 0,
+		.size = SZ_8K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[1] = {
+		.name = "ARM-UBL",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_16K + SZ_8K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[2] = {
+		.name = "U-Boot",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_256K - SZ_32K,
+		.mask_flags = MTD_WRITEABLE,
+	},
+	[3] = {

arch/arm/mach-davinci/board-da830-evm.c static struct edma_rsv_info da830_edma_rsv[] = { · line 575

Quoted 10 lines
arch/arm/mach-davinci/board-da830-evm.c +10 -0
+		.name = "U-Boot-Environment",
+		.offset = MTDPART_OFS_APPEND,
+		.size = SZ_16K,
+		.mask_flags = 0,
+	},
+	[4] = {
+		.name = "Kernel",
+		.offset = MTDPART_OFS_APPEND,
+		.size = MTDPART_SIZ_FULL,
+		.mask_flags = 0,

There's no need to explicitly init to 0.

WBR, Sergei

#11 lore raw

PATCH 4/4 davinci: add spi devices support for da830/omap-l137/am17x evm

Quoted 10 lines · Sergei Shtylyov

Hello.

Quoted 5 lines · Michael Williamson

From: Sekhar Nori<[email protected]>

This patch adds the on-board SPI flash device to the DA830/OMAP-L137/AM17x EVM. It also registers the SPI flash device to the MTD subsystem.

Quoted 5 lines
Quoted 3 lines

Based on SPI flash device support for MityDSP-L138F platform.

Why Sekhar hasn't signed off on this patch?

I should have.

Thanks,
Sekhar

#12 lore raw

PATCH 4/4 davinci: add spi devices support for da830/omap-l137/am17x evm

Hi Sekhar,

Quoted 15 lines · Sekhar
Quoted 14 lines · Sergei Shtylyov

Hello.

Quoted 9 lines · Michael Williamson

From: Sekhar Nori<[email protected]>

This patch adds the on-board SPI flash device to the DA830/OMAP-L137/AM17x EVM. It also registers the SPI flash device to the MTD subsystem.

Based on SPI flash device support for MityDSP-L138F platform.

Quoted 9 lines
Quoted 1 line

Why Sekhar hasn't signed off on this patch?

I should have.

Thanks,
Sekhar

I need to move the da830evm_spi0_pdata structure into the common devices-da8xx.c based on your other comment to part 2/4 of this series.

For my clarification on patch submission, do I need to change the authorship if I touch it in anyway? Or should I leave you the author (given you ack the mods, and confirm your sign-off)?

Thanks.

-Mike

#13 lore raw

PATCH 4/4 davinci: add spi devices support for da830/omap-l137/am17x evm

Quoted 6 lines · Michael Williamson

I need to move the da830evm_spi0_pdata structure into the common devices-da8xx.c based on your other comment to part 2/4 of this series.

For my clarification on patch submission, do I need to change the authorship if I touch it in anyway? Or should I leave you the author (given you ack the mods, and confirm your sign-off)?

If you do not end up modifying the patch heavily, you can keep me as the author.

In this case, the change you have done can be noted in between the sign-offs. Thus:

[michael.williamson at criticallink.com: moved da830evm_spi0_pdata to devices-da8xx.c]

Thanks,
Sekhar