clk-pll.h 993 B

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