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