usb: Enforce DM_USB migration for USB_HOST devices.
[platform/kernel/u-boot.git] / arch / arm / mach-imx / timer.c
index 69dbf3c..fcd45f0 100644 (file)
@@ -1,15 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2007
  * Sascha Hauer, Pengutronix
  *
  * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
+#include <init.h>
+#include <time.h>
 #include <asm/io.h>
 #include <div64.h>
+#include <asm/global_data.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/sys_proto.h>
@@ -42,16 +44,12 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static inline int gpt_has_clk_source_osc(void)
 {
-#if defined(CONFIG_MX6)
        if (((is_mx6dq()) && (soc_rev() > CHIP_REV_1_0)) ||
            is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul() ||
-           is_mx6ull() || is_mx6sll())
+           is_mx6ull() || is_mx6sll() || is_mx7())
                return 1;
 
        return 0;
-#else
-       return 0;
-#endif
 }
 
 static inline ulong gpt_get_clk(void)
@@ -74,7 +72,8 @@ int timer_init(void)
        __raw_writel(GPTCR_SWR, &cur_gpt->control);
 
        /* We have no udelay by now */
-       __raw_writel(0, &cur_gpt->control);
+       for (i = 0; i < 100; i++)
+               __raw_writel(0, &cur_gpt->control);
 
        i = __raw_readl(&cur_gpt->control);
        i &= ~GPTCR_CLKSOURCE_MASK;
@@ -88,7 +87,7 @@ int timer_init(void)
                 * Enable bit and prescaler
                 */
                if (is_mx6sdl() || is_mx6sx() || is_mx6ul() || is_mx6ull() ||
-                   is_mx6sll()) {
+                   is_mx6sll() || is_mx7()) {
                        i |= GPTCR_24MEN;
 
                        /* Produce 3Mhz clock */
@@ -104,6 +103,9 @@ int timer_init(void)
 #endif
        __raw_writel(i, &cur_gpt->control);
 
+       gd->arch.tbl = __raw_readl(&cur_gpt->counter);
+       gd->arch.tbu = 0;
+
        return 0;
 }