diff options
author | Benoit Cousson <b-cousson@ti.com> | 2011-02-15 16:39:48 -0500 |
---|---|---|
committer | Benoit Cousson <b-cousson@ti.com> | 2011-02-17 12:25:37 -0500 |
commit | 407a6888f7362cb3dabe69ea6d9dcf3c750dc56a (patch) | |
tree | 7ad2a6e0fdb29a024883d3347b3ccce1c9ae5176 /arch | |
parent | 4ddff4932b31b8f21d1c57155ca5d4088693ce4b (diff) |
OMAP4: hwmod data: Add AESS, McPDM, bandgap, counter_32k, MMC, KBD, ISS & IPU
Add more hwmod structures but keep them commented out for the moment
until the driver adaptation to hwmod / omap_device is done.
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 1009 |
1 files changed, 993 insertions, 16 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index f108614f02f6..989bc9670436 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -40,11 +40,15 @@ | |||
40 | #define OMAP44XX_DMA_REQ_START 1 | 40 | #define OMAP44XX_DMA_REQ_START 1 |
41 | 41 | ||
42 | /* Backward references (IPs with Bus Master capability) */ | 42 | /* Backward references (IPs with Bus Master capability) */ |
43 | static struct omap_hwmod omap44xx_aess_hwmod; | ||
43 | static struct omap_hwmod omap44xx_dma_system_hwmod; | 44 | static struct omap_hwmod omap44xx_dma_system_hwmod; |
44 | static struct omap_hwmod omap44xx_dmm_hwmod; | 45 | static struct omap_hwmod omap44xx_dmm_hwmod; |
45 | static struct omap_hwmod omap44xx_dsp_hwmod; | 46 | static struct omap_hwmod omap44xx_dsp_hwmod; |
46 | static struct omap_hwmod omap44xx_dss_hwmod; | 47 | static struct omap_hwmod omap44xx_dss_hwmod; |
47 | static struct omap_hwmod omap44xx_emif_fw_hwmod; | 48 | static struct omap_hwmod omap44xx_emif_fw_hwmod; |
49 | static struct omap_hwmod omap44xx_hsi_hwmod; | ||
50 | static struct omap_hwmod omap44xx_ipu_hwmod; | ||
51 | static struct omap_hwmod omap44xx_iss_hwmod; | ||
48 | static struct omap_hwmod omap44xx_iva_hwmod; | 52 | static struct omap_hwmod omap44xx_iva_hwmod; |
49 | static struct omap_hwmod omap44xx_l3_instr_hwmod; | 53 | static struct omap_hwmod omap44xx_l3_instr_hwmod; |
50 | static struct omap_hwmod omap44xx_l3_main_1_hwmod; | 54 | static struct omap_hwmod omap44xx_l3_main_1_hwmod; |
@@ -54,6 +58,8 @@ static struct omap_hwmod omap44xx_l4_abe_hwmod; | |||
54 | static struct omap_hwmod omap44xx_l4_cfg_hwmod; | 58 | static struct omap_hwmod omap44xx_l4_cfg_hwmod; |
55 | static struct omap_hwmod omap44xx_l4_per_hwmod; | 59 | static struct omap_hwmod omap44xx_l4_per_hwmod; |
56 | static struct omap_hwmod omap44xx_l4_wkup_hwmod; | 60 | static struct omap_hwmod omap44xx_l4_wkup_hwmod; |
61 | static struct omap_hwmod omap44xx_mmc1_hwmod; | ||
62 | static struct omap_hwmod omap44xx_mmc2_hwmod; | ||
57 | static struct omap_hwmod omap44xx_mpu_hwmod; | 63 | static struct omap_hwmod omap44xx_mpu_hwmod; |
58 | static struct omap_hwmod omap44xx_mpu_private_hwmod; | 64 | static struct omap_hwmod omap44xx_mpu_private_hwmod; |
59 | 65 | ||
@@ -238,6 +244,22 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = { | |||
238 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 244 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
239 | }; | 245 | }; |
240 | 246 | ||
247 | /* mmc1 -> l3_main_1 */ | ||
248 | static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = { | ||
249 | .master = &omap44xx_mmc1_hwmod, | ||
250 | .slave = &omap44xx_l3_main_1_hwmod, | ||
251 | .clk = "l3_div_ck", | ||
252 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
253 | }; | ||
254 | |||
255 | /* mmc2 -> l3_main_1 */ | ||
256 | static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = { | ||
257 | .master = &omap44xx_mmc2_hwmod, | ||
258 | .slave = &omap44xx_l3_main_1_hwmod, | ||
259 | .clk = "l3_div_ck", | ||
260 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
261 | }; | ||
262 | |||
241 | /* mpu -> l3_main_1 */ | 263 | /* mpu -> l3_main_1 */ |
242 | static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { | 264 | static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { |
243 | .master = &omap44xx_mpu_hwmod, | 265 | .master = &omap44xx_mpu_hwmod, |
@@ -252,6 +274,8 @@ static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { | |||
252 | &omap44xx_dss__l3_main_1, | 274 | &omap44xx_dss__l3_main_1, |
253 | &omap44xx_l3_main_2__l3_main_1, | 275 | &omap44xx_l3_main_2__l3_main_1, |
254 | &omap44xx_l4_cfg__l3_main_1, | 276 | &omap44xx_l4_cfg__l3_main_1, |
277 | &omap44xx_mmc1__l3_main_1, | ||
278 | &omap44xx_mmc2__l3_main_1, | ||
255 | &omap44xx_mpu__l3_main_1, | 279 | &omap44xx_mpu__l3_main_1, |
256 | }; | 280 | }; |
257 | 281 | ||
@@ -272,6 +296,30 @@ static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = { | |||
272 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 296 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
273 | }; | 297 | }; |
274 | 298 | ||
299 | /* hsi -> l3_main_2 */ | ||
300 | static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = { | ||
301 | .master = &omap44xx_hsi_hwmod, | ||
302 | .slave = &omap44xx_l3_main_2_hwmod, | ||
303 | .clk = "l3_div_ck", | ||
304 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
305 | }; | ||
306 | |||
307 | /* ipu -> l3_main_2 */ | ||
308 | static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = { | ||
309 | .master = &omap44xx_ipu_hwmod, | ||
310 | .slave = &omap44xx_l3_main_2_hwmod, | ||
311 | .clk = "l3_div_ck", | ||
312 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
313 | }; | ||
314 | |||
315 | /* iss -> l3_main_2 */ | ||
316 | static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = { | ||
317 | .master = &omap44xx_iss_hwmod, | ||
318 | .slave = &omap44xx_l3_main_2_hwmod, | ||
319 | .clk = "l3_div_ck", | ||
320 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
321 | }; | ||
322 | |||
275 | /* iva -> l3_main_2 */ | 323 | /* iva -> l3_main_2 */ |
276 | static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = { | 324 | static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = { |
277 | .master = &omap44xx_iva_hwmod, | 325 | .master = &omap44xx_iva_hwmod, |
@@ -299,6 +347,9 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { | |||
299 | /* l3_main_2 slave ports */ | 347 | /* l3_main_2 slave ports */ |
300 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { | 348 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { |
301 | &omap44xx_dma_system__l3_main_2, | 349 | &omap44xx_dma_system__l3_main_2, |
350 | &omap44xx_hsi__l3_main_2, | ||
351 | &omap44xx_ipu__l3_main_2, | ||
352 | &omap44xx_iss__l3_main_2, | ||
302 | &omap44xx_iva__l3_main_2, | 353 | &omap44xx_iva__l3_main_2, |
303 | &omap44xx_l3_main_1__l3_main_2, | 354 | &omap44xx_l3_main_1__l3_main_2, |
304 | &omap44xx_l4_cfg__l3_main_2, | 355 | &omap44xx_l4_cfg__l3_main_2, |
@@ -361,6 +412,14 @@ static struct omap_hwmod_class omap44xx_l4_hwmod_class = { | |||
361 | }; | 412 | }; |
362 | 413 | ||
363 | /* l4_abe interface data */ | 414 | /* l4_abe interface data */ |
415 | /* aess -> l4_abe */ | ||
416 | static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = { | ||
417 | .master = &omap44xx_aess_hwmod, | ||
418 | .slave = &omap44xx_l4_abe_hwmod, | ||
419 | .clk = "ocp_abe_iclk", | ||
420 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
421 | }; | ||
422 | |||
364 | /* dsp -> l4_abe */ | 423 | /* dsp -> l4_abe */ |
365 | static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { | 424 | static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { |
366 | .master = &omap44xx_dsp_hwmod, | 425 | .master = &omap44xx_dsp_hwmod, |
@@ -387,6 +446,7 @@ static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = { | |||
387 | 446 | ||
388 | /* l4_abe slave ports */ | 447 | /* l4_abe slave ports */ |
389 | static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { | 448 | static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { |
449 | &omap44xx_aess__l4_abe, | ||
390 | &omap44xx_dsp__l4_abe, | 450 | &omap44xx_dsp__l4_abe, |
391 | &omap44xx_l3_main_1__l4_abe, | 451 | &omap44xx_l3_main_1__l4_abe, |
392 | &omap44xx_mpu__l4_abe, | 452 | &omap44xx_mpu__l4_abe, |
@@ -504,13 +564,10 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
504 | * - They still need to be validated with the driver | 564 | * - They still need to be validated with the driver |
505 | * properly adapted to omap_hwmod / omap_device | 565 | * properly adapted to omap_hwmod / omap_device |
506 | * | 566 | * |
507 | * aess | ||
508 | * bandgap | ||
509 | * c2c | 567 | * c2c |
510 | * c2c_target_fw | 568 | * c2c_target_fw |
511 | * cm_core | 569 | * cm_core |
512 | * cm_core_aon | 570 | * cm_core_aon |
513 | * counter_32k | ||
514 | * ctrl_module_core | 571 | * ctrl_module_core |
515 | * ctrl_module_pad_core | 572 | * ctrl_module_pad_core |
516 | * ctrl_module_pad_wkup | 573 | * ctrl_module_pad_wkup |
@@ -526,22 +583,9 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
526 | * gpu | 583 | * gpu |
527 | * hdq1w | 584 | * hdq1w |
528 | * hsi | 585 | * hsi |
529 | * ipu | ||
530 | * iss | ||
531 | * kbd | ||
532 | * mcasp | ||
533 | * mcpdm | ||
534 | * mmc1 | ||
535 | * mmc2 | ||
536 | * mmc3 | ||
537 | * mmc4 | ||
538 | * mmc5 | ||
539 | * mpu_c0 | ||
540 | * mpu_c1 | ||
541 | * ocmc_ram | 586 | * ocmc_ram |
542 | * ocp2scp_usb_phy | 587 | * ocp2scp_usb_phy |
543 | * ocp_wp_noc | 588 | * ocp_wp_noc |
544 | * prcm | ||
545 | * prcm_mpu | 589 | * prcm_mpu |
546 | * prm | 590 | * prm |
547 | * scrm | 591 | * scrm |
@@ -557,6 +601,194 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
557 | */ | 601 | */ |
558 | 602 | ||
559 | /* | 603 | /* |
604 | * 'aess' class | ||
605 | * audio engine sub system | ||
606 | */ | ||
607 | |||
608 | static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = { | ||
609 | .rev_offs = 0x0000, | ||
610 | .sysc_offs = 0x0010, | ||
611 | .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE), | ||
612 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
613 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
614 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
615 | }; | ||
616 | |||
617 | static struct omap_hwmod_class omap44xx_aess_hwmod_class = { | ||
618 | .name = "aess", | ||
619 | .sysc = &omap44xx_aess_sysc, | ||
620 | }; | ||
621 | |||
622 | /* aess */ | ||
623 | static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = { | ||
624 | { .irq = 99 + OMAP44XX_IRQ_GIC_START }, | ||
625 | }; | ||
626 | |||
627 | static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = { | ||
628 | { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START }, | ||
629 | { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START }, | ||
630 | { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START }, | ||
631 | { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START }, | ||
632 | { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START }, | ||
633 | { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START }, | ||
634 | { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START }, | ||
635 | { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START }, | ||
636 | }; | ||
637 | |||
638 | /* aess master ports */ | ||
639 | static struct omap_hwmod_ocp_if *omap44xx_aess_masters[] = { | ||
640 | &omap44xx_aess__l4_abe, | ||
641 | }; | ||
642 | |||
643 | static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = { | ||
644 | { | ||
645 | .pa_start = 0x401f1000, | ||
646 | .pa_end = 0x401f13ff, | ||
647 | .flags = ADDR_TYPE_RT | ||
648 | }, | ||
649 | }; | ||
650 | |||
651 | /* l4_abe -> aess */ | ||
652 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = { | ||
653 | .master = &omap44xx_l4_abe_hwmod, | ||
654 | .slave = &omap44xx_aess_hwmod, | ||
655 | .clk = "ocp_abe_iclk", | ||
656 | .addr = omap44xx_aess_addrs, | ||
657 | .addr_cnt = ARRAY_SIZE(omap44xx_aess_addrs), | ||
658 | .user = OCP_USER_MPU, | ||
659 | }; | ||
660 | |||
661 | static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = { | ||
662 | { | ||
663 | .pa_start = 0x490f1000, | ||
664 | .pa_end = 0x490f13ff, | ||
665 | .flags = ADDR_TYPE_RT | ||
666 | }, | ||
667 | }; | ||
668 | |||
669 | /* l4_abe -> aess (dma) */ | ||
670 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = { | ||
671 | .master = &omap44xx_l4_abe_hwmod, | ||
672 | .slave = &omap44xx_aess_hwmod, | ||
673 | .clk = "ocp_abe_iclk", | ||
674 | .addr = omap44xx_aess_dma_addrs, | ||
675 | .addr_cnt = ARRAY_SIZE(omap44xx_aess_dma_addrs), | ||
676 | .user = OCP_USER_SDMA, | ||
677 | }; | ||
678 | |||
679 | /* aess slave ports */ | ||
680 | static struct omap_hwmod_ocp_if *omap44xx_aess_slaves[] = { | ||
681 | &omap44xx_l4_abe__aess, | ||
682 | &omap44xx_l4_abe__aess_dma, | ||
683 | }; | ||
684 | |||
685 | static struct omap_hwmod omap44xx_aess_hwmod = { | ||
686 | .name = "aess", | ||
687 | .class = &omap44xx_aess_hwmod_class, | ||
688 | .mpu_irqs = omap44xx_aess_irqs, | ||
689 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_aess_irqs), | ||
690 | .sdma_reqs = omap44xx_aess_sdma_reqs, | ||
691 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_aess_sdma_reqs), | ||
692 | .main_clk = "aess_fck", | ||
693 | .prcm = { | ||
694 | .omap4 = { | ||
695 | .clkctrl_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL, | ||
696 | }, | ||
697 | }, | ||
698 | .slaves = omap44xx_aess_slaves, | ||
699 | .slaves_cnt = ARRAY_SIZE(omap44xx_aess_slaves), | ||
700 | .masters = omap44xx_aess_masters, | ||
701 | .masters_cnt = ARRAY_SIZE(omap44xx_aess_masters), | ||
702 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
703 | }; | ||
704 | |||
705 | /* | ||
706 | * 'bandgap' class | ||
707 | * bangap reference for ldo regulators | ||
708 | */ | ||
709 | |||
710 | static struct omap_hwmod_class omap44xx_bandgap_hwmod_class = { | ||
711 | .name = "bandgap", | ||
712 | }; | ||
713 | |||
714 | /* bandgap */ | ||
715 | static struct omap_hwmod_opt_clk bandgap_opt_clks[] = { | ||
716 | { .role = "fclk", .clk = "bandgap_fclk" }, | ||
717 | }; | ||
718 | |||
719 | static struct omap_hwmod omap44xx_bandgap_hwmod = { | ||
720 | .name = "bandgap", | ||
721 | .class = &omap44xx_bandgap_hwmod_class, | ||
722 | .prcm = { | ||
723 | .omap4 = { | ||
724 | .clkctrl_reg = OMAP4430_CM_WKUP_BANDGAP_CLKCTRL, | ||
725 | }, | ||
726 | }, | ||
727 | .opt_clks = bandgap_opt_clks, | ||
728 | .opt_clks_cnt = ARRAY_SIZE(bandgap_opt_clks), | ||
729 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
730 | }; | ||
731 | |||
732 | /* | ||
733 | * 'counter' class | ||
734 | * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock | ||
735 | */ | ||
736 | |||
737 | static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = { | ||
738 | .rev_offs = 0x0000, | ||
739 | .sysc_offs = 0x0004, | ||
740 | .sysc_flags = SYSC_HAS_SIDLEMODE, | ||
741 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
742 | SIDLE_SMART_WKUP), | ||
743 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
744 | }; | ||
745 | |||
746 | static struct omap_hwmod_class omap44xx_counter_hwmod_class = { | ||
747 | .name = "counter", | ||
748 | .sysc = &omap44xx_counter_sysc, | ||
749 | }; | ||
750 | |||
751 | /* counter_32k */ | ||
752 | static struct omap_hwmod omap44xx_counter_32k_hwmod; | ||
753 | static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = { | ||
754 | { | ||
755 | .pa_start = 0x4a304000, | ||
756 | .pa_end = 0x4a30401f, | ||
757 | .flags = ADDR_TYPE_RT | ||
758 | }, | ||
759 | }; | ||
760 | |||
761 | /* l4_wkup -> counter_32k */ | ||
762 | static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = { | ||
763 | .master = &omap44xx_l4_wkup_hwmod, | ||
764 | .slave = &omap44xx_counter_32k_hwmod, | ||
765 | .clk = "l4_wkup_clk_mux_ck", | ||
766 | .addr = omap44xx_counter_32k_addrs, | ||
767 | .addr_cnt = ARRAY_SIZE(omap44xx_counter_32k_addrs), | ||
768 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
769 | }; | ||
770 | |||
771 | /* counter_32k slave ports */ | ||
772 | static struct omap_hwmod_ocp_if *omap44xx_counter_32k_slaves[] = { | ||
773 | &omap44xx_l4_wkup__counter_32k, | ||
774 | }; | ||
775 | |||
776 | static struct omap_hwmod omap44xx_counter_32k_hwmod = { | ||
777 | .name = "counter_32k", | ||
778 | .class = &omap44xx_counter_hwmod_class, | ||
779 | .flags = HWMOD_SWSUP_SIDLE, | ||
780 | .main_clk = "sys_32k_ck", | ||
781 | .prcm = { | ||
782 | .omap4 = { | ||
783 | .clkctrl_reg = OMAP4430_CM_WKUP_SYNCTIMER_CLKCTRL, | ||
784 | }, | ||
785 | }, | ||
786 | .slaves = omap44xx_counter_32k_slaves, | ||
787 | .slaves_cnt = ARRAY_SIZE(omap44xx_counter_32k_slaves), | ||
788 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
789 | }; | ||
790 | |||
791 | /* | ||
560 | * 'dma' class | 792 | * 'dma' class |
561 | * dma controller for data exchange between memory to memory (i.e. internal or | 793 | * dma controller for data exchange between memory to memory (i.e. internal or |
562 | * external memory) and gp peripherals to memory or memory to gp peripherals | 794 | * external memory) and gp peripherals to memory or memory to gp peripherals |
@@ -1748,6 +1980,83 @@ static struct omap_hwmod omap44xx_gpio6_hwmod = { | |||
1748 | }; | 1980 | }; |
1749 | 1981 | ||
1750 | /* | 1982 | /* |
1983 | * 'hsi' class | ||
1984 | * mipi high-speed synchronous serial interface (multichannel and full-duplex | ||
1985 | * serial if) | ||
1986 | */ | ||
1987 | |||
1988 | static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = { | ||
1989 | .rev_offs = 0x0000, | ||
1990 | .sysc_offs = 0x0010, | ||
1991 | .syss_offs = 0x0014, | ||
1992 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE | | ||
1993 | SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE | | ||
1994 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), | ||
1995 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
1996 | SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | | ||
1997 | MSTANDBY_SMART), | ||
1998 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
1999 | }; | ||
2000 | |||
2001 | static struct omap_hwmod_class omap44xx_hsi_hwmod_class = { | ||
2002 | .name = "hsi", | ||
2003 | .sysc = &omap44xx_hsi_sysc, | ||
2004 | }; | ||
2005 | |||
2006 | /* hsi */ | ||
2007 | static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = { | ||
2008 | { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START }, | ||
2009 | { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START }, | ||
2010 | { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START }, | ||
2011 | }; | ||
2012 | |||
2013 | /* hsi master ports */ | ||
2014 | static struct omap_hwmod_ocp_if *omap44xx_hsi_masters[] = { | ||
2015 | &omap44xx_hsi__l3_main_2, | ||
2016 | }; | ||
2017 | |||
2018 | static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = { | ||
2019 | { | ||
2020 | .pa_start = 0x4a058000, | ||
2021 | .pa_end = 0x4a05bfff, | ||
2022 | .flags = ADDR_TYPE_RT | ||
2023 | }, | ||
2024 | }; | ||
2025 | |||
2026 | /* l4_cfg -> hsi */ | ||
2027 | static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = { | ||
2028 | .master = &omap44xx_l4_cfg_hwmod, | ||
2029 | .slave = &omap44xx_hsi_hwmod, | ||
2030 | .clk = "l4_div_ck", | ||
2031 | .addr = omap44xx_hsi_addrs, | ||
2032 | .addr_cnt = ARRAY_SIZE(omap44xx_hsi_addrs), | ||
2033 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2034 | }; | ||
2035 | |||
2036 | /* hsi slave ports */ | ||
2037 | static struct omap_hwmod_ocp_if *omap44xx_hsi_slaves[] = { | ||
2038 | &omap44xx_l4_cfg__hsi, | ||
2039 | }; | ||
2040 | |||
2041 | static struct omap_hwmod omap44xx_hsi_hwmod = { | ||
2042 | .name = "hsi", | ||
2043 | .class = &omap44xx_hsi_hwmod_class, | ||
2044 | .mpu_irqs = omap44xx_hsi_irqs, | ||
2045 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_hsi_irqs), | ||
2046 | .main_clk = "hsi_fck", | ||
2047 | .prcm = { | ||
2048 | .omap4 = { | ||
2049 | .clkctrl_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL, | ||
2050 | }, | ||
2051 | }, | ||
2052 | .slaves = omap44xx_hsi_slaves, | ||
2053 | .slaves_cnt = ARRAY_SIZE(omap44xx_hsi_slaves), | ||
2054 | .masters = omap44xx_hsi_masters, | ||
2055 | .masters_cnt = ARRAY_SIZE(omap44xx_hsi_masters), | ||
2056 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2057 | }; | ||
2058 | |||
2059 | /* | ||
1751 | * 'i2c' class | 2060 | * 'i2c' class |
1752 | * multimaster high-speed i2c controller | 2061 | * multimaster high-speed i2c controller |
1753 | */ | 2062 | */ |
@@ -1981,6 +2290,188 @@ static struct omap_hwmod omap44xx_i2c4_hwmod = { | |||
1981 | }; | 2290 | }; |
1982 | 2291 | ||
1983 | /* | 2292 | /* |
2293 | * 'ipu' class | ||
2294 | * imaging processor unit | ||
2295 | */ | ||
2296 | |||
2297 | static struct omap_hwmod_class omap44xx_ipu_hwmod_class = { | ||
2298 | .name = "ipu", | ||
2299 | }; | ||
2300 | |||
2301 | /* ipu */ | ||
2302 | static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = { | ||
2303 | { .irq = 100 + OMAP44XX_IRQ_GIC_START }, | ||
2304 | }; | ||
2305 | |||
2306 | static struct omap_hwmod_rst_info omap44xx_ipu_c0_resets[] = { | ||
2307 | { .name = "cpu0", .rst_shift = 0 }, | ||
2308 | }; | ||
2309 | |||
2310 | static struct omap_hwmod_rst_info omap44xx_ipu_c1_resets[] = { | ||
2311 | { .name = "cpu1", .rst_shift = 1 }, | ||
2312 | }; | ||
2313 | |||
2314 | static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = { | ||
2315 | { .name = "mmu_cache", .rst_shift = 2 }, | ||
2316 | }; | ||
2317 | |||
2318 | /* ipu master ports */ | ||
2319 | static struct omap_hwmod_ocp_if *omap44xx_ipu_masters[] = { | ||
2320 | &omap44xx_ipu__l3_main_2, | ||
2321 | }; | ||
2322 | |||
2323 | /* l3_main_2 -> ipu */ | ||
2324 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = { | ||
2325 | .master = &omap44xx_l3_main_2_hwmod, | ||
2326 | .slave = &omap44xx_ipu_hwmod, | ||
2327 | .clk = "l3_div_ck", | ||
2328 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2329 | }; | ||
2330 | |||
2331 | /* ipu slave ports */ | ||
2332 | static struct omap_hwmod_ocp_if *omap44xx_ipu_slaves[] = { | ||
2333 | &omap44xx_l3_main_2__ipu, | ||
2334 | }; | ||
2335 | |||
2336 | /* Pseudo hwmod for reset control purpose only */ | ||
2337 | static struct omap_hwmod omap44xx_ipu_c0_hwmod = { | ||
2338 | .name = "ipu_c0", | ||
2339 | .class = &omap44xx_ipu_hwmod_class, | ||
2340 | .flags = HWMOD_INIT_NO_RESET, | ||
2341 | .rst_lines = omap44xx_ipu_c0_resets, | ||
2342 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_c0_resets), | ||
2343 | .prcm = { | ||
2344 | .omap4 = { | ||
2345 | .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL, | ||
2346 | }, | ||
2347 | }, | ||
2348 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2349 | }; | ||
2350 | |||
2351 | /* Pseudo hwmod for reset control purpose only */ | ||
2352 | static struct omap_hwmod omap44xx_ipu_c1_hwmod = { | ||
2353 | .name = "ipu_c1", | ||
2354 | .class = &omap44xx_ipu_hwmod_class, | ||
2355 | .flags = HWMOD_INIT_NO_RESET, | ||
2356 | .rst_lines = omap44xx_ipu_c1_resets, | ||
2357 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_c1_resets), | ||
2358 | .prcm = { | ||
2359 | .omap4 = { | ||
2360 | .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL, | ||
2361 | }, | ||
2362 | }, | ||
2363 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2364 | }; | ||
2365 | |||
2366 | static struct omap_hwmod omap44xx_ipu_hwmod = { | ||
2367 | .name = "ipu", | ||
2368 | .class = &omap44xx_ipu_hwmod_class, | ||
2369 | .mpu_irqs = omap44xx_ipu_irqs, | ||
2370 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_ipu_irqs), | ||
2371 | .rst_lines = omap44xx_ipu_resets, | ||
2372 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets), | ||
2373 | .main_clk = "ipu_fck", | ||
2374 | .prcm = { | ||
2375 | .omap4 = { | ||
2376 | .clkctrl_reg = OMAP4430_CM_DUCATI_DUCATI_CLKCTRL, | ||
2377 | .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL, | ||
2378 | }, | ||
2379 | }, | ||
2380 | .slaves = omap44xx_ipu_slaves, | ||
2381 | .slaves_cnt = ARRAY_SIZE(omap44xx_ipu_slaves), | ||
2382 | .masters = omap44xx_ipu_masters, | ||
2383 | .masters_cnt = ARRAY_SIZE(omap44xx_ipu_masters), | ||
2384 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2385 | }; | ||
2386 | |||
2387 | /* | ||
2388 | * 'iss' class | ||
2389 | * external images sensor pixel data processor | ||
2390 | */ | ||
2391 | |||
2392 | static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = { | ||
2393 | .rev_offs = 0x0000, | ||
2394 | .sysc_offs = 0x0010, | ||
2395 | .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | | ||
2396 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), | ||
2397 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
2398 | SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | | ||
2399 | MSTANDBY_SMART), | ||
2400 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
2401 | }; | ||
2402 | |||
2403 | static struct omap_hwmod_class omap44xx_iss_hwmod_class = { | ||
2404 | .name = "iss", | ||
2405 | .sysc = &omap44xx_iss_sysc, | ||
2406 | }; | ||
2407 | |||
2408 | /* iss */ | ||
2409 | static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = { | ||
2410 | { .irq = 24 + OMAP44XX_IRQ_GIC_START }, | ||
2411 | }; | ||
2412 | |||
2413 | static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = { | ||
2414 | { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START }, | ||
2415 | { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START }, | ||
2416 | { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START }, | ||
2417 | { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START }, | ||
2418 | }; | ||
2419 | |||
2420 | /* iss master ports */ | ||
2421 | static struct omap_hwmod_ocp_if *omap44xx_iss_masters[] = { | ||
2422 | &omap44xx_iss__l3_main_2, | ||
2423 | }; | ||
2424 | |||
2425 | static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = { | ||
2426 | { | ||
2427 | .pa_start = 0x52000000, | ||
2428 | .pa_end = 0x520000ff, | ||
2429 | .flags = ADDR_TYPE_RT | ||
2430 | }, | ||
2431 | }; | ||
2432 | |||
2433 | /* l3_main_2 -> iss */ | ||
2434 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { | ||
2435 | .master = &omap44xx_l3_main_2_hwmod, | ||
2436 | .slave = &omap44xx_iss_hwmod, | ||
2437 | .clk = "l3_div_ck", | ||
2438 | .addr = omap44xx_iss_addrs, | ||
2439 | .addr_cnt = ARRAY_SIZE(omap44xx_iss_addrs), | ||
2440 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2441 | }; | ||
2442 | |||
2443 | /* iss slave ports */ | ||
2444 | static struct omap_hwmod_ocp_if *omap44xx_iss_slaves[] = { | ||
2445 | &omap44xx_l3_main_2__iss, | ||
2446 | }; | ||
2447 | |||
2448 | static struct omap_hwmod_opt_clk iss_opt_clks[] = { | ||
2449 | { .role = "ctrlclk", .clk = "iss_ctrlclk" }, | ||
2450 | }; | ||
2451 | |||
2452 | static struct omap_hwmod omap44xx_iss_hwmod = { | ||
2453 | .name = "iss", | ||
2454 | .class = &omap44xx_iss_hwmod_class, | ||
2455 | .mpu_irqs = omap44xx_iss_irqs, | ||
2456 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_iss_irqs), | ||
2457 | .sdma_reqs = omap44xx_iss_sdma_reqs, | ||
2458 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_iss_sdma_reqs), | ||
2459 | .main_clk = "iss_fck", | ||
2460 | .prcm = { | ||
2461 | .omap4 = { | ||
2462 | .clkctrl_reg = OMAP4430_CM_CAM_ISS_CLKCTRL, | ||
2463 | }, | ||
2464 | }, | ||
2465 | .opt_clks = iss_opt_clks, | ||
2466 | .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks), | ||
2467 | .slaves = omap44xx_iss_slaves, | ||
2468 | .slaves_cnt = ARRAY_SIZE(omap44xx_iss_slaves), | ||
2469 | .masters = omap44xx_iss_masters, | ||
2470 | .masters_cnt = ARRAY_SIZE(omap44xx_iss_masters), | ||
2471 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2472 | }; | ||
2473 | |||
2474 | /* | ||
1984 | * 'iva' class | 2475 | * 'iva' class |
1985 | * multi-standard video encoder/decoder hardware accelerator | 2476 | * multi-standard video encoder/decoder hardware accelerator |
1986 | */ | 2477 | */ |
@@ -2090,6 +2581,73 @@ static struct omap_hwmod omap44xx_iva_hwmod = { | |||
2090 | }; | 2581 | }; |
2091 | 2582 | ||
2092 | /* | 2583 | /* |
2584 | * 'kbd' class | ||
2585 | * keyboard controller | ||
2586 | */ | ||
2587 | |||
2588 | static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = { | ||
2589 | .rev_offs = 0x0000, | ||
2590 | .sysc_offs = 0x0010, | ||
2591 | .syss_offs = 0x0014, | ||
2592 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | ||
2593 | SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP | | ||
2594 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
2595 | SYSS_HAS_RESET_STATUS), | ||
2596 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
2597 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
2598 | }; | ||
2599 | |||
2600 | static struct omap_hwmod_class omap44xx_kbd_hwmod_class = { | ||
2601 | .name = "kbd", | ||
2602 | .sysc = &omap44xx_kbd_sysc, | ||
2603 | }; | ||
2604 | |||
2605 | /* kbd */ | ||
2606 | static struct omap_hwmod omap44xx_kbd_hwmod; | ||
2607 | static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = { | ||
2608 | { .irq = 120 + OMAP44XX_IRQ_GIC_START }, | ||
2609 | }; | ||
2610 | |||
2611 | static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = { | ||
2612 | { | ||
2613 | .pa_start = 0x4a31c000, | ||
2614 | .pa_end = 0x4a31c07f, | ||
2615 | .flags = ADDR_TYPE_RT | ||
2616 | }, | ||
2617 | }; | ||
2618 | |||
2619 | /* l4_wkup -> kbd */ | ||
2620 | static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = { | ||
2621 | .master = &omap44xx_l4_wkup_hwmod, | ||
2622 | .slave = &omap44xx_kbd_hwmod, | ||
2623 | .clk = "l4_wkup_clk_mux_ck", | ||
2624 | .addr = omap44xx_kbd_addrs, | ||
2625 | .addr_cnt = ARRAY_SIZE(omap44xx_kbd_addrs), | ||
2626 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2627 | }; | ||
2628 | |||
2629 | /* kbd slave ports */ | ||
2630 | static struct omap_hwmod_ocp_if *omap44xx_kbd_slaves[] = { | ||
2631 | &omap44xx_l4_wkup__kbd, | ||
2632 | }; | ||
2633 | |||
2634 | static struct omap_hwmod omap44xx_kbd_hwmod = { | ||
2635 | .name = "kbd", | ||
2636 | .class = &omap44xx_kbd_hwmod_class, | ||
2637 | .mpu_irqs = omap44xx_kbd_irqs, | ||
2638 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_kbd_irqs), | ||
2639 | .main_clk = "kbd_fck", | ||
2640 | .prcm = { | ||
2641 | .omap4 = { | ||
2642 | .clkctrl_reg = OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL, | ||
2643 | }, | ||
2644 | }, | ||
2645 | .slaves = omap44xx_kbd_slaves, | ||
2646 | .slaves_cnt = ARRAY_SIZE(omap44xx_kbd_slaves), | ||
2647 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2648 | }; | ||
2649 | |||
2650 | /* | ||
2093 | * 'mailbox' class | 2651 | * 'mailbox' class |
2094 | * mailbox module allowing communication between the on-chip processors using a | 2652 | * mailbox module allowing communication between the on-chip processors using a |
2095 | * queued mailbox-interrupt mechanism. | 2653 | * queued mailbox-interrupt mechanism. |
@@ -2437,6 +2995,98 @@ static struct omap_hwmod omap44xx_mcbsp4_hwmod = { | |||
2437 | }; | 2995 | }; |
2438 | 2996 | ||
2439 | /* | 2997 | /* |
2998 | * 'mcpdm' class | ||
2999 | * multi channel pdm controller (proprietary interface with phoenix power | ||
3000 | * ic) | ||
3001 | */ | ||
3002 | |||
3003 | static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = { | ||
3004 | .rev_offs = 0x0000, | ||
3005 | .sysc_offs = 0x0010, | ||
3006 | .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | | ||
3007 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), | ||
3008 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
3009 | SIDLE_SMART_WKUP), | ||
3010 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
3011 | }; | ||
3012 | |||
3013 | static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = { | ||
3014 | .name = "mcpdm", | ||
3015 | .sysc = &omap44xx_mcpdm_sysc, | ||
3016 | }; | ||
3017 | |||
3018 | /* mcpdm */ | ||
3019 | static struct omap_hwmod omap44xx_mcpdm_hwmod; | ||
3020 | static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = { | ||
3021 | { .irq = 112 + OMAP44XX_IRQ_GIC_START }, | ||
3022 | }; | ||
3023 | |||
3024 | static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = { | ||
3025 | { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START }, | ||
3026 | { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START }, | ||
3027 | }; | ||
3028 | |||
3029 | static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = { | ||
3030 | { | ||
3031 | .pa_start = 0x40132000, | ||
3032 | .pa_end = 0x4013207f, | ||
3033 | .flags = ADDR_TYPE_RT | ||
3034 | }, | ||
3035 | }; | ||
3036 | |||
3037 | /* l4_abe -> mcpdm */ | ||
3038 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = { | ||
3039 | .master = &omap44xx_l4_abe_hwmod, | ||
3040 | .slave = &omap44xx_mcpdm_hwmod, | ||
3041 | .clk = "ocp_abe_iclk", | ||
3042 | .addr = omap44xx_mcpdm_addrs, | ||
3043 | .addr_cnt = ARRAY_SIZE(omap44xx_mcpdm_addrs), | ||
3044 | .user = OCP_USER_MPU, | ||
3045 | }; | ||
3046 | |||
3047 | static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = { | ||
3048 | { | ||
3049 | .pa_start = 0x49032000, | ||
3050 | .pa_end = 0x4903207f, | ||
3051 | .flags = ADDR_TYPE_RT | ||
3052 | }, | ||
3053 | }; | ||
3054 | |||
3055 | /* l4_abe -> mcpdm (dma) */ | ||
3056 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = { | ||
3057 | .master = &omap44xx_l4_abe_hwmod, | ||
3058 | .slave = &omap44xx_mcpdm_hwmod, | ||
3059 | .clk = "ocp_abe_iclk", | ||
3060 | .addr = omap44xx_mcpdm_dma_addrs, | ||
3061 | .addr_cnt = ARRAY_SIZE(omap44xx_mcpdm_dma_addrs), | ||
3062 | .user = OCP_USER_SDMA, | ||
3063 | }; | ||
3064 | |||
3065 | /* mcpdm slave ports */ | ||
3066 | static struct omap_hwmod_ocp_if *omap44xx_mcpdm_slaves[] = { | ||
3067 | &omap44xx_l4_abe__mcpdm, | ||
3068 | &omap44xx_l4_abe__mcpdm_dma, | ||
3069 | }; | ||
3070 | |||
3071 | static struct omap_hwmod omap44xx_mcpdm_hwmod = { | ||
3072 | .name = "mcpdm", | ||
3073 | .class = &omap44xx_mcpdm_hwmod_class, | ||
3074 | .mpu_irqs = omap44xx_mcpdm_irqs, | ||
3075 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcpdm_irqs), | ||
3076 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, | ||
3077 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcpdm_sdma_reqs), | ||
3078 | .main_clk = "mcpdm_fck", | ||
3079 | .prcm = { | ||
3080 | .omap4 = { | ||
3081 | .clkctrl_reg = OMAP4430_CM1_ABE_PDM_CLKCTRL, | ||
3082 | }, | ||
3083 | }, | ||
3084 | .slaves = omap44xx_mcpdm_slaves, | ||
3085 | .slaves_cnt = ARRAY_SIZE(omap44xx_mcpdm_slaves), | ||
3086 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3087 | }; | ||
3088 | |||
3089 | /* | ||
2440 | * 'mcspi' class | 3090 | * 'mcspi' class |
2441 | * multichannel serial port interface (mcspi) / master/slave synchronous serial | 3091 | * multichannel serial port interface (mcspi) / master/slave synchronous serial |
2442 | * bus | 3092 | * bus |
@@ -2676,6 +3326,300 @@ static struct omap_hwmod omap44xx_mcspi4_hwmod = { | |||
2676 | }; | 3326 | }; |
2677 | 3327 | ||
2678 | /* | 3328 | /* |
3329 | * 'mmc' class | ||
3330 | * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller | ||
3331 | */ | ||
3332 | |||
3333 | static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = { | ||
3334 | .rev_offs = 0x0000, | ||
3335 | .sysc_offs = 0x0010, | ||
3336 | .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE | | ||
3337 | SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE | | ||
3338 | SYSC_HAS_SOFTRESET), | ||
3339 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
3340 | SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | | ||
3341 | MSTANDBY_SMART), | ||
3342 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
3343 | }; | ||
3344 | |||
3345 | static struct omap_hwmod_class omap44xx_mmc_hwmod_class = { | ||
3346 | .name = "mmc", | ||
3347 | .sysc = &omap44xx_mmc_sysc, | ||
3348 | }; | ||
3349 | |||
3350 | /* mmc1 */ | ||
3351 | static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = { | ||
3352 | { .irq = 83 + OMAP44XX_IRQ_GIC_START }, | ||
3353 | }; | ||
3354 | |||
3355 | static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = { | ||
3356 | { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START }, | ||
3357 | { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START }, | ||
3358 | }; | ||
3359 | |||
3360 | /* mmc1 master ports */ | ||
3361 | static struct omap_hwmod_ocp_if *omap44xx_mmc1_masters[] = { | ||
3362 | &omap44xx_mmc1__l3_main_1, | ||
3363 | }; | ||
3364 | |||
3365 | static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = { | ||
3366 | { | ||
3367 | .pa_start = 0x4809c000, | ||
3368 | .pa_end = 0x4809c3ff, | ||
3369 | .flags = ADDR_TYPE_RT | ||
3370 | }, | ||
3371 | }; | ||
3372 | |||
3373 | /* l4_per -> mmc1 */ | ||
3374 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = { | ||
3375 | .master = &omap44xx_l4_per_hwmod, | ||
3376 | .slave = &omap44xx_mmc1_hwmod, | ||
3377 | .clk = "l4_div_ck", | ||
3378 | .addr = omap44xx_mmc1_addrs, | ||
3379 | .addr_cnt = ARRAY_SIZE(omap44xx_mmc1_addrs), | ||
3380 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3381 | }; | ||
3382 | |||
3383 | /* mmc1 slave ports */ | ||
3384 | static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = { | ||
3385 | &omap44xx_l4_per__mmc1, | ||
3386 | }; | ||
3387 | |||
3388 | static struct omap_hwmod omap44xx_mmc1_hwmod = { | ||
3389 | .name = "mmc1", | ||
3390 | .class = &omap44xx_mmc_hwmod_class, | ||
3391 | .mpu_irqs = omap44xx_mmc1_irqs, | ||
3392 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mmc1_irqs), | ||
3393 | .sdma_reqs = omap44xx_mmc1_sdma_reqs, | ||
3394 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mmc1_sdma_reqs), | ||
3395 | .main_clk = "mmc1_fck", | ||
3396 | .prcm = { | ||
3397 | .omap4 = { | ||
3398 | .clkctrl_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL, | ||
3399 | }, | ||
3400 | }, | ||
3401 | .slaves = omap44xx_mmc1_slaves, | ||
3402 | .slaves_cnt = ARRAY_SIZE(omap44xx_mmc1_slaves), | ||
3403 | .masters = omap44xx_mmc1_masters, | ||
3404 | .masters_cnt = ARRAY_SIZE(omap44xx_mmc1_masters), | ||
3405 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3406 | }; | ||
3407 | |||
3408 | /* mmc2 */ | ||
3409 | static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = { | ||
3410 | { .irq = 86 + OMAP44XX_IRQ_GIC_START }, | ||
3411 | }; | ||
3412 | |||
3413 | static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = { | ||
3414 | { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START }, | ||
3415 | { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START }, | ||
3416 | }; | ||
3417 | |||
3418 | /* mmc2 master ports */ | ||
3419 | static struct omap_hwmod_ocp_if *omap44xx_mmc2_masters[] = { | ||
3420 | &omap44xx_mmc2__l3_main_1, | ||
3421 | }; | ||
3422 | |||
3423 | static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = { | ||
3424 | { | ||
3425 | .pa_start = 0x480b4000, | ||
3426 | .pa_end = 0x480b43ff, | ||
3427 | .flags = ADDR_TYPE_RT | ||
3428 | }, | ||
3429 | }; | ||
3430 | |||
3431 | /* l4_per -> mmc2 */ | ||
3432 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = { | ||
3433 | .master = &omap44xx_l4_per_hwmod, | ||
3434 | .slave = &omap44xx_mmc2_hwmod, | ||
3435 | .clk = "l4_div_ck", | ||
3436 | .addr = omap44xx_mmc2_addrs, | ||
3437 | .addr_cnt = ARRAY_SIZE(omap44xx_mmc2_addrs), | ||
3438 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3439 | }; | ||
3440 | |||
3441 | /* mmc2 slave ports */ | ||
3442 | static struct omap_hwmod_ocp_if *omap44xx_mmc2_slaves[] = { | ||
3443 | &omap44xx_l4_per__mmc2, | ||
3444 | }; | ||
3445 | |||
3446 | static struct omap_hwmod omap44xx_mmc2_hwmod = { | ||
3447 | .name = "mmc2", | ||
3448 | .class = &omap44xx_mmc_hwmod_class, | ||
3449 | .mpu_irqs = omap44xx_mmc2_irqs, | ||
3450 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mmc2_irqs), | ||
3451 | .sdma_reqs = omap44xx_mmc2_sdma_reqs, | ||
3452 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mmc2_sdma_reqs), | ||
3453 | .main_clk = "mmc2_fck", | ||
3454 | .prcm = { | ||
3455 | .omap4 = { | ||
3456 | .clkctrl_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL, | ||
3457 | }, | ||
3458 | }, | ||
3459 | .slaves = omap44xx_mmc2_slaves, | ||
3460 | .slaves_cnt = ARRAY_SIZE(omap44xx_mmc2_slaves), | ||
3461 | .masters = omap44xx_mmc2_masters, | ||
3462 | .masters_cnt = ARRAY_SIZE(omap44xx_mmc2_masters), | ||
3463 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3464 | }; | ||
3465 | |||
3466 | /* mmc3 */ | ||
3467 | static struct omap_hwmod omap44xx_mmc3_hwmod; | ||
3468 | static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = { | ||
3469 | { .irq = 94 + OMAP44XX_IRQ_GIC_START }, | ||
3470 | }; | ||
3471 | |||
3472 | static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = { | ||
3473 | { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START }, | ||
3474 | { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START }, | ||
3475 | }; | ||
3476 | |||
3477 | static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = { | ||
3478 | { | ||
3479 | .pa_start = 0x480ad000, | ||
3480 | .pa_end = 0x480ad3ff, | ||
3481 | .flags = ADDR_TYPE_RT | ||
3482 | }, | ||
3483 | }; | ||
3484 | |||
3485 | /* l4_per -> mmc3 */ | ||
3486 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = { | ||
3487 | .master = &omap44xx_l4_per_hwmod, | ||
3488 | .slave = &omap44xx_mmc3_hwmod, | ||
3489 | .clk = "l4_div_ck", | ||
3490 | .addr = omap44xx_mmc3_addrs, | ||
3491 | .addr_cnt = ARRAY_SIZE(omap44xx_mmc3_addrs), | ||
3492 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3493 | }; | ||
3494 | |||
3495 | /* mmc3 slave ports */ | ||
3496 | static struct omap_hwmod_ocp_if *omap44xx_mmc3_slaves[] = { | ||
3497 | &omap44xx_l4_per__mmc3, | ||
3498 | }; | ||
3499 | |||
3500 | static struct omap_hwmod omap44xx_mmc3_hwmod = { | ||
3501 | .name = "mmc3", | ||
3502 | .class = &omap44xx_mmc_hwmod_class, | ||
3503 | .mpu_irqs = omap44xx_mmc3_irqs, | ||
3504 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mmc3_irqs), | ||
3505 | .sdma_reqs = omap44xx_mmc3_sdma_reqs, | ||
3506 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mmc3_sdma_reqs), | ||
3507 | .main_clk = "mmc3_fck", | ||
3508 | .prcm = { | ||
3509 | .omap4 = { | ||
3510 | .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD3_CLKCTRL, | ||
3511 | }, | ||
3512 | }, | ||
3513 | .slaves = omap44xx_mmc3_slaves, | ||
3514 | .slaves_cnt = ARRAY_SIZE(omap44xx_mmc3_slaves), | ||
3515 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3516 | }; | ||
3517 | |||
3518 | /* mmc4 */ | ||
3519 | static struct omap_hwmod omap44xx_mmc4_hwmod; | ||
3520 | static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = { | ||
3521 | { .irq = 96 + OMAP44XX_IRQ_GIC_START }, | ||
3522 | }; | ||
3523 | |||
3524 | static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = { | ||
3525 | { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START }, | ||
3526 | { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START }, | ||
3527 | }; | ||
3528 | |||
3529 | static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = { | ||
3530 | { | ||
3531 | .pa_start = 0x480d1000, | ||
3532 | .pa_end = 0x480d13ff, | ||
3533 | .flags = ADDR_TYPE_RT | ||
3534 | }, | ||
3535 | }; | ||
3536 | |||
3537 | /* l4_per -> mmc4 */ | ||
3538 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = { | ||
3539 | .master = &omap44xx_l4_per_hwmod, | ||
3540 | .slave = &omap44xx_mmc4_hwmod, | ||
3541 | .clk = "l4_div_ck", | ||
3542 | .addr = omap44xx_mmc4_addrs, | ||
3543 | .addr_cnt = ARRAY_SIZE(omap44xx_mmc4_addrs), | ||
3544 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3545 | }; | ||
3546 | |||
3547 | /* mmc4 slave ports */ | ||
3548 | static struct omap_hwmod_ocp_if *omap44xx_mmc4_slaves[] = { | ||
3549 | &omap44xx_l4_per__mmc4, | ||
3550 | }; | ||
3551 | |||
3552 | static struct omap_hwmod omap44xx_mmc4_hwmod = { | ||
3553 | .name = "mmc4", | ||
3554 | .class = &omap44xx_mmc_hwmod_class, | ||
3555 | .mpu_irqs = omap44xx_mmc4_irqs, | ||
3556 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mmc4_irqs), | ||
3557 | .sdma_reqs = omap44xx_mmc4_sdma_reqs, | ||
3558 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mmc4_sdma_reqs), | ||
3559 | .main_clk = "mmc4_fck", | ||
3560 | .prcm = { | ||
3561 | .omap4 = { | ||
3562 | .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD4_CLKCTRL, | ||
3563 | }, | ||
3564 | }, | ||
3565 | .slaves = omap44xx_mmc4_slaves, | ||
3566 | .slaves_cnt = ARRAY_SIZE(omap44xx_mmc4_slaves), | ||
3567 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3568 | }; | ||
3569 | |||
3570 | /* mmc5 */ | ||
3571 | static struct omap_hwmod omap44xx_mmc5_hwmod; | ||
3572 | static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = { | ||
3573 | { .irq = 59 + OMAP44XX_IRQ_GIC_START }, | ||
3574 | }; | ||
3575 | |||
3576 | static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = { | ||
3577 | { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START }, | ||
3578 | { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START }, | ||
3579 | }; | ||
3580 | |||
3581 | static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = { | ||
3582 | { | ||
3583 | .pa_start = 0x480d5000, | ||
3584 | .pa_end = 0x480d53ff, | ||
3585 | .flags = ADDR_TYPE_RT | ||
3586 | }, | ||
3587 | }; | ||
3588 | |||
3589 | /* l4_per -> mmc5 */ | ||
3590 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = { | ||
3591 | .master = &omap44xx_l4_per_hwmod, | ||
3592 | .slave = &omap44xx_mmc5_hwmod, | ||
3593 | .clk = "l4_div_ck", | ||
3594 | .addr = omap44xx_mmc5_addrs, | ||
3595 | .addr_cnt = ARRAY_SIZE(omap44xx_mmc5_addrs), | ||
3596 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
3597 | }; | ||
3598 | |||
3599 | /* mmc5 slave ports */ | ||
3600 | static struct omap_hwmod_ocp_if *omap44xx_mmc5_slaves[] = { | ||
3601 | &omap44xx_l4_per__mmc5, | ||
3602 | }; | ||
3603 | |||
3604 | static struct omap_hwmod omap44xx_mmc5_hwmod = { | ||
3605 | .name = "mmc5", | ||
3606 | .class = &omap44xx_mmc_hwmod_class, | ||
3607 | .mpu_irqs = omap44xx_mmc5_irqs, | ||
3608 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mmc5_irqs), | ||
3609 | .sdma_reqs = omap44xx_mmc5_sdma_reqs, | ||
3610 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mmc5_sdma_reqs), | ||
3611 | .main_clk = "mmc5_fck", | ||
3612 | .prcm = { | ||
3613 | .omap4 = { | ||
3614 | .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD5_CLKCTRL, | ||
3615 | }, | ||
3616 | }, | ||
3617 | .slaves = omap44xx_mmc5_slaves, | ||
3618 | .slaves_cnt = ARRAY_SIZE(omap44xx_mmc5_slaves), | ||
3619 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
3620 | }; | ||
3621 | |||
3622 | /* | ||
2679 | * 'mpu' class | 3623 | * 'mpu' class |
2680 | * mpu sub-system | 3624 | * mpu sub-system |
2681 | */ | 3625 | */ |
@@ -3935,6 +4879,15 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
3935 | /* mpu_bus class */ | 4879 | /* mpu_bus class */ |
3936 | &omap44xx_mpu_private_hwmod, | 4880 | &omap44xx_mpu_private_hwmod, |
3937 | 4881 | ||
4882 | /* aess class */ | ||
4883 | /* &omap44xx_aess_hwmod, */ | ||
4884 | |||
4885 | /* bandgap class */ | ||
4886 | &omap44xx_bandgap_hwmod, | ||
4887 | |||
4888 | /* counter class */ | ||
4889 | /* &omap44xx_counter_32k_hwmod, */ | ||
4890 | |||
3938 | /* dma class */ | 4891 | /* dma class */ |
3939 | &omap44xx_dma_system_hwmod, | 4892 | &omap44xx_dma_system_hwmod, |
3940 | 4893 | ||
@@ -3962,17 +4915,31 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
3962 | &omap44xx_gpio5_hwmod, | 4915 | &omap44xx_gpio5_hwmod, |
3963 | &omap44xx_gpio6_hwmod, | 4916 | &omap44xx_gpio6_hwmod, |
3964 | 4917 | ||
4918 | /* hsi class */ | ||
4919 | /* &omap44xx_hsi_hwmod, */ | ||
4920 | |||
3965 | /* i2c class */ | 4921 | /* i2c class */ |
3966 | &omap44xx_i2c1_hwmod, | 4922 | &omap44xx_i2c1_hwmod, |
3967 | &omap44xx_i2c2_hwmod, | 4923 | &omap44xx_i2c2_hwmod, |
3968 | &omap44xx_i2c3_hwmod, | 4924 | &omap44xx_i2c3_hwmod, |
3969 | &omap44xx_i2c4_hwmod, | 4925 | &omap44xx_i2c4_hwmod, |
3970 | 4926 | ||
4927 | /* ipu class */ | ||
4928 | &omap44xx_ipu_hwmod, | ||
4929 | &omap44xx_ipu_c0_hwmod, | ||
4930 | &omap44xx_ipu_c1_hwmod, | ||
4931 | |||
4932 | /* iss class */ | ||
4933 | /* &omap44xx_iss_hwmod, */ | ||
4934 | |||
3971 | /* iva class */ | 4935 | /* iva class */ |
3972 | &omap44xx_iva_hwmod, | 4936 | &omap44xx_iva_hwmod, |
3973 | &omap44xx_iva_seq0_hwmod, | 4937 | &omap44xx_iva_seq0_hwmod, |
3974 | &omap44xx_iva_seq1_hwmod, | 4938 | &omap44xx_iva_seq1_hwmod, |
3975 | 4939 | ||
4940 | /* kbd class */ | ||
4941 | /* &omap44xx_kbd_hwmod, */ | ||
4942 | |||
3976 | /* mailbox class */ | 4943 | /* mailbox class */ |
3977 | &omap44xx_mailbox_hwmod, | 4944 | &omap44xx_mailbox_hwmod, |
3978 | 4945 | ||
@@ -3982,12 +4949,22 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
3982 | &omap44xx_mcbsp3_hwmod, | 4949 | &omap44xx_mcbsp3_hwmod, |
3983 | &omap44xx_mcbsp4_hwmod, | 4950 | &omap44xx_mcbsp4_hwmod, |
3984 | 4951 | ||
4952 | /* mcpdm class */ | ||
4953 | /* &omap44xx_mcpdm_hwmod, */ | ||
4954 | |||
3985 | /* mcspi class */ | 4955 | /* mcspi class */ |
3986 | &omap44xx_mcspi1_hwmod, | 4956 | &omap44xx_mcspi1_hwmod, |
3987 | &omap44xx_mcspi2_hwmod, | 4957 | &omap44xx_mcspi2_hwmod, |
3988 | &omap44xx_mcspi3_hwmod, | 4958 | &omap44xx_mcspi3_hwmod, |
3989 | &omap44xx_mcspi4_hwmod, | 4959 | &omap44xx_mcspi4_hwmod, |
3990 | 4960 | ||
4961 | /* mmc class */ | ||
4962 | /* &omap44xx_mmc1_hwmod, */ | ||
4963 | /* &omap44xx_mmc2_hwmod, */ | ||
4964 | /* &omap44xx_mmc3_hwmod, */ | ||
4965 | /* &omap44xx_mmc4_hwmod, */ | ||
4966 | /* &omap44xx_mmc5_hwmod, */ | ||
4967 | |||
3991 | /* mpu class */ | 4968 | /* mpu class */ |
3992 | &omap44xx_mpu_hwmod, | 4969 | &omap44xx_mpu_hwmod, |
3993 | 4970 | ||