Lines Matching refs:dmcfreq
393 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_opp_helper() local
419 if (dmcfreq->min_cpu_freq) { in rockchip_dmcfreq_opp_helper()
435 if (cpufreq_cur < dmcfreq->min_cpu_freq) { in rockchip_dmcfreq_opp_helper()
436 if (policy->max >= dmcfreq->min_cpu_freq) { in rockchip_dmcfreq_opp_helper()
438 dmcfreq->min_cpu_freq, in rockchip_dmcfreq_opp_helper()
476 if (dmcfreq->set_rate_params) { in rockchip_dmcfreq_opp_helper()
477 dmcfreq->set_rate_params->lcdc_type = rk_drm_get_lcdc_type(); in rockchip_dmcfreq_opp_helper()
478 dmcfreq->set_rate_params->wait_flag1 = 1; in rockchip_dmcfreq_opp_helper()
479 dmcfreq->set_rate_params->wait_flag0 = 1; in rockchip_dmcfreq_opp_helper()
482 if (dmcfreq->is_set_rate_direct) in rockchip_dmcfreq_opp_helper()
500 dmcfreq->rate = clk_get_rate(clk); in rockchip_dmcfreq_opp_helper()
503 if (dmcfreq->rate != freq) { in rockchip_dmcfreq_opp_helper()
505 freq, dmcfreq->rate); in rockchip_dmcfreq_opp_helper()
523 dmcfreq->volt = new_supply_vdd->u_volt; in rockchip_dmcfreq_opp_helper()
525 dmcfreq->mem_volt = new_supply_mem->u_volt; in rockchip_dmcfreq_opp_helper()
530 if (dmcfreq->is_set_rate_direct) in rockchip_dmcfreq_opp_helper()
543 if (dmcfreq->min_cpu_freq) { in rockchip_dmcfreq_opp_helper()
559 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_target() local
574 rockchip_monitor_volt_adjust_lock(dmcfreq->mdev_info); in rockchip_dmcfreq_target()
577 if (dmcfreq->info.devfreq) { in rockchip_dmcfreq_target()
578 devfreq = dmcfreq->info.devfreq; in rockchip_dmcfreq_target()
582 rockchip_monitor_volt_adjust_unlock(dmcfreq->mdev_info); in rockchip_dmcfreq_target()
590 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_get_dev_status() local
594 if (!dmcfreq->info.auto_freq_en) in rockchip_dmcfreq_get_dev_status()
601 rockchip_monitor_volt_adjust_lock(dmcfreq->mdev_info); in rockchip_dmcfreq_get_dev_status()
602 for (i = 0; i < dmcfreq->edev_count; i++) { in rockchip_dmcfreq_get_dev_status()
603 ret = devfreq_event_get_event(dmcfreq->edev[i], &edata); in rockchip_dmcfreq_get_dev_status()
606 dmcfreq->edev[i]->desc->name); in rockchip_dmcfreq_get_dev_status()
609 if (i == dmcfreq->dfi_id) { in rockchip_dmcfreq_get_dev_status()
613 dmcfreq->nocp_bw[i] = edata.load_count; in rockchip_dmcfreq_get_dev_status()
618 rockchip_monitor_volt_adjust_unlock(dmcfreq->mdev_info); in rockchip_dmcfreq_get_dev_status()
626 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_get_cur_freq() local
628 *freq = dmcfreq->rate; in rockchip_dmcfreq_get_cur_freq()
1173 static __maybe_unused int rockchip_get_freq_info(struct rockchip_dmcfreq *dmcfreq) in rockchip_get_freq_info() argument
1184 dev_err(dmcfreq->dev, "rockchip_sip_config_dram_get_freq_info error:%lx\n", in rockchip_get_freq_info()
1190 dev_err(dmcfreq->dev, "it is no available frequencies!\n"); in rockchip_get_freq_info()
1195 dmcfreq->freq_info_rate[i] = ddr_psci_param->freq_info_mhz[i] * 1000000; in rockchip_get_freq_info()
1196 dmcfreq->freq_count = ddr_psci_param->freq_count; in rockchip_get_freq_info()
1199 count = dev_pm_opp_get_opp_count(dmcfreq->dev); in rockchip_get_freq_info()
1208 opp = dev_pm_opp_find_freq_ceil(dmcfreq->dev, &rate); in rockchip_get_freq_info()
1211 dev_err(dmcfreq->dev, "failed to find OPP for freq %lu.\n", rate); in rockchip_get_freq_info()
1218 for (j = 0; j < dmcfreq->freq_count; j++) { in rockchip_get_freq_info()
1219 if (rate == dmcfreq->freq_info_rate[j]) in rockchip_get_freq_info()
1222 if (j == dmcfreq->freq_count) in rockchip_get_freq_info()
1223 dev_pm_opp_disable(dmcfreq->dev, rate); in rockchip_get_freq_info()
1226 for (i = 0; i < dmcfreq->freq_count; i++) { in rockchip_get_freq_info()
1228 if (dmcfreq->freq_info_rate[i] == freq_table[j].freq) { in rockchip_get_freq_info()
1230 } else if (dmcfreq->freq_info_rate[i] < freq_table[j].freq) { in rockchip_get_freq_info()
1231 dev_pm_opp_add(dmcfreq->dev, dmcfreq->freq_info_rate[i], in rockchip_get_freq_info()
1237 dev_err(dmcfreq->dev, "failed to match dmc_opp_table for %ld\n", in rockchip_get_freq_info()
1238 dmcfreq->freq_info_rate[i]); in rockchip_get_freq_info()
1242 dmcfreq->freq_count = i; in rockchip_get_freq_info()
1253 rockchip_dmcfreq_adjust_opp_table(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_adjust_opp_table() argument
1255 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_adjust_opp_table()
1276 dmcfreq->freq_info_rate[i] = ddr_psci_param->freq_info_mhz[i] * 1000000; in rockchip_dmcfreq_adjust_opp_table()
1277 dmcfreq->freq_count = ddr_psci_param->freq_count; in rockchip_dmcfreq_adjust_opp_table()
1301 if (dmcfreq->regulator_count > 1) in rockchip_dmcfreq_adjust_opp_table()
1312 if (i >= dmcfreq->freq_count) { in rockchip_dmcfreq_adjust_opp_table()
1318 if (dmcfreq->freq_info_rate[i] <= freq_table[j].freq) { in rockchip_dmcfreq_adjust_opp_table()
1319 opp->rate = dmcfreq->freq_info_rate[i]; in rockchip_dmcfreq_adjust_opp_table()
1321 if (dmcfreq->regulator_count > 1) in rockchip_dmcfreq_adjust_opp_table()
1328 dev_err(dmcfreq->dev, "failed to match dmc_opp_table for %ld\n", in rockchip_dmcfreq_adjust_opp_table()
1329 dmcfreq->freq_info_rate[i]); in rockchip_dmcfreq_adjust_opp_table()
1335 dmcfreq->freq_count = i; in rockchip_dmcfreq_adjust_opp_table()
1350 struct rockchip_dmcfreq *dmcfreq) in px30_dmc_init() argument
1409 dmcfreq->set_rate_params = ddr_psci_param; in px30_dmc_init()
1410 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in px30_dmc_init()
1421 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in px30_dmc_init()
1427 struct rockchip_dmcfreq *dmcfreq) in rk1808_dmc_init() argument
1486 dmcfreq->set_rate_params = ddr_psci_param; in rk1808_dmc_init()
1487 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk1808_dmc_init()
1498 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk1808_dmc_init()
1504 struct rockchip_dmcfreq *dmcfreq) in rk3128_dmc_init() argument
1522 dmcfreq->set_rate_params = ddr_psci_param; in rk3128_dmc_init()
1523 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk3128_dmc_init()
1534 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3128_dmc_init()
1540 struct rockchip_dmcfreq *dmcfreq) in rk3228_dmc_init() argument
1559 dmcfreq->set_rate_params = ddr_psci_param; in rk3228_dmc_init()
1560 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk3228_dmc_init()
1571 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3228_dmc_init()
1577 struct rockchip_dmcfreq *dmcfreq) in rk3288_dmc_init() argument
1652 dmcfreq->set_rate_params = ddr_psci_param; in rk3288_dmc_init()
1653 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk3288_dmc_init()
1664 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3288_dmc_init()
1670 struct rockchip_dmcfreq *dmcfreq) in rk3328_dmc_init() argument
1701 dmcfreq->set_rate_params = ddr_psci_param; in rk3328_dmc_init()
1702 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk3328_dmc_init()
1712 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3328_dmc_init()
1729 struct rockchip_dmcfreq *dmcfreq) in rk3399_dmc_init() argument
1759 dmcfreq->set_rate_params = in rk3399_dmc_init()
1761 if (!dmcfreq->set_rate_params) in rk3399_dmc_init()
1763 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rk3399_dmc_init()
1769 dmcfreq->info.set_msch_readlatency = rk3399_set_msch_readlatency; in rk3399_dmc_init()
1775 struct rockchip_dmcfreq *dmcfreq) in rk3528_dmc_init() argument
1835 ret = rockchip_get_freq_info(dmcfreq); in rk3528_dmc_init()
1840 dmcfreq->is_set_rate_direct = true; in rk3528_dmc_init()
1842 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3528_dmc_init()
1848 struct rockchip_dmcfreq *dmcfreq) in rk3568_dmc_init() argument
1907 ret = rockchip_get_freq_info(dmcfreq); in rk3568_dmc_init()
1912 dmcfreq->is_set_rate_direct = true; in rk3568_dmc_init()
1914 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3568_dmc_init()
1920 struct rockchip_dmcfreq *dmcfreq) in rk3588_dmc_init() argument
1977 ret = rockchip_dmcfreq_adjust_opp_table(dmcfreq); in rk3588_dmc_init()
1982 dmcfreq->is_set_rate_direct = true; in rk3588_dmc_init()
1985 opp_rate = dmcfreq->freq_info_rate[dmcfreq->freq_count - 1]; in rk3588_dmc_init()
1991 dmcfreq->sleep_volt = opp->supplies[0].u_volt; in rk3588_dmc_init()
1992 if (dmcfreq->regulator_count > 1) in rk3588_dmc_init()
1993 dmcfreq->sleep_mem_volt = opp->supplies[1].u_volt; in rk3588_dmc_init()
1999 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rk3588_dmc_init()
2005 struct rockchip_dmcfreq *dmcfreq) in rv1126_dmc_init() argument
2072 dmcfreq->set_rate_params = ddr_psci_param; in rv1126_dmc_init()
2073 rockchip_set_ddrclk_params(dmcfreq->set_rate_params); in rv1126_dmc_init()
2084 dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; in rv1126_dmc_init()
2218 struct rockchip_dmcfreq *dmcfreq) in rockchip_get_system_status_rate() argument
2246 dmcfreq->normal_rate = freq * 1000; in rockchip_get_system_status_rate()
2249 dmcfreq->suspend_rate = freq * 1000; in rockchip_get_system_status_rate()
2252 dmcfreq->video_1080p_rate = freq * 1000; in rockchip_get_system_status_rate()
2255 dmcfreq->video_4k_rate = freq * 1000; in rockchip_get_system_status_rate()
2258 dmcfreq->video_4k_10b_rate = freq * 1000; in rockchip_get_system_status_rate()
2261 dmcfreq->video_svep_rate = freq * 1000; in rockchip_get_system_status_rate()
2264 dmcfreq->performance_rate = freq * 1000; in rockchip_get_system_status_rate()
2267 dmcfreq->hdmi_rate = freq * 1000; in rockchip_get_system_status_rate()
2270 dmcfreq->hdmirx_rate = freq * 1000; in rockchip_get_system_status_rate()
2273 dmcfreq->idle_rate = freq * 1000; in rockchip_get_system_status_rate()
2276 dmcfreq->reboot_rate = freq * 1000; in rockchip_get_system_status_rate()
2279 dmcfreq->boost_rate = freq * 1000; in rockchip_get_system_status_rate()
2286 if (dmcfreq->fixed_rate < temp_rate) in rockchip_get_system_status_rate()
2287 dmcfreq->fixed_rate = temp_rate; in rockchip_get_system_status_rate()
2290 dmcfreq->low_power_rate = freq * 1000; in rockchip_get_system_status_rate()
2300 static unsigned long rockchip_freq_level_2_rate(struct rockchip_dmcfreq *dmcfreq, in rockchip_freq_level_2_rate() argument
2307 rate = dmcfreq->rate_low; in rockchip_freq_level_2_rate()
2310 rate = dmcfreq->rate_mid_low; in rockchip_freq_level_2_rate()
2313 rate = dmcfreq->rate_mid_high; in rockchip_freq_level_2_rate()
2316 rate = dmcfreq->rate_high; in rockchip_freq_level_2_rate()
2327 struct rockchip_dmcfreq *dmcfreq) in rockchip_get_system_status_level() argument
2348 if (dmcfreq->freq_count == 1) { in rockchip_get_system_status_level()
2349 dmcfreq->rate_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2350 dmcfreq->rate_mid_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2351 dmcfreq->rate_mid_high = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2352 dmcfreq->rate_high = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2353 } else if (dmcfreq->freq_count == 2) { in rockchip_get_system_status_level()
2354 dmcfreq->rate_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2355 dmcfreq->rate_mid_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2356 dmcfreq->rate_mid_high = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2357 dmcfreq->rate_high = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2358 } else if (dmcfreq->freq_count == 3) { in rockchip_get_system_status_level()
2359 dmcfreq->rate_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2360 dmcfreq->rate_mid_low = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2361 dmcfreq->rate_mid_high = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2362 dmcfreq->rate_high = dmcfreq->freq_info_rate[2]; in rockchip_get_system_status_level()
2363 } else if (dmcfreq->freq_count == 4) { in rockchip_get_system_status_level()
2364 dmcfreq->rate_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2365 dmcfreq->rate_mid_low = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2366 dmcfreq->rate_mid_high = dmcfreq->freq_info_rate[2]; in rockchip_get_system_status_level()
2367 dmcfreq->rate_high = dmcfreq->freq_info_rate[3]; in rockchip_get_system_status_level()
2368 } else if (dmcfreq->freq_count == 5 || dmcfreq->freq_count == 6) { in rockchip_get_system_status_level()
2369 dmcfreq->rate_low = dmcfreq->freq_info_rate[0]; in rockchip_get_system_status_level()
2370 dmcfreq->rate_mid_low = dmcfreq->freq_info_rate[1]; in rockchip_get_system_status_level()
2371 dmcfreq->rate_mid_high = dmcfreq->freq_info_rate[dmcfreq->freq_count - 2]; in rockchip_get_system_status_level()
2372 dmcfreq->rate_high = dmcfreq->freq_info_rate[dmcfreq->freq_count - 1]; in rockchip_get_system_status_level()
2377 dmcfreq->auto_min_rate = dmcfreq->rate_low; in rockchip_get_system_status_level()
2386 dmcfreq->normal_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2387 dev_info(dmcfreq->dev, "normal_rate = %ld\n", dmcfreq->normal_rate); in rockchip_get_system_status_level()
2390 dmcfreq->suspend_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2391 dev_info(dmcfreq->dev, "suspend_rate = %ld\n", dmcfreq->suspend_rate); in rockchip_get_system_status_level()
2394 dmcfreq->video_1080p_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2395 dev_info(dmcfreq->dev, "video_1080p_rate = %ld\n", in rockchip_get_system_status_level()
2396 dmcfreq->video_1080p_rate); in rockchip_get_system_status_level()
2399 dmcfreq->video_4k_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2400 dev_info(dmcfreq->dev, "video_4k_rate = %ld\n", dmcfreq->video_4k_rate); in rockchip_get_system_status_level()
2403 dmcfreq->video_4k_10b_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2404 dev_info(dmcfreq->dev, "video_4k_10b_rate = %ld\n", in rockchip_get_system_status_level()
2405 dmcfreq->video_4k_10b_rate); in rockchip_get_system_status_level()
2408 dmcfreq->video_4k_60p_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2409 dev_info(dmcfreq->dev, "video_4k_60p_rate = %ld\n", in rockchip_get_system_status_level()
2410 dmcfreq->video_4k_60p_rate); in rockchip_get_system_status_level()
2413 dmcfreq->video_svep_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2414 dev_info(dmcfreq->dev, "video_svep_rate = %ld\n", in rockchip_get_system_status_level()
2415 dmcfreq->video_svep_rate); in rockchip_get_system_status_level()
2418 dmcfreq->performance_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2419 dev_info(dmcfreq->dev, "performance_rate = %ld\n", in rockchip_get_system_status_level()
2420 dmcfreq->performance_rate); in rockchip_get_system_status_level()
2423 dmcfreq->hdmi_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2424 dev_info(dmcfreq->dev, "hdmi_rate = %ld\n", dmcfreq->hdmi_rate); in rockchip_get_system_status_level()
2427 dmcfreq->hdmirx_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2428 dev_info(dmcfreq->dev, "hdmirx_rate = %ld\n", dmcfreq->hdmirx_rate); in rockchip_get_system_status_level()
2431 dmcfreq->idle_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2432 dev_info(dmcfreq->dev, "idle_rate = %ld\n", dmcfreq->idle_rate); in rockchip_get_system_status_level()
2435 dmcfreq->reboot_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2436 dev_info(dmcfreq->dev, "reboot_rate = %ld\n", dmcfreq->reboot_rate); in rockchip_get_system_status_level()
2439 dmcfreq->boost_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2440 dev_info(dmcfreq->dev, "boost_rate = %ld\n", dmcfreq->boost_rate); in rockchip_get_system_status_level()
2446 temp_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2447 if (dmcfreq->fixed_rate < temp_rate) { in rockchip_get_system_status_level()
2448 dmcfreq->fixed_rate = temp_rate; in rockchip_get_system_status_level()
2449 dev_info(dmcfreq->dev, in rockchip_get_system_status_level()
2451 dmcfreq->fixed_rate); in rockchip_get_system_status_level()
2455 dmcfreq->low_power_rate = rockchip_freq_level_2_rate(dmcfreq, level); in rockchip_get_system_status_level()
2456 dev_info(dmcfreq->dev, "low_power_rate = %ld\n", dmcfreq->low_power_rate); in rockchip_get_system_status_level()
2466 static void rockchip_dmcfreq_update_target(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_update_target() argument
2468 struct devfreq *devfreq = dmcfreq->info.devfreq; in rockchip_dmcfreq_update_target()
2479 struct rockchip_dmcfreq *dmcfreq = system_status_to_dmcfreq(nb); in rockchip_dmcfreq_system_status_notifier() local
2484 if (dmcfreq->fixed_rate && (is_dualview(status) || is_isp(status))) { in rockchip_dmcfreq_system_status_notifier()
2485 if (dmcfreq->is_fixed) in rockchip_dmcfreq_system_status_notifier()
2488 target_rate = dmcfreq->fixed_rate; in rockchip_dmcfreq_system_status_notifier()
2492 if (dmcfreq->reboot_rate && (status & SYS_STATUS_REBOOT)) { in rockchip_dmcfreq_system_status_notifier()
2493 if (dmcfreq->info.auto_freq_en) in rockchip_dmcfreq_system_status_notifier()
2494 devfreq_monitor_stop(dmcfreq->info.devfreq); in rockchip_dmcfreq_system_status_notifier()
2495 target_rate = dmcfreq->reboot_rate; in rockchip_dmcfreq_system_status_notifier()
2499 if (dmcfreq->suspend_rate && (status & SYS_STATUS_SUSPEND)) { in rockchip_dmcfreq_system_status_notifier()
2500 target_rate = dmcfreq->suspend_rate; in rockchip_dmcfreq_system_status_notifier()
2505 if (dmcfreq->low_power_rate && (status & SYS_STATUS_LOW_POWER)) { in rockchip_dmcfreq_system_status_notifier()
2506 target_rate = dmcfreq->low_power_rate; in rockchip_dmcfreq_system_status_notifier()
2510 if (dmcfreq->performance_rate && (status & SYS_STATUS_PERFORMANCE)) { in rockchip_dmcfreq_system_status_notifier()
2511 if (dmcfreq->performance_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2512 target_rate = dmcfreq->performance_rate; in rockchip_dmcfreq_system_status_notifier()
2515 if (dmcfreq->hdmi_rate && (status & SYS_STATUS_HDMI)) { in rockchip_dmcfreq_system_status_notifier()
2516 if (dmcfreq->hdmi_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2517 target_rate = dmcfreq->hdmi_rate; in rockchip_dmcfreq_system_status_notifier()
2520 if (dmcfreq->hdmirx_rate && (status & SYS_STATUS_HDMIRX)) { in rockchip_dmcfreq_system_status_notifier()
2521 if (dmcfreq->hdmirx_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2522 target_rate = dmcfreq->hdmirx_rate; in rockchip_dmcfreq_system_status_notifier()
2525 if (dmcfreq->video_4k_rate && (status & SYS_STATUS_VIDEO_4K)) { in rockchip_dmcfreq_system_status_notifier()
2526 if (dmcfreq->video_4k_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2527 target_rate = dmcfreq->video_4k_rate; in rockchip_dmcfreq_system_status_notifier()
2530 if (dmcfreq->video_4k_10b_rate && (status & SYS_STATUS_VIDEO_4K_10B)) { in rockchip_dmcfreq_system_status_notifier()
2531 if (dmcfreq->video_4k_10b_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2532 target_rate = dmcfreq->video_4k_10b_rate; in rockchip_dmcfreq_system_status_notifier()
2535 if (dmcfreq->video_4k_60p_rate && (status & SYS_STATUS_VIDEO_4K_60P)) { in rockchip_dmcfreq_system_status_notifier()
2536 if (dmcfreq->video_4k_60p_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2537 target_rate = dmcfreq->video_4k_60p_rate; in rockchip_dmcfreq_system_status_notifier()
2540 if (dmcfreq->video_1080p_rate && (status & SYS_STATUS_VIDEO_1080P)) { in rockchip_dmcfreq_system_status_notifier()
2541 if (dmcfreq->video_1080p_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2542 target_rate = dmcfreq->video_1080p_rate; in rockchip_dmcfreq_system_status_notifier()
2545 if (dmcfreq->video_svep_rate && (status & SYS_STATUS_VIDEO_SVEP)) { in rockchip_dmcfreq_system_status_notifier()
2546 if (dmcfreq->video_svep_rate > target_rate) in rockchip_dmcfreq_system_status_notifier()
2547 target_rate = dmcfreq->video_svep_rate; in rockchip_dmcfreq_system_status_notifier()
2552 dev_dbg(dmcfreq->dev, "status=0x%x\n", (unsigned int)status); in rockchip_dmcfreq_system_status_notifier()
2553 dmcfreq->is_fixed = is_fixed; in rockchip_dmcfreq_system_status_notifier()
2554 dmcfreq->status_rate = target_rate; in rockchip_dmcfreq_system_status_notifier()
2555 if (dmcfreq->refresh != refresh) { in rockchip_dmcfreq_system_status_notifier()
2556 if (dmcfreq->set_auto_self_refresh) in rockchip_dmcfreq_system_status_notifier()
2557 dmcfreq->set_auto_self_refresh(refresh); in rockchip_dmcfreq_system_status_notifier()
2558 dmcfreq->refresh = refresh; in rockchip_dmcfreq_system_status_notifier()
2560 rockchip_dmcfreq_update_target(dmcfreq); in rockchip_dmcfreq_system_status_notifier()
2568 struct rockchip_dmcfreq *dmcfreq = in rockchip_dmcfreq_panic_notifier() local
2570 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_panic_notifier()
2572 if (dmcfreq->regulator_count == 1) in rockchip_dmcfreq_panic_notifier()
2574 dmcfreq->rate, dmcfreq->volt); in rockchip_dmcfreq_panic_notifier()
2577 dmcfreq->rate, dmcfreq->volt, dmcfreq->mem_volt); in rockchip_dmcfreq_panic_notifier()
2611 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev->parent); in upthreshold_show() local
2612 struct rockchip_dmcfreq_ondemand_data *data = &dmcfreq->ondemand_data; in upthreshold_show()
2622 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev->parent); in upthreshold_store() local
2623 struct rockchip_dmcfreq_ondemand_data *data = &dmcfreq->ondemand_data; in upthreshold_store()
2640 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev->parent); in downdifferential_show() local
2641 struct rockchip_dmcfreq_ondemand_data *data = &dmcfreq->ondemand_data; in downdifferential_show()
2651 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev->parent); in downdifferential_store() local
2652 struct rockchip_dmcfreq_ondemand_data *data = &dmcfreq->ondemand_data; in downdifferential_store()
2665 static unsigned long get_nocp_req_rate(struct rockchip_dmcfreq *dmcfreq) in get_nocp_req_rate() argument
2670 if (!dmcfreq->cpu_bw_tbl || dmcfreq->nocp_cpu_id < 0) in get_nocp_req_rate()
2673 cpu_bw = dmcfreq->nocp_bw[dmcfreq->nocp_cpu_id]; in get_nocp_req_rate()
2675 for (i = 0; dmcfreq->cpu_bw_tbl[i].freq != CPUFREQ_TABLE_END; i++) { in get_nocp_req_rate()
2676 if (cpu_bw >= dmcfreq->cpu_bw_tbl[i].min) in get_nocp_req_rate()
2677 target = dmcfreq->cpu_bw_tbl[i].freq; in get_nocp_req_rate()
2690 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(df->dev.parent); in devfreq_dmc_ondemand_func() local
2691 struct rockchip_dmcfreq_ondemand_data *data = &dmcfreq->ondemand_data; in devfreq_dmc_ondemand_func()
2697 if (dmcfreq->info.auto_freq_en && !dmcfreq->is_fixed) { in devfreq_dmc_ondemand_func()
2698 if (dmcfreq->status_rate) in devfreq_dmc_ondemand_func()
2699 target_freq = dmcfreq->status_rate; in devfreq_dmc_ondemand_func()
2700 else if (dmcfreq->auto_min_rate) in devfreq_dmc_ondemand_func()
2701 target_freq = dmcfreq->auto_min_rate; in devfreq_dmc_ondemand_func()
2702 nocp_req_rate = get_nocp_req_rate(dmcfreq); in devfreq_dmc_ondemand_func()
2704 dmcfreq->info.vop_req_rate); in devfreq_dmc_ondemand_func()
2706 if (now < dmcfreq->touchboostpulse_endtime) in devfreq_dmc_ondemand_func()
2707 target_freq = max(target_freq, dmcfreq->boost_rate); in devfreq_dmc_ondemand_func()
2709 if (dmcfreq->status_rate) in devfreq_dmc_ondemand_func()
2710 target_freq = dmcfreq->status_rate; in devfreq_dmc_ondemand_func()
2711 else if (dmcfreq->normal_rate) in devfreq_dmc_ondemand_func()
2712 target_freq = dmcfreq->normal_rate; in devfreq_dmc_ondemand_func()
2715 if (dmcfreq->info.auto_freq_en && !devfreq_update_stats(df)) in devfreq_dmc_ondemand_func()
2784 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(devfreq->dev.parent); in devfreq_dmc_ondemand_handler() local
2786 if (!dmcfreq->info.auto_freq_en) in devfreq_dmc_ondemand_handler()
2823 static int rockchip_dmcfreq_enable_event(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_enable_event() argument
2827 if (!dmcfreq->info.auto_freq_en) in rockchip_dmcfreq_enable_event()
2830 for (i = 0; i < dmcfreq->edev_count; i++) { in rockchip_dmcfreq_enable_event()
2831 ret = devfreq_event_enable_edev(dmcfreq->edev[i]); in rockchip_dmcfreq_enable_event()
2833 dev_err(dmcfreq->dev, in rockchip_dmcfreq_enable_event()
2842 static int rockchip_dmcfreq_disable_event(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_disable_event() argument
2846 if (!dmcfreq->info.auto_freq_en) in rockchip_dmcfreq_disable_event()
2849 for (i = 0; i < dmcfreq->edev_count; i++) { in rockchip_dmcfreq_disable_event()
2850 ret = devfreq_event_disable_edev(dmcfreq->edev[i]); in rockchip_dmcfreq_disable_event()
2852 dev_err(dmcfreq->dev, in rockchip_dmcfreq_disable_event()
2861 static int rockchip_get_edev_id(struct rockchip_dmcfreq *dmcfreq, in rockchip_get_edev_id() argument
2867 for (i = 0; i < dmcfreq->edev_count; i++) { in rockchip_get_edev_id()
2868 edev = dmcfreq->edev[i]; in rockchip_get_edev_id()
2876 static int rockchip_dmcfreq_get_event(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_get_event() argument
2878 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_get_event()
2899 dmcfreq->edev_count = available_count; in rockchip_dmcfreq_get_event()
2900 dmcfreq->edev = devm_kzalloc(dev, in rockchip_dmcfreq_get_event()
2901 sizeof(*dmcfreq->edev) * available_count, in rockchip_dmcfreq_get_event()
2903 if (!dmcfreq->edev) in rockchip_dmcfreq_get_event()
2916 dmcfreq->edev[j] = in rockchip_dmcfreq_get_event()
2918 if (IS_ERR(dmcfreq->edev[j])) in rockchip_dmcfreq_get_event()
2925 dmcfreq->info.auto_freq_en = true; in rockchip_dmcfreq_get_event()
2926 dmcfreq->dfi_id = rockchip_get_edev_id(dmcfreq, "dfi"); in rockchip_dmcfreq_get_event()
2927 dmcfreq->nocp_cpu_id = rockchip_get_edev_id(dmcfreq, "nocp-cpu"); in rockchip_dmcfreq_get_event()
2928 dmcfreq->nocp_bw = in rockchip_dmcfreq_get_event()
2929 devm_kzalloc(dev, sizeof(*dmcfreq->nocp_bw) * available_count, in rockchip_dmcfreq_get_event()
2931 if (!dmcfreq->nocp_bw) in rockchip_dmcfreq_get_event()
2937 static int rockchip_dmcfreq_power_control(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_power_control() argument
2939 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_power_control()
2946 dmcfreq->regulator_count = 2; in rockchip_dmcfreq_power_control()
2948 dmcfreq->regulator_count = 1; in rockchip_dmcfreq_power_control()
2950 dmcfreq->regulator_count); in rockchip_dmcfreq_power_control()
2962 dmcfreq->vdd_center = devm_regulator_get_optional(dev, "center"); in rockchip_dmcfreq_power_control()
2963 if (IS_ERR(dmcfreq->vdd_center)) { in rockchip_dmcfreq_power_control()
2965 ret = PTR_ERR(dmcfreq->vdd_center); in rockchip_dmcfreq_power_control()
2968 if (dmcfreq->regulator_count > 1) { in rockchip_dmcfreq_power_control()
2969 dmcfreq->mem_reg = devm_regulator_get_optional(dev, "mem"); in rockchip_dmcfreq_power_control()
2970 if (IS_ERR(dmcfreq->mem_reg)) { in rockchip_dmcfreq_power_control()
2972 ret = PTR_ERR(dmcfreq->mem_reg); in rockchip_dmcfreq_power_control()
2977 dmcfreq->dmc_clk = devm_clk_get(dev, "dmc_clk"); in rockchip_dmcfreq_power_control()
2978 if (IS_ERR(dmcfreq->dmc_clk)) { in rockchip_dmcfreq_power_control()
2980 ret = PTR_ERR(dmcfreq->dmc_clk); in rockchip_dmcfreq_power_control()
2983 dmcfreq->rate = clk_get_rate(dmcfreq->dmc_clk); in rockchip_dmcfreq_power_control()
2998 struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_dmc_init() argument
3009 ret = init(pdev, dmcfreq); in rockchip_dmcfreq_dmc_init()
3018 static void rockchip_dmcfreq_parse_dt(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_parse_dt() argument
3020 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_parse_dt()
3023 if (!rockchip_get_system_status_rate(np, "system-status-freq", dmcfreq)) in rockchip_dmcfreq_parse_dt()
3024 dmcfreq->system_status_en = true; in rockchip_dmcfreq_parse_dt()
3025 else if (!rockchip_get_system_status_level(np, "system-status-level", dmcfreq)) in rockchip_dmcfreq_parse_dt()
3026 dmcfreq->system_status_en = true; in rockchip_dmcfreq_parse_dt()
3028 of_property_read_u32(np, "min-cpu-freq", &dmcfreq->min_cpu_freq); in rockchip_dmcfreq_parse_dt()
3031 &dmcfreq->ondemand_data.upthreshold); in rockchip_dmcfreq_parse_dt()
3033 &dmcfreq->ondemand_data.downdifferential); in rockchip_dmcfreq_parse_dt()
3034 if (dmcfreq->info.auto_freq_en) in rockchip_dmcfreq_parse_dt()
3036 &dmcfreq->info.auto_freq_en); in rockchip_dmcfreq_parse_dt()
3037 if (!dmcfreq->auto_min_rate) { in rockchip_dmcfreq_parse_dt()
3039 (u32 *)&dmcfreq->auto_min_rate); in rockchip_dmcfreq_parse_dt()
3040 dmcfreq->auto_min_rate *= 1000; in rockchip_dmcfreq_parse_dt()
3044 &dmcfreq->cpu_bw_tbl)) in rockchip_dmcfreq_parse_dt()
3047 &dmcfreq->info.vop_frame_bw_tbl)) in rockchip_dmcfreq_parse_dt()
3050 &dmcfreq->info.vop_bw_tbl)) in rockchip_dmcfreq_parse_dt()
3053 &dmcfreq->info.vop_pn_rl_tbl)) in rockchip_dmcfreq_parse_dt()
3055 if (dmcfreq->video_4k_rate) in rockchip_dmcfreq_parse_dt()
3056 dmcfreq->info.vop_4k_rate = dmcfreq->video_4k_rate; in rockchip_dmcfreq_parse_dt()
3057 else if (dmcfreq->video_4k_10b_rate) in rockchip_dmcfreq_parse_dt()
3058 dmcfreq->info.vop_4k_rate = dmcfreq->video_4k_10b_rate; in rockchip_dmcfreq_parse_dt()
3061 (u32 *)&dmcfreq->touchboostpulse_duration_val); in rockchip_dmcfreq_parse_dt()
3062 if (dmcfreq->touchboostpulse_duration_val) in rockchip_dmcfreq_parse_dt()
3063 dmcfreq->touchboostpulse_duration_val *= USEC_PER_MSEC; in rockchip_dmcfreq_parse_dt()
3065 dmcfreq->touchboostpulse_duration_val = 500 * USEC_PER_MSEC; in rockchip_dmcfreq_parse_dt()
3068 static int rockchip_dmcfreq_add_devfreq(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_add_devfreq() argument
3071 struct device *dev = dmcfreq->dev; in rockchip_dmcfreq_add_devfreq()
3074 unsigned long opp_rate = dmcfreq->rate; in rockchip_dmcfreq_add_devfreq()
3083 devp->initial_freq = dmcfreq->rate; in rockchip_dmcfreq_add_devfreq()
3085 &dmcfreq->ondemand_data); in rockchip_dmcfreq_add_devfreq()
3097 dmcfreq->info.devfreq = devfreq; in rockchip_dmcfreq_add_devfreq()
3102 static void rockchip_dmcfreq_register_notifier(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_register_notifier() argument
3106 if (dmcfreq->system_status_en || dmcfreq->info.auto_freq_en) { in rockchip_dmcfreq_register_notifier()
3108 dev_err(dmcfreq->dev, "fail to register notify to vop.\n"); in rockchip_dmcfreq_register_notifier()
3110 dmcfreq->status_nb.notifier_call = in rockchip_dmcfreq_register_notifier()
3112 ret = rockchip_register_system_status_notifier(&dmcfreq->status_nb); in rockchip_dmcfreq_register_notifier()
3114 dev_err(dmcfreq->dev, "failed to register system_status nb\n"); in rockchip_dmcfreq_register_notifier()
3117 dmcfreq->panic_nb.notifier_call = rockchip_dmcfreq_panic_notifier; in rockchip_dmcfreq_register_notifier()
3119 &dmcfreq->panic_nb); in rockchip_dmcfreq_register_notifier()
3121 dev_err(dmcfreq->dev, "failed to register panic nb\n"); in rockchip_dmcfreq_register_notifier()
3123 dmc_mdevp.data = dmcfreq->info.devfreq; in rockchip_dmcfreq_register_notifier()
3124 dmcfreq->mdev_info = rockchip_system_monitor_register(dmcfreq->dev, in rockchip_dmcfreq_register_notifier()
3126 if (IS_ERR(dmcfreq->mdev_info)) { in rockchip_dmcfreq_register_notifier()
3127 dev_dbg(dmcfreq->dev, "without without system monitor\n"); in rockchip_dmcfreq_register_notifier()
3128 dmcfreq->mdev_info = NULL; in rockchip_dmcfreq_register_notifier()
3132 static void rockchip_dmcfreq_add_interface(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_add_interface() argument
3134 struct devfreq *devfreq = dmcfreq->info.devfreq; in rockchip_dmcfreq_add_interface()
3137 dev_err(dmcfreq->dev, in rockchip_dmcfreq_add_interface()
3141 dev_err(dmcfreq->dev, in rockchip_dmcfreq_add_interface()
3148 dev_err(dmcfreq->dev, in rockchip_dmcfreq_add_interface()
3154 struct rockchip_dmcfreq *dmcfreq = boost_to_dmcfreq(work); in rockchip_dmcfreq_boost_work() local
3156 rockchip_dmcfreq_update_target(dmcfreq); in rockchip_dmcfreq_boost_work()
3164 struct rockchip_dmcfreq *dmcfreq = handle->private; in rockchip_dmcfreq_input_event() local
3171 endtime = now + dmcfreq->touchboostpulse_duration_val; in rockchip_dmcfreq_input_event()
3172 if (endtime < (dmcfreq->touchboostpulse_endtime + 10 * USEC_PER_MSEC)) in rockchip_dmcfreq_input_event()
3174 dmcfreq->touchboostpulse_endtime = endtime; in rockchip_dmcfreq_input_event()
3176 queue_work(system_freezable_wq, &dmcfreq->boost_work); in rockchip_dmcfreq_input_event()
3185 struct rockchip_dmcfreq *dmcfreq = input_hd_to_dmcfreq(handler); in rockchip_dmcfreq_input_connect() local
3194 handle->private = dmcfreq; in rockchip_dmcfreq_input_connect()
3242 static void rockchip_dmcfreq_boost_init(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_boost_init() argument
3244 if (!dmcfreq->boost_rate) in rockchip_dmcfreq_boost_init()
3246 INIT_WORK(&dmcfreq->boost_work, rockchip_dmcfreq_boost_work); in rockchip_dmcfreq_boost_init()
3247 dmcfreq->input_handler.event = rockchip_dmcfreq_input_event; in rockchip_dmcfreq_boost_init()
3248 dmcfreq->input_handler.connect = rockchip_dmcfreq_input_connect; in rockchip_dmcfreq_boost_init()
3249 dmcfreq->input_handler.disconnect = rockchip_dmcfreq_input_disconnect; in rockchip_dmcfreq_boost_init()
3250 dmcfreq->input_handler.name = "dmcfreq"; in rockchip_dmcfreq_boost_init()
3251 dmcfreq->input_handler.id_table = rockchip_dmcfreq_input_ids; in rockchip_dmcfreq_boost_init()
3252 if (input_register_handler(&dmcfreq->input_handler)) in rockchip_dmcfreq_boost_init()
3253 dev_err(dmcfreq->dev, "failed to register input handler\n"); in rockchip_dmcfreq_boost_init()
3260 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in model_static_power() local
3267 if (!IS_ERR_OR_NULL(dmcfreq->ddr_tz) && dmcfreq->ddr_tz->ops->get_temp) { in model_static_power()
3271 dmcfreq->ddr_tz->ops->get_temp(dmcfreq->ddr_tz, in model_static_power()
3290 temp_scaling_factor = (dmcfreq->ts[3] * temp_cubed) in model_static_power()
3291 + (dmcfreq->ts[2] * temp_squared) in model_static_power()
3292 + (dmcfreq->ts[1] * temp) in model_static_power()
3293 + dmcfreq->ts[0]; in model_static_power()
3295 return (((dmcfreq->static_coefficient * voltage_cubed) >> 20) in model_static_power()
3304 static int ddr_power_model_simple_init(struct rockchip_dmcfreq *dmcfreq) in ddr_power_model_simple_init() argument
3310 power_model_node = of_get_child_by_name(dmcfreq->dev->of_node, in ddr_power_model_simple_init()
3313 dev_err(dmcfreq->dev, "could not find power_model node\n"); in ddr_power_model_simple_init()
3318 dev_err(dmcfreq->dev, "ts in power_model not available\n"); in ddr_power_model_simple_init()
3322 dmcfreq->ddr_tz = thermal_zone_get_zone_by_name(tz_name); in ddr_power_model_simple_init()
3323 if (IS_ERR(dmcfreq->ddr_tz)) { in ddr_power_model_simple_init()
3326 PTR_ERR(dmcfreq->ddr_tz)); in ddr_power_model_simple_init()
3327 dmcfreq->ddr_tz = NULL; in ddr_power_model_simple_init()
3333 &dmcfreq->static_coefficient)) { in ddr_power_model_simple_init()
3334 dev_err(dmcfreq->dev, in ddr_power_model_simple_init()
3340 dev_err(dmcfreq->dev, in ddr_power_model_simple_init()
3347 (power_model_node, "ts", (u32 *)dmcfreq->ts, 4)) { in ddr_power_model_simple_init()
3348 dev_err(dmcfreq->dev, "ts in power_model not available\n"); in ddr_power_model_simple_init()
3356 rockchip_dmcfreq_register_cooling_device(struct rockchip_dmcfreq *dmcfreq) in rockchip_dmcfreq_register_cooling_device() argument
3360 ret = ddr_power_model_simple_init(dmcfreq); in rockchip_dmcfreq_register_cooling_device()
3363 dmcfreq->devfreq_cooling = in rockchip_dmcfreq_register_cooling_device()
3364 of_devfreq_cooling_register_power(dmcfreq->dev->of_node, in rockchip_dmcfreq_register_cooling_device()
3365 dmcfreq->info.devfreq, in rockchip_dmcfreq_register_cooling_device()
3367 if (IS_ERR(dmcfreq->devfreq_cooling)) { in rockchip_dmcfreq_register_cooling_device()
3368 ret = PTR_ERR(dmcfreq->devfreq_cooling); in rockchip_dmcfreq_register_cooling_device()
3369 dev_err(dmcfreq->dev, in rockchip_dmcfreq_register_cooling_device()
3443 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_suspend() local
3446 if (!dmcfreq) in rockchip_dmcfreq_suspend()
3449 ret = rockchip_dmcfreq_disable_event(dmcfreq); in rockchip_dmcfreq_suspend()
3453 if (dmcfreq->info.devfreq) { in rockchip_dmcfreq_suspend()
3454 ret = devfreq_suspend_device(dmcfreq->info.devfreq); in rockchip_dmcfreq_suspend()
3462 if (dmcfreq->sleep_volt && dmcfreq->sleep_volt != dmcfreq->volt) { in rockchip_dmcfreq_suspend()
3463 ret = regulator_set_voltage(dmcfreq->vdd_center, in rockchip_dmcfreq_suspend()
3464 dmcfreq->sleep_volt, INT_MAX); in rockchip_dmcfreq_suspend()
3467 dmcfreq->sleep_volt); in rockchip_dmcfreq_suspend()
3471 if (dmcfreq->sleep_mem_volt && in rockchip_dmcfreq_suspend()
3472 dmcfreq->sleep_mem_volt != dmcfreq->mem_volt) { in rockchip_dmcfreq_suspend()
3473 ret = regulator_set_voltage(dmcfreq->mem_reg, in rockchip_dmcfreq_suspend()
3474 dmcfreq->sleep_mem_volt, INT_MAX); in rockchip_dmcfreq_suspend()
3477 dmcfreq->sleep_mem_volt); in rockchip_dmcfreq_suspend()
3487 struct rockchip_dmcfreq *dmcfreq = dev_get_drvdata(dev); in rockchip_dmcfreq_resume() local
3490 if (!dmcfreq) in rockchip_dmcfreq_resume()
3494 if (dmcfreq->sleep_volt && dmcfreq->sleep_volt != dmcfreq->volt) { in rockchip_dmcfreq_resume()
3495 ret = regulator_set_voltage(dmcfreq->vdd_center, dmcfreq->volt, in rockchip_dmcfreq_resume()
3499 dmcfreq->volt); in rockchip_dmcfreq_resume()
3503 if (dmcfreq->sleep_mem_volt && in rockchip_dmcfreq_resume()
3504 dmcfreq->sleep_mem_volt != dmcfreq->mem_volt) { in rockchip_dmcfreq_resume()
3505 ret = regulator_set_voltage(dmcfreq->mem_reg, dmcfreq->mem_volt, in rockchip_dmcfreq_resume()
3509 dmcfreq->mem_volt); in rockchip_dmcfreq_resume()
3514 ret = rockchip_dmcfreq_enable_event(dmcfreq); in rockchip_dmcfreq_resume()
3518 if (dmcfreq->info.devfreq) { in rockchip_dmcfreq_resume()
3519 ret = devfreq_resume_device(dmcfreq->info.devfreq); in rockchip_dmcfreq_resume()