sunxi_hal_tpadc.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * drivers/input/sensor/sunxi_gpadc.h
  3. *
  4. * Copyright (C) 2016 Allwinner.
  5. * fuzhaoke <fuzhaoke@allwinnertech.com>
  6. *
  7. * SUNXI TPADC Controller Driver Header
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License as
  11. * published by the Free Software Foundation; either version 2 of
  12. * the License, or (at your option) any later version.
  13. */
  14. #ifndef HAL_TPADC_H
  15. #define HAL_TPADC_H
  16. #include "hal_clk.h"
  17. #include "hal_reset.h"
  18. #include "sunxi_hal_common.h"
  19. #include <hal_log.h>
  20. #include <interrupt.h>
  21. #include <tpadc/platform_tpadc.h>
  22. #include <tpadc/common_tpadc.h>
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. #define TPADC_DEBUG
  27. #ifdef TPADC_DEBUG
  28. #define TPADC_INFO(fmt, arg...) hal_log_info(fmt, ##arg)
  29. #else
  30. #define TPADC_INFO(fmt, arg...) do {}while(0)
  31. #endif
  32. #define TPADC_ERR(fmt, arg...) hal_log_err(fmt, ##arg)
  33. typedef enum
  34. {
  35. TPADC_IRQ_ERROR = -4,
  36. TPADC_CHANNEL_ERROR = -3,
  37. TPADC_CLK_ERROR = -2,
  38. TPADC_ERROR = -1,
  39. TPADC_OK = 0,
  40. } hal_tpadc_status_t;
  41. typedef enum
  42. {
  43. DATA_X = 0,
  44. DATA_Y,
  45. DATA_UP,
  46. } data_flag_t;
  47. typedef enum
  48. {
  49. TP_CH_0 = 0,
  50. TP_CH_1,
  51. TP_CH_2,
  52. TP_CH_3,
  53. TP_CH_MAX,
  54. } tp_channel_id;
  55. typedef int (*tpadc_usercallback_t)(uint32_t data, data_flag_t flag);
  56. typedef int (*tpadc_adc_usercallback_t)(uint32_t data, tp_channel_id channel);
  57. typedef struct hal_tpadc
  58. {
  59. unsigned long reg_base;
  60. uint32_t channel_num;
  61. uint32_t irq_num;
  62. uint32_t rate;
  63. hal_clk_id_t bus_clk_id;
  64. hal_clk_id_t mod_clk_id;
  65. hal_reset_id_t rst_clk_id;
  66. hal_clk_t bus_clk;
  67. hal_clk_t mod_clk;
  68. struct reset_control *rst_clk;
  69. tpadc_usercallback_t callback;
  70. tpadc_adc_usercallback_t adc_callback[TP_CH_MAX];
  71. } hal_tpadc_t;
  72. hal_tpadc_status_t hal_tpadc_init(void);
  73. hal_tpadc_status_t hal_tpadc_exit(void);
  74. hal_tpadc_status_t hal_tpadc_register_callback(tpadc_usercallback_t user_callback);
  75. hal_tpadc_status_t hal_tpadc_adc_init(void);
  76. hal_tpadc_status_t hal_tpadc_adc_channel_init(tp_channel_id channel);
  77. hal_tpadc_status_t hal_tpadc_adc_channel_exit(tp_channel_id channel);
  78. hal_tpadc_status_t hal_tpadc_adc_exit(void);
  79. hal_tpadc_status_t hal_tpadc_adc_register_callback(tp_channel_id channel , tpadc_adc_usercallback_t user_callback);
  80. hal_tpadc_status_t hal_tpadc_resume(void);
  81. hal_tpadc_status_t hal_tpadc_suspend(void);
  82. #ifdef __cplusplus
  83. }
  84. #endif
  85. #endif