xref: /rk3399_rockchip-uboot/drivers/clk/uniphier/clk-uniphier-mio.c (revision 8197d92843952b376915fdbcbf67c723feab1532)
148264d9bSMasahiro Yamada /*
24e3d8406SMasahiro Yamada  * Copyright (C) 2016 Socionext Inc.
34e3d8406SMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
448264d9bSMasahiro Yamada  *
548264d9bSMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
648264d9bSMasahiro Yamada  */
748264d9bSMasahiro Yamada 
848264d9bSMasahiro Yamada #include "clk-uniphier.h"
948264d9bSMasahiro Yamada 
10*805dc44cSMasahiro Yamada #define UNIPHIER_MIO_CLK_SD_GATE(id, ch)				\
11*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 8)
1248264d9bSMasahiro Yamada 
13*805dc44cSMasahiro Yamada #define UNIPHIER_MIO_CLK_USB2(id, ch)					\
14*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 28)
1548264d9bSMasahiro Yamada 
16*805dc44cSMasahiro Yamada #define UNIPHIER_MIO_CLK_USB2_PHY(id, ch)				\
17*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 29)
1848264d9bSMasahiro Yamada 
19*805dc44cSMasahiro Yamada #define UNIPHIER_MIO_CLK_DMAC(id)					\
20*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_GATE((id), 0x20, 25)
21*805dc44cSMasahiro Yamada 
22*805dc44cSMasahiro Yamada #define UNIPHIER_MIO_CLK_SD_MUX(_id, ch)				\
2348264d9bSMasahiro Yamada 	{								\
24*805dc44cSMasahiro Yamada 		.id = (_id),						\
25*805dc44cSMasahiro Yamada 		.nr_muxs = 8,						\
26*805dc44cSMasahiro Yamada 		.reg = 0x30 + 0x200 * (ch),				\
27*805dc44cSMasahiro Yamada 		.masks = {						\
28*805dc44cSMasahiro Yamada 			0x00031000,					\
29*805dc44cSMasahiro Yamada 			0x00031000,					\
30*805dc44cSMasahiro Yamada 			0x00031000,					\
31*805dc44cSMasahiro Yamada 			0x00031000,					\
32*805dc44cSMasahiro Yamada 			0x00001300,					\
33*805dc44cSMasahiro Yamada 			0x00001300,					\
34*805dc44cSMasahiro Yamada 			0x00001300,					\
35*805dc44cSMasahiro Yamada 			0x00001300,					\
3648264d9bSMasahiro Yamada 		},							\
37*805dc44cSMasahiro Yamada 		.vals = {						\
38*805dc44cSMasahiro Yamada 			0x00000000,					\
39*805dc44cSMasahiro Yamada 			0x00010000,					\
40*805dc44cSMasahiro Yamada 			0x00020000,					\
41*805dc44cSMasahiro Yamada 			0x00030000,					\
42*805dc44cSMasahiro Yamada 			0x00001000,					\
43*805dc44cSMasahiro Yamada 			0x00001100,					\
44*805dc44cSMasahiro Yamada 			0x00001200,					\
45*805dc44cSMasahiro Yamada 			0x00001300,					\
46*805dc44cSMasahiro Yamada 		},							\
47*805dc44cSMasahiro Yamada 		.rates = {						\
48*805dc44cSMasahiro Yamada 			44444444,					\
49*805dc44cSMasahiro Yamada 			33333333,					\
50*805dc44cSMasahiro Yamada 			50000000,					\
51*805dc44cSMasahiro Yamada 			66666666,					\
52*805dc44cSMasahiro Yamada 			100000000,					\
53*805dc44cSMasahiro Yamada 			40000000,					\
54*805dc44cSMasahiro Yamada 			25000000,					\
55*805dc44cSMasahiro Yamada 			22222222,					\
56*805dc44cSMasahiro Yamada 		},							\
5748264d9bSMasahiro Yamada 	}
5848264d9bSMasahiro Yamada 
593524d47cSMasahiro Yamada static const struct uniphier_clk_gate_data uniphier_mio_clk_gate[] = {
60*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_GATE(0, 0),
61*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_GATE(1, 1),
62*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_GATE(2, 2),		/* for PH1-Pro4 only */
63*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_DMAC(7),
64*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2(8, 0),
65*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2(9, 1),
66*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2(10, 2),
67*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2_PHY(12, 0),
68*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2_PHY(13, 1),
69*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_USB2_PHY(14, 2),
70*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_END
7148264d9bSMasahiro Yamada };
7248264d9bSMasahiro Yamada 
73*805dc44cSMasahiro Yamada static const struct uniphier_clk_mux_data uniphier_mio_clk_mux[] = {
74*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_MUX(0, 0),
75*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_MUX(1, 1),
76*805dc44cSMasahiro Yamada 	UNIPHIER_MIO_CLK_SD_MUX(2, 2),		/* for PH1-Pro4 only */
77*805dc44cSMasahiro Yamada 	UNIPHIER_CLK_END
7848264d9bSMasahiro Yamada };
7948264d9bSMasahiro Yamada 
80*805dc44cSMasahiro Yamada const struct uniphier_clk_data uniphier_mio_clk_data = {
8148264d9bSMasahiro Yamada 	.gate = uniphier_mio_clk_gate,
82*805dc44cSMasahiro Yamada 	.mux = uniphier_mio_clk_mux,
8348264d9bSMasahiro Yamada };
84