Lines Matching refs:e

145 				     struct pm_element *e)  in wtemp_get_lowlevel_rate()  argument
150 opp = e->opp; in wtemp_get_lowlevel_rate()
151 count = e->opp_nr; in wtemp_get_lowlevel_rate()
163 static ulong __wtemp_clk_get_rate(struct pm_element *e) in __wtemp_clk_get_rate() argument
166 if (e->id == PM_DMC) in __wtemp_clk_get_rate()
169 return clk_get_rate(&e->clk); in __wtemp_clk_get_rate()
172 static ulong __wtemp_clk_set_rate(struct pm_element *e, ulong rate) in __wtemp_clk_set_rate() argument
175 if (e->id == PM_DMC) { in __wtemp_clk_set_rate()
180 clk_set_rate(&e->clk, rate); in __wtemp_clk_set_rate()
185 static int __wtemp_regulator_get_value(struct pm_element *e) in __wtemp_regulator_get_value() argument
187 return regulator_get_value(e->supply); in __wtemp_regulator_get_value()
190 static int __wtemp_regulator_set_value(struct pm_element *e, int value) in __wtemp_regulator_set_value() argument
192 return regulator_set_value(e->supply, value); in __wtemp_regulator_set_value()
202 static void wtemp_dvfs_low_temp_adjust(struct udevice *dev, struct pm_element *e) in wtemp_dvfs_low_temp_adjust() argument
208 org_rate = __wtemp_clk_get_rate(e); in wtemp_dvfs_low_temp_adjust()
209 org_volt = __wtemp_regulator_get_value(e); in wtemp_dvfs_low_temp_adjust()
210 tgt_volt = org_volt + e->volt_diff; in wtemp_dvfs_low_temp_adjust()
211 if ((e->lmt.max_volt != -ENODATA) && (tgt_volt > e->lmt.max_volt)) { in wtemp_dvfs_low_temp_adjust()
212 tgt_volt = e->lmt.max_volt; in wtemp_dvfs_low_temp_adjust()
213 __wtemp_regulator_set_value(e, tgt_volt); in wtemp_dvfs_low_temp_adjust()
216 tgt_rate = __wtemp_clk_set_rate(e, tgt_rate); in wtemp_dvfs_low_temp_adjust()
218 __wtemp_regulator_set_value(e, tgt_volt); in wtemp_dvfs_low_temp_adjust()
223 rb_rate = __wtemp_clk_get_rate(e); in wtemp_dvfs_low_temp_adjust()
224 rb_volt = __wtemp_regulator_get_value(e); in wtemp_dvfs_low_temp_adjust()
227 e->name, tgt_rate, rb_rate); in wtemp_dvfs_low_temp_adjust()
230 e->name, tgt_volt, rb_volt); in wtemp_dvfs_low_temp_adjust()
233 e->name, org_rate, rb_rate, org_volt, rb_volt); in wtemp_dvfs_low_temp_adjust()
241 static void wtemp_dvfs_high_temp_adjust(struct udevice *dev, struct pm_element *e) in wtemp_dvfs_high_temp_adjust() argument
247 org_rate = __wtemp_clk_get_rate(e); in wtemp_dvfs_high_temp_adjust()
248 tgt_rate = e->opp[0].hz; in wtemp_dvfs_high_temp_adjust()
249 tgt_rate = __wtemp_clk_set_rate(e, tgt_rate); in wtemp_dvfs_high_temp_adjust()
251 org_volt = __wtemp_regulator_get_value(e); in wtemp_dvfs_high_temp_adjust()
252 tgt_volt = e->opp[0].uv; in wtemp_dvfs_high_temp_adjust()
253 __wtemp_regulator_set_value(e, tgt_volt); in wtemp_dvfs_high_temp_adjust()
256 rb_rate = __wtemp_clk_get_rate(e); in wtemp_dvfs_high_temp_adjust()
257 rb_volt = __wtemp_regulator_get_value(e); in wtemp_dvfs_high_temp_adjust()
260 e->name, tgt_rate, rb_rate); in wtemp_dvfs_high_temp_adjust()
263 e->name, tgt_volt, rb_volt); in wtemp_dvfs_high_temp_adjust()
266 e->name, org_rate, tgt_rate, org_volt, tgt_volt); in wtemp_dvfs_high_temp_adjust()
269 static bool wtemp_dvfs_is_effect(struct pm_element *e, in wtemp_dvfs_is_effect() argument
273 if (e->lmt.ltemp_limit && temp <= e->lmt.low_temp) in wtemp_dvfs_is_effect()
278 if (e->lmt.tztemp_limit && temp >= e->lmt.tz_temp) in wtemp_dvfs_is_effect()
280 else if (e->lmt.htemp_limit && temp >= e->lmt.high_temp) in wtemp_dvfs_is_effect()
287 static int __wtemp_dvfs_apply(struct udevice *dev, struct pm_element *e, in __wtemp_dvfs_apply() argument
294 if (e->lmt.ltemp_limit && temp <= e->lmt.low_temp) { in __wtemp_dvfs_apply()
296 wtemp_dvfs_low_temp_adjust(dev, e); in __wtemp_dvfs_apply()
302 if (e->lmt.tztemp_limit && temp >= e->lmt.tz_temp) { in __wtemp_dvfs_apply()
304 wtemp_dvfs_high_temp_adjust(dev, e); in __wtemp_dvfs_apply()
305 } else if (e->lmt.htemp_limit && temp >= e->lmt.high_temp) { in __wtemp_dvfs_apply()
307 wtemp_dvfs_high_temp_adjust(dev, e); in __wtemp_dvfs_apply()
314 static int __wtemp_common_ofdata_to_platdata(ofnode node, struct pm_element *e) in __wtemp_common_ofdata_to_platdata() argument
322 if (!ofnode_read_u32(node, e->supply_name, &phandle)) { in __wtemp_common_ofdata_to_platdata()
324 ret = regulator_get_by_devname(supply.np->name, &e->supply); in __wtemp_common_ofdata_to_platdata()
327 e->name, supply.np->full_name, ret); in __wtemp_common_ofdata_to_platdata()
334 e->clk.id = clock[1]; in __wtemp_common_ofdata_to_platdata()
335 ret = rockchip_get_clk(&e->clk.dev); in __wtemp_common_ofdata_to_platdata()
337 printf("DVFS: %s: Get clk failed, ret=%d\n", e->name, ret); in __wtemp_common_ofdata_to_platdata()
345 e->lmt.low_temp = ofnode_read_s32_default(opp_node, in __wtemp_common_ofdata_to_platdata()
347 e->lmt.high_temp = ofnode_read_s32_default(opp_node, in __wtemp_common_ofdata_to_platdata()
349 e->lmt.max_volt = ofnode_read_u32_default(opp_node, in __wtemp_common_ofdata_to_platdata()
353 e->name, e->lmt.low_temp, e->lmt.high_temp, in __wtemp_common_ofdata_to_platdata()
354 e->lmt.max_volt); in __wtemp_common_ofdata_to_platdata()
357 if (e->opp_nr >= OPP_TABLE_MAX) { in __wtemp_common_ofdata_to_platdata()
364 e->opp[e->opp_nr].hz = hz; in __wtemp_common_ofdata_to_platdata()
365 e->opp[e->opp_nr].uv = uv; in __wtemp_common_ofdata_to_platdata()
366 e->opp_nr++; in __wtemp_common_ofdata_to_platdata()
368 e->name, e->opp_nr - 1, in __wtemp_common_ofdata_to_platdata()
372 if (!e->opp_nr) { in __wtemp_common_ofdata_to_platdata()
373 printf("DVFS: %s: Can't find opp table\n", e->name); in __wtemp_common_ofdata_to_platdata()
377 if (e->lmt.max_volt == -ENODATA) in __wtemp_common_ofdata_to_platdata()
378 e->lmt.max_volt = e->opp[e->opp_nr - 1].uv; in __wtemp_common_ofdata_to_platdata()
379 if (e->lmt.low_temp != -ENODATA) in __wtemp_common_ofdata_to_platdata()
380 e->lmt.ltemp_limit = true; in __wtemp_common_ofdata_to_platdata()
381 if (e->lmt.high_temp != -ENODATA) in __wtemp_common_ofdata_to_platdata()
382 e->lmt.htemp_limit = true; in __wtemp_common_ofdata_to_platdata()
391 struct pm_element *e; in wtemp_dvfs_apply() local
406 e = list_entry(node, struct pm_element, node); in wtemp_dvfs_apply()
407 __wtemp_dvfs_apply(dev, e, temp, PM_EVT_BOTH); in wtemp_dvfs_apply()
417 struct pm_element *e; in wtemp_dvfs_repeat_apply() local
432 e = list_entry(node, struct pm_element, node); in wtemp_dvfs_repeat_apply()
433 if (e->lmt.ltemp_repeat) in wtemp_dvfs_repeat_apply()
434 applied |= __wtemp_dvfs_apply(dev, e, temp, PM_EVT_LOW); in wtemp_dvfs_repeat_apply()
435 if (e->lmt.htemp_repeat) in wtemp_dvfs_repeat_apply()
436 applied |= __wtemp_dvfs_apply(dev, e, temp, PM_EVT_HIGH); in wtemp_dvfs_repeat_apply()
446 e = list_entry(node, struct pm_element, node); in wtemp_dvfs_repeat_apply()
447 if (e->lmt.ltemp_repeat && in wtemp_dvfs_repeat_apply()
448 !wtemp_dvfs_is_effect(e, temp, PM_EVT_LOW)) in wtemp_dvfs_repeat_apply()
450 if (e->lmt.htemp_repeat && in wtemp_dvfs_repeat_apply()
451 !wtemp_dvfs_is_effect(e, temp, PM_EVT_HIGH)) in wtemp_dvfs_repeat_apply()
457 e = list_entry(node, struct pm_element, node); in wtemp_dvfs_repeat_apply()
459 printf("DVFS: %s %s'c, %ld Hz, %d uV\n", e->name, in wtemp_dvfs_repeat_apply()
460 s_temp, __wtemp_clk_get_rate(e), in wtemp_dvfs_repeat_apply()
461 __wtemp_regulator_get_value(e)); in wtemp_dvfs_repeat_apply()
469 struct pm_element *e; in print_e_state() local
476 e = list_entry(node, struct pm_element, node); in print_e_state()
477 if (!e->lmt.ltemp_limit && in print_e_state()
478 !e->lmt.htemp_limit && !e->lmt.tztemp_limit) in print_e_state()
481 temp2string(e->lmt.tz_temp, s_tz, TEMP_STRING_LEN); in print_e_state()
482 temp2string(e->lmt.low_temp, s_low, TEMP_STRING_LEN); in print_e_state()
483 temp2string(e->lmt.high_temp, s_high, TEMP_STRING_LEN); in print_e_state()
486 e->name, e->lmt.ltemp_limit ? s_low : NULL, in print_e_state()
487 e->lmt.htemp_limit ? s_high : NULL, in print_e_state()
488 e->lmt.max_volt, in print_e_state()
489 e->lmt.tztemp_limit ? s_tz : NULL, in print_e_state()
490 e->lmt.htemp_repeat, e->lmt.ltemp_repeat); in print_e_state()