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 #ifndef __CLK_UNIPHIER_H__ 948264d9bSMasahiro Yamada #define __CLK_UNIPHIER_H__ 1048264d9bSMasahiro Yamada 1148264d9bSMasahiro Yamada #include <linux/kernel.h> 1248264d9bSMasahiro Yamada 13805dc44cSMasahiro Yamada #define UNIPHIER_CLK_MAX_NR_MUXS 8 14805dc44cSMasahiro Yamada 1548264d9bSMasahiro Yamada struct uniphier_clk_gate_data { 16805dc44cSMasahiro Yamada unsigned int id; 1748264d9bSMasahiro Yamada unsigned int reg; 18805dc44cSMasahiro Yamada unsigned int bit; 1948264d9bSMasahiro Yamada }; 2048264d9bSMasahiro Yamada 21805dc44cSMasahiro Yamada struct uniphier_clk_mux_data { 22805dc44cSMasahiro Yamada unsigned int id; 23805dc44cSMasahiro Yamada unsigned int nr_muxs; 2448264d9bSMasahiro Yamada unsigned int reg; 25805dc44cSMasahiro Yamada unsigned int masks[UNIPHIER_CLK_MAX_NR_MUXS]; 26805dc44cSMasahiro Yamada unsigned int vals[UNIPHIER_CLK_MAX_NR_MUXS]; 27805dc44cSMasahiro Yamada unsigned long rates[UNIPHIER_CLK_MAX_NR_MUXS]; 2848264d9bSMasahiro Yamada }; 2948264d9bSMasahiro Yamada 30805dc44cSMasahiro Yamada struct uniphier_clk_data { 313524d47cSMasahiro Yamada const struct uniphier_clk_gate_data *gate; 32805dc44cSMasahiro Yamada const struct uniphier_clk_mux_data *mux; 3348264d9bSMasahiro Yamada }; 3448264d9bSMasahiro Yamada 35805dc44cSMasahiro Yamada #define UNIPHIER_CLK_ID_END (unsigned int)(-1) 36805dc44cSMasahiro Yamada 37805dc44cSMasahiro Yamada #define UNIPHIER_CLK_END \ 38805dc44cSMasahiro Yamada { .id = UNIPHIER_CLK_ID_END } 39805dc44cSMasahiro Yamada 40805dc44cSMasahiro Yamada #define UNIPHIER_CLK_GATE(_id, _reg, _bit) \ 4148264d9bSMasahiro Yamada { \ 42805dc44cSMasahiro Yamada .id = (_id), \ 43805dc44cSMasahiro Yamada .reg = (_reg), \ 44805dc44cSMasahiro Yamada .bit = (_bit), \ 4548264d9bSMasahiro Yamada } 4648264d9bSMasahiro Yamada 47805dc44cSMasahiro Yamada #define UNIPHIER_CLK_FIXED_RATE(_id, _rate) \ 48805dc44cSMasahiro Yamada { \ 49805dc44cSMasahiro Yamada .id = (_id), \ 50805dc44cSMasahiro Yamada .rates = {(_reg),}, \ 51805dc44cSMasahiro Yamada } 52805dc44cSMasahiro Yamada 53*d7505752SMasahiro Yamada extern const struct uniphier_clk_data uniphier_pxs2_sys_clk_data; 54*d7505752SMasahiro Yamada extern const struct uniphier_clk_data uniphier_ld20_sys_clk_data; 55805dc44cSMasahiro Yamada extern const struct uniphier_clk_data uniphier_mio_clk_data; 5648264d9bSMasahiro Yamada 5748264d9bSMasahiro Yamada #endif /* __CLK_UNIPHIER_H__ */ 58