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