aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2012-04-19 15:33:58 -0400
committerPaul Walmsley <paul@pwsan.com>2012-04-19 15:33:58 -0400
commit794b480a37e3d284d6ee7344d8a737ef60476ed5 (patch)
tree7f6b49dbb2eb923cf0a9207cb2a2479b1228c667
parenta0b5d81356c35504213fc58f8e8f8403138b6585 (diff)
ARM: OMAP4: hwmod data: add PRCM and related IP blocks
Add the PRCM, CM, PRM, and related hwmod and associated interconnect data. These IP blocks handle most of the on-chip power, reset, and clock control. Signed-off-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: BenoƮt Cousson <b-cousson@ti.com>
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c167
1 files changed, 162 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 8e915d309c1a..66b8da2e6895 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -292,16 +292,11 @@ static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
292 * - They still need to be validated with the driver 292 * - They still need to be validated with the driver
293 * properly adapted to omap_hwmod / omap_device 293 * properly adapted to omap_hwmod / omap_device
294 * 294 *
295 * cm_core
296 * cm_core_aon
297 * debugss 295 * debugss
298 * efuse_ctrl_cust 296 * efuse_ctrl_cust
299 * efuse_ctrl_std 297 * efuse_ctrl_std
300 * mpu_c0 298 * mpu_c0
301 * mpu_c1 299 * mpu_c1
302 * prcm_mpu
303 * prm
304 * scrm
305 * usb_phy_cm 300 * usb_phy_cm
306 * usim 301 * usim
307 */ 302 */
@@ -2507,6 +2502,73 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
2507}; 2502};
2508 2503
2509/* 2504/*
2505 * 'prcm' class
2506 * power and reset manager (part of the prcm infrastructure) + clock manager 2
2507 * + clock manager 1 (in always on power domain) + local prm in mpu
2508 */
2509
2510static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2511 .name = "prcm",
2512};
2513
2514/* prcm_mpu */
2515static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2516 .name = "prcm_mpu",
2517 .class = &omap44xx_prcm_hwmod_class,
2518 .clkdm_name = "l4_wkup_clkdm",
2519};
2520
2521/* cm_core_aon */
2522static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2523 .name = "cm_core_aon",
2524 .class = &omap44xx_prcm_hwmod_class,
2525 .clkdm_name = "cm_clkdm",
2526};
2527
2528/* cm_core */
2529static struct omap_hwmod omap44xx_cm_core_hwmod = {
2530 .name = "cm_core",
2531 .class = &omap44xx_prcm_hwmod_class,
2532 .clkdm_name = "cm_clkdm",
2533};
2534
2535/* prm */
2536static struct omap_hwmod_irq_info omap44xx_prm_irqs[] = {
2537 { .irq = 11 + OMAP44XX_IRQ_GIC_START },
2538 { .irq = -1 }
2539};
2540
2541static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
2542 { .name = "rst_global_warm_sw", .rst_shift = 0 },
2543 { .name = "rst_global_cold_sw", .rst_shift = 1 },
2544};
2545
2546static struct omap_hwmod omap44xx_prm_hwmod = {
2547 .name = "prm",
2548 .class = &omap44xx_prcm_hwmod_class,
2549 .clkdm_name = "prm_clkdm",
2550 .mpu_irqs = omap44xx_prm_irqs,
2551 .rst_lines = omap44xx_prm_resets,
2552 .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
2553};
2554
2555/*
2556 * 'scrm' class
2557 * system clock and reset manager
2558 */
2559
2560static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2561 .name = "scrm",
2562};
2563
2564/* scrm */
2565static struct omap_hwmod omap44xx_scrm_hwmod = {
2566 .name = "scrm",
2567 .class = &omap44xx_scrm_hwmod_class,
2568 .clkdm_name = "l4_wkup_clkdm",
2569};
2570
2571/*
2510 * 'sl2if' class 2572 * 'sl2if' class
2511 * shared level 2 memory interface 2573 * shared level 2 memory interface
2512 */ 2574 */
@@ -5170,6 +5232,96 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = {
5170 .user = OCP_USER_MPU | OCP_USER_SDMA, 5232 .user = OCP_USER_MPU | OCP_USER_SDMA,
5171}; 5233};
5172 5234
5235static struct omap_hwmod_addr_space omap44xx_prcm_mpu_addrs[] = {
5236 {
5237 .pa_start = 0x48243000,
5238 .pa_end = 0x48243fff,
5239 .flags = ADDR_TYPE_RT
5240 },
5241 { }
5242};
5243
5244/* mpu_private -> prcm_mpu */
5245static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
5246 .master = &omap44xx_mpu_private_hwmod,
5247 .slave = &omap44xx_prcm_mpu_hwmod,
5248 .clk = "l3_div_ck",
5249 .addr = omap44xx_prcm_mpu_addrs,
5250 .user = OCP_USER_MPU | OCP_USER_SDMA,
5251};
5252
5253static struct omap_hwmod_addr_space omap44xx_cm_core_aon_addrs[] = {
5254 {
5255 .pa_start = 0x4a004000,
5256 .pa_end = 0x4a004fff,
5257 .flags = ADDR_TYPE_RT
5258 },
5259 { }
5260};
5261
5262/* l4_wkup -> cm_core_aon */
5263static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
5264 .master = &omap44xx_l4_wkup_hwmod,
5265 .slave = &omap44xx_cm_core_aon_hwmod,
5266 .clk = "l4_wkup_clk_mux_ck",
5267 .addr = omap44xx_cm_core_aon_addrs,
5268 .user = OCP_USER_MPU | OCP_USER_SDMA,
5269};
5270
5271static struct omap_hwmod_addr_space omap44xx_cm_core_addrs[] = {
5272 {
5273 .pa_start = 0x4a008000,
5274 .pa_end = 0x4a009fff,
5275 .flags = ADDR_TYPE_RT
5276 },
5277 { }
5278};
5279
5280/* l4_cfg -> cm_core */
5281static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
5282 .master = &omap44xx_l4_cfg_hwmod,
5283 .slave = &omap44xx_cm_core_hwmod,
5284 .clk = "l4_div_ck",
5285 .addr = omap44xx_cm_core_addrs,
5286 .user = OCP_USER_MPU | OCP_USER_SDMA,
5287};
5288
5289static struct omap_hwmod_addr_space omap44xx_prm_addrs[] = {
5290 {
5291 .pa_start = 0x4a306000,
5292 .pa_end = 0x4a307fff,
5293 .flags = ADDR_TYPE_RT
5294 },
5295 { }
5296};
5297
5298/* l4_wkup -> prm */
5299static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
5300 .master = &omap44xx_l4_wkup_hwmod,
5301 .slave = &omap44xx_prm_hwmod,
5302 .clk = "l4_wkup_clk_mux_ck",
5303 .addr = omap44xx_prm_addrs,
5304 .user = OCP_USER_MPU | OCP_USER_SDMA,
5305};
5306
5307static struct omap_hwmod_addr_space omap44xx_scrm_addrs[] = {
5308 {
5309 .pa_start = 0x4a30a000,
5310 .pa_end = 0x4a30a7ff,
5311 .flags = ADDR_TYPE_RT
5312 },
5313 { }
5314};
5315
5316/* l4_wkup -> scrm */
5317static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
5318 .master = &omap44xx_l4_wkup_hwmod,
5319 .slave = &omap44xx_scrm_hwmod,
5320 .clk = "l4_wkup_clk_mux_ck",
5321 .addr = omap44xx_scrm_addrs,
5322 .user = OCP_USER_MPU | OCP_USER_SDMA,
5323};
5324
5173/* l3_main_2 -> sl2if */ 5325/* l3_main_2 -> sl2if */
5174static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sl2if = { 5326static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sl2if = {
5175 .master = &omap44xx_l3_main_2_hwmod, 5327 .master = &omap44xx_l3_main_2_hwmod,
@@ -5901,6 +6053,11 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
5901 &omap44xx_l4_per__mmc5, 6053 &omap44xx_l4_per__mmc5,
5902 &omap44xx_l3_main_2__ocmc_ram, 6054 &omap44xx_l3_main_2__ocmc_ram,
5903 &omap44xx_l4_cfg__ocp2scp_usb_phy, 6055 &omap44xx_l4_cfg__ocp2scp_usb_phy,
6056 &omap44xx_mpu_private__prcm_mpu,
6057 &omap44xx_l4_wkup__cm_core_aon,
6058 &omap44xx_l4_cfg__cm_core,
6059 &omap44xx_l4_wkup__prm,
6060 &omap44xx_l4_wkup__scrm,
5904 &omap44xx_l3_main_2__sl2if, 6061 &omap44xx_l3_main_2__sl2if,
5905 &omap44xx_l4_abe__slimbus1, 6062 &omap44xx_l4_abe__slimbus1,
5906 &omap44xx_l4_abe__slimbus1_dma, 6063 &omap44xx_l4_abe__slimbus1_dma,