Commit dd2c57b8 authored by Thomas Petazzoni's avatar Thomas Petazzoni

arm: plat-orion: convert the registration of the xor1 engine to the single driver

Instead of registering one 'mv_xor_shared' device for the XOR engine,
and then two 'mv_xor' devices for the XOR channels, pass the channels
properties as platform_data for the main 'mv_xor_shared' device.
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent af19e148
...@@ -715,61 +715,43 @@ static struct resource orion_xor1_shared_resources[] = { ...@@ -715,61 +715,43 @@ static struct resource orion_xor1_shared_resources[] = {
}, { }, {
.name = "xor 1 high", .name = "xor 1 high",
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, {
.name = "irq channel 0",
.flags = IORESOURCE_IRQ,
}, {
.name = "irq channel 1",
.flags = IORESOURCE_IRQ,
}, },
}; };
static struct platform_device orion_xor1_shared = { 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 = { static struct mv_xor_platform_data orion_xor1_channels_pdata[2] = {
.name = MV_XOR_NAME, {
.id = 2, .shared = &orion_xor1_shared,
.num_resources = ARRAY_SIZE(orion_xor10_resources), .hw_id = 0,
.resource = orion_xor10_resources, .pool_size = PAGE_SIZE,
.dev = {
.dma_mask = &orion_xor_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(64),
.platform_data = &orion_xor10_data,
}, },
}; {
.shared = &orion_xor1_shared,
static struct resource orion_xor11_resources[] = { .hw_id = 1,
[0] = { .pool_size = PAGE_SIZE,
.flags = IORESOURCE_IRQ,
}, },
}; };
static struct mv_xor_platform_data orion_xor11_data = { static struct mv_xor_shared_platform_data orion_xor1_pdata = {
.shared = &orion_xor1_shared, .channels = orion_xor1_channels_pdata,
.hw_id = 1,
.pool_size = PAGE_SIZE,
}; };
static struct platform_device orion_xor11_channel = { static struct platform_device orion_xor1_shared = {
.name = MV_XOR_NAME, .name = MV_XOR_SHARED_NAME,
.id = 3, .id = 1,
.num_resources = ARRAY_SIZE(orion_xor11_resources), .num_resources = ARRAY_SIZE(orion_xor1_shared_resources),
.resource = orion_xor11_resources, .resource = orion_xor1_shared_resources,
.dev = { .dev = {
.dma_mask = &orion_xor_dmamask, .dma_mask = &orion_xor_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(64), .coherent_dma_mask = DMA_BIT_MASK(64),
.platform_data = &orion_xor11_data, .platform_data = &orion_xor1_pdata,
}, },
}; };
...@@ -783,15 +765,23 @@ void __init orion_xor1_init(unsigned long mapbase_low, ...@@ -783,15 +765,23 @@ void __init orion_xor1_init(unsigned long mapbase_low,
orion_xor1_shared_resources[1].start = mapbase_high; orion_xor1_shared_resources[1].start = mapbase_high;
orion_xor1_shared_resources[1].end = mapbase_high + 0xff; orion_xor1_shared_resources[1].end = mapbase_high + 0xff;
orion_xor10_resources[0].start = irq_0; orion_xor1_shared_resources[2].start = irq_0;
orion_xor10_resources[0].end = irq_0; orion_xor1_shared_resources[2].end = irq_0;
orion_xor11_resources[0].start = irq_1; orion_xor1_shared_resources[3].start = irq_1;
orion_xor11_resources[0].end = 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_pdata[0].cap_mask);
dma_cap_set(DMA_XOR, orion_xor1_channels_pdata[0].cap_mask);
orion_xor_init_channels(&orion_xor10_data, &orion_xor10_channel, dma_cap_set(DMA_MEMSET, orion_xor1_channels_pdata[1].cap_mask);
&orion_xor11_data, &orion_xor11_channel); dma_cap_set(DMA_MEMCPY, orion_xor1_channels_pdata[1].cap_mask);
dma_cap_set(DMA_XOR, orion_xor1_channels_pdata[1].cap_mask);
platform_device_register(&orion_xor1_shared);
} }
/***************************************************************************** /*****************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment