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