aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
diff options
context:
space:
mode:
authorBenoit Cousson <b-cousson@ti.com>2011-02-11 06:17:14 -0500
committerBenoit Cousson <b-cousson@ti.com>2011-02-17 12:25:29 -0500
commit35d1a66a9cc03167ff5266e5fcb0dea639123d84 (patch)
treee7eb4cd8b0d9618a256ee96adb3db3326cc42148 /arch/arm/mach-omap2/omap_hwmod_44xx_data.c
parent9bcbd7f0d577b3f6d5742188563457a083b8ae7f (diff)
OMAP4: hwmod data: Add timer
Add the data for the 11 timers IPs. OMAP4 contains two differents IP variants for the timers: - 8 x regular timer (3, 4, 5, 6, 7, 8, 9 & 11) - 3 x 1ms timer (1, 2 & 10) The regular timers registers programming model was changed due to the adaptation to the new IP interface. Unfortunately the 1ms version still use the previous programming model. The driver will have to take care of theses differences. Please note that the capability and the partitioning is also different depending of the instance. - timer 1 is inside the wakeup domain - timers 5, 6, 7 & 8 are inside in the ABE (audio backend) - timers 2, 3, 4, 9, 10 & 11 are inside the PER power domain The timer was previously named gptimerX or dmtimerX, it is now simply named timerX. Signed-off-by: Benoit Cousson <b-cousson@ti.com> Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com> [b-cousson@ti.com: Fix alignement in class attribute, re-order flags and update the changelog]
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_44xx_data.c')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c633
1 files changed, 622 insertions, 11 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 8199eb26fd34..37b30246a063 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -551,17 +551,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = {
551 * sl2if 551 * sl2if
552 * slimbus1 552 * slimbus1
553 * slimbus2 553 * slimbus2
554 * timer1
555 * timer10
556 * timer11
557 * timer2
558 * timer3
559 * timer4
560 * timer5
561 * timer6
562 * timer7
563 * timer8
564 * timer9
565 * usb_host_fs 554 * usb_host_fs
566 * usb_host_hs 555 * usb_host_hs
567 * usb_otg_hs 556 * usb_otg_hs
@@ -1934,6 +1923,615 @@ static struct omap_hwmod omap44xx_spinlock_hwmod = {
1934}; 1923};
1935 1924
1936/* 1925/*
1926 * 'timer' class
1927 * general purpose timer module with accurate 1ms tick
1928 * This class contains several variants: ['timer_1ms', 'timer']
1929 */
1930
1931static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
1932 .rev_offs = 0x0000,
1933 .sysc_offs = 0x0010,
1934 .syss_offs = 0x0014,
1935 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1936 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1937 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1938 SYSS_HAS_RESET_STATUS),
1939 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1940 .sysc_fields = &omap_hwmod_sysc_type1,
1941};
1942
1943static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
1944 .name = "timer",
1945 .sysc = &omap44xx_timer_1ms_sysc,
1946};
1947
1948static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
1949 .rev_offs = 0x0000,
1950 .sysc_offs = 0x0010,
1951 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1952 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1953 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1954 SIDLE_SMART_WKUP),
1955 .sysc_fields = &omap_hwmod_sysc_type2,
1956};
1957
1958static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
1959 .name = "timer",
1960 .sysc = &omap44xx_timer_sysc,
1961};
1962
1963/* timer1 */
1964static struct omap_hwmod omap44xx_timer1_hwmod;
1965static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
1966 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
1967};
1968
1969static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
1970 {
1971 .pa_start = 0x4a318000,
1972 .pa_end = 0x4a31807f,
1973 .flags = ADDR_TYPE_RT
1974 },
1975};
1976
1977/* l4_wkup -> timer1 */
1978static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
1979 .master = &omap44xx_l4_wkup_hwmod,
1980 .slave = &omap44xx_timer1_hwmod,
1981 .clk = "l4_wkup_clk_mux_ck",
1982 .addr = omap44xx_timer1_addrs,
1983 .addr_cnt = ARRAY_SIZE(omap44xx_timer1_addrs),
1984 .user = OCP_USER_MPU | OCP_USER_SDMA,
1985};
1986
1987/* timer1 slave ports */
1988static struct omap_hwmod_ocp_if *omap44xx_timer1_slaves[] = {
1989 &omap44xx_l4_wkup__timer1,
1990};
1991
1992static struct omap_hwmod omap44xx_timer1_hwmod = {
1993 .name = "timer1",
1994 .class = &omap44xx_timer_1ms_hwmod_class,
1995 .mpu_irqs = omap44xx_timer1_irqs,
1996 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer1_irqs),
1997 .main_clk = "timer1_fck",
1998 .prcm = {
1999 .omap4 = {
2000 .clkctrl_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2001 },
2002 },
2003 .slaves = omap44xx_timer1_slaves,
2004 .slaves_cnt = ARRAY_SIZE(omap44xx_timer1_slaves),
2005 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2006};
2007
2008/* timer2 */
2009static struct omap_hwmod omap44xx_timer2_hwmod;
2010static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
2011 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
2012};
2013
2014static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
2015 {
2016 .pa_start = 0x48032000,
2017 .pa_end = 0x4803207f,
2018 .flags = ADDR_TYPE_RT
2019 },
2020};
2021
2022/* l4_per -> timer2 */
2023static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
2024 .master = &omap44xx_l4_per_hwmod,
2025 .slave = &omap44xx_timer2_hwmod,
2026 .clk = "l4_div_ck",
2027 .addr = omap44xx_timer2_addrs,
2028 .addr_cnt = ARRAY_SIZE(omap44xx_timer2_addrs),
2029 .user = OCP_USER_MPU | OCP_USER_SDMA,
2030};
2031
2032/* timer2 slave ports */
2033static struct omap_hwmod_ocp_if *omap44xx_timer2_slaves[] = {
2034 &omap44xx_l4_per__timer2,
2035};
2036
2037static struct omap_hwmod omap44xx_timer2_hwmod = {
2038 .name = "timer2",
2039 .class = &omap44xx_timer_1ms_hwmod_class,
2040 .mpu_irqs = omap44xx_timer2_irqs,
2041 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer2_irqs),
2042 .main_clk = "timer2_fck",
2043 .prcm = {
2044 .omap4 = {
2045 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2046 },
2047 },
2048 .slaves = omap44xx_timer2_slaves,
2049 .slaves_cnt = ARRAY_SIZE(omap44xx_timer2_slaves),
2050 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2051};
2052
2053/* timer3 */
2054static struct omap_hwmod omap44xx_timer3_hwmod;
2055static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
2056 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
2057};
2058
2059static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
2060 {
2061 .pa_start = 0x48034000,
2062 .pa_end = 0x4803407f,
2063 .flags = ADDR_TYPE_RT
2064 },
2065};
2066
2067/* l4_per -> timer3 */
2068static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
2069 .master = &omap44xx_l4_per_hwmod,
2070 .slave = &omap44xx_timer3_hwmod,
2071 .clk = "l4_div_ck",
2072 .addr = omap44xx_timer3_addrs,
2073 .addr_cnt = ARRAY_SIZE(omap44xx_timer3_addrs),
2074 .user = OCP_USER_MPU | OCP_USER_SDMA,
2075};
2076
2077/* timer3 slave ports */
2078static struct omap_hwmod_ocp_if *omap44xx_timer3_slaves[] = {
2079 &omap44xx_l4_per__timer3,
2080};
2081
2082static struct omap_hwmod omap44xx_timer3_hwmod = {
2083 .name = "timer3",
2084 .class = &omap44xx_timer_hwmod_class,
2085 .mpu_irqs = omap44xx_timer3_irqs,
2086 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer3_irqs),
2087 .main_clk = "timer3_fck",
2088 .prcm = {
2089 .omap4 = {
2090 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2091 },
2092 },
2093 .slaves = omap44xx_timer3_slaves,
2094 .slaves_cnt = ARRAY_SIZE(omap44xx_timer3_slaves),
2095 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2096};
2097
2098/* timer4 */
2099static struct omap_hwmod omap44xx_timer4_hwmod;
2100static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
2101 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
2102};
2103
2104static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
2105 {
2106 .pa_start = 0x48036000,
2107 .pa_end = 0x4803607f,
2108 .flags = ADDR_TYPE_RT
2109 },
2110};
2111
2112/* l4_per -> timer4 */
2113static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
2114 .master = &omap44xx_l4_per_hwmod,
2115 .slave = &omap44xx_timer4_hwmod,
2116 .clk = "l4_div_ck",
2117 .addr = omap44xx_timer4_addrs,
2118 .addr_cnt = ARRAY_SIZE(omap44xx_timer4_addrs),
2119 .user = OCP_USER_MPU | OCP_USER_SDMA,
2120};
2121
2122/* timer4 slave ports */
2123static struct omap_hwmod_ocp_if *omap44xx_timer4_slaves[] = {
2124 &omap44xx_l4_per__timer4,
2125};
2126
2127static struct omap_hwmod omap44xx_timer4_hwmod = {
2128 .name = "timer4",
2129 .class = &omap44xx_timer_hwmod_class,
2130 .mpu_irqs = omap44xx_timer4_irqs,
2131 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer4_irqs),
2132 .main_clk = "timer4_fck",
2133 .prcm = {
2134 .omap4 = {
2135 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2136 },
2137 },
2138 .slaves = omap44xx_timer4_slaves,
2139 .slaves_cnt = ARRAY_SIZE(omap44xx_timer4_slaves),
2140 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2141};
2142
2143/* timer5 */
2144static struct omap_hwmod omap44xx_timer5_hwmod;
2145static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
2146 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
2147};
2148
2149static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
2150 {
2151 .pa_start = 0x40138000,
2152 .pa_end = 0x4013807f,
2153 .flags = ADDR_TYPE_RT
2154 },
2155};
2156
2157/* l4_abe -> timer5 */
2158static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
2159 .master = &omap44xx_l4_abe_hwmod,
2160 .slave = &omap44xx_timer5_hwmod,
2161 .clk = "ocp_abe_iclk",
2162 .addr = omap44xx_timer5_addrs,
2163 .addr_cnt = ARRAY_SIZE(omap44xx_timer5_addrs),
2164 .user = OCP_USER_MPU,
2165};
2166
2167static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
2168 {
2169 .pa_start = 0x49038000,
2170 .pa_end = 0x4903807f,
2171 .flags = ADDR_TYPE_RT
2172 },
2173};
2174
2175/* l4_abe -> timer5 (dma) */
2176static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
2177 .master = &omap44xx_l4_abe_hwmod,
2178 .slave = &omap44xx_timer5_hwmod,
2179 .clk = "ocp_abe_iclk",
2180 .addr = omap44xx_timer5_dma_addrs,
2181 .addr_cnt = ARRAY_SIZE(omap44xx_timer5_dma_addrs),
2182 .user = OCP_USER_SDMA,
2183};
2184
2185/* timer5 slave ports */
2186static struct omap_hwmod_ocp_if *omap44xx_timer5_slaves[] = {
2187 &omap44xx_l4_abe__timer5,
2188 &omap44xx_l4_abe__timer5_dma,
2189};
2190
2191static struct omap_hwmod omap44xx_timer5_hwmod = {
2192 .name = "timer5",
2193 .class = &omap44xx_timer_hwmod_class,
2194 .mpu_irqs = omap44xx_timer5_irqs,
2195 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer5_irqs),
2196 .main_clk = "timer5_fck",
2197 .prcm = {
2198 .omap4 = {
2199 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2200 },
2201 },
2202 .slaves = omap44xx_timer5_slaves,
2203 .slaves_cnt = ARRAY_SIZE(omap44xx_timer5_slaves),
2204 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2205};
2206
2207/* timer6 */
2208static struct omap_hwmod omap44xx_timer6_hwmod;
2209static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
2210 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
2211};
2212
2213static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
2214 {
2215 .pa_start = 0x4013a000,
2216 .pa_end = 0x4013a07f,
2217 .flags = ADDR_TYPE_RT
2218 },
2219};
2220
2221/* l4_abe -> timer6 */
2222static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
2223 .master = &omap44xx_l4_abe_hwmod,
2224 .slave = &omap44xx_timer6_hwmod,
2225 .clk = "ocp_abe_iclk",
2226 .addr = omap44xx_timer6_addrs,
2227 .addr_cnt = ARRAY_SIZE(omap44xx_timer6_addrs),
2228 .user = OCP_USER_MPU,
2229};
2230
2231static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
2232 {
2233 .pa_start = 0x4903a000,
2234 .pa_end = 0x4903a07f,
2235 .flags = ADDR_TYPE_RT
2236 },
2237};
2238
2239/* l4_abe -> timer6 (dma) */
2240static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
2241 .master = &omap44xx_l4_abe_hwmod,
2242 .slave = &omap44xx_timer6_hwmod,
2243 .clk = "ocp_abe_iclk",
2244 .addr = omap44xx_timer6_dma_addrs,
2245 .addr_cnt = ARRAY_SIZE(omap44xx_timer6_dma_addrs),
2246 .user = OCP_USER_SDMA,
2247};
2248
2249/* timer6 slave ports */
2250static struct omap_hwmod_ocp_if *omap44xx_timer6_slaves[] = {
2251 &omap44xx_l4_abe__timer6,
2252 &omap44xx_l4_abe__timer6_dma,
2253};
2254
2255static struct omap_hwmod omap44xx_timer6_hwmod = {
2256 .name = "timer6",
2257 .class = &omap44xx_timer_hwmod_class,
2258 .mpu_irqs = omap44xx_timer6_irqs,
2259 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer6_irqs),
2260 .main_clk = "timer6_fck",
2261 .prcm = {
2262 .omap4 = {
2263 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
2264 },
2265 },
2266 .slaves = omap44xx_timer6_slaves,
2267 .slaves_cnt = ARRAY_SIZE(omap44xx_timer6_slaves),
2268 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2269};
2270
2271/* timer7 */
2272static struct omap_hwmod omap44xx_timer7_hwmod;
2273static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
2274 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
2275};
2276
2277static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
2278 {
2279 .pa_start = 0x4013c000,
2280 .pa_end = 0x4013c07f,
2281 .flags = ADDR_TYPE_RT
2282 },
2283};
2284
2285/* l4_abe -> timer7 */
2286static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
2287 .master = &omap44xx_l4_abe_hwmod,
2288 .slave = &omap44xx_timer7_hwmod,
2289 .clk = "ocp_abe_iclk",
2290 .addr = omap44xx_timer7_addrs,
2291 .addr_cnt = ARRAY_SIZE(omap44xx_timer7_addrs),
2292 .user = OCP_USER_MPU,
2293};
2294
2295static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
2296 {
2297 .pa_start = 0x4903c000,
2298 .pa_end = 0x4903c07f,
2299 .flags = ADDR_TYPE_RT
2300 },
2301};
2302
2303/* l4_abe -> timer7 (dma) */
2304static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
2305 .master = &omap44xx_l4_abe_hwmod,
2306 .slave = &omap44xx_timer7_hwmod,
2307 .clk = "ocp_abe_iclk",
2308 .addr = omap44xx_timer7_dma_addrs,
2309 .addr_cnt = ARRAY_SIZE(omap44xx_timer7_dma_addrs),
2310 .user = OCP_USER_SDMA,
2311};
2312
2313/* timer7 slave ports */
2314static struct omap_hwmod_ocp_if *omap44xx_timer7_slaves[] = {
2315 &omap44xx_l4_abe__timer7,
2316 &omap44xx_l4_abe__timer7_dma,
2317};
2318
2319static struct omap_hwmod omap44xx_timer7_hwmod = {
2320 .name = "timer7",
2321 .class = &omap44xx_timer_hwmod_class,
2322 .mpu_irqs = omap44xx_timer7_irqs,
2323 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer7_irqs),
2324 .main_clk = "timer7_fck",
2325 .prcm = {
2326 .omap4 = {
2327 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
2328 },
2329 },
2330 .slaves = omap44xx_timer7_slaves,
2331 .slaves_cnt = ARRAY_SIZE(omap44xx_timer7_slaves),
2332 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2333};
2334
2335/* timer8 */
2336static struct omap_hwmod omap44xx_timer8_hwmod;
2337static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
2338 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
2339};
2340
2341static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
2342 {
2343 .pa_start = 0x4013e000,
2344 .pa_end = 0x4013e07f,
2345 .flags = ADDR_TYPE_RT
2346 },
2347};
2348
2349/* l4_abe -> timer8 */
2350static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
2351 .master = &omap44xx_l4_abe_hwmod,
2352 .slave = &omap44xx_timer8_hwmod,
2353 .clk = "ocp_abe_iclk",
2354 .addr = omap44xx_timer8_addrs,
2355 .addr_cnt = ARRAY_SIZE(omap44xx_timer8_addrs),
2356 .user = OCP_USER_MPU,
2357};
2358
2359static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
2360 {
2361 .pa_start = 0x4903e000,
2362 .pa_end = 0x4903e07f,
2363 .flags = ADDR_TYPE_RT
2364 },
2365};
2366
2367/* l4_abe -> timer8 (dma) */
2368static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
2369 .master = &omap44xx_l4_abe_hwmod,
2370 .slave = &omap44xx_timer8_hwmod,
2371 .clk = "ocp_abe_iclk",
2372 .addr = omap44xx_timer8_dma_addrs,
2373 .addr_cnt = ARRAY_SIZE(omap44xx_timer8_dma_addrs),
2374 .user = OCP_USER_SDMA,
2375};
2376
2377/* timer8 slave ports */
2378static struct omap_hwmod_ocp_if *omap44xx_timer8_slaves[] = {
2379 &omap44xx_l4_abe__timer8,
2380 &omap44xx_l4_abe__timer8_dma,
2381};
2382
2383static struct omap_hwmod omap44xx_timer8_hwmod = {
2384 .name = "timer8",
2385 .class = &omap44xx_timer_hwmod_class,
2386 .mpu_irqs = omap44xx_timer8_irqs,
2387 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer8_irqs),
2388 .main_clk = "timer8_fck",
2389 .prcm = {
2390 .omap4 = {
2391 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
2392 },
2393 },
2394 .slaves = omap44xx_timer8_slaves,
2395 .slaves_cnt = ARRAY_SIZE(omap44xx_timer8_slaves),
2396 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2397};
2398
2399/* timer9 */
2400static struct omap_hwmod omap44xx_timer9_hwmod;
2401static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
2402 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
2403};
2404
2405static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
2406 {
2407 .pa_start = 0x4803e000,
2408 .pa_end = 0x4803e07f,
2409 .flags = ADDR_TYPE_RT
2410 },
2411};
2412
2413/* l4_per -> timer9 */
2414static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
2415 .master = &omap44xx_l4_per_hwmod,
2416 .slave = &omap44xx_timer9_hwmod,
2417 .clk = "l4_div_ck",
2418 .addr = omap44xx_timer9_addrs,
2419 .addr_cnt = ARRAY_SIZE(omap44xx_timer9_addrs),
2420 .user = OCP_USER_MPU | OCP_USER_SDMA,
2421};
2422
2423/* timer9 slave ports */
2424static struct omap_hwmod_ocp_if *omap44xx_timer9_slaves[] = {
2425 &omap44xx_l4_per__timer9,
2426};
2427
2428static struct omap_hwmod omap44xx_timer9_hwmod = {
2429 .name = "timer9",
2430 .class = &omap44xx_timer_hwmod_class,
2431 .mpu_irqs = omap44xx_timer9_irqs,
2432 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer9_irqs),
2433 .main_clk = "timer9_fck",
2434 .prcm = {
2435 .omap4 = {
2436 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
2437 },
2438 },
2439 .slaves = omap44xx_timer9_slaves,
2440 .slaves_cnt = ARRAY_SIZE(omap44xx_timer9_slaves),
2441 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2442};
2443
2444/* timer10 */
2445static struct omap_hwmod omap44xx_timer10_hwmod;
2446static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
2447 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
2448};
2449
2450static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
2451 {
2452 .pa_start = 0x48086000,
2453 .pa_end = 0x4808607f,
2454 .flags = ADDR_TYPE_RT
2455 },
2456};
2457
2458/* l4_per -> timer10 */
2459static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
2460 .master = &omap44xx_l4_per_hwmod,
2461 .slave = &omap44xx_timer10_hwmod,
2462 .clk = "l4_div_ck",
2463 .addr = omap44xx_timer10_addrs,
2464 .addr_cnt = ARRAY_SIZE(omap44xx_timer10_addrs),
2465 .user = OCP_USER_MPU | OCP_USER_SDMA,
2466};
2467
2468/* timer10 slave ports */
2469static struct omap_hwmod_ocp_if *omap44xx_timer10_slaves[] = {
2470 &omap44xx_l4_per__timer10,
2471};
2472
2473static struct omap_hwmod omap44xx_timer10_hwmod = {
2474 .name = "timer10",
2475 .class = &omap44xx_timer_1ms_hwmod_class,
2476 .mpu_irqs = omap44xx_timer10_irqs,
2477 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer10_irqs),
2478 .main_clk = "timer10_fck",
2479 .prcm = {
2480 .omap4 = {
2481 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
2482 },
2483 },
2484 .slaves = omap44xx_timer10_slaves,
2485 .slaves_cnt = ARRAY_SIZE(omap44xx_timer10_slaves),
2486 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2487};
2488
2489/* timer11 */
2490static struct omap_hwmod omap44xx_timer11_hwmod;
2491static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
2492 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
2493};
2494
2495static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
2496 {
2497 .pa_start = 0x48088000,
2498 .pa_end = 0x4808807f,
2499 .flags = ADDR_TYPE_RT
2500 },
2501};
2502
2503/* l4_per -> timer11 */
2504static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
2505 .master = &omap44xx_l4_per_hwmod,
2506 .slave = &omap44xx_timer11_hwmod,
2507 .clk = "l4_div_ck",
2508 .addr = omap44xx_timer11_addrs,
2509 .addr_cnt = ARRAY_SIZE(omap44xx_timer11_addrs),
2510 .user = OCP_USER_MPU | OCP_USER_SDMA,
2511};
2512
2513/* timer11 slave ports */
2514static struct omap_hwmod_ocp_if *omap44xx_timer11_slaves[] = {
2515 &omap44xx_l4_per__timer11,
2516};
2517
2518static struct omap_hwmod omap44xx_timer11_hwmod = {
2519 .name = "timer11",
2520 .class = &omap44xx_timer_hwmod_class,
2521 .mpu_irqs = omap44xx_timer11_irqs,
2522 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer11_irqs),
2523 .main_clk = "timer11_fck",
2524 .prcm = {
2525 .omap4 = {
2526 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
2527 },
2528 },
2529 .slaves = omap44xx_timer11_slaves,
2530 .slaves_cnt = ARRAY_SIZE(omap44xx_timer11_slaves),
2531 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2532};
2533
2534/*
1937 * 'uart' class 2535 * 'uart' class
1938 * universal asynchronous receiver/transmitter (uart) 2536 * universal asynchronous receiver/transmitter (uart)
1939 */ 2537 */
@@ -2362,6 +2960,19 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
2362 /* spinlock class */ 2960 /* spinlock class */
2363 &omap44xx_spinlock_hwmod, 2961 &omap44xx_spinlock_hwmod,
2364 2962
2963 /* timer class */
2964 &omap44xx_timer1_hwmod,
2965 &omap44xx_timer2_hwmod,
2966 &omap44xx_timer3_hwmod,
2967 &omap44xx_timer4_hwmod,
2968 &omap44xx_timer5_hwmod,
2969 &omap44xx_timer6_hwmod,
2970 &omap44xx_timer7_hwmod,
2971 &omap44xx_timer8_hwmod,
2972 &omap44xx_timer9_hwmod,
2973 &omap44xx_timer10_hwmod,
2974 &omap44xx_timer11_hwmod,
2975
2365 /* uart class */ 2976 /* uart class */
2366 &omap44xx_uart1_hwmod, 2977 &omap44xx_uart1_hwmod,
2367 &omap44xx_uart2_hwmod, 2978 &omap44xx_uart2_hwmod,