blob: dd86cadf5bfba4c7ed75320ef3a1cfbf20837d36 [file] [log] [blame]
Masahiro Yamada28f40d42015-09-22 00:27:40 +09001/*
2 * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <linux/io.h>
Masahiro Yamada107b3fb2016-01-09 01:51:13 +09008
9#include "../init.h"
10#include "../sc-regs.h"
Masahiro Yamada28f40d42015-09-22 00:27:40 +090011
Masahiro Yamada5b660062016-03-30 20:17:02 +090012void uniphier_pro5_clk_init(void)
Masahiro Yamada28f40d42015-09-22 00:27:40 +090013{
14 u32 tmp;
15
16 /* deassert reset */
17 tmp = readl(SC_RSTCTRL);
Masahiro Yamadac7372d62017-10-14 02:21:17 +090018#ifdef CONFIG_USB_DWC3_UNIPHIER
Masahiro Yamada28f40d42015-09-22 00:27:40 +090019 tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
20#endif
21#ifdef CONFIG_NAND_DENALI
22 tmp |= SC_RSTCTRL_NRST_NAND;
23#endif
24 writel(tmp, SC_RSTCTRL);
25 readl(SC_RSTCTRL); /* dummy read */
26
Masahiro Yamadac7372d62017-10-14 02:21:17 +090027#ifdef CONFIG_USB_DWC3_UNIPHIER
Masahiro Yamada28f40d42015-09-22 00:27:40 +090028 tmp = readl(SC_RSTCTRL2);
29 tmp |= SC_RSTCTRL2_NRST_USB3B1;
30 writel(tmp, SC_RSTCTRL2);
31 readl(SC_RSTCTRL2); /* dummy read */
32#endif
33
Masahiro Yamada67976302016-03-30 20:17:42 +090034 /* provide clocks */
Masahiro Yamada28f40d42015-09-22 00:27:40 +090035 tmp = readl(SC_CLKCTRL);
Masahiro Yamadac7372d62017-10-14 02:21:17 +090036#ifdef CONFIG_USB_DWC3_UNIPHIER
Masahiro Yamada28f40d42015-09-22 00:27:40 +090037 tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
38 SC_CLKCTRL_CEN_GIO;
39#endif
40#ifdef CONFIG_NAND_DENALI
41 tmp |= SC_CLKCTRL_CEN_NAND;
42#endif
43 writel(tmp, SC_CLKCTRL);
44 readl(SC_CLKCTRL); /* dummy read */
45}