diff options
-rw-r--r-- | arch/arm/include/asm/arch-mx6/imx-regs.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-imx/mx6/soc.c | 13 |
2 files changed, 20 insertions, 1 deletions
diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h index 00bad47ac9..897639c3d1 100644 --- a/arch/arm/include/asm/arch-mx6/imx-regs.h +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h @@ -1102,11 +1102,17 @@ struct dbg_monitor_regs { u32 version[4]; /* Version */ }; + /* gd->flags reserves high 16 bits for arch-specific flags */ +#define GD_FLG_ARCH_MX6_USB_BOOT 0x80000000 /* If set, the u-boot is booting from USB serial download */ + /* * If ROM fail back to USB recover mode, USBPH0_PWD will be clear to use USB * If boot from the other mode, USB0_PWD will keep reset value */ -#define is_boot_from_usb(void) (!(readl(USB_PHY0_BASE_ADDR) & (1<<20))) +#include <stdbool.h> +bool is_usb_boot(void); +#define is_boot_from_usb is_usb_boot +#define is_usbphy_power_on(void) (!(readl(USB_PHY0_BASE_ADDR) & (1<<20))) #define disconnect_from_pc(void) writel(0x0, OTG_BASE_ADDR + 0x140) #endif /* __ASSEMBLER__*/ diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c index 8950bcaffd..0cdd27c301 100644 --- a/arch/arm/mach-imx/mx6/soc.c +++ b/arch/arm/mach-imx/mx6/soc.c @@ -29,6 +29,8 @@ #include <fsl_caam.h> #endif +DECLARE_GLOBAL_DATA_PTR; + enum ldo_reg { LDO_ARM, LDO_SOC, @@ -520,8 +522,19 @@ static void imx_set_pcie_phy_power_down(void) } } +bool is_usb_boot(void) +{ + if (gd->flags & GD_FLG_ARCH_MX6_USB_BOOT) + return true; + + return false; +} + int arch_cpu_init(void) { + if (is_usbphy_power_on()) + gd->flags |= GD_FLG_ARCH_MX6_USB_BOOT; + if (!is_mx6sl() && !is_mx6sx() && !is_mx6ul() && !is_mx6ull() && !is_mx6sll()) { |