1889c2b7eSJerome Brunet /* SPDX-License-Identifier: GPL-2.0 */ 2889c2b7eSJerome Brunet /* 3889c2b7eSJerome Brunet * Copyright (c) 2019 BayLibre, SAS. 4889c2b7eSJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com> 5889c2b7eSJerome Brunet */ 6889c2b7eSJerome Brunet 7889c2b7eSJerome Brunet #ifndef __MESON_CLK_PLL_H 8889c2b7eSJerome Brunet #define __MESON_CLK_PLL_H 9889c2b7eSJerome Brunet 10889c2b7eSJerome Brunet #include <linux/clk-provider.h> 11889c2b7eSJerome Brunet #include <linux/regmap.h> 12889c2b7eSJerome Brunet #include "parm.h" 13889c2b7eSJerome Brunet 14889c2b7eSJerome Brunet struct pll_params_table { 158eed1db1SJerome Brunet unsigned int m; 168eed1db1SJerome Brunet unsigned int n; 178eed1db1SJerome Brunet }; 188eed1db1SJerome Brunet 198eed1db1SJerome Brunet struct pll_mult_range { 208eed1db1SJerome Brunet unsigned int min; 218eed1db1SJerome Brunet unsigned int max; 22889c2b7eSJerome Brunet }; 23889c2b7eSJerome Brunet 24889c2b7eSJerome Brunet #define PLL_PARAMS(_m, _n) \ 25889c2b7eSJerome Brunet { \ 26889c2b7eSJerome Brunet .m = (_m), \ 27889c2b7eSJerome Brunet .n = (_n), \ 28889c2b7eSJerome Brunet } 29889c2b7eSJerome Brunet 30889c2b7eSJerome Brunet #define CLK_MESON_PLL_ROUND_CLOSEST BIT(0) 31889c2b7eSJerome Brunet 32889c2b7eSJerome Brunet struct meson_clk_pll_data { 33889c2b7eSJerome Brunet struct parm en; 34889c2b7eSJerome Brunet struct parm m; 35889c2b7eSJerome Brunet struct parm n; 36889c2b7eSJerome Brunet struct parm frac; 37889c2b7eSJerome Brunet struct parm l; 38889c2b7eSJerome Brunet struct parm rst; 39*b6ec400aSDmitry Rokosov struct parm current_en; 40*b6ec400aSDmitry Rokosov struct parm l_detect; 41889c2b7eSJerome Brunet const struct reg_sequence *init_regs; 42889c2b7eSJerome Brunet unsigned int init_count; 43889c2b7eSJerome Brunet const struct pll_params_table *table; 448eed1db1SJerome Brunet const struct pll_mult_range *range; 45889c2b7eSJerome Brunet u8 flags; 46889c2b7eSJerome Brunet }; 47889c2b7eSJerome Brunet 48889c2b7eSJerome Brunet extern const struct clk_ops meson_clk_pll_ro_ops; 49889c2b7eSJerome Brunet extern const struct clk_ops meson_clk_pll_ops; 5039b85002SNeil Armstrong extern const struct clk_ops meson_clk_pcie_pll_ops; 51889c2b7eSJerome Brunet 52889c2b7eSJerome Brunet #endif /* __MESON_CLK_PLL_H */ 53