aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorSenthilvadivu Guruswamy <svadivu@ti.com>2011-02-22 02:51:15 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-02-23 02:19:06 -0500
commitde56dbb6c1f8de1f54b09111eb50d8f9b8b073b2 (patch)
tree73bf45910134019692220d68469cdca7b119065a /arch/arm
parent996746ca127d722c279325552cdcc48b20079a61 (diff)
OMAP2430: hwmod data: add DSS DISPC RFBI VENC
Hwmod needs database of all IPs in a system. This patch generates the hwmod database for OMAP2430 Display Sub System. Since DSS is also considered as an IP as DISPC, RFBI, name it as dss_core. Acked-by: Benoit Cousson <b-cousson@ti.com> Reviewed-by: Kevin Hilman <khilman@ti.com> Tested-by: Kevin Hilman <khilman@ti.com> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2430_data.c284
1 files changed, 284 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 7ba688a1c840..de0015d38433 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -19,6 +19,7 @@
19#include <plat/i2c.h> 19#include <plat/i2c.h>
20#include <plat/gpio.h> 20#include <plat/gpio.h>
21#include <plat/mcspi.h> 21#include <plat/mcspi.h>
22#include <plat/l3_2xxx.h>
22 23
23#include "omap_hwmod_common_data.h" 24#include "omap_hwmod_common_data.h"
24 25
@@ -39,6 +40,10 @@ static struct omap_hwmod omap2430_mpu_hwmod;
39static struct omap_hwmod omap2430_iva_hwmod; 40static struct omap_hwmod omap2430_iva_hwmod;
40static struct omap_hwmod omap2430_l3_main_hwmod; 41static struct omap_hwmod omap2430_l3_main_hwmod;
41static struct omap_hwmod omap2430_l4_core_hwmod; 42static struct omap_hwmod omap2430_l4_core_hwmod;
43static struct omap_hwmod omap2430_dss_core_hwmod;
44static struct omap_hwmod omap2430_dss_dispc_hwmod;
45static struct omap_hwmod omap2430_dss_rfbi_hwmod;
46static struct omap_hwmod omap2430_dss_venc_hwmod;
42static struct omap_hwmod omap2430_wd_timer2_hwmod; 47static struct omap_hwmod omap2430_wd_timer2_hwmod;
43static struct omap_hwmod omap2430_gpio1_hwmod; 48static struct omap_hwmod omap2430_gpio1_hwmod;
44static struct omap_hwmod omap2430_gpio2_hwmod; 49static struct omap_hwmod omap2430_gpio2_hwmod;
@@ -69,6 +74,19 @@ static struct omap_hwmod_ocp_if *omap2430_l3_main_slaves[] = {
69 &omap2430_mpu__l3_main, 74 &omap2430_mpu__l3_main,
70}; 75};
71 76
77/* DSS -> l3 */
78static struct omap_hwmod_ocp_if omap2430_dss__l3 = {
79 .master = &omap2430_dss_core_hwmod,
80 .slave = &omap2430_l3_main_hwmod,
81 .fw = {
82 .omap2 = {
83 .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
84 .flags = OMAP_FIREWALL_L3,
85 }
86 },
87 .user = OCP_USER_MPU | OCP_USER_SDMA,
88};
89
72/* Master interfaces on the L3 interconnect */ 90/* Master interfaces on the L3 interconnect */
73static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = { 91static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = {
74 &omap2430_l3_main__l4_core, 92 &omap2430_l3_main__l4_core,
@@ -566,6 +584,266 @@ static struct omap_hwmod omap2430_uart3_hwmod = {
566 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 584 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
567}; 585};
568 586
587/*
588 * 'dss' class
589 * display sub-system
590 */
591
592static struct omap_hwmod_class_sysconfig omap2430_dss_sysc = {
593 .rev_offs = 0x0000,
594 .sysc_offs = 0x0010,
595 .syss_offs = 0x0014,
596 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
597 .sysc_fields = &omap_hwmod_sysc_type1,
598};
599
600static struct omap_hwmod_class omap2430_dss_hwmod_class = {
601 .name = "dss",
602 .sysc = &omap2430_dss_sysc,
603};
604
605/* dss */
606static struct omap_hwmod_irq_info omap2430_dss_irqs[] = {
607 { .irq = 25 },
608};
609static struct omap_hwmod_dma_info omap2430_dss_sdma_chs[] = {
610 { .name = "dispc", .dma_req = 5 },
611};
612
613/* dss */
614/* dss master ports */
615static struct omap_hwmod_ocp_if *omap2430_dss_masters[] = {
616 &omap2430_dss__l3,
617};
618
619static struct omap_hwmod_addr_space omap2430_dss_addrs[] = {
620 {
621 .pa_start = 0x48050000,
622 .pa_end = 0x480503FF,
623 .flags = ADDR_TYPE_RT
624 },
625};
626
627/* l4_core -> dss */
628static struct omap_hwmod_ocp_if omap2430_l4_core__dss = {
629 .master = &omap2430_l4_core_hwmod,
630 .slave = &omap2430_dss_core_hwmod,
631 .clk = "dss_ick",
632 .addr = omap2430_dss_addrs,
633 .addr_cnt = ARRAY_SIZE(omap2430_dss_addrs),
634 .user = OCP_USER_MPU | OCP_USER_SDMA,
635};
636
637/* dss slave ports */
638static struct omap_hwmod_ocp_if *omap2430_dss_slaves[] = {
639 &omap2430_l4_core__dss,
640};
641
642static struct omap_hwmod_opt_clk dss_opt_clks[] = {
643 { .role = "tv_clk", .clk = "dss_54m_fck" },
644 { .role = "sys_clk", .clk = "dss2_fck" },
645};
646
647static struct omap_hwmod omap2430_dss_core_hwmod = {
648 .name = "dss_core",
649 .class = &omap2430_dss_hwmod_class,
650 .main_clk = "dss1_fck", /* instead of dss_fck */
651 .mpu_irqs = omap2430_dss_irqs,
652 .mpu_irqs_cnt = ARRAY_SIZE(omap2430_dss_irqs),
653 .sdma_reqs = omap2430_dss_sdma_chs,
654 .sdma_reqs_cnt = ARRAY_SIZE(omap2430_dss_sdma_chs),
655 .prcm = {
656 .omap2 = {
657 .prcm_reg_id = 1,
658 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
659 .module_offs = CORE_MOD,
660 .idlest_reg_id = 1,
661 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
662 },
663 },
664 .opt_clks = dss_opt_clks,
665 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
666 .slaves = omap2430_dss_slaves,
667 .slaves_cnt = ARRAY_SIZE(omap2430_dss_slaves),
668 .masters = omap2430_dss_masters,
669 .masters_cnt = ARRAY_SIZE(omap2430_dss_masters),
670 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
671 .flags = HWMOD_NO_IDLEST,
672};
673
674/*
675 * 'dispc' class
676 * display controller
677 */
678
679static struct omap_hwmod_class_sysconfig omap2430_dispc_sysc = {
680 .rev_offs = 0x0000,
681 .sysc_offs = 0x0010,
682 .syss_offs = 0x0014,
683 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
684 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
685 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
686 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
687 .sysc_fields = &omap_hwmod_sysc_type1,
688};
689
690static struct omap_hwmod_class omap2430_dispc_hwmod_class = {
691 .name = "dispc",
692 .sysc = &omap2430_dispc_sysc,
693};
694
695static struct omap_hwmod_addr_space omap2430_dss_dispc_addrs[] = {
696 {
697 .pa_start = 0x48050400,
698 .pa_end = 0x480507FF,
699 .flags = ADDR_TYPE_RT
700 },
701};
702
703/* l4_core -> dss_dispc */
704static struct omap_hwmod_ocp_if omap2430_l4_core__dss_dispc = {
705 .master = &omap2430_l4_core_hwmod,
706 .slave = &omap2430_dss_dispc_hwmod,
707 .clk = "dss_ick",
708 .addr = omap2430_dss_dispc_addrs,
709 .addr_cnt = ARRAY_SIZE(omap2430_dss_dispc_addrs),
710 .user = OCP_USER_MPU | OCP_USER_SDMA,
711};
712
713/* dss_dispc slave ports */
714static struct omap_hwmod_ocp_if *omap2430_dss_dispc_slaves[] = {
715 &omap2430_l4_core__dss_dispc,
716};
717
718static struct omap_hwmod omap2430_dss_dispc_hwmod = {
719 .name = "dss_dispc",
720 .class = &omap2430_dispc_hwmod_class,
721 .main_clk = "dss1_fck",
722 .prcm = {
723 .omap2 = {
724 .prcm_reg_id = 1,
725 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
726 .module_offs = CORE_MOD,
727 .idlest_reg_id = 1,
728 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
729 },
730 },
731 .slaves = omap2430_dss_dispc_slaves,
732 .slaves_cnt = ARRAY_SIZE(omap2430_dss_dispc_slaves),
733 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
734 .flags = HWMOD_NO_IDLEST,
735};
736
737/*
738 * 'rfbi' class
739 * remote frame buffer interface
740 */
741
742static struct omap_hwmod_class_sysconfig omap2430_rfbi_sysc = {
743 .rev_offs = 0x0000,
744 .sysc_offs = 0x0010,
745 .syss_offs = 0x0014,
746 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
747 SYSC_HAS_AUTOIDLE),
748 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
749 .sysc_fields = &omap_hwmod_sysc_type1,
750};
751
752static struct omap_hwmod_class omap2430_rfbi_hwmod_class = {
753 .name = "rfbi",
754 .sysc = &omap2430_rfbi_sysc,
755};
756
757static struct omap_hwmod_addr_space omap2430_dss_rfbi_addrs[] = {
758 {
759 .pa_start = 0x48050800,
760 .pa_end = 0x48050BFF,
761 .flags = ADDR_TYPE_RT
762 },
763};
764
765/* l4_core -> dss_rfbi */
766static struct omap_hwmod_ocp_if omap2430_l4_core__dss_rfbi = {
767 .master = &omap2430_l4_core_hwmod,
768 .slave = &omap2430_dss_rfbi_hwmod,
769 .clk = "dss_ick",
770 .addr = omap2430_dss_rfbi_addrs,
771 .addr_cnt = ARRAY_SIZE(omap2430_dss_rfbi_addrs),
772 .user = OCP_USER_MPU | OCP_USER_SDMA,
773};
774
775/* dss_rfbi slave ports */
776static struct omap_hwmod_ocp_if *omap2430_dss_rfbi_slaves[] = {
777 &omap2430_l4_core__dss_rfbi,
778};
779
780static struct omap_hwmod omap2430_dss_rfbi_hwmod = {
781 .name = "dss_rfbi",
782 .class = &omap2430_rfbi_hwmod_class,
783 .main_clk = "dss1_fck",
784 .prcm = {
785 .omap2 = {
786 .prcm_reg_id = 1,
787 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
788 .module_offs = CORE_MOD,
789 },
790 },
791 .slaves = omap2430_dss_rfbi_slaves,
792 .slaves_cnt = ARRAY_SIZE(omap2430_dss_rfbi_slaves),
793 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
794 .flags = HWMOD_NO_IDLEST,
795};
796
797/*
798 * 'venc' class
799 * video encoder
800 */
801
802static struct omap_hwmod_class omap2430_venc_hwmod_class = {
803 .name = "venc",
804};
805
806/* dss_venc */
807static struct omap_hwmod_addr_space omap2430_dss_venc_addrs[] = {
808 {
809 .pa_start = 0x48050C00,
810 .pa_end = 0x48050FFF,
811 .flags = ADDR_TYPE_RT
812 },
813};
814
815/* l4_core -> dss_venc */
816static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
817 .master = &omap2430_l4_core_hwmod,
818 .slave = &omap2430_dss_venc_hwmod,
819 .clk = "dss_54m_fck",
820 .addr = omap2430_dss_venc_addrs,
821 .addr_cnt = ARRAY_SIZE(omap2430_dss_venc_addrs),
822 .user = OCP_USER_MPU | OCP_USER_SDMA,
823};
824
825/* dss_venc slave ports */
826static struct omap_hwmod_ocp_if *omap2430_dss_venc_slaves[] = {
827 &omap2430_l4_core__dss_venc,
828};
829
830static struct omap_hwmod omap2430_dss_venc_hwmod = {
831 .name = "dss_venc",
832 .class = &omap2430_venc_hwmod_class,
833 .main_clk = "dss1_fck",
834 .prcm = {
835 .omap2 = {
836 .prcm_reg_id = 1,
837 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
838 .module_offs = CORE_MOD,
839 },
840 },
841 .slaves = omap2430_dss_venc_slaves,
842 .slaves_cnt = ARRAY_SIZE(omap2430_dss_venc_slaves),
843 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
844 .flags = HWMOD_NO_IDLEST,
845};
846
569/* I2C common */ 847/* I2C common */
570static struct omap_hwmod_class_sysconfig i2c_sysc = { 848static struct omap_hwmod_class_sysconfig i2c_sysc = {
571 .rev_offs = 0x00, 849 .rev_offs = 0x00,
@@ -1240,6 +1518,12 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = {
1240 &omap2430_uart1_hwmod, 1518 &omap2430_uart1_hwmod,
1241 &omap2430_uart2_hwmod, 1519 &omap2430_uart2_hwmod,
1242 &omap2430_uart3_hwmod, 1520 &omap2430_uart3_hwmod,
1521 /* dss class */
1522 &omap2430_dss_core_hwmod,
1523 &omap2430_dss_dispc_hwmod,
1524 &omap2430_dss_rfbi_hwmod,
1525 &omap2430_dss_venc_hwmod,
1526 /* i2c class */
1243 &omap2430_i2c1_hwmod, 1527 &omap2430_i2c1_hwmod,
1244 &omap2430_i2c2_hwmod, 1528 &omap2430_i2c2_hwmod,
1245 1529