clk-pll.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright (c) 2013 Samsung Electronics Co., Ltd.
  3. * Copyright (c) 2013 Linaro Ltd.
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. *
  9. * Common Clock Framework support for all PLL's in Samsung platforms
  10. */
  11. #ifndef __SAMSUNG_CLK_PLL_H
  12. #define __SAMSUNG_CLK_PLL_H
  13. enum samsung_pll_type {
  14. pll_35xx,
  15. pll_36xx,
  16. pll_2550,
  17. pll_2650,
  18. };
  19. #define PLL_35XX_RATE(_rate, _m, _p, _s) \
  20. { \
  21. .rate = (_rate), \
  22. .mdiv = (_m), \
  23. .pdiv = (_p), \
  24. .sdiv = (_s), \
  25. }
  26. #define PLL_36XX_RATE(_rate, _m, _p, _s, _k) \
  27. { \
  28. .rate = (_rate), \
  29. .mdiv = (_m), \
  30. .pdiv = (_p), \
  31. .sdiv = (_s), \
  32. .kdiv = (_k), \
  33. }
  34. /* NOTE: Rate table should be kept sorted in descending order. */
  35. struct samsung_pll_rate_table {
  36. unsigned int rate;
  37. unsigned int pdiv;
  38. unsigned int mdiv;
  39. unsigned int sdiv;
  40. unsigned int kdiv;
  41. };
  42. enum pll45xx_type {
  43. pll_4500,
  44. pll_4502,
  45. pll_4508
  46. };
  47. enum pll46xx_type {
  48. pll_4600,
  49. pll_4650,
  50. pll_4650c,
  51. };
  52. extern struct clk * __init samsung_clk_register_pll45xx(const char *name,
  53. const char *pname, const void __iomem *con_reg,
  54. enum pll45xx_type type);
  55. extern struct clk * __init samsung_clk_register_pll46xx(const char *name,
  56. const char *pname, const void __iomem *con_reg,
  57. enum pll46xx_type type);
  58. extern struct clk *samsung_clk_register_pll6552(const char *name,
  59. const char *pname, void __iomem *base);
  60. extern struct clk *samsung_clk_register_pll6553(const char *name,
  61. const char *pname, void __iomem *base);
  62. extern struct clk * __init samsung_clk_register_pll2550x(const char *name,
  63. const char *pname, const void __iomem *reg_base,
  64. const unsigned long offset);
  65. #endif /* __SAMSUNG_CLK_PLL_H */