1*889c2b7eSJerome Brunet /* SPDX-License-Identifier: GPL-2.0 */ 2*889c2b7eSJerome Brunet /* 3*889c2b7eSJerome Brunet * Copyright (c) 2019 BayLibre, SAS. 4*889c2b7eSJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com> 5*889c2b7eSJerome Brunet */ 6*889c2b7eSJerome Brunet 7*889c2b7eSJerome Brunet #ifndef __MESON_CLK_PLL_H 8*889c2b7eSJerome Brunet #define __MESON_CLK_PLL_H 9*889c2b7eSJerome Brunet 10*889c2b7eSJerome Brunet #include <linux/clk-provider.h> 11*889c2b7eSJerome Brunet #include <linux/regmap.h> 12*889c2b7eSJerome Brunet #include "parm.h" 13*889c2b7eSJerome Brunet 14*889c2b7eSJerome Brunet struct pll_params_table { 15*889c2b7eSJerome Brunet u16 m; 16*889c2b7eSJerome Brunet u16 n; 17*889c2b7eSJerome Brunet }; 18*889c2b7eSJerome Brunet 19*889c2b7eSJerome Brunet #define PLL_PARAMS(_m, _n) \ 20*889c2b7eSJerome Brunet { \ 21*889c2b7eSJerome Brunet .m = (_m), \ 22*889c2b7eSJerome Brunet .n = (_n), \ 23*889c2b7eSJerome Brunet } 24*889c2b7eSJerome Brunet 25*889c2b7eSJerome Brunet #define CLK_MESON_PLL_ROUND_CLOSEST BIT(0) 26*889c2b7eSJerome Brunet 27*889c2b7eSJerome Brunet struct meson_clk_pll_data { 28*889c2b7eSJerome Brunet struct parm en; 29*889c2b7eSJerome Brunet struct parm m; 30*889c2b7eSJerome Brunet struct parm n; 31*889c2b7eSJerome Brunet struct parm frac; 32*889c2b7eSJerome Brunet struct parm l; 33*889c2b7eSJerome Brunet struct parm rst; 34*889c2b7eSJerome Brunet const struct reg_sequence *init_regs; 35*889c2b7eSJerome Brunet unsigned int init_count; 36*889c2b7eSJerome Brunet const struct pll_params_table *table; 37*889c2b7eSJerome Brunet u8 flags; 38*889c2b7eSJerome Brunet }; 39*889c2b7eSJerome Brunet 40*889c2b7eSJerome Brunet extern const struct clk_ops meson_clk_pll_ro_ops; 41*889c2b7eSJerome Brunet extern const struct clk_ops meson_clk_pll_ops; 42*889c2b7eSJerome Brunet 43*889c2b7eSJerome Brunet #endif /* __MESON_CLK_PLL_H */ 44