X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=arch%2Farm%2Fmach-uniphier%2Fclk%2Fclk-ld11.c;h=0266e7e66b79d849d29d1fdca11d59a004795e3f;hb=4013bbb1f34cc7f468600eba115fb8cfa0ff5dee;hp=92a07338a81ec54f5d6165a872d46d4f0236057a;hpb=82f2a144917d6cc5f8a9a49b1a1a15b0fb5742d5;p=u-boot diff --git a/arch/arm/mach-uniphier/clk/clk-ld11.c b/arch/arm/mach-uniphier/clk/clk-ld11.c index 92a07338a8..0266e7e66b 100644 --- a/arch/arm/mach-uniphier/clk/clk-ld11.c +++ b/arch/arm/mach-uniphier/clk/clk-ld11.c @@ -5,17 +5,21 @@ */ #include +#include #include #include #include "../init.h" +#include "../sc64-regs.h" #include "../sg-regs.h" +#define SDCTRL_EMMC_HW_RESET 0x59810280 + 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)) && + uniphier_boot_device_raw() != BOOT_DEVICE_USB) { writel(1, SG_ETPHYPSHUT); writel(1, SG_ETPHYCNT); @@ -25,4 +29,26 @@ void uniphier_ld11_clk_init(void) writel(3, SG_ETPHYPSHUT); writel(7, SG_ETPHYCNT); } + + /* TODO: use "mmc-pwrseq-emmc" */ + writel(1, SDCTRL_EMMC_HW_RESET); + +#ifdef CONFIG_USB_EHCI_HCD + { + /* FIXME: the current clk driver can not handle parents */ + u32 tmp; + int ch; + + tmp = readl(SC_CLKCTRL4); + tmp |= SC_CLKCTRL4_MIO | SC_CLKCTRL4_STDMAC; + writel(tmp, SC_CLKCTRL4); + + for (ch = 0; ch < 3; ch++) { + void __iomem *phyctrl = (void __iomem *)SG_USBPHYCTRL; + + writel(0x82280600, phyctrl + 8 * ch); + writel(0x00000106, phyctrl + 8 * ch + 4); + } + } +#endif }