diff options
author | Paul Walmsley <paul@pwsan.com> | 2011-03-01 16:12:55 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2011-03-01 16:12:55 -0500 |
commit | bce06f375644f8b28fbc1d261699fdfe459733ad (patch) | |
tree | d7fc5473f7ba3e012114bc3da708af8d735fd482 /arch | |
parent | e08016d0f4fcfe038a402071ada3073c6ca8d62d (diff) |
OMAP2430: hwmod data: Add HSMMC
Update the omap2430 hwmod data with the HSMMC info.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com
Signed-off-by: Kishore Kadiyala <kishore.kadiyala@ti.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2430_data.c | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index b46a54ce1a41..0d239e3a9801 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
@@ -55,6 +55,8 @@ static struct omap_hwmod omap2430_dma_system_hwmod; | |||
55 | static struct omap_hwmod omap2430_mcspi1_hwmod; | 55 | static struct omap_hwmod omap2430_mcspi1_hwmod; |
56 | static struct omap_hwmod omap2430_mcspi2_hwmod; | 56 | static struct omap_hwmod omap2430_mcspi2_hwmod; |
57 | static struct omap_hwmod omap2430_mcspi3_hwmod; | 57 | static struct omap_hwmod omap2430_mcspi3_hwmod; |
58 | static struct omap_hwmod omap2430_mmc1_hwmod; | ||
59 | static struct omap_hwmod omap2430_mmc2_hwmod; | ||
58 | 60 | ||
59 | /* L3 -> L4_CORE interface */ | 61 | /* L3 -> L4_CORE interface */ |
60 | static struct omap_hwmod_ocp_if omap2430_l3_main__l4_core = { | 62 | static struct omap_hwmod_ocp_if omap2430_l3_main__l4_core = { |
@@ -251,6 +253,42 @@ static struct omap_hwmod_ocp_if *omap2430_usbhsotg_slaves[] = { | |||
251 | &omap2430_l4_core__usbhsotg, | 253 | &omap2430_l4_core__usbhsotg, |
252 | }; | 254 | }; |
253 | 255 | ||
256 | /* L4 CORE -> MMC1 interface */ | ||
257 | static struct omap_hwmod_addr_space omap2430_mmc1_addr_space[] = { | ||
258 | { | ||
259 | .pa_start = 0x4809c000, | ||
260 | .pa_end = 0x4809c1ff, | ||
261 | .flags = ADDR_TYPE_RT, | ||
262 | }, | ||
263 | }; | ||
264 | |||
265 | static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = { | ||
266 | .master = &omap2430_l4_core_hwmod, | ||
267 | .slave = &omap2430_mmc1_hwmod, | ||
268 | .clk = "mmchs1_ick", | ||
269 | .addr = omap2430_mmc1_addr_space, | ||
270 | .addr_cnt = ARRAY_SIZE(omap2430_mmc1_addr_space), | ||
271 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
272 | }; | ||
273 | |||
274 | /* L4 CORE -> MMC2 interface */ | ||
275 | static struct omap_hwmod_addr_space omap2430_mmc2_addr_space[] = { | ||
276 | { | ||
277 | .pa_start = 0x480b4000, | ||
278 | .pa_end = 0x480b41ff, | ||
279 | .flags = ADDR_TYPE_RT, | ||
280 | }, | ||
281 | }; | ||
282 | |||
283 | static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = { | ||
284 | .master = &omap2430_l4_core_hwmod, | ||
285 | .slave = &omap2430_mmc2_hwmod, | ||
286 | .addr = omap2430_mmc2_addr_space, | ||
287 | .clk = "mmchs2_ick", | ||
288 | .addr_cnt = ARRAY_SIZE(omap2430_mmc2_addr_space), | ||
289 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
290 | }; | ||
291 | |||
254 | /* Slave interfaces on the L4_CORE interconnect */ | 292 | /* Slave interfaces on the L4_CORE interconnect */ |
255 | static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = { | 293 | static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = { |
256 | &omap2430_l3_main__l4_core, | 294 | &omap2430_l3_main__l4_core, |
@@ -259,6 +297,8 @@ static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = { | |||
259 | /* Master interfaces on the L4_CORE interconnect */ | 297 | /* Master interfaces on the L4_CORE interconnect */ |
260 | static struct omap_hwmod_ocp_if *omap2430_l4_core_masters[] = { | 298 | static struct omap_hwmod_ocp_if *omap2430_l4_core_masters[] = { |
261 | &omap2430_l4_core__l4_wkup, | 299 | &omap2430_l4_core__l4_wkup, |
300 | &omap2430_l4_core__mmc1, | ||
301 | &omap2430_l4_core__mmc2, | ||
262 | }; | 302 | }; |
263 | 303 | ||
264 | /* L4 CORE */ | 304 | /* L4 CORE */ |
@@ -2127,6 +2167,112 @@ static struct omap_hwmod omap2430_usbhsotg_hwmod = { | |||
2127 | 2167 | ||
2128 | 2168 | ||
2129 | 2169 | ||
2170 | /* MMC/SD/SDIO common */ | ||
2171 | |||
2172 | static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = { | ||
2173 | .rev_offs = 0x1fc, | ||
2174 | .sysc_offs = 0x10, | ||
2175 | .syss_offs = 0x14, | ||
2176 | .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | | ||
2177 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | | ||
2178 | SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), | ||
2179 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
2180 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
2181 | }; | ||
2182 | |||
2183 | static struct omap_hwmod_class omap2430_mmc_class = { | ||
2184 | .name = "mmc", | ||
2185 | .sysc = &omap2430_mmc_sysc, | ||
2186 | }; | ||
2187 | |||
2188 | /* MMC/SD/SDIO1 */ | ||
2189 | |||
2190 | static struct omap_hwmod_irq_info omap2430_mmc1_mpu_irqs[] = { | ||
2191 | { .irq = 83 }, | ||
2192 | }; | ||
2193 | |||
2194 | static struct omap_hwmod_dma_info omap2430_mmc1_sdma_reqs[] = { | ||
2195 | { .name = "tx", .dma_req = 61 }, /* DMA_MMC1_TX */ | ||
2196 | { .name = "rx", .dma_req = 62 }, /* DMA_MMC1_RX */ | ||
2197 | }; | ||
2198 | |||
2199 | static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = { | ||
2200 | { .role = "dbck", .clk = "mmchsdb1_fck" }, | ||
2201 | }; | ||
2202 | |||
2203 | static struct omap_hwmod_ocp_if *omap2430_mmc1_slaves[] = { | ||
2204 | &omap2430_l4_core__mmc1, | ||
2205 | }; | ||
2206 | |||
2207 | static struct omap_hwmod omap2430_mmc1_hwmod = { | ||
2208 | .name = "mmc1", | ||
2209 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | ||
2210 | .mpu_irqs = omap2430_mmc1_mpu_irqs, | ||
2211 | .mpu_irqs_cnt = ARRAY_SIZE(omap2430_mmc1_mpu_irqs), | ||
2212 | .sdma_reqs = omap2430_mmc1_sdma_reqs, | ||
2213 | .sdma_reqs_cnt = ARRAY_SIZE(omap2430_mmc1_sdma_reqs), | ||
2214 | .opt_clks = omap2430_mmc1_opt_clks, | ||
2215 | .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc1_opt_clks), | ||
2216 | .main_clk = "mmchs1_fck", | ||
2217 | .prcm = { | ||
2218 | .omap2 = { | ||
2219 | .module_offs = CORE_MOD, | ||
2220 | .prcm_reg_id = 2, | ||
2221 | .module_bit = OMAP2430_EN_MMCHS1_SHIFT, | ||
2222 | .idlest_reg_id = 2, | ||
2223 | .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT, | ||
2224 | }, | ||
2225 | }, | ||
2226 | .slaves = omap2430_mmc1_slaves, | ||
2227 | .slaves_cnt = ARRAY_SIZE(omap2430_mmc1_slaves), | ||
2228 | .class = &omap2430_mmc_class, | ||
2229 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
2230 | }; | ||
2231 | |||
2232 | /* MMC/SD/SDIO2 */ | ||
2233 | |||
2234 | static struct omap_hwmod_irq_info omap2430_mmc2_mpu_irqs[] = { | ||
2235 | { .irq = 86 }, | ||
2236 | }; | ||
2237 | |||
2238 | static struct omap_hwmod_dma_info omap2430_mmc2_sdma_reqs[] = { | ||
2239 | { .name = "tx", .dma_req = 47 }, /* DMA_MMC2_TX */ | ||
2240 | { .name = "rx", .dma_req = 48 }, /* DMA_MMC2_RX */ | ||
2241 | }; | ||
2242 | |||
2243 | static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = { | ||
2244 | { .role = "dbck", .clk = "mmchsdb2_fck" }, | ||
2245 | }; | ||
2246 | |||
2247 | static struct omap_hwmod_ocp_if *omap2430_mmc2_slaves[] = { | ||
2248 | &omap2430_l4_core__mmc2, | ||
2249 | }; | ||
2250 | |||
2251 | static struct omap_hwmod omap2430_mmc2_hwmod = { | ||
2252 | .name = "mmc2", | ||
2253 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | ||
2254 | .mpu_irqs = omap2430_mmc2_mpu_irqs, | ||
2255 | .mpu_irqs_cnt = ARRAY_SIZE(omap2430_mmc2_mpu_irqs), | ||
2256 | .sdma_reqs = omap2430_mmc2_sdma_reqs, | ||
2257 | .sdma_reqs_cnt = ARRAY_SIZE(omap2430_mmc2_sdma_reqs), | ||
2258 | .opt_clks = omap2430_mmc2_opt_clks, | ||
2259 | .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc2_opt_clks), | ||
2260 | .main_clk = "mmchs2_fck", | ||
2261 | .prcm = { | ||
2262 | .omap2 = { | ||
2263 | .module_offs = CORE_MOD, | ||
2264 | .prcm_reg_id = 2, | ||
2265 | .module_bit = OMAP2430_EN_MMCHS2_SHIFT, | ||
2266 | .idlest_reg_id = 2, | ||
2267 | .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT, | ||
2268 | }, | ||
2269 | }, | ||
2270 | .slaves = omap2430_mmc2_slaves, | ||
2271 | .slaves_cnt = ARRAY_SIZE(omap2430_mmc2_slaves), | ||
2272 | .class = &omap2430_mmc_class, | ||
2273 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
2274 | }; | ||
2275 | |||
2130 | static __initdata struct omap_hwmod *omap2430_hwmods[] = { | 2276 | static __initdata struct omap_hwmod *omap2430_hwmods[] = { |
2131 | &omap2430_l3_main_hwmod, | 2277 | &omap2430_l3_main_hwmod, |
2132 | &omap2430_l4_core_hwmod, | 2278 | &omap2430_l4_core_hwmod, |
@@ -2159,6 +2305,8 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = { | |||
2159 | /* i2c class */ | 2305 | /* i2c class */ |
2160 | &omap2430_i2c1_hwmod, | 2306 | &omap2430_i2c1_hwmod, |
2161 | &omap2430_i2c2_hwmod, | 2307 | &omap2430_i2c2_hwmod, |
2308 | &omap2430_mmc1_hwmod, | ||
2309 | &omap2430_mmc2_hwmod, | ||
2162 | 2310 | ||
2163 | /* gpio class */ | 2311 | /* gpio class */ |
2164 | &omap2430_gpio1_hwmod, | 2312 | &omap2430_gpio1_hwmod, |