Thread (13 messages) flat view 13 messages, 6 authors, 2016-06-03

[RFC PATCH 3/4] PM / devfreq: rockchip: add devfreq driver for rk3399 dmc

From: myungjoo.ham@samsung.com (MyungJoo Ham)
Date: 2016-06-01 10:47:27
Also in: dri-devel, linux-clk, linux-rockchip, lkml

On Wed, Jun 1, 2016 at 6:35 PM, Lin Huang [off-list ref] wrote:
there is dfi controller on rk3399 platform, it can monitor
ddr load, register this controller to devfreq framework, and
default to use simple_ondeamnd policy, and do ddr frequency
scaling base on this result.

Signed-off-by: Lin Huang <redacted>
---
 drivers/devfreq/Kconfig                 |   2 +-
 drivers/devfreq/Makefile                |   1 +
 drivers/devfreq/rockchip/Kconfig        |  14 +
 drivers/devfreq/rockchip/Makefile       |   2 +
 drivers/devfreq/rockchip/rk3399_dmc.c   | 438 ++++++++++++++++++++++++++++++++
 drivers/devfreq/rockchip/rockchip_dmc.c | 132 ++++++++++
 include/soc/rockchip/rockchip_dmc.h     |  44 ++++
 7 files changed, 632 insertions(+), 1 deletion(-)
 create mode 100644 drivers/devfreq/rockchip/Kconfig
 create mode 100644 drivers/devfreq/rockchip/Makefile
 create mode 100644 drivers/devfreq/rockchip/rk3399_dmc.c
 create mode 100644 drivers/devfreq/rockchip/rockchip_dmc.c
 create mode 100644 include/soc/rockchip/rockchip_dmc.h

+
+       /* check the rate we get whether correct */
+       dmcfreq->rate = clk_get_rate(dmcfreq->dmc_clk);
+       if (dmcfreq->rate != target_rate) {
+               dev_err(dev, "get wrong ddr frequency, Request freq %lu,\
+                       Current freq %lu\n", target_rate, dmcfreq->rate);
+               regulator_set_voltage(dmcfreq->vdd_center, dmcfreq->volt,
+                                     dmcfreq->volt);
Why do you need to check this and
more importantly, why do you assume that dmvfreq->volt
will be safe in this case? (what if the new dmcfreq->rate is
larger than the old dmcfreq->rate after clk_get_rate?)
Note that you didn't update dmcfreq->volt after clk_get_rate()

+EXPORT_SYMBOL_GPL(dmc_event);
+EXPORT_SYMBOL_GPL(rockchip_dmc_enabled);
+EXPORT_SYMBOL_GPL(rockchip_dmc_enable);
+EXPORT_SYMBOL_GPL(rockchip_dmc_disable);
+EXPORT_SYMBOL_GPL(dmc_register_notifier);
+EXPORT_SYMBOL_GPL(dmc_unregister_notifier);
+EXPORT_SYMBOL_GPL(rockchip_dmc_get);
+EXPORT_SYMBOL_GPL(rockchip_dmc_put);
Do you really need to export all these device driver specific
functions? Looks like a design flaw here.



Cheers,
MyungJoo


-- 
MyungJoo Ham, Ph.D.
S/W R&D Center, Samsung Electronics
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help