blob: 6dc5ddc9a3a4b954fe2f3f1934882e6a32eed881 [file] [log] [blame]
Paul Walmsley801954d2008-08-19 11:08:44 +03001/*
2 * OMAP2/3 clockdomains
3 *
4 * Copyright (C) 2008 Texas Instruments, Inc.
5 * Copyright (C) 2008 Nokia Corporation
6 *
7 * Written by Paul Walmsley
8 */
9
Abhijit Pagare1a422722010-01-26 20:12:54 -070010/*
11 * To-Do List
12 * -> Port the Sleep/Wakeup dependencies for the domains
13 * from the Power domain framework
14 */
15
Paul Walmsley801954d2008-08-19 11:08:44 +030016#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
17#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
18
Tony Lindgrence491cf2009-10-20 09:40:47 -070019#include <plat/clockdomain.h>
Abhijit Pagare84c0c392010-01-26 20:12:53 -070020#include "cm.h"
Abhijit Pagare1a422722010-01-26 20:12:54 -070021#include "prm.h"
Paul Walmsley801954d2008-08-19 11:08:44 +030022
23/*
24 * OMAP2/3-common clockdomains
Paul Walmsleyd37f1a12008-09-10 10:47:36 -060025 *
26 * Even though the 2420 has a single PRCM module from the
27 * interconnect's perspective, internally it does appear to have
28 * separate PRM and CM clockdomains. The usual test case is
29 * sys_clkout/sys_clkout2.
Paul Walmsley801954d2008-08-19 11:08:44 +030030 */
31
Abhijit Pagare1a422722010-01-26 20:12:54 -070032#if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
33
Paul Walmsley801954d2008-08-19 11:08:44 +030034/* This is an implicit clockdomain - it is never defined as such in TRM */
35static struct clockdomain wkup_clkdm = {
36 .name = "wkup_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070037 .pwrdm = { .name = "wkup_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030038 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
39};
40
Paul Walmsleyd37f1a12008-09-10 10:47:36 -060041static struct clockdomain prm_clkdm = {
42 .name = "prm_clkdm",
43 .pwrdm = { .name = "wkup_pwrdm" },
44 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
45};
46
47static struct clockdomain cm_clkdm = {
48 .name = "cm_clkdm",
49 .pwrdm = { .name = "core_pwrdm" },
50 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
51};
52
Abhijit Pagare1a422722010-01-26 20:12:54 -070053#endif
54
Paul Walmsley801954d2008-08-19 11:08:44 +030055/*
56 * 2420-only clockdomains
57 */
58
59#if defined(CONFIG_ARCH_OMAP2420)
60
61static struct clockdomain mpu_2420_clkdm = {
62 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070063 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030064 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -070065 .clkstctrl_reg = OMAP2420_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +030066 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
67 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
68};
69
70static struct clockdomain iva1_2420_clkdm = {
71 .name = "iva1_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -070072 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +030073 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -070074 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
75 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +030076 .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
77 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
78};
79
Abhijit Pagare84c0c392010-01-26 20:12:53 -070080static struct clockdomain dsp_2420_clkdm = {
81 .name = "dsp_clkdm",
82 .pwrdm = { .name = "dsp_pwrdm" },
83 .flags = CLKDM_CAN_HWSUP_SWSUP,
84 .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
85 OMAP2_CM_CLKSTCTRL),
86 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
87 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
88};
89
90static struct clockdomain gfx_2420_clkdm = {
91 .name = "gfx_clkdm",
92 .pwrdm = { .name = "gfx_pwrdm" },
93 .flags = CLKDM_CAN_HWSUP_SWSUP,
94 .clkstctrl_reg = OMAP2420_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
95 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
96 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
97};
98
99static struct clockdomain core_l3_2420_clkdm = {
100 .name = "core_l3_clkdm",
101 .pwrdm = { .name = "core_pwrdm" },
102 .flags = CLKDM_CAN_HWSUP,
103 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
104 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
105 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
106};
107
108static struct clockdomain core_l4_2420_clkdm = {
109 .name = "core_l4_clkdm",
110 .pwrdm = { .name = "core_pwrdm" },
111 .flags = CLKDM_CAN_HWSUP,
112 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
113 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
114 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
115};
116
117static struct clockdomain dss_2420_clkdm = {
118 .name = "dss_clkdm",
119 .pwrdm = { .name = "core_pwrdm" },
120 .flags = CLKDM_CAN_HWSUP,
121 .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
122 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
123 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
124};
125
126#endif /* CONFIG_ARCH_OMAP2420 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300127
128
129/*
130 * 2430-only clockdomains
131 */
132
133#if defined(CONFIG_ARCH_OMAP2430)
134
135static struct clockdomain mpu_2430_clkdm = {
136 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700137 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300138 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700139 .clkstctrl_reg = OMAP2430_CM_REGADDR(MPU_MOD,
140 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300141 .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
142 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
143};
144
145static struct clockdomain mdm_clkdm = {
146 .name = "mdm_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700147 .pwrdm = { .name = "mdm_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300148 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700149 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
150 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300151 .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
152 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
153};
154
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700155static struct clockdomain dsp_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300156 .name = "dsp_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700157 .pwrdm = { .name = "dsp_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300158 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700159 .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP24XX_DSP_MOD,
160 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300161 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700162 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300163};
164
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700165static struct clockdomain gfx_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300166 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700167 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300168 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700169 .clkstctrl_reg = OMAP2430_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300170 .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700171 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300172};
173
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700174static struct clockdomain core_l3_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300175 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700176 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300177 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700178 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300179 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700180 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300181};
182
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700183static struct clockdomain core_l4_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300184 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700185 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300186 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700187 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300188 .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700189 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300190};
191
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700192static struct clockdomain dss_2430_clkdm = {
Paul Walmsley801954d2008-08-19 11:08:44 +0300193 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700194 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300195 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700196 .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300197 .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700198 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300199};
200
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700201#endif /* CONFIG_ARCH_OMAP2430 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300202
203
204/*
205 * 34xx clockdomains
206 */
207
208#if defined(CONFIG_ARCH_OMAP34XX)
209
210static struct clockdomain mpu_34xx_clkdm = {
211 .name = "mpu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700212 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300213 .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700214 .clkstctrl_reg = OMAP34XX_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300215 .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK,
216 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
217};
218
219static struct clockdomain neon_clkdm = {
220 .name = "neon_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700221 .pwrdm = { .name = "neon_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300222 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700223 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_NEON_MOD,
224 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300225 .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK,
226 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
227};
228
229static struct clockdomain iva2_clkdm = {
230 .name = "iva2_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700231 .pwrdm = { .name = "iva2_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300232 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700233 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_IVA2_MOD,
234 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300235 .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK,
236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
237};
238
239static struct clockdomain gfx_3430es1_clkdm = {
240 .name = "gfx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700241 .pwrdm = { .name = "gfx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300242 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700243 .clkstctrl_reg = OMAP34XX_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300244 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK,
245 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
246};
247
248static struct clockdomain sgx_clkdm = {
249 .name = "sgx_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700250 .pwrdm = { .name = "sgx_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300251 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700252 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD,
253 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300254 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700255 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300256};
257
Paul Walmsley333943b2008-08-19 11:08:45 +0300258/*
259 * The die-to-die clockdomain was documented in the 34xx ES1 TRM, but
260 * then that information was removed from the 34xx ES2+ TRM. It is
261 * unclear whether the core is still there, but the clockdomain logic
262 * is there, and must be programmed to an appropriate state if the
263 * CORE clockdomain is to become inactive.
264 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300265static struct clockdomain d2d_clkdm = {
266 .name = "d2d_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700267 .pwrdm = { .name = "core_pwrdm" },
Kevin Hilman01cbd4d2008-11-25 21:48:28 -0800268 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700269 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300270 .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK,
Paul Walmsley333943b2008-08-19 11:08:45 +0300271 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
Paul Walmsley801954d2008-08-19 11:08:44 +0300272};
273
274static struct clockdomain core_l3_34xx_clkdm = {
275 .name = "core_l3_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700276 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300277 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700278 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300279 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK,
280 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
281};
282
283static struct clockdomain core_l4_34xx_clkdm = {
284 .name = "core_l4_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700285 .pwrdm = { .name = "core_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300286 .flags = CLKDM_CAN_HWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700287 .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300288 .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK,
289 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
290};
291
292static struct clockdomain dss_34xx_clkdm = {
293 .name = "dss_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700294 .pwrdm = { .name = "dss_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300295 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700296 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD,
297 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300298 .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK,
299 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
300};
301
302static struct clockdomain cam_clkdm = {
303 .name = "cam_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700304 .pwrdm = { .name = "cam_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300305 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700306 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD,
307 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300308 .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK,
309 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
310};
311
312static struct clockdomain usbhost_clkdm = {
313 .name = "usbhost_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700314 .pwrdm = { .name = "usbhost_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300315 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700316 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD,
317 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300318 .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK,
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700319 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley801954d2008-08-19 11:08:44 +0300320};
321
322static struct clockdomain per_clkdm = {
323 .name = "per_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700324 .pwrdm = { .name = "per_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300325 .flags = CLKDM_CAN_HWSUP_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700326 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD,
327 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300328 .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK,
329 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
330};
331
Jouni Hoganderf2669502009-01-27 19:44:38 -0700332/*
333 * Disable hw supervised mode for emu_clkdm, because emu_pwrdm is
334 * switched of even if sdti is in use
335 */
Paul Walmsley801954d2008-08-19 11:08:44 +0300336static struct clockdomain emu_clkdm = {
337 .name = "emu_clkdm",
Paul Walmsley5b74c672009-02-03 02:10:03 -0700338 .pwrdm = { .name = "emu_pwrdm" },
Jouni Hoganderf2669502009-01-27 19:44:38 -0700339 .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700340 .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_EMU_MOD,
341 OMAP2_CM_CLKSTCTRL),
Paul Walmsley801954d2008-08-19 11:08:44 +0300342 .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK,
343 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
344};
345
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700346static struct clockdomain dpll1_clkdm = {
347 .name = "dpll1_clkdm",
348 .pwrdm = { .name = "dpll1_pwrdm" },
349 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
350};
351
352static struct clockdomain dpll2_clkdm = {
353 .name = "dpll2_clkdm",
354 .pwrdm = { .name = "dpll2_pwrdm" },
355 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
356};
357
358static struct clockdomain dpll3_clkdm = {
359 .name = "dpll3_clkdm",
360 .pwrdm = { .name = "dpll3_pwrdm" },
361 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
362};
363
364static struct clockdomain dpll4_clkdm = {
365 .name = "dpll4_clkdm",
366 .pwrdm = { .name = "dpll4_pwrdm" },
367 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
368};
369
370static struct clockdomain dpll5_clkdm = {
371 .name = "dpll5_clkdm",
372 .pwrdm = { .name = "dpll5_pwrdm" },
Paul Walmsleyd41ad522009-02-05 20:45:25 -0700373 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700374};
375
Paul Walmsley801954d2008-08-19 11:08:44 +0300376#endif /* CONFIG_ARCH_OMAP34XX */
377
Abhijit Pagare1a422722010-01-26 20:12:54 -0700378#include "clockdomains44xx.h"
379
Paul Walmsley801954d2008-08-19 11:08:44 +0300380/*
381 * Clockdomain-powerdomain hwsup dependencies (34XX only)
382 */
383
384static struct clkdm_pwrdm_autodep clkdm_pwrdm_autodeps[] = {
Abhijit Pagare1a422722010-01-26 20:12:54 -0700385
386#ifdef CONFIG_ARCH_OMAP34XX
Paul Walmsley801954d2008-08-19 11:08:44 +0300387 {
Paul Walmsley5b74c672009-02-03 02:10:03 -0700388 .pwrdm = { .name = "mpu_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300389 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
390 },
391 {
Paul Walmsley5b74c672009-02-03 02:10:03 -0700392 .pwrdm = { .name = "iva2_pwrdm" },
Paul Walmsley801954d2008-08-19 11:08:44 +0300393 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
394 },
Paul Walmsley5b74c672009-02-03 02:10:03 -0700395 {
396 .pwrdm = { .name = NULL },
397 }
Abhijit Pagare1a422722010-01-26 20:12:54 -0700398#endif
399
Paul Walmsley801954d2008-08-19 11:08:44 +0300400};
401
402/*
Abhijit Pagare1a422722010-01-26 20:12:54 -0700403 * List of clockdomain pointers per platform
Paul Walmsley801954d2008-08-19 11:08:44 +0300404 */
405
406static struct clockdomain *clockdomains_omap[] = {
407
Abhijit Pagare1a422722010-01-26 20:12:54 -0700408#if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
Paul Walmsley801954d2008-08-19 11:08:44 +0300409 &wkup_clkdm,
Paul Walmsleyd37f1a12008-09-10 10:47:36 -0600410 &cm_clkdm,
411 &prm_clkdm,
Abhijit Pagare1a422722010-01-26 20:12:54 -0700412#endif
Paul Walmsley801954d2008-08-19 11:08:44 +0300413
414#ifdef CONFIG_ARCH_OMAP2420
415 &mpu_2420_clkdm,
416 &iva1_2420_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700417 &dsp_2420_clkdm,
418 &gfx_2420_clkdm,
419 &core_l3_2420_clkdm,
420 &core_l4_2420_clkdm,
421 &dss_2420_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300422#endif
423
424#ifdef CONFIG_ARCH_OMAP2430
425 &mpu_2430_clkdm,
426 &mdm_clkdm,
Abhijit Pagare84c0c392010-01-26 20:12:53 -0700427 &dsp_2430_clkdm,
428 &gfx_2430_clkdm,
429 &core_l3_2430_clkdm,
430 &core_l4_2430_clkdm,
431 &dss_2430_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300432#endif
433
434#ifdef CONFIG_ARCH_OMAP34XX
435 &mpu_34xx_clkdm,
436 &neon_clkdm,
437 &iva2_clkdm,
438 &gfx_3430es1_clkdm,
439 &sgx_clkdm,
440 &d2d_clkdm,
441 &core_l3_34xx_clkdm,
442 &core_l4_34xx_clkdm,
443 &dss_34xx_clkdm,
444 &cam_clkdm,
445 &usbhost_clkdm,
446 &per_clkdm,
447 &emu_clkdm,
Paul Walmsley46e0ccf2009-01-27 19:44:18 -0700448 &dpll1_clkdm,
449 &dpll2_clkdm,
450 &dpll3_clkdm,
451 &dpll4_clkdm,
452 &dpll5_clkdm,
Paul Walmsley801954d2008-08-19 11:08:44 +0300453#endif
454
Abhijit Pagare1a422722010-01-26 20:12:54 -0700455#ifdef CONFIG_ARCH_OMAP4
456 &l4_cefuse_44xx_clkdm,
457 &l4_cfg_44xx_clkdm,
458 &tesla_44xx_clkdm,
459 &l3_gfx_44xx_clkdm,
460 &ivahd_44xx_clkdm,
461 &l4_secure_44xx_clkdm,
462 &l4_per_44xx_clkdm,
463 &abe_44xx_clkdm,
Abhijit Pagare6b04e0d2010-01-26 20:12:58 -0700464 &l3_instr_44xx_clkdm,
Abhijit Pagare1a422722010-01-26 20:12:54 -0700465 &l3_init_44xx_clkdm,
466 &mpuss_44xx_clkdm,
467 &mpu0_44xx_clkdm,
468 &mpu1_44xx_clkdm,
469 &l3_emif_44xx_clkdm,
470 &l4_ao_44xx_clkdm,
471 &ducati_44xx_clkdm,
472 &l3_2_44xx_clkdm,
473 &l3_1_44xx_clkdm,
474 &l3_d2d_44xx_clkdm,
475 &iss_44xx_clkdm,
476 &l3_dss_44xx_clkdm,
477 &l4_wkup_44xx_clkdm,
478 &emu_sys_44xx_clkdm,
479 &l3_dma_44xx_clkdm,
480#endif
481
Paul Walmsley801954d2008-08-19 11:08:44 +0300482 NULL,
483};
484
485#endif