diff options
-rw-r--r-- | plat/imx/imx8m/imx8mq/gpc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plat/imx/imx8m/imx8mq/gpc.c b/plat/imx/imx8m/imx8mq/gpc.c index 942ae459..8714b59f 100644 --- a/plat/imx/imx8m/imx8mq/gpc.c +++ b/plat/imx/imx8m/imx8mq/gpc.c @@ -9,6 +9,8 @@ #include <stdbool.h> #include <common/debug.h> +#include <common/runtime_svc.h> +#include <drivers/delay_timer.h> #include <lib/mmio.h> #include <lib/psci/psci.h> #include <platform_def.h> @@ -167,6 +169,12 @@ void imx_gpc_init(void) mmio_clrbits_32(IMX_SRC_BASE + SRC_OTG1PHY_SCR, 0x1); mmio_clrbits_32(IMX_SRC_BASE + SRC_OTG2PHY_SCR, 0x1); - /* enable all the power domain by default */ - mmio_write_32(IMX_GPC_BASE + PU_PGC_UP_TRG, 0x3fcf); + /* for USB OTG, the limitation are: + * 1. before system clock config, the IPG clock run at 12.5MHz, delay time + * should be longer than 82us. + * 2. after system clock config, ipg clock run at 66.5MHz, delay time + * be longer that 15.3 us. + * Add 100us to make sure the USB OTG SRC is clear safely. + */ + udelay(100); } |