diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_2420_data.c')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2420_data.c | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index e58621aa9b34..e0bc2c7a15de 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
@@ -110,6 +110,8 @@ static struct omap_hwmod omap2420_uart2_hwmod; | |||
110 | static struct omap_hwmod omap2420_uart3_hwmod; | 110 | static struct omap_hwmod omap2420_uart3_hwmod; |
111 | static struct omap_hwmod omap2420_i2c1_hwmod; | 111 | static struct omap_hwmod omap2420_i2c1_hwmod; |
112 | static struct omap_hwmod omap2420_i2c2_hwmod; | 112 | static struct omap_hwmod omap2420_i2c2_hwmod; |
113 | static struct omap_hwmod omap2420_mcbsp1_hwmod; | ||
114 | static struct omap_hwmod omap2420_mcbsp2_hwmod; | ||
113 | 115 | ||
114 | /* l4 core -> mcspi1 interface */ | 116 | /* l4 core -> mcspi1 interface */ |
115 | static struct omap_hwmod_addr_space omap2420_mcspi1_addr_space[] = { | 117 | static struct omap_hwmod_addr_space omap2420_mcspi1_addr_space[] = { |
@@ -1828,6 +1830,76 @@ static struct omap_hwmod omap2420_dma_system_hwmod = { | |||
1828 | }; | 1830 | }; |
1829 | 1831 | ||
1830 | /* | 1832 | /* |
1833 | * 'mailbox' class | ||
1834 | * mailbox module allowing communication between the on-chip processors | ||
1835 | * using a queued mailbox-interrupt mechanism. | ||
1836 | */ | ||
1837 | |||
1838 | static struct omap_hwmod_class_sysconfig omap2420_mailbox_sysc = { | ||
1839 | .rev_offs = 0x000, | ||
1840 | .sysc_offs = 0x010, | ||
1841 | .syss_offs = 0x014, | ||
1842 | .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | | ||
1843 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
1844 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
1845 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
1846 | }; | ||
1847 | |||
1848 | static struct omap_hwmod_class omap2420_mailbox_hwmod_class = { | ||
1849 | .name = "mailbox", | ||
1850 | .sysc = &omap2420_mailbox_sysc, | ||
1851 | }; | ||
1852 | |||
1853 | /* mailbox */ | ||
1854 | static struct omap_hwmod omap2420_mailbox_hwmod; | ||
1855 | static struct omap_hwmod_irq_info omap2420_mailbox_irqs[] = { | ||
1856 | { .name = "dsp", .irq = 26 }, | ||
1857 | { .name = "iva", .irq = 34 }, | ||
1858 | }; | ||
1859 | |||
1860 | static struct omap_hwmod_addr_space omap2420_mailbox_addrs[] = { | ||
1861 | { | ||
1862 | .pa_start = 0x48094000, | ||
1863 | .pa_end = 0x480941ff, | ||
1864 | .flags = ADDR_TYPE_RT, | ||
1865 | }, | ||
1866 | }; | ||
1867 | |||
1868 | /* l4_core -> mailbox */ | ||
1869 | static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = { | ||
1870 | .master = &omap2420_l4_core_hwmod, | ||
1871 | .slave = &omap2420_mailbox_hwmod, | ||
1872 | .addr = omap2420_mailbox_addrs, | ||
1873 | .addr_cnt = ARRAY_SIZE(omap2420_mailbox_addrs), | ||
1874 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
1875 | }; | ||
1876 | |||
1877 | /* mailbox slave ports */ | ||
1878 | static struct omap_hwmod_ocp_if *omap2420_mailbox_slaves[] = { | ||
1879 | &omap2420_l4_core__mailbox, | ||
1880 | }; | ||
1881 | |||
1882 | static struct omap_hwmod omap2420_mailbox_hwmod = { | ||
1883 | .name = "mailbox", | ||
1884 | .class = &omap2420_mailbox_hwmod_class, | ||
1885 | .mpu_irqs = omap2420_mailbox_irqs, | ||
1886 | .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mailbox_irqs), | ||
1887 | .main_clk = "mailboxes_ick", | ||
1888 | .prcm = { | ||
1889 | .omap2 = { | ||
1890 | .prcm_reg_id = 1, | ||
1891 | .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT, | ||
1892 | .module_offs = CORE_MOD, | ||
1893 | .idlest_reg_id = 1, | ||
1894 | .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT, | ||
1895 | }, | ||
1896 | }, | ||
1897 | .slaves = omap2420_mailbox_slaves, | ||
1898 | .slaves_cnt = ARRAY_SIZE(omap2420_mailbox_slaves), | ||
1899 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), | ||
1900 | }; | ||
1901 | |||
1902 | /* | ||
1831 | * 'mcspi' class | 1903 | * 'mcspi' class |
1832 | * multichannel serial port interface (mcspi) / master/slave synchronous serial | 1904 | * multichannel serial port interface (mcspi) / master/slave synchronous serial |
1833 | * bus | 1905 | * bus |
@@ -1940,6 +2012,129 @@ static struct omap_hwmod omap2420_mcspi2_hwmod = { | |||
1940 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), | 2012 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), |
1941 | }; | 2013 | }; |
1942 | 2014 | ||
2015 | /* | ||
2016 | * 'mcbsp' class | ||
2017 | * multi channel buffered serial port controller | ||
2018 | */ | ||
2019 | |||
2020 | static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = { | ||
2021 | .name = "mcbsp", | ||
2022 | }; | ||
2023 | |||
2024 | /* mcbsp1 */ | ||
2025 | static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs[] = { | ||
2026 | { .name = "tx", .irq = 59 }, | ||
2027 | { .name = "rx", .irq = 60 }, | ||
2028 | }; | ||
2029 | |||
2030 | static struct omap_hwmod_dma_info omap2420_mcbsp1_sdma_chs[] = { | ||
2031 | { .name = "rx", .dma_req = 32 }, | ||
2032 | { .name = "tx", .dma_req = 31 }, | ||
2033 | }; | ||
2034 | |||
2035 | static struct omap_hwmod_addr_space omap2420_mcbsp1_addrs[] = { | ||
2036 | { | ||
2037 | .name = "mpu", | ||
2038 | .pa_start = 0x48074000, | ||
2039 | .pa_end = 0x480740ff, | ||
2040 | .flags = ADDR_TYPE_RT | ||
2041 | }, | ||
2042 | }; | ||
2043 | |||
2044 | /* l4_core -> mcbsp1 */ | ||
2045 | static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = { | ||
2046 | .master = &omap2420_l4_core_hwmod, | ||
2047 | .slave = &omap2420_mcbsp1_hwmod, | ||
2048 | .clk = "mcbsp1_ick", | ||
2049 | .addr = omap2420_mcbsp1_addrs, | ||
2050 | .addr_cnt = ARRAY_SIZE(omap2420_mcbsp1_addrs), | ||
2051 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2052 | }; | ||
2053 | |||
2054 | /* mcbsp1 slave ports */ | ||
2055 | static struct omap_hwmod_ocp_if *omap2420_mcbsp1_slaves[] = { | ||
2056 | &omap2420_l4_core__mcbsp1, | ||
2057 | }; | ||
2058 | |||
2059 | static struct omap_hwmod omap2420_mcbsp1_hwmod = { | ||
2060 | .name = "mcbsp1", | ||
2061 | .class = &omap2420_mcbsp_hwmod_class, | ||
2062 | .mpu_irqs = omap2420_mcbsp1_irqs, | ||
2063 | .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcbsp1_irqs), | ||
2064 | .sdma_reqs = omap2420_mcbsp1_sdma_chs, | ||
2065 | .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcbsp1_sdma_chs), | ||
2066 | .main_clk = "mcbsp1_fck", | ||
2067 | .prcm = { | ||
2068 | .omap2 = { | ||
2069 | .prcm_reg_id = 1, | ||
2070 | .module_bit = OMAP24XX_EN_MCBSP1_SHIFT, | ||
2071 | .module_offs = CORE_MOD, | ||
2072 | .idlest_reg_id = 1, | ||
2073 | .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT, | ||
2074 | }, | ||
2075 | }, | ||
2076 | .slaves = omap2420_mcbsp1_slaves, | ||
2077 | .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp1_slaves), | ||
2078 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), | ||
2079 | }; | ||
2080 | |||
2081 | /* mcbsp2 */ | ||
2082 | static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs[] = { | ||
2083 | { .name = "tx", .irq = 62 }, | ||
2084 | { .name = "rx", .irq = 63 }, | ||
2085 | }; | ||
2086 | |||
2087 | static struct omap_hwmod_dma_info omap2420_mcbsp2_sdma_chs[] = { | ||
2088 | { .name = "rx", .dma_req = 34 }, | ||
2089 | { .name = "tx", .dma_req = 33 }, | ||
2090 | }; | ||
2091 | |||
2092 | static struct omap_hwmod_addr_space omap2420_mcbsp2_addrs[] = { | ||
2093 | { | ||
2094 | .name = "mpu", | ||
2095 | .pa_start = 0x48076000, | ||
2096 | .pa_end = 0x480760ff, | ||
2097 | .flags = ADDR_TYPE_RT | ||
2098 | }, | ||
2099 | }; | ||
2100 | |||
2101 | /* l4_core -> mcbsp2 */ | ||
2102 | static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = { | ||
2103 | .master = &omap2420_l4_core_hwmod, | ||
2104 | .slave = &omap2420_mcbsp2_hwmod, | ||
2105 | .clk = "mcbsp2_ick", | ||
2106 | .addr = omap2420_mcbsp2_addrs, | ||
2107 | .addr_cnt = ARRAY_SIZE(omap2420_mcbsp2_addrs), | ||
2108 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2109 | }; | ||
2110 | |||
2111 | /* mcbsp2 slave ports */ | ||
2112 | static struct omap_hwmod_ocp_if *omap2420_mcbsp2_slaves[] = { | ||
2113 | &omap2420_l4_core__mcbsp2, | ||
2114 | }; | ||
2115 | |||
2116 | static struct omap_hwmod omap2420_mcbsp2_hwmod = { | ||
2117 | .name = "mcbsp2", | ||
2118 | .class = &omap2420_mcbsp_hwmod_class, | ||
2119 | .mpu_irqs = omap2420_mcbsp2_irqs, | ||
2120 | .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcbsp2_irqs), | ||
2121 | .sdma_reqs = omap2420_mcbsp2_sdma_chs, | ||
2122 | .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcbsp2_sdma_chs), | ||
2123 | .main_clk = "mcbsp2_fck", | ||
2124 | .prcm = { | ||
2125 | .omap2 = { | ||
2126 | .prcm_reg_id = 1, | ||
2127 | .module_bit = OMAP24XX_EN_MCBSP2_SHIFT, | ||
2128 | .module_offs = CORE_MOD, | ||
2129 | .idlest_reg_id = 1, | ||
2130 | .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT, | ||
2131 | }, | ||
2132 | }, | ||
2133 | .slaves = omap2420_mcbsp2_slaves, | ||
2134 | .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp2_slaves), | ||
2135 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), | ||
2136 | }; | ||
2137 | |||
1943 | static __initdata struct omap_hwmod *omap2420_hwmods[] = { | 2138 | static __initdata struct omap_hwmod *omap2420_hwmods[] = { |
1944 | &omap2420_l3_main_hwmod, | 2139 | &omap2420_l3_main_hwmod, |
1945 | &omap2420_l4_core_hwmod, | 2140 | &omap2420_l4_core_hwmod, |
@@ -1982,6 +2177,13 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = { | |||
1982 | /* dma_system class*/ | 2177 | /* dma_system class*/ |
1983 | &omap2420_dma_system_hwmod, | 2178 | &omap2420_dma_system_hwmod, |
1984 | 2179 | ||
2180 | /* mailbox class */ | ||
2181 | &omap2420_mailbox_hwmod, | ||
2182 | |||
2183 | /* mcbsp class */ | ||
2184 | &omap2420_mcbsp1_hwmod, | ||
2185 | &omap2420_mcbsp2_hwmod, | ||
2186 | |||
1985 | /* mcspi class */ | 2187 | /* mcspi class */ |
1986 | &omap2420_mcspi1_hwmod, | 2188 | &omap2420_mcspi1_hwmod, |
1987 | &omap2420_mcspi2_hwmod, | 2189 | &omap2420_mcspi2_hwmod, |