summaryrefslogtreecommitdiffstats
path: root/drivers/devfreq/rk3399_dmc.c
Commit message (Collapse)AuthorAgeFilesLines
* PM / devfreq: rk3399_dmc: fix error return code in rk3399_dmcfreq_probe()Gustavo A. R. Silva2017-07-061-2/+3
| | | | | | | | | | | | | | | platform_get_irq() returns an error code, but the rk3399_dmc driver ignores it and always returns -EINVAL. This is not correct, and prevents -EPROBE_DEFER from being propagated properly. Notice that platform_get_irq() no longer returns 0 on error: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e330b9a6bb35dc7097a4f02cb1ae7b6f96df92af Print and propagate the return value of platform_get_irq on failure. Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* PM / OPP: Update OPP users to put referenceViresh Kumar2017-01-301-11/+5
| | | | | | | | | | | | | | | | | | | | | | | This patch updates dev_pm_opp_find_freq_*() routines to get a reference to the OPPs returned by them. Also updates the users of dev_pm_opp_find_freq_*() routines to call dev_pm_opp_put() after they are done using the OPPs. As it is guaranteed the that OPPs wouldn't get freed while being used, the RCU read side locking present with the users isn't required anymore. Drop it as well. This patch also updates all users of devfreq_recommended_opp() which was returning an OPP received from the OPP core. Note that some of the OPP core routines have gained rcu_read_{lock|unlock}() calls, as those still use RCU specific APIs within them. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> [Devfreq] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
* devfreq: rk3399_dmc: Don't use OPP structures outside of RCU locksViresh Kumar2016-12-081-6/+5
| | | | | | | | | | | | | | The OPP structures are abused to the best here, without understanding how the OPP core and RCU locks work. In short, the OPP pointer saved in 'rk3399_dmcfreq' can become invalid under your nose, as the OPP core may free it. Fix various abuses around OPP structures and calls. Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
* devfreq: rk3399_dmc: Remove dangling rcu_read_unlock()Viresh Kumar2016-12-081-1/+0
| | | | | | | | | This call never had the rcu_read_lock() counterpart. Remove the unlock part as well. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
* PM / devfreq: rk3399_dmc: Use the resource-managed function to add devfreq devChanwoo Choi2016-11-171-1/+1
| | | | | | | | | | | | | This patch uses the resource-managed to add the devfreq device. This function will make it easy to handle the devfreq device. - struct devfreq *devm_devfreq_add_device(struct device *dev, struct devfreq_dev_profile *profile, const char *governor_name, void *data); Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* PM / devfreq: rk3399_dmc: Fix module autoloadJavier Martinez Canillas2016-11-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | If the driver is built as a module, autoload won't work because the module alias information is not filled. So user-space can't match the registered device with the corresponding module. Export the module alias information using the MODULE_DEVICE_TABLE() macro. Before this patch: $ modinfo drivers/devfreq/rk3399_dmc.ko | grep alias $ After this patch: $ modinfo drivers/devfreq/rk3399_dmc.ko | grep alias alias: of:N*T*Crockchip,rk3399-dmcC* alias: of:N*T*Crockchip,rk3399-dmc Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
* PM / devfreq: rk3399_dmc: Remove explictly regulator_put call in .removeAxel Lin2016-09-191-10/+0
| | | | | | | | | | | Current code uses devm_regulator_get() in .probe so a regulator_put() will be automatically called when unload the module. Remove the explictly regulator_put() call and then we can also remove rk3399_dmcfreq_remove(). Signed-off-by: Axel Lin <axel.lin@ingics.com> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
* PM / devfreq: rockchip: add devfreq driver for rk3399 dmcLin Huang2016-09-061-0/+480
base on dfi result, we do ddr frequency scaling, register dmc driver to devfreq framework, and use simple-ondemand policy. Signed-off-by: Lin Huang <hl@rock-chips.com> Signed-off-by: MyngJoo Ham <myngjoo.ham@samsung.com> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>