]> git.sur5r.net Git - u-boot/commitdiff
rockchip: clk: Move all DT decoding to ofdata_to_platdata()
authorSimon Glass <sjg@chromium.org>
Mon, 4 Jul 2016 17:58:28 +0000 (11:58 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 15 Jul 2016 02:40:24 +0000 (20:40 -0600)
It is more correct to avoid touching the device tree in the probe() method.
Update the driver to work this way. Also add an error check on grf since if
that fails then we should not use it.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/clk/clk_rk3288.c

index 2285453e8de284b93731370e73ee48490781b4f7..1c2bf6423ec8c15fcb28c434963f14ccaf52b6a8 100644 (file)
@@ -783,12 +783,22 @@ static struct clk_ops rk3288_clk_ops = {
        .set_rate       = rk3288_clk_set_rate,
 };
 
-static int rk3288_clk_probe(struct udevice *dev)
+static int rk3288_clk_ofdata_to_platdata(struct udevice *dev)
 {
        struct rk3288_clk_priv *priv = dev_get_priv(dev);
 
        priv->cru = (struct rk3288_cru *)dev_get_addr(dev);
+
+       return 0;
+}
+
+static int rk3288_clk_probe(struct udevice *dev)
+{
+       struct rk3288_clk_priv *priv = dev_get_priv(dev);
+
        priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+       if (IS_ERR(priv->grf))
+               return PTR_ERR(priv->grf);
 #ifdef CONFIG_SPL_BUILD
        rkclk_init(priv->cru, priv->grf);
 #endif
@@ -820,5 +830,6 @@ U_BOOT_DRIVER(clk_rk3288) = {
        .priv_auto_alloc_size = sizeof(struct rk3288_clk_priv),
        .ops            = &rk3288_clk_ops,
        .bind           = rk3288_clk_bind,
+       .ofdata_to_platdata     = rk3288_clk_ofdata_to_platdata,
        .probe          = rk3288_clk_probe,
 };