ab8500-gpadc.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (C) 2010 ST-Ericsson SA
  3. * Licensed under GPLv2.
  4. *
  5. * Author: Arun R Murthy <arun.murthy@stericsson.com>
  6. * Author: Daniel Willerud <daniel.willerud@stericsson.com>
  7. * Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com>
  8. */
  9. #ifndef _AB8500_GPADC_H
  10. #define _AB8500_GPADC_H
  11. /* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2
  12. * and ADCHwSel[4:0] in GPADCCtrl3 ) */
  13. #define BAT_CTRL 0x01
  14. #define BTEMP_BALL 0x02
  15. #define MAIN_CHARGER_V 0x03
  16. #define ACC_DETECT1 0x04
  17. #define ACC_DETECT2 0x05
  18. #define ADC_AUX1 0x06
  19. #define ADC_AUX2 0x07
  20. #define MAIN_BAT_V 0x08
  21. #define VBUS_V 0x09
  22. #define MAIN_CHARGER_C 0x0A
  23. #define USB_CHARGER_C 0x0B
  24. #define BK_BAT_V 0x0C
  25. #define DIE_TEMP 0x0D
  26. #define SAMPLE_1 1
  27. #define SAMPLE_4 4
  28. #define SAMPLE_8 8
  29. #define SAMPLE_16 16
  30. #define RISING_EDGE 0
  31. #define FALLING_EDGE 1
  32. /* Arbitrary ADC conversion type constants */
  33. #define ADC_SW 0
  34. #define ADC_HW 1
  35. struct ab8500_gpadc;
  36. struct ab8500_gpadc *ab8500_gpadc_get(char *name);
  37. int ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc *gpadc, u8 channel,
  38. u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
  39. static inline int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel)
  40. {
  41. return ab8500_gpadc_sw_hw_convert(gpadc, channel,
  42. SAMPLE_16, 0, 0, ADC_SW);
  43. }
  44. int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel,
  45. u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
  46. int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc,
  47. u8 channel, int ad_value);
  48. #endif /* _AB8500_GPADC_H */