summaryrefslogtreecommitdiff
path: root/arch/arm/mach-uniphier/clk/clk-ld11.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-uniphier/clk/clk-ld11.c')
-rw-r--r--arch/arm/mach-uniphier/clk/clk-ld11.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/arch/arm/mach-uniphier/clk/clk-ld11.c b/arch/arm/mach-uniphier/clk/clk-ld11.c
index 92a07338a81..58069cbf156 100644
--- a/arch/arm/mach-uniphier/clk/clk-ld11.c
+++ b/arch/arm/mach-uniphier/clk/clk-ld11.c
@@ -5,17 +5,20 @@
*/
#include <common.h>
+#include <spl.h>
#include <linux/bitops.h>
#include <linux/io.h>
+#include "../boot-mode/boot-device.h"
#include "../init.h"
+#include "../sc64-regs.h"
#include "../sg-regs.h"
void uniphier_ld11_clk_init(void)
{
- if (readl(SG_PINMON0) & BIT(27)) {
- /* if booted without stand-by MPU */
-
+ /* if booted from a device other than USB, without stand-by MPU */
+ if ((readl(SG_PINMON0) & BIT(27)) &&
+ spl_boot_device_raw() != BOOT_DEVICE_USB) {
writel(1, SG_ETPHYPSHUT);
writel(1, SG_ETPHYCNT);
@@ -25,4 +28,14 @@ void uniphier_ld11_clk_init(void)
writel(3, SG_ETPHYPSHUT);
writel(7, SG_ETPHYCNT);
}
+
+#ifdef CONFIG_USB_EHCI
+ {
+ /* FIXME: the current clk driver can not handle parents */
+ u32 tmp;
+ tmp = readl(SC_CLKCTRL4);
+ tmp |= SC_CLKCTRL4_MIO | SC_CLKCTRL4_STDMAC;
+ writel(tmp, SC_CLKCTRL4);
+ }
+#endif
}