[ARM] Kirkwood: instantiate the orion_spi driver in the platform code
authorLennert Buytenhek <buytenh@wantstofly.org>
Sat, 9 Aug 2008 13:38:18 +0000 (15:38 +0200)
committerLennert Buytenhek <buytenh@marvell.com>
Sat, 9 Aug 2008 13:38:18 +0000 (15:38 +0200)
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
arch/arm/mach-kirkwood/common.c
arch/arm/mach-kirkwood/common.h
arch/arm/mach-kirkwood/rd88f6192-nas-setup.c

index 693dc32b606b4e915bf606c58105397f88ac40fe..189f16f3619d19692bcbe75c876045dc4bd36042 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/mbus.h>
 #include <linux/mv643xx_eth.h>
 #include <linux/ata_platform.h>
+#include <linux/spi/orion_spi.h>
 #include <asm/page.h>
 #include <asm/timex.h>
 #include <asm/mach/map.h>
@@ -196,6 +197,37 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data)
 }
 
 
+/*****************************************************************************
+ * SPI
+ ****************************************************************************/
+static struct orion_spi_info kirkwood_spi_plat_data = {
+       .tclk           = KIRKWOOD_TCLK,
+};
+
+static struct resource kirkwood_spi_resources[] = {
+       {
+               .start  = SPI_PHYS_BASE,
+               .end    = SPI_PHYS_BASE + SZ_512 - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device kirkwood_spi = {
+       .name           = "orion_spi",
+       .id             = 0,
+       .resource       = kirkwood_spi_resources,
+       .dev            = {
+               .platform_data  = &kirkwood_spi_plat_data,
+       },
+       .num_resources  = ARRAY_SIZE(kirkwood_spi_resources),
+};
+
+void __init kirkwood_spi_init()
+{
+       platform_device_register(&kirkwood_spi);
+}
+
+
 /*****************************************************************************
  * UART0
  ****************************************************************************/
index 6f94cda81de677ee15dbed5a992e853410a4ab59..69cd113af03adcd3c5edc8a7c37fa60395a11234 100644 (file)
@@ -33,6 +33,7 @@ void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data);
 void kirkwood_pcie_init(void);
 void kirkwood_rtc_init(void);
 void kirkwood_sata_init(struct mv_sata_platform_data *sata_data);
+void kirkwood_spi_init(void);
 void kirkwood_uart0_init(void);
 void kirkwood_uart1_init(void);
 void kirkwood_xor0_init(void);
index 062c3216b8aa47c6c4293d4a72edc849013ff0e7..a3012d4459714c7932d533bd73a805523465ac36 100644 (file)
@@ -18,6 +18,9 @@
 #include <linux/timer.h>
 #include <linux/ata_platform.h>
 #include <linux/mv643xx_eth.h>
+#include <linux/spi/flash.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/orion_spi.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/pci.h>
@@ -34,6 +37,21 @@ static struct mv_sata_platform_data rd88f6192_sata_data = {
        .n_ports        = 2,
 };
 
+static const struct flash_platform_data rd88F6192_spi_slave_data = {
+       .type           = "m25p128",
+};
+
+static struct spi_board_info __initdata rd88F6192_spi_slave_info[] = {
+       {
+               .modalias       = "m25p80",
+               .platform_data  = &rd88F6192_spi_slave_data,
+               .irq            = -1,
+               .max_speed_hz   = 20000000,
+               .bus_num        = 0,
+               .chip_select    = 0,
+       },
+};
+
 static void __init rd88f6192_init(void)
 {
        /*
@@ -45,6 +63,9 @@ static void __init rd88f6192_init(void)
        kirkwood_ge00_init(&rd88f6192_ge00_data);
        kirkwood_rtc_init();
        kirkwood_sata_init(&rd88f6192_sata_data);
+       spi_register_board_info(rd88F6192_spi_slave_info,
+                               ARRAY_SIZE(rd88F6192_spi_slave_info));
+       kirkwood_spi_init();
        kirkwood_uart0_init();
        kirkwood_xor0_init();
        kirkwood_xor1_init();