From e4d2ea0c5587f0345ef8e2ec05936ed7297d30fb Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Wed, 27 Jun 2018 18:19:21 +0800 Subject: [PATCH] PM / devfreq: rockchip_dmc: Add wide-temperature control Change-Id: Ia90494728679287fb505c1ee0ddffaa9a52bf0cb Signed-off-by: Finley Xiao --- drivers/devfreq/rockchip_dmc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index 3f03b81400b7..3989ba3210aa 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -770,6 +770,7 @@ struct rockchip_dmcfreq { struct freq_map_table *vop_bw_tbl; struct work_struct devfreq_update; struct input_handler input_handler; + struct thermal_opp_info *opp_info; unsigned long rate, target_rate; unsigned long volt, target_volt; @@ -810,6 +811,12 @@ struct rockchip_dmcfreq { int (*set_auto_self_refresh)(u32 en); }; +static struct thermal_opp_device_data dmc_devdata = { + .type = THERMAL_OPP_TPYE_DEV, + .low_temp_adjust = rockchip_dev_low_temp_adjust, + .high_temp_adjust = rockchip_dev_high_temp_adjust, +}; + static struct pm_qos_request pm_qos; static DECLARE_RWSEM(rockchip_dmcfreq_sem); @@ -3111,6 +3118,14 @@ static int rockchip_dmcfreq_probe(struct platform_device *pdev) dev_err(dev, "failed to register input handler\n"); } + dmc_devdata.data = data->devfreq; + data->opp_info = rockchip_register_thermal_notifier(dev, + &dmc_devdata); + if (IS_ERR(data->opp_info)) { + dev_dbg(dev, "without thermal notifier\n"); + data->opp_info = NULL; + } + ret = ddr_power_model_simple_init(data); if (!ret) {