Merge tag 'v3.8-rc1' into staging/for_v3.9
[deliverable/linux.git] / arch / arm / plat-orion / common.c
index b8a688cad4c277119281b44b629a9bcfc8eb0717..2d4b6414609f6edf2df165ccb14b01527246ad93 100644 (file)
@@ -606,26 +606,6 @@ void __init orion_wdt_init(void)
  ****************************************************************************/
 static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
 
-void __init orion_xor_init_channels(
-       struct mv_xor_platform_data *orion_xor0_data,
-       struct platform_device *orion_xor0_channel,
-       struct mv_xor_platform_data *orion_xor1_data,
-       struct platform_device *orion_xor1_channel)
-{
-       /*
-        * two engines can't do memset simultaneously, this limitation
-        * satisfied by removing memset support from one of the engines.
-        */
-       dma_cap_set(DMA_MEMCPY, orion_xor0_data->cap_mask);
-       dma_cap_set(DMA_XOR, orion_xor0_data->cap_mask);
-       platform_device_register(orion_xor0_channel);
-
-       dma_cap_set(DMA_MEMCPY, orion_xor1_data->cap_mask);
-       dma_cap_set(DMA_MEMSET, orion_xor1_data->cap_mask);
-       dma_cap_set(DMA_XOR, orion_xor1_data->cap_mask);
-       platform_device_register(orion_xor1_channel);
-}
-
 /*****************************************************************************
  * XOR0
  ****************************************************************************/
@@ -636,61 +616,30 @@ static struct resource orion_xor0_shared_resources[] = {
        }, {
                .name   = "xor 0 high",
                .flags  = IORESOURCE_MEM,
+       }, {
+               .name   = "irq channel 0",
+               .flags  = IORESOURCE_IRQ,
+       }, {
+               .name   = "irq channel 1",
+               .flags  = IORESOURCE_IRQ,
        },
 };
 
-static struct platform_device orion_xor0_shared = {
-       .name           = MV_XOR_SHARED_NAME,
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(orion_xor0_shared_resources),
-       .resource       = orion_xor0_shared_resources,
-};
+static struct mv_xor_channel_data orion_xor0_channels_data[2];
 
-static struct resource orion_xor00_resources[] = {
-       [0] = {
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct mv_xor_platform_data orion_xor00_data = {
-       .shared         = &orion_xor0_shared,
-       .hw_id          = 0,
-       .pool_size      = PAGE_SIZE,
+static struct mv_xor_platform_data orion_xor0_pdata = {
+       .channels = orion_xor0_channels_data,
 };
 
-static struct platform_device orion_xor00_channel = {
+static struct platform_device orion_xor0_shared = {
        .name           = MV_XOR_NAME,
        .id             = 0,
-       .num_resources  = ARRAY_SIZE(orion_xor00_resources),
-       .resource       = orion_xor00_resources,
-       .dev            = {
-               .dma_mask               = &orion_xor_dmamask,
-               .coherent_dma_mask      = DMA_BIT_MASK(64),
-               .platform_data          = &orion_xor00_data,
-       },
-};
-
-static struct resource orion_xor01_resources[] = {
-       [0] = {
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct mv_xor_platform_data orion_xor01_data = {
-       .shared         = &orion_xor0_shared,
-       .hw_id          = 1,
-       .pool_size      = PAGE_SIZE,
-};
-
-static struct platform_device orion_xor01_channel = {
-       .name           = MV_XOR_NAME,
-       .id             = 1,
-       .num_resources  = ARRAY_SIZE(orion_xor01_resources),
-       .resource       = orion_xor01_resources,
-       .dev            = {
-               .dma_mask               = &orion_xor_dmamask,
-               .coherent_dma_mask      = DMA_BIT_MASK(64),
-               .platform_data          = &orion_xor01_data,
+       .num_resources  = ARRAY_SIZE(orion_xor0_shared_resources),
+       .resource       = orion_xor0_shared_resources,
+       .dev            = {
+               .dma_mask               = &orion_xor_dmamask,
+               .coherent_dma_mask      = DMA_BIT_MASK(64),
+               .platform_data          = &orion_xor0_pdata,
        },
 };
 
@@ -704,15 +653,23 @@ void __init orion_xor0_init(unsigned long mapbase_low,
        orion_xor0_shared_resources[1].start = mapbase_high;
        orion_xor0_shared_resources[1].end = mapbase_high + 0xff;
 
-       orion_xor00_resources[0].start = irq_0;
-       orion_xor00_resources[0].end = irq_0;
-       orion_xor01_resources[0].start = irq_1;
-       orion_xor01_resources[0].end = irq_1;
+       orion_xor0_shared_resources[2].start = irq_0;
+       orion_xor0_shared_resources[2].end = irq_0;
+       orion_xor0_shared_resources[3].start = irq_1;
+       orion_xor0_shared_resources[3].end = irq_1;
 
-       platform_device_register(&orion_xor0_shared);
+       /*
+        * two engines can't do memset simultaneously, this limitation
+        * satisfied by removing memset support from one of the engines.
+        */
+       dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[0].cap_mask);
+       dma_cap_set(DMA_XOR, orion_xor0_channels_data[0].cap_mask);
+
+       dma_cap_set(DMA_MEMSET, orion_xor0_channels_data[1].cap_mask);
+       dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[1].cap_mask);
+       dma_cap_set(DMA_XOR, orion_xor0_channels_data[1].cap_mask);
 
-       orion_xor_init_channels(&orion_xor00_data, &orion_xor00_channel,
-                               &orion_xor01_data, &orion_xor01_channel);
+       platform_device_register(&orion_xor0_shared);
 }
 
 /*****************************************************************************
@@ -725,61 +682,30 @@ static struct resource orion_xor1_shared_resources[] = {
        }, {
                .name   = "xor 1 high",
                .flags  = IORESOURCE_MEM,
+       }, {
+               .name   = "irq channel 0",
+               .flags  = IORESOURCE_IRQ,
+       }, {
+               .name   = "irq channel 1",
+               .flags  = IORESOURCE_IRQ,
        },
 };
 
-static struct platform_device orion_xor1_shared = {
-       .name           = MV_XOR_SHARED_NAME,
-       .id             = 1,
-       .num_resources  = ARRAY_SIZE(orion_xor1_shared_resources),
-       .resource       = orion_xor1_shared_resources,
-};
-
-static struct resource orion_xor10_resources[] = {
-       [0] = {
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct mv_xor_platform_data orion_xor10_data = {
-       .shared         = &orion_xor1_shared,
-       .hw_id          = 0,
-       .pool_size      = PAGE_SIZE,
-};
-
-static struct platform_device orion_xor10_channel = {
-       .name           = MV_XOR_NAME,
-       .id             = 2,
-       .num_resources  = ARRAY_SIZE(orion_xor10_resources),
-       .resource       = orion_xor10_resources,
-       .dev            = {
-               .dma_mask               = &orion_xor_dmamask,
-               .coherent_dma_mask      = DMA_BIT_MASK(64),
-               .platform_data          = &orion_xor10_data,
-       },
-};
-
-static struct resource orion_xor11_resources[] = {
-       [0] = {
-               .flags  = IORESOURCE_IRQ,
-       },
-};
+static struct mv_xor_channel_data orion_xor1_channels_data[2];
 
-static struct mv_xor_platform_data orion_xor11_data = {
-       .shared         = &orion_xor1_shared,
-       .hw_id          = 1,
-       .pool_size      = PAGE_SIZE,
+static struct mv_xor_platform_data orion_xor1_pdata = {
+       .channels = orion_xor1_channels_data,
 };
 
-static struct platform_device orion_xor11_channel = {
+static struct platform_device orion_xor1_shared = {
        .name           = MV_XOR_NAME,
-       .id             = 3,
-       .num_resources  = ARRAY_SIZE(orion_xor11_resources),
-       .resource       = orion_xor11_resources,
-       .dev            = {
-               .dma_mask               = &orion_xor_dmamask,
-               .coherent_dma_mask      = DMA_BIT_MASK(64),
-               .platform_data          = &orion_xor11_data,
+       .id             = 1,
+       .num_resources  = ARRAY_SIZE(orion_xor1_shared_resources),
+       .resource       = orion_xor1_shared_resources,
+       .dev            = {
+               .dma_mask               = &orion_xor_dmamask,
+               .coherent_dma_mask      = DMA_BIT_MASK(64),
+               .platform_data          = &orion_xor1_pdata,
        },
 };
 
@@ -793,15 +719,23 @@ void __init orion_xor1_init(unsigned long mapbase_low,
        orion_xor1_shared_resources[1].start = mapbase_high;
        orion_xor1_shared_resources[1].end = mapbase_high + 0xff;
 
-       orion_xor10_resources[0].start = irq_0;
-       orion_xor10_resources[0].end = irq_0;
-       orion_xor11_resources[0].start = irq_1;
-       orion_xor11_resources[0].end = irq_1;
+       orion_xor1_shared_resources[2].start = irq_0;
+       orion_xor1_shared_resources[2].end = irq_0;
+       orion_xor1_shared_resources[3].start = irq_1;
+       orion_xor1_shared_resources[3].end = irq_1;
 
-       platform_device_register(&orion_xor1_shared);
+       /*
+        * two engines can't do memset simultaneously, this limitation
+        * satisfied by removing memset support from one of the engines.
+        */
+       dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask);
+       dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask);
 
-       orion_xor_init_channels(&orion_xor10_data, &orion_xor10_channel,
-                               &orion_xor11_data, &orion_xor11_channel);
+       dma_cap_set(DMA_MEMSET, orion_xor1_channels_data[1].cap_mask);
+       dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask);
+       dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask);
+
+       platform_device_register(&orion_xor1_shared);
 }
 
 /*****************************************************************************
This page took 0.087533 seconds and 5 git commands to generate.