clockdomain.c (08cb9703e2922db297d8f83ec110bde37823e021) clockdomain.c (a5ffef6af127721a813d70f87cd8cc348ea9d6ab)
1/*
2 * OMAP2/3/4 clockdomain framework functions
3 *
4 * Copyright (C) 2008-2011 Texas Instruments, Inc.
5 * Copyright (C) 2008-2011 Nokia Corporation
6 *
7 * Written by Paul Walmsley and Jouni Högander
8 * Added OMAP4 specific support by Abhijit Pagare <abhijitpagare@ti.com>

--- 59 unchanged lines hidden (view full) ---

68 */
69static int _clkdm_register(struct clockdomain *clkdm)
70{
71 struct powerdomain *pwrdm;
72
73 if (!clkdm || !clkdm->name)
74 return -EINVAL;
75
1/*
2 * OMAP2/3/4 clockdomain framework functions
3 *
4 * Copyright (C) 2008-2011 Texas Instruments, Inc.
5 * Copyright (C) 2008-2011 Nokia Corporation
6 *
7 * Written by Paul Walmsley and Jouni Högander
8 * Added OMAP4 specific support by Abhijit Pagare <abhijitpagare@ti.com>

--- 59 unchanged lines hidden (view full) ---

68 */
69static int _clkdm_register(struct clockdomain *clkdm)
70{
71 struct powerdomain *pwrdm;
72
73 if (!clkdm || !clkdm->name)
74 return -EINVAL;
75
76 if (!omap_chip_is(clkdm->omap_chip))
77 return -EINVAL;
78
79 pwrdm = pwrdm_lookup(clkdm->pwrdm.name);
80 if (!pwrdm) {
81 pr_err("clockdomain: %s: powerdomain %s does not exist\n",
82 clkdm->name, clkdm->pwrdm.name);
83 return -EINVAL;
84 }
85 clkdm->pwrdm.ptr = pwrdm;
86

--- 13 unchanged lines hidden (view full) ---

100}
101
102/* _clkdm_deps_lookup - look up the specified clockdomain in a clkdm list */
103static struct clkdm_dep *_clkdm_deps_lookup(struct clockdomain *clkdm,
104 struct clkdm_dep *deps)
105{
106 struct clkdm_dep *cd;
107
76 pwrdm = pwrdm_lookup(clkdm->pwrdm.name);
77 if (!pwrdm) {
78 pr_err("clockdomain: %s: powerdomain %s does not exist\n",
79 clkdm->name, clkdm->pwrdm.name);
80 return -EINVAL;
81 }
82 clkdm->pwrdm.ptr = pwrdm;
83

--- 13 unchanged lines hidden (view full) ---

97}
98
99/* _clkdm_deps_lookup - look up the specified clockdomain in a clkdm list */
100static struct clkdm_dep *_clkdm_deps_lookup(struct clockdomain *clkdm,
101 struct clkdm_dep *deps)
102{
103 struct clkdm_dep *cd;
104
108 if (!clkdm || !deps || !omap_chip_is(clkdm->omap_chip))
105 if (!clkdm || !deps)
109 return ERR_PTR(-EINVAL);
110
111 for (cd = deps; cd->clkdm_name; cd++) {
106 return ERR_PTR(-EINVAL);
107
108 for (cd = deps; cd->clkdm_name; cd++) {
112 if (!omap_chip_is(cd->omap_chip))
113 continue;
114
115 if (!cd->clkdm && cd->clkdm_name)
116 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
117
118 if (cd->clkdm == clkdm)
119 break;
120 }
121
122 if (!cd->clkdm_name)

--- 20 unchanged lines hidden (view full) ---

143 */
144static void _autodep_lookup(struct clkdm_autodep *autodep)
145{
146 struct clockdomain *clkdm;
147
148 if (!autodep)
149 return;
150
109 if (!cd->clkdm && cd->clkdm_name)
110 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
111
112 if (cd->clkdm == clkdm)
113 break;
114 }
115
116 if (!cd->clkdm_name)

--- 20 unchanged lines hidden (view full) ---

137 */
138static void _autodep_lookup(struct clkdm_autodep *autodep)
139{
140 struct clockdomain *clkdm;
141
142 if (!autodep)
143 return;
144
151 if (!omap_chip_is(autodep->omap_chip))
152 return;
153
154 clkdm = clkdm_lookup(autodep->clkdm.name);
155 if (!clkdm) {
156 pr_err("clockdomain: autodeps: clockdomain %s does not exist\n",
157 autodep->clkdm.name);
158 clkdm = ERR_PTR(-ENOENT);
159 }
160 autodep->clkdm.ptr = clkdm;
161}

--- 15 unchanged lines hidden (view full) ---

177
178 if (!autodeps || clkdm->flags & CLKDM_NO_AUTODEPS)
179 return;
180
181 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
182 if (IS_ERR(autodep->clkdm.ptr))
183 continue;
184
145 clkdm = clkdm_lookup(autodep->clkdm.name);
146 if (!clkdm) {
147 pr_err("clockdomain: autodeps: clockdomain %s does not exist\n",
148 autodep->clkdm.name);
149 clkdm = ERR_PTR(-ENOENT);
150 }
151 autodep->clkdm.ptr = clkdm;
152}

--- 15 unchanged lines hidden (view full) ---

168
169 if (!autodeps || clkdm->flags & CLKDM_NO_AUTODEPS)
170 return;
171
172 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
173 if (IS_ERR(autodep->clkdm.ptr))
174 continue;
175
185 if (!omap_chip_is(autodep->omap_chip))
186 continue;
187
188 pr_debug("clockdomain: adding %s sleepdep/wkdep for "
189 "clkdm %s\n", autodep->clkdm.ptr->name,
190 clkdm->name);
191
192 clkdm_add_sleepdep(clkdm, autodep->clkdm.ptr);
193 clkdm_add_wkdep(clkdm, autodep->clkdm.ptr);
194 }
195}

--- 15 unchanged lines hidden (view full) ---

211
212 if (!autodeps || clkdm->flags & CLKDM_NO_AUTODEPS)
213 return;
214
215 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
216 if (IS_ERR(autodep->clkdm.ptr))
217 continue;
218
176 pr_debug("clockdomain: adding %s sleepdep/wkdep for "
177 "clkdm %s\n", autodep->clkdm.ptr->name,
178 clkdm->name);
179
180 clkdm_add_sleepdep(clkdm, autodep->clkdm.ptr);
181 clkdm_add_wkdep(clkdm, autodep->clkdm.ptr);
182 }
183}

--- 15 unchanged lines hidden (view full) ---

199
200 if (!autodeps || clkdm->flags & CLKDM_NO_AUTODEPS)
201 return;
202
203 for (autodep = autodeps; autodep->clkdm.ptr; autodep++) {
204 if (IS_ERR(autodep->clkdm.ptr))
205 continue;
206
219 if (!omap_chip_is(autodep->omap_chip))
220 continue;
221
222 pr_debug("clockdomain: removing %s sleepdep/wkdep for "
223 "clkdm %s\n", autodep->clkdm.ptr->name,
224 clkdm->name);
225
226 clkdm_del_sleepdep(clkdm, autodep->clkdm.ptr);
227 clkdm_del_wkdep(clkdm, autodep->clkdm.ptr);
228 }
229}

--- 8 unchanged lines hidden (view full) ---

238 * No return value.
239 */
240static void _resolve_clkdm_deps(struct clockdomain *clkdm,
241 struct clkdm_dep *clkdm_deps)
242{
243 struct clkdm_dep *cd;
244
245 for (cd = clkdm_deps; cd && cd->clkdm_name; cd++) {
207 pr_debug("clockdomain: removing %s sleepdep/wkdep for "
208 "clkdm %s\n", autodep->clkdm.ptr->name,
209 clkdm->name);
210
211 clkdm_del_sleepdep(clkdm, autodep->clkdm.ptr);
212 clkdm_del_wkdep(clkdm, autodep->clkdm.ptr);
213 }
214}

--- 8 unchanged lines hidden (view full) ---

223 * No return value.
224 */
225static void _resolve_clkdm_deps(struct clockdomain *clkdm,
226 struct clkdm_dep *clkdm_deps)
227{
228 struct clkdm_dep *cd;
229
230 for (cd = clkdm_deps; cd && cd->clkdm_name; cd++) {
246 if (!omap_chip_is(cd->omap_chip))
247 continue;
248 if (cd->clkdm)
249 continue;
250 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
251
252 WARN(!cd->clkdm, "clockdomain: %s: could not find clkdm %s while resolving dependencies - should never happen",
253 clkdm->name, cd->clkdm_name);
254 }
255}

--- 837 unchanged lines hidden ---
231 if (cd->clkdm)
232 continue;
233 cd->clkdm = _clkdm_lookup(cd->clkdm_name);
234
235 WARN(!cd->clkdm, "clockdomain: %s: could not find clkdm %s while resolving dependencies - should never happen",
236 clkdm->name, cd->clkdm_name);
237 }
238}

--- 837 unchanged lines hidden ---