2 * Copyright (C) 2010 ST-Ericsson SA
3 * Licensed under GPLv2.
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>
10 #ifndef _AB8500_GPADC_H
11 #define _AB8500_GPADC_H
13 /* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2
14 * and ADCHwSel[4:0] in GPADCCtrl3 ) */
16 #define BTEMP_BALL 0x02
17 #define MAIN_CHARGER_V 0x03
18 #define ACC_DETECT1 0x04
19 #define ACC_DETECT2 0x05
22 #define MAIN_BAT_V 0x08
24 #define MAIN_CHARGER_C 0x0A
25 #define USB_CHARGER_C 0x0B
29 #define XTAL_TEMP 0x12
30 #define VBAT_TRUE_MEAS 0x13
31 #define BAT_CTRL_AND_IBAT 0x1C
32 #define VBAT_MEAS_AND_IBAT 0x1D
33 #define VBAT_TRUE_MEAS_AND_IBAT 0x1E
34 #define BAT_TEMP_AND_IBAT 0x1F
36 /* Virtual channel used only for ibat convertion to ampere
37 * Battery current conversion (ibat) cannot be requested as a single conversion
38 * but it is always in combination with other input requests
40 #define IBAT_VIRTUAL_CHANNEL 0xFF
47 #define FALLING_EDGE 1
49 /* Arbitrary ADC conversion type constants */
55 struct ab8500_gpadc
*ab8500_gpadc_get(char *name
);
56 int ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc
*gpadc
, u8 channel
,
57 u8 avg_sample
, u8 trig_edge
, u8 trig_timer
, u8 conv_type
);
58 static inline int ab8500_gpadc_convert(struct ab8500_gpadc
*gpadc
, u8 channel
)
60 return ab8500_gpadc_sw_hw_convert(gpadc
, channel
,
61 SAMPLE_16
, 0, 0, ADC_SW
);
64 int ab8500_gpadc_read_raw(struct ab8500_gpadc
*gpadc
, u8 channel
,
65 u8 avg_sample
, u8 trig_edge
, u8 trig_timer
, u8 conv_type
);
66 int ab8500_gpadc_double_read_raw(struct ab8500_gpadc
*gpadc
, u8 channel
,
67 u8 avg_sample
, u8 trig_edge
, u8 trig_timer
, u8 conv_type
,
69 int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc
*gpadc
,
70 u8 channel
, int ad_value
);
71 void ab8540_gpadc_get_otp(struct ab8500_gpadc
*gpadc
,
72 u16
*vmain_l
, u16
*vmain_h
, u16
*btemp_l
, u16
*btemp_h
,
73 u16
*vbat_l
, u16
*vbat_h
, u16
*ibat_l
, u16
*ibat_h
);
75 #endif /* _AB8500_GPADC_H */