Merge tag 'u-boot-stm32-20211012' of https://source.denx.de/u-boot/custodians/u-boot-stm
[platform/kernel/u-boot.git] / drivers / timer / rockchip_timer.c
index 54956e5..62eacb9 100644 (file)
@@ -4,7 +4,11 @@
  */
 
 #include <common.h>
+#include <bootstage.h>
 #include <dm.h>
+#include <init.h>
+#include <log.h>
+#include <asm/global_data.h>
 #include <dm/ofnode.h>
 #include <mapmem.h>
 #include <asm/arch-rockchip/timer.h>
@@ -51,8 +55,7 @@ ulong timer_get_boot_us(void)
                /* The timer is available */
                rate = timer_get_rate(gd->timer);
                timer_get_count(gd->timer, &ticks);
-#if !CONFIG_IS_ENABLED(OF_PLATDATA)
-       } else if (ret == -EAGAIN) {
+       } else if (CONFIG_IS_ENABLED(OF_REAL) && ret == -EAGAIN) {
                /* We have been called so early that the DM is not ready,... */
                ofnode node = offset_to_ofnode(-1);
                struct rk_timer *timer = NULL;
@@ -75,7 +78,6 @@ ulong timer_get_boot_us(void)
                        debug("%s: could not read clock-frequency\n", __func__);
                        return 0;
                }
-#endif
        } else {
                return 0;
        }
@@ -85,25 +87,24 @@ ulong timer_get_boot_us(void)
 }
 #endif
 
-static int rockchip_timer_get_count(struct udevice *dev, u64 *count)
+static u64 rockchip_timer_get_count(struct udevice *dev)
 {
        struct rockchip_timer_priv *priv = dev_get_priv(dev);
        uint64_t cntr = rockchip_timer_get_curr_value(priv->timer);
 
        /* timers are down-counting */
-       *count = ~0ull - cntr;
-       return 0;
+       return ~0ull - cntr;
 }
 
-static int rockchip_clk_ofdata_to_platdata(struct udevice *dev)
+static int rockchip_clk_of_to_plat(struct udevice *dev)
 {
-#if !CONFIG_IS_ENABLED(OF_PLATDATA)
-       struct rockchip_timer_priv *priv = dev_get_priv(dev);
+       if (CONFIG_IS_ENABLED(OF_REAL)) {
+               struct rockchip_timer_priv *priv = dev_get_priv(dev);
 
-       priv->timer = dev_read_addr_ptr(dev);
-       if (!priv->timer)
-               return -ENOENT;
-#endif
+               priv->timer = dev_read_addr_ptr(dev);
+               if (!priv->timer)
+                       return -ENOENT;
+       }
 
        return 0;
 }
@@ -137,7 +138,7 @@ static int rockchip_timer_probe(struct udevice *dev)
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
        struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
        struct rockchip_timer_priv *priv = dev_get_priv(dev);
-       struct rockchip_timer_plat *plat = dev_get_platdata(dev);
+       struct rockchip_timer_plat *plat = dev_get_plat(dev);
 
        priv->timer = map_sysmem(plat->dtd.reg[0], plat->dtd.reg[1]);
        uc_priv->clock_rate = plat->dtd.clock_frequency;
@@ -163,9 +164,9 @@ U_BOOT_DRIVER(rockchip_rk3368_timer) = {
        .of_match = rockchip_timer_ids,
        .probe = rockchip_timer_probe,
        .ops    = &rockchip_timer_ops,
-       .priv_auto_alloc_size = sizeof(struct rockchip_timer_priv),
+       .priv_auto      = sizeof(struct rockchip_timer_priv),
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-       .platdata_auto_alloc_size = sizeof(struct rockchip_timer_plat),
+       .plat_auto      = sizeof(struct rockchip_timer_plat),
 #endif
-       .ofdata_to_platdata = rockchip_clk_ofdata_to_platdata,
+       .of_to_plat = rockchip_clk_of_to_plat,
 };