clock.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef _CLOCK_H
  2. #define _CLOCK_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #define MAX_CLK_SOURCE_NUM 4
  7. #define MAX_CLK_ENABLE_BITS 5
  8. typedef enum {
  9. CLK_XTAL32K = 0,
  10. CLK_XTAL24M,
  11. CLK_CPUPLL,
  12. CLK_SYSPLL,
  13. CLK_VPUPLL,
  14. CLK_DDRPLL,
  15. CLK_MFCPLL,
  16. CLK_AHBPLL,
  17. CLK_GPUPLL,
  18. CLK_DDR,
  19. CLK_CPU,
  20. CLK_AXI,
  21. CLK_AHB,
  22. CLK_APB,
  23. CLK_LCD,
  24. CLK_QOI,
  25. CLK_GPU,
  26. CLK_MFC,
  27. CLK_SDMMC0,
  28. CLK_SDMMC1,
  29. CLK_TIMER,
  30. CLK_TIMER1,
  31. CLK_TIMER2_3,
  32. CLK_UART0,
  33. CLK_UART1,
  34. CLK_UART2,
  35. CLK_UART3,
  36. CLK_SPI0,
  37. CLK_SPI1,
  38. CLK_SPI2,
  39. CLK_PWM,
  40. CLK_ADC,
  41. CLK_ADC1,
  42. CLK_ADC2,
  43. CLK_I2S,
  44. CLK_I2S1,
  45. CLK_RTC,
  46. CLK_ETH,
  47. }eClockID;
  48. typedef enum {
  49. FIXED_CLOCK = 0,
  50. FIXED_FACTOR_CLOCK,
  51. PLL_CLOCK,
  52. SYS_CLOCK,
  53. }eClockType;
  54. typedef enum {
  55. DIVMODE_NOZERO = 0, /* div = div ? div : 1 */
  56. DIVMODE_PLUSONE, /* div = div + 1 */
  57. DIVMODE_DOUBLE, /* div = div * 2 */
  58. DIVMODE_EXPONENT, /* div = 1 << div */
  59. DIVMODE_PONEDOUBLE, /* div = (div + 1) * 2 */
  60. }eDivMode;
  61. void vClkInit(void);
  62. uint32_t ulClkGetRate(uint32_t clkid);
  63. void vClkSetRate(uint32_t clkid, uint32_t freq);
  64. void vClkEnable(uint32_t clkid);
  65. void vClkDisable(uint32_t clkid);
  66. #ifdef __cplusplus
  67. }
  68. #endif
  69. #endif