diff options
Diffstat (limited to 'arch/arm/plat-mxc/devices/platform-imx-dma.c')
-rw-r--r-- | arch/arm/plat-mxc/devices/platform-imx-dma.c | 127 |
1 files changed, 108 insertions, 19 deletions
diff --git a/arch/arm/plat-mxc/devices/platform-imx-dma.c b/arch/arm/plat-mxc/devices/platform-imx-dma.c index 3a705c7877dd..33530d2d5ed1 100644 --- a/arch/arm/plat-mxc/devices/platform-imx-dma.c +++ b/arch/arm/plat-mxc/devices/platform-imx-dma.c | |||
@@ -31,25 +31,25 @@ struct imx_imx_sdma_data { | |||
31 | }, \ | 31 | }, \ |
32 | } | 32 | } |
33 | 33 | ||
34 | #ifdef CONFIG_ARCH_MX25 | 34 | #ifdef CONFIG_SOC_IMX25 |
35 | const struct imx_imx_sdma_data imx25_imx_sdma_data __initconst = | 35 | struct imx_imx_sdma_data imx25_imx_sdma_data __initconst = |
36 | imx_imx_sdma_data_entry_single(MX25, 1, "imx25", 0); | 36 | imx_imx_sdma_data_entry_single(MX25, 1, "imx25", 0); |
37 | #endif /* ifdef CONFIG_ARCH_MX25 */ | 37 | #endif /* ifdef CONFIG_SOC_IMX25 */ |
38 | 38 | ||
39 | #ifdef CONFIG_ARCH_MX31 | 39 | #ifdef CONFIG_SOC_IMX31 |
40 | struct imx_imx_sdma_data imx31_imx_sdma_data __initdata = | 40 | struct imx_imx_sdma_data imx31_imx_sdma_data __initdata = |
41 | imx_imx_sdma_data_entry_single(MX31, 1, "imx31", 0); | 41 | imx_imx_sdma_data_entry_single(MX31, 1, "imx31", 0); |
42 | #endif /* ifdef CONFIG_ARCH_MX31 */ | 42 | #endif /* ifdef CONFIG_SOC_IMX31 */ |
43 | 43 | ||
44 | #ifdef CONFIG_ARCH_MX35 | 44 | #ifdef CONFIG_SOC_IMX35 |
45 | struct imx_imx_sdma_data imx35_imx_sdma_data __initdata = | 45 | struct imx_imx_sdma_data imx35_imx_sdma_data __initdata = |
46 | imx_imx_sdma_data_entry_single(MX35, 2, "imx35", 0); | 46 | imx_imx_sdma_data_entry_single(MX35, 2, "imx35", 0); |
47 | #endif /* ifdef CONFIG_ARCH_MX35 */ | 47 | #endif /* ifdef CONFIG_SOC_IMX35 */ |
48 | 48 | ||
49 | #ifdef CONFIG_ARCH_MX51 | 49 | #ifdef CONFIG_SOC_IMX51 |
50 | const struct imx_imx_sdma_data imx51_imx_sdma_data __initconst = | 50 | struct imx_imx_sdma_data imx51_imx_sdma_data __initconst = |
51 | imx_imx_sdma_data_entry_single(MX51, 2, "imx51", 0); | 51 | imx_imx_sdma_data_entry_single(MX51, 2, "imx51", 0); |
52 | #endif /* ifdef CONFIG_ARCH_MX51 */ | 52 | #endif /* ifdef CONFIG_SOC_IMX51 */ |
53 | 53 | ||
54 | static struct platform_device __init __maybe_unused *imx_add_imx_sdma( | 54 | static struct platform_device __init __maybe_unused *imx_add_imx_sdma( |
55 | const struct imx_imx_sdma_data *data) | 55 | const struct imx_imx_sdma_data *data) |
@@ -76,6 +76,83 @@ static struct platform_device __init __maybe_unused *imx_add_imx_dma(void) | |||
76 | return imx_add_platform_device("imx-dma", -1, NULL, 0, NULL, 0); | 76 | return imx_add_platform_device("imx-dma", -1, NULL, 0, NULL, 0); |
77 | } | 77 | } |
78 | 78 | ||
79 | #ifdef CONFIG_ARCH_MX25 | ||
80 | static struct sdma_script_start_addrs addr_imx25_to1 = { | ||
81 | .ap_2_ap_addr = 729, | ||
82 | .uart_2_mcu_addr = 904, | ||
83 | .per_2_app_addr = 1255, | ||
84 | .mcu_2_app_addr = 834, | ||
85 | .uartsh_2_mcu_addr = 1120, | ||
86 | .per_2_shp_addr = 1329, | ||
87 | .mcu_2_shp_addr = 1048, | ||
88 | .ata_2_mcu_addr = 1560, | ||
89 | .mcu_2_ata_addr = 1479, | ||
90 | .app_2_per_addr = 1189, | ||
91 | .app_2_mcu_addr = 770, | ||
92 | .shp_2_per_addr = 1407, | ||
93 | .shp_2_mcu_addr = 979, | ||
94 | }; | ||
95 | #endif | ||
96 | |||
97 | #ifdef CONFIG_ARCH_MX31 | ||
98 | static struct sdma_script_start_addrs addr_imx31_to1 = { | ||
99 | .per_2_per_addr = 1677, | ||
100 | }; | ||
101 | |||
102 | static struct sdma_script_start_addrs addr_imx31_to2 = { | ||
103 | .ap_2_ap_addr = 423, | ||
104 | .ap_2_bp_addr = 829, | ||
105 | .bp_2_ap_addr = 1029, | ||
106 | }; | ||
107 | #endif | ||
108 | |||
109 | #ifdef CONFIG_ARCH_MX35 | ||
110 | static struct sdma_script_start_addrs addr_imx35_to1 = { | ||
111 | .ap_2_ap_addr = 642, | ||
112 | .uart_2_mcu_addr = 817, | ||
113 | .mcu_2_app_addr = 747, | ||
114 | .uartsh_2_mcu_addr = 1183, | ||
115 | .per_2_shp_addr = 1033, | ||
116 | .mcu_2_shp_addr = 961, | ||
117 | .ata_2_mcu_addr = 1333, | ||
118 | .mcu_2_ata_addr = 1252, | ||
119 | .app_2_mcu_addr = 683, | ||
120 | .shp_2_per_addr = 1111, | ||
121 | .shp_2_mcu_addr = 892, | ||
122 | }; | ||
123 | |||
124 | static struct sdma_script_start_addrs addr_imx35_to2 = { | ||
125 | .ap_2_ap_addr = 729, | ||
126 | .uart_2_mcu_addr = 904, | ||
127 | .per_2_app_addr = 1597, | ||
128 | .mcu_2_app_addr = 834, | ||
129 | .uartsh_2_mcu_addr = 1270, | ||
130 | .per_2_shp_addr = 1120, | ||
131 | .mcu_2_shp_addr = 1048, | ||
132 | .ata_2_mcu_addr = 1429, | ||
133 | .mcu_2_ata_addr = 1339, | ||
134 | .app_2_per_addr = 1531, | ||
135 | .app_2_mcu_addr = 770, | ||
136 | .shp_2_per_addr = 1198, | ||
137 | .shp_2_mcu_addr = 979, | ||
138 | }; | ||
139 | #endif | ||
140 | |||
141 | #ifdef CONFIG_SOC_IMX51 | ||
142 | static struct sdma_script_start_addrs addr_imx51_to1 = { | ||
143 | .ap_2_ap_addr = 642, | ||
144 | .uart_2_mcu_addr = 817, | ||
145 | .mcu_2_app_addr = 747, | ||
146 | .mcu_2_shp_addr = 961, | ||
147 | .ata_2_mcu_addr = 1473, | ||
148 | .mcu_2_ata_addr = 1392, | ||
149 | .app_2_per_addr = 1033, | ||
150 | .app_2_mcu_addr = 683, | ||
151 | .shp_2_per_addr = 1251, | ||
152 | .shp_2_mcu_addr = 892, | ||
153 | }; | ||
154 | #endif | ||
155 | |||
79 | static int __init imxXX_add_imx_dma(void) | 156 | static int __init imxXX_add_imx_dma(void) |
80 | { | 157 | { |
81 | struct platform_device *ret; | 158 | struct platform_device *ret; |
@@ -86,30 +163,42 @@ static int __init imxXX_add_imx_dma(void) | |||
86 | else | 163 | else |
87 | #endif | 164 | #endif |
88 | 165 | ||
89 | #if defined(CONFIG_ARCH_MX25) | 166 | #if defined(CONFIG_SOC_IMX25) |
90 | if (cpu_is_mx25()) | 167 | if (cpu_is_mx25()) { |
168 | imx25_imx_sdma_data.pdata.script_addrs = &addr_imx25_to1; | ||
91 | ret = imx_add_imx_sdma(&imx25_imx_sdma_data); | 169 | ret = imx_add_imx_sdma(&imx25_imx_sdma_data); |
92 | else | 170 | } else |
93 | #endif | 171 | #endif |
94 | 172 | ||
95 | #if defined(CONFIG_ARCH_MX31) | 173 | #if defined(CONFIG_SOC_IMX31) |
96 | if (cpu_is_mx31()) { | 174 | if (cpu_is_mx31()) { |
97 | imx31_imx_sdma_data.pdata.to_version = mx31_revision() >> 4; | 175 | int to_version = mx31_revision() >> 4; |
176 | imx31_imx_sdma_data.pdata.to_version = to_version; | ||
177 | if (to_version == 1) | ||
178 | imx31_imx_sdma_data.pdata.script_addrs = &addr_imx31_to1; | ||
179 | else | ||
180 | imx31_imx_sdma_data.pdata.script_addrs = &addr_imx31_to2; | ||
98 | ret = imx_add_imx_sdma(&imx31_imx_sdma_data); | 181 | ret = imx_add_imx_sdma(&imx31_imx_sdma_data); |
99 | } else | 182 | } else |
100 | #endif | 183 | #endif |
101 | 184 | ||
102 | #if defined(CONFIG_ARCH_MX35) | 185 | #if defined(CONFIG_SOC_IMX35) |
103 | if (cpu_is_mx35()) { | 186 | if (cpu_is_mx35()) { |
104 | imx35_imx_sdma_data.pdata.to_version = mx35_revision() >> 4; | 187 | int to_version = mx35_revision() >> 4; |
188 | imx35_imx_sdma_data.pdata.to_version = to_version; | ||
189 | if (to_version == 1) | ||
190 | imx35_imx_sdma_data.pdata.script_addrs = &addr_imx35_to1; | ||
191 | else | ||
192 | imx35_imx_sdma_data.pdata.script_addrs = &addr_imx35_to2; | ||
105 | ret = imx_add_imx_sdma(&imx35_imx_sdma_data); | 193 | ret = imx_add_imx_sdma(&imx35_imx_sdma_data); |
106 | } else | 194 | } else |
107 | #endif | 195 | #endif |
108 | 196 | ||
109 | #if defined(CONFIG_ARCH_MX51) | 197 | #if defined(CONFIG_ARCH_MX51) |
110 | if (cpu_is_mx51()) | 198 | if (cpu_is_mx51()) { |
199 | imx51_imx_sdma_data.pdata.script_addrs = &addr_imx51_to1; | ||
111 | ret = imx_add_imx_sdma(&imx51_imx_sdma_data); | 200 | ret = imx_add_imx_sdma(&imx51_imx_sdma_data); |
112 | else | 201 | } else |
113 | #endif | 202 | #endif |
114 | ret = ERR_PTR(-ENODEV); | 203 | ret = ERR_PTR(-ENODEV); |
115 | 204 | ||