clk.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) 2015 Google, Inc
  3. * Written by Simon Glass <sjg@chromium.org>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #ifndef _CLK_H_
  8. #define _CLK_H_
  9. int soc_clk_dump(void);
  10. struct clk_ops {
  11. /**
  12. * get_rate() - Get current clock rate
  13. *
  14. * @dev: Device to check (UCLASS_CLK)
  15. * @return clock rate in Hz, or -ve error code
  16. */
  17. ulong (*get_rate)(struct udevice *dev);
  18. /**
  19. * set_rate() - Set current clock rate
  20. *
  21. * @dev: Device to adjust
  22. * @rate: New clock rate in Hz
  23. * @return new rate, or -ve error code
  24. */
  25. ulong (*set_rate)(struct udevice *dev, ulong rate);
  26. /**
  27. * clk_set_periph_rate() - Set clock rate for a peripheral
  28. *
  29. * @dev: Device to adjust (UCLASS_CLK)
  30. * @rate: New clock rate in Hz
  31. * @return new clock rate in Hz, or -ve error code
  32. */
  33. ulong (*get_periph_rate)(struct udevice *dev, int periph);
  34. /**
  35. * clk_set_periph_rate() - Set current clock rate for a peripheral
  36. *
  37. * @dev: Device to update (UCLASS_CLK)
  38. * @periph: Peripheral ID to cupdate
  39. * @return new clock rate in Hz, or -ve error code
  40. */
  41. ulong (*set_periph_rate)(struct udevice *dev, int periph, ulong rate);
  42. };
  43. #define clk_get_ops(dev) ((struct clk_ops *)(dev)->driver->ops)
  44. /**
  45. * clk_get_rate() - Get current clock rate
  46. *
  47. * @dev: Device to check (UCLASS_CLK)
  48. * @return clock rate in Hz, or -ve error code
  49. */
  50. ulong clk_get_rate(struct udevice *dev);
  51. /**
  52. * set_rate() - Set current clock rate
  53. *
  54. * @dev: Device to adjust
  55. * @rate: New clock rate in Hz
  56. * @return new rate, or -ve error code
  57. */
  58. ulong clk_set_rate(struct udevice *dev, ulong rate);
  59. /**
  60. * clk_get_periph_rate() - Get current clock rate for a peripheral
  61. *
  62. * @dev: Device to check (UCLASS_CLK)
  63. * @return clock rate in Hz, -ve error code
  64. */
  65. ulong clk_get_periph_rate(struct udevice *dev, int periph);
  66. /**
  67. * clk_set_periph_rate() - Set current clock rate for a peripheral
  68. *
  69. * @dev: Device to update (UCLASS_CLK)
  70. * @periph: Peripheral ID to cupdate
  71. * @return new clock rate in Hz, or -ve error code
  72. */
  73. ulong clk_set_periph_rate(struct udevice *dev, int periph, ulong rate);
  74. #endif /* _CLK_H_ */