ARM: orion: Consolidate SATA platform setup.
authorAndrew Lunn <andrew@lunn.ch>
Sun, 15 May 2011 11:32:50 +0000 (13:32 +0200)
committerNicolas Pitre <nico@fluxnic.net>
Mon, 16 May 2011 19:13:19 +0000 (15:13 -0400)
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
arch/arm/mach-dove/common.c
arch/arm/mach-kirkwood/common.c
arch/arm/mach-mv78xx0/common.c
arch/arm/mach-orion5x/common.c
arch/arm/plat-orion/common.c
arch/arm/plat-orion/include/plat/common.h

index 1412592fdca13a6d0ca7e10c24dd2f604a557b86..5ed51b84c1b24693dd8eacc170ebc17ffa21201a 100644 (file)
@@ -107,35 +107,11 @@ void __init dove_rtc_init(void)
 /*****************************************************************************
  * SATA
  ****************************************************************************/
-static struct resource dove_sata_resources[] = {
-       {
-               .name   = "sata base",
-               .start  = DOVE_SATA_PHYS_BASE,
-               .end    = DOVE_SATA_PHYS_BASE + 0x5000 - 1,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .name   = "sata irq",
-               .start  = IRQ_DOVE_SATA,
-               .end    = IRQ_DOVE_SATA,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device dove_sata = {
-       .name           = "sata_mv",
-       .id             = 0,
-       .dev            = {
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-       .num_resources  = ARRAY_SIZE(dove_sata_resources),
-       .resource       = dove_sata_resources,
-};
-
 void __init dove_sata_init(struct mv_sata_platform_data *sata_data)
 {
-       sata_data->dram = &dove_mbus_dram_info;
-       dove_sata.dev.platform_data = sata_data;
-       platform_device_register(&dove_sata);
+       orion_sata_init(sata_data, &dove_mbus_dram_info,
+                       DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA);
+
 }
 
 /*****************************************************************************
index 9e56cbb19184801712f21e39914d9eacccbc50d7..e96ec4e616152d40126bf3c4be069da415915f41 100644 (file)
@@ -172,38 +172,14 @@ static void __init kirkwood_rtc_init(void)
 /*****************************************************************************
  * SATA
  ****************************************************************************/
-static struct resource kirkwood_sata_resources[] = {
-       {
-               .name   = "sata base",
-               .start  = SATA_PHYS_BASE,
-               .end    = SATA_PHYS_BASE + 0x5000 - 1,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .name   = "sata irq",
-               .start  = IRQ_KIRKWOOD_SATA,
-               .end    = IRQ_KIRKWOOD_SATA,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device kirkwood_sata = {
-       .name           = "sata_mv",
-       .id             = 0,
-       .dev            = {
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-       .num_resources  = ARRAY_SIZE(kirkwood_sata_resources),
-       .resource       = kirkwood_sata_resources,
-};
-
 void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data)
 {
        kirkwood_clk_ctrl |= CGC_SATA0;
        if (sata_data->n_ports > 1)
                kirkwood_clk_ctrl |= CGC_SATA1;
-       sata_data->dram = &kirkwood_mbus_dram_info;
-       kirkwood_sata.dev.platform_data = sata_data;
-       platform_device_register(&kirkwood_sata);
+
+       orion_sata_init(sata_data, &kirkwood_mbus_dram_info,
+                       SATA_PHYS_BASE, IRQ_KIRKWOOD_SATA);
 }
 
 
index f250196becd77adb6721e6628fd7c4aebda88f58..23d3980ef59d561e8a4c9055170266dcb3b45faa 100644 (file)
@@ -275,35 +275,10 @@ void __init mv78xx0_i2c_init(void)
 /*****************************************************************************
  * SATA
  ****************************************************************************/
-static struct resource mv78xx0_sata_resources[] = {
-       {
-               .name   = "sata base",
-               .start  = SATA_PHYS_BASE,
-               .end    = SATA_PHYS_BASE + 0x5000 - 1,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .name   = "sata irq",
-               .start  = IRQ_MV78XX0_SATA,
-               .end    = IRQ_MV78XX0_SATA,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device mv78xx0_sata = {
-       .name           = "sata_mv",
-       .id             = 0,
-       .dev            = {
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-       .num_resources  = ARRAY_SIZE(mv78xx0_sata_resources),
-       .resource       = mv78xx0_sata_resources,
-};
-
 void __init mv78xx0_sata_init(struct mv_sata_platform_data *sata_data)
 {
-       sata_data->dram = &mv78xx0_mbus_dram_info;
-       mv78xx0_sata.dev.platform_data = sata_data;
-       platform_device_register(&mv78xx0_sata);
+       orion_sata_init(sata_data, &mv78xx0_mbus_dram_info,
+                       SATA_PHYS_BASE, IRQ_MV78XX0_SATA);
 }
 
 
index 2132eafa7ccc6afa4e7f32766f1a46a1a8a707b5..8bbf497cc5f1b314e45a81d73c9f2363c8a29d9d 100644 (file)
@@ -119,35 +119,10 @@ void __init orion5x_i2c_init(void)
 /*****************************************************************************
  * SATA
  ****************************************************************************/
-static struct resource orion5x_sata_resources[] = {
-       {
-               .name   = "sata base",
-               .start  = ORION5X_SATA_PHYS_BASE,
-               .end    = ORION5X_SATA_PHYS_BASE + 0x5000 - 1,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .name   = "sata irq",
-               .start  = IRQ_ORION5X_SATA,
-               .end    = IRQ_ORION5X_SATA,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device orion5x_sata = {
-       .name           = "sata_mv",
-       .id             = 0,
-       .dev            = {
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-       .num_resources  = ARRAY_SIZE(orion5x_sata_resources),
-       .resource       = orion5x_sata_resources,
-};
-
 void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
 {
-       sata_data->dram = &orion5x_mbus_dram_info;
-       orion5x_sata.dev.platform_data = sata_data;
-       platform_device_register(&orion5x_sata);
+       orion_sata_init(sata_data, &orion5x_mbus_dram_info,
+                       ORION5X_SATA_PHYS_BASE, IRQ_ORION5X_SATA);
 }
 
 
index 802cbf4b2f3cbd900fcdf9c5ef6c44a3bf938a8f..d1cf7c3fb7442de06f0608227e7d85401f869833 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/serial_8250.h>
 #include <linux/mbus.h>
+#include <linux/ata_platform.h>
 #include <linux/mv643xx_eth.h>
 #include <linux/mv643xx_i2c.h>
 #include <net/dsa.h>
@@ -889,3 +890,37 @@ void __init orion_ehci_2_init(struct mbus_dram_target_info *mbus_dram_info,
 
        platform_device_register(&orion_ehci_2);
 }
+
+/*****************************************************************************
+ * SATA
+ ****************************************************************************/
+static struct resource orion_sata_resources[2] = {
+       {
+               .name   = "sata base",
+       }, {
+               .name   = "sata irq",
+       },
+};
+
+static struct platform_device orion_sata = {
+       .name           = "sata_mv",
+       .id             = 0,
+       .dev            = {
+               .coherent_dma_mask      = DMA_BIT_MASK(32),
+       },
+};
+
+void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
+                           struct mbus_dram_target_info *mbus_dram_info,
+                           unsigned long mapbase,
+                           unsigned long irq)
+{
+       sata_data->dram = mbus_dram_info;
+       orion_sata.dev.platform_data = sata_data;
+       fill_resources(&orion_sata, orion_sata_resources,
+                      mapbase, 0x5000 - 1, irq);
+
+       platform_device_register(&orion_sata);
+}
+
+
index 6386f8e5df253e29b418639ce6978eaf1925398c..0ec6b663a834606c636706617d927d5cdad6d0b4 100644 (file)
@@ -104,4 +104,9 @@ void __init orion_ehci_1_init(struct mbus_dram_target_info *mbus_dram_info,
 void __init orion_ehci_2_init(struct mbus_dram_target_info *mbus_dram_info,
                              unsigned long mapbase,
                              unsigned long irq);
+
+void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
+                           struct mbus_dram_target_info *mbus_dram_info,
+                           unsigned long mapbase,
+                           unsigned long irq);
 #endif