]>
Commit | Line | Data |
---|---|---|
f50a7f3d | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
dae2db30 AM |
2 | /* |
3 | * Copyright (C) 2010 ST-Ericsson SA | |
dae2db30 AM |
4 | * |
5 | * Author: Arun R Murthy <arun.murthy@stericsson.com> | |
6321992c | 6 | * Author: Daniel Willerud <daniel.willerud@stericsson.com> |
73482346 | 7 | * Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com> |
dae2db30 AM |
8 | */ |
9 | ||
10 | #ifndef _AB8500_GPADC_H | |
11 | #define _AB8500_GPADC_H | |
12 | ||
73482346 LJ |
13 | /* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2 |
14 | * and ADCHwSel[4:0] in GPADCCtrl3 ) */ | |
e4bffe8d LJ |
15 | #define BAT_CTRL 0x01 |
16 | #define BTEMP_BALL 0x02 | |
17 | #define MAIN_CHARGER_V 0x03 | |
18 | #define ACC_DETECT1 0x04 | |
19 | #define ACC_DETECT2 0x05 | |
20 | #define ADC_AUX1 0x06 | |
21 | #define ADC_AUX2 0x07 | |
22 | #define MAIN_BAT_V 0x08 | |
23 | #define VBUS_V 0x09 | |
24 | #define MAIN_CHARGER_C 0x0A | |
25 | #define USB_CHARGER_C 0x0B | |
26 | #define BK_BAT_V 0x0C | |
27 | #define DIE_TEMP 0x0D | |
28 | #define USB_ID 0x0E | |
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 | |
35 | ||
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 | |
39 | */ | |
40 | #define IBAT_VIRTUAL_CHANNEL 0xFF | |
dae2db30 | 41 | |
73482346 LJ |
42 | #define SAMPLE_1 1 |
43 | #define SAMPLE_4 4 | |
44 | #define SAMPLE_8 8 | |
45 | #define SAMPLE_16 16 | |
46 | #define RISING_EDGE 0 | |
47 | #define FALLING_EDGE 1 | |
48 | ||
49 | /* Arbitrary ADC conversion type constants */ | |
50 | #define ADC_SW 0 | |
51 | #define ADC_HW 1 | |
52 | ||
6321992c DW |
53 | struct ab8500_gpadc; |
54 | ||
55 | struct ab8500_gpadc *ab8500_gpadc_get(char *name); | |
73482346 LJ |
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) | |
59 | { | |
60 | return ab8500_gpadc_sw_hw_convert(gpadc, channel, | |
61 | SAMPLE_16, 0, 0, ADC_SW); | |
62 | } | |
63 | ||
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); | |
e4bffe8d LJ |
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, | |
68 | int *ibat); | |
bd4a40b5 | 69 | int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc, |
73482346 | 70 | u8 channel, int ad_value); |
bc6b4132 LJ |
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); | |
dae2db30 AM |
74 | |
75 | #endif /* _AB8500_GPADC_H */ |