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