sunxi_hal_ledc.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef __HAL_LEDC_H
  2. #define __HAL_LEDC_H
  3. #include "sunxi_hal_common.h"
  4. #include "ledc/platform_ledc.h"
  5. #include "ledc/common_ledc.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define SUNXI_LEDC_FIFO_DEPTH 32
  10. enum ledc_output_mode_val {
  11. LEDC_OUTPUT_GRB = 0 << 6,
  12. LEDC_OUTPUT_GBR = 1 << 6,
  13. LEDC_OUTPUT_RGB = 2 << 6,
  14. LEDC_OUTPUT_RBG = 3 << 6,
  15. LEDC_OUTPUT_BGR = 4 << 6,
  16. LEDC_OUTPUT_BRG = 5 << 6
  17. };
  18. enum {
  19. DEBUG_INIT = 1U << 0,
  20. DEBUG_SUSPEND = 1U << 1,
  21. DEBUG_INFO = 1U << 2,
  22. DEBUG_INFO1 = 1U << 3,
  23. DEBUG_INFO2 = 1U << 4,
  24. };
  25. struct ledc_config {
  26. unsigned int led_count;
  27. unsigned int reset_ns;
  28. unsigned int t1h_ns;
  29. unsigned int t1l_ns;
  30. unsigned int t0h_ns;
  31. unsigned int t0l_ns;
  32. unsigned int wait_time0_ns;
  33. unsigned long long wait_time1_ns;
  34. unsigned int wait_data_time_ns;
  35. char *output_mode;
  36. unsigned int *data;
  37. unsigned int length;
  38. };
  39. enum ledc_irq_ctrl_reg {
  40. LEDC_TRANS_FINISH_INT_EN = (1 << 0),
  41. LEDC_FIFO_CPUREQ_INT_EN = (1 << 1),
  42. LEDC_WAITDATA_TIMEOUT_INT_EN = (1 << 3),
  43. LEDC_FIFO_OVERFLOW_INT_EN = (1 << 4),
  44. LEDC_GLOBAL_INT_EN = (1 << 5),
  45. };
  46. enum ledc_irq_status_reg {
  47. LEDC_TRANS_FINISH_INT = (1 << 0),
  48. LEDC_FIFO_CPUREQ_INT = (1 << 1),
  49. LEDC_WAITDATA_TIMEOUT_INT = (1 << 3),
  50. LEDC_FIFO_OVERFLOW_INT = (1 << 4),
  51. LEDC_FIFO_FULL = (1 << 16),
  52. LEDC_FIFO_EMPTY = (1 << 17),
  53. };
  54. void hal_ledc_init(void);
  55. void hal_ledc_deinit(void);
  56. void hal_ledc_trans_data(struct ledc_config *ledc);
  57. void hal_ledc_clear_all_irq(void);
  58. unsigned int hal_ledc_get_irq_status(void);
  59. void hal_ledc_dma_callback(void *para);
  60. void hal_ledc_reset(void);
  61. #ifdef __cplusplus
  62. }
  63. #endif
  64. #endif