clock.h 957 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 4
  8. typedef enum {
  9. CLK_XTAL32K = 0,
  10. CLK_XTAL24M,
  11. CLK_240MHZ,
  12. CLK_12MHZ,
  13. CLK_6MHZ,
  14. CLK_CPUPLL,
  15. CLK_SYSPLL,
  16. CLK_AUDPLL,
  17. CLK_DDR,
  18. CLK_CPU,
  19. CLK_H2X,
  20. CLK_AHB,
  21. CLK_APB,
  22. CLK_RTC,
  23. CLK_SPI0,
  24. CLK_SPI1,
  25. CLK_SDMMC0,
  26. CLK_LCD,
  27. CLK_UART1,
  28. CLK_UART2,
  29. CLK_UART3,
  30. CLK_TIMER,
  31. CLK_JPG,
  32. CLK_PWM,
  33. CLK_CAN0,
  34. CLK_CAN1,
  35. CLK_ADC,
  36. }eClockID;
  37. typedef enum {
  38. FIXED_CLOCK = 0,
  39. FIXED_FACTOR_CLOCK,
  40. PLL_CLOCK,
  41. SYS_CLOCK,
  42. }eClockType;
  43. typedef enum {
  44. DIVMODE_NOZERO = 0, /* div = div ? div : 1 */
  45. DIVMODE_PLUSONE, /* div = div + 1 */
  46. DIVMODE_DOUBLE, /* div = div * 2 */
  47. DIVMODE_EXPONENT, /* div = 1 << div */
  48. DIVMODE_PONEDOUBLE, /* div = (div + 1) * 2 */
  49. }eDivMode;
  50. void vClkInit(void);
  51. uint32_t ulClkGetRate(uint32_t clkid);
  52. void vClkSetRate(uint32_t clkid, uint32_t freq);
  53. #ifdef __cplusplus
  54. }
  55. #endif
  56. #endif