1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com> 4 */ 5 6 #include <linux/bitops.h> 7 #include <linux/io.h> 8 9 #include "../init.h" 10 #include "../sc-regs.h" 11 uniphier_pxs2_clk_init(void)12void uniphier_pxs2_clk_init(void) 13 { 14 #ifdef CONFIG_USB_DWC3_UNIPHIER 15 u32 tmp; 16 17 /* deassert reset */ 18 tmp = readl(sc_base + SC_RSTCTRL); 19 tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO; 20 writel(tmp, sc_base + SC_RSTCTRL); 21 readl(sc_base + SC_RSTCTRL); /* dummy read */ 22 23 tmp = readl(sc_base + SC_RSTCTRL2); 24 tmp |= SC_RSTCTRL2_NRST_USB3B1; 25 writel(tmp, sc_base + SC_RSTCTRL2); 26 readl(sc_base + SC_RSTCTRL2); /* dummy read */ 27 28 tmp = readl(sc_base + SC_RSTCTRL6); 29 tmp |= 0x37; 30 writel(tmp, sc_base + SC_RSTCTRL6); 31 32 /* provide clocks */ 33 tmp = readl(sc_base + SC_CLKCTRL); 34 tmp |= BIT(20) | BIT(19) | SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 | 35 SC_CLKCTRL_CEN_GIO; 36 writel(tmp, sc_base + SC_CLKCTRL); 37 readl(sc_base + SC_CLKCTRL); /* dummy read */ 38 #endif 39 } 40