1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (C) 2016 Socionext Inc. 3*4882a593Smuzhiyun * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __CLK_UNIPHIER_H__ 9*4882a593Smuzhiyun #define __CLK_UNIPHIER_H__ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/kernel.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define UNIPHIER_CLK_MAX_NR_MUXS 8 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun struct uniphier_clk_gate_data { 16*4882a593Smuzhiyun unsigned int id; 17*4882a593Smuzhiyun unsigned int reg; 18*4882a593Smuzhiyun unsigned int bit; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun struct uniphier_clk_mux_data { 22*4882a593Smuzhiyun unsigned int id; 23*4882a593Smuzhiyun unsigned int nr_muxs; 24*4882a593Smuzhiyun unsigned int reg; 25*4882a593Smuzhiyun unsigned int masks[UNIPHIER_CLK_MAX_NR_MUXS]; 26*4882a593Smuzhiyun unsigned int vals[UNIPHIER_CLK_MAX_NR_MUXS]; 27*4882a593Smuzhiyun unsigned long rates[UNIPHIER_CLK_MAX_NR_MUXS]; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun struct uniphier_clk_data { 31*4882a593Smuzhiyun const struct uniphier_clk_gate_data *gate; 32*4882a593Smuzhiyun const struct uniphier_clk_mux_data *mux; 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define UNIPHIER_CLK_ID_END (unsigned int)(-1) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define UNIPHIER_CLK_END \ 38*4882a593Smuzhiyun { .id = UNIPHIER_CLK_ID_END } 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define UNIPHIER_CLK_GATE(_id, _reg, _bit) \ 41*4882a593Smuzhiyun { \ 42*4882a593Smuzhiyun .id = (_id), \ 43*4882a593Smuzhiyun .reg = (_reg), \ 44*4882a593Smuzhiyun .bit = (_bit), \ 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define UNIPHIER_CLK_FIXED_RATE(_id, _rate) \ 48*4882a593Smuzhiyun { \ 49*4882a593Smuzhiyun .id = (_id), \ 50*4882a593Smuzhiyun .rates = {(_reg),}, \ 51*4882a593Smuzhiyun } 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun extern const struct uniphier_clk_data uniphier_pxs2_sys_clk_data; 54*4882a593Smuzhiyun extern const struct uniphier_clk_data uniphier_ld20_sys_clk_data; 55*4882a593Smuzhiyun extern const struct uniphier_clk_data uniphier_mio_clk_data; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #endif /* __CLK_UNIPHIER_H__ */ 58