1dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy/*
2dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy * Copyright (C) 2010 ST-Ericsson SA
3dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy * Licensed under GPLv2.
4dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy *
5dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy * Author: Arun R Murthy <arun.murthy@stericsson.com>
66321992cd3c56bab6cc52e3384951e12616805a1Daniel Willerud * Author: Daniel Willerud <daniel.willerud@stericsson.com>
7734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones * Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com>
8dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy */
9dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy
10dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy#ifndef	_AB8500_GPADC_H
11dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy#define _AB8500_GPADC_H
12dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy
13734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones/* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2
14734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones * and ADCHwSel[4:0] in GPADCCtrl3 ) */
15e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define BAT_CTRL		0x01
16e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define BTEMP_BALL		0x02
17e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define MAIN_CHARGER_V		0x03
18e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define ACC_DETECT1		0x04
19e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define ACC_DETECT2		0x05
20e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define ADC_AUX1		0x06
21e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define ADC_AUX2		0x07
22e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define MAIN_BAT_V		0x08
23e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define VBUS_V			0x09
24e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define MAIN_CHARGER_C		0x0A
25e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define USB_CHARGER_C		0x0B
26e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define BK_BAT_V		0x0C
27e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define DIE_TEMP		0x0D
28e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define USB_ID			0x0E
29e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define XTAL_TEMP		0x12
30e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define VBAT_TRUE_MEAS		0x13
31e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define BAT_CTRL_AND_IBAT	0x1C
32e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define VBAT_MEAS_AND_IBAT	0x1D
33e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define VBAT_TRUE_MEAS_AND_IBAT	0x1E
34e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define BAT_TEMP_AND_IBAT	0x1F
35e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones
36e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones/* Virtual channel used only for ibat convertion to ampere
37e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones * Battery current conversion (ibat) cannot be requested as a single conversion
38e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones *  but it is always in combination with other input requests
39e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones */
40e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones#define IBAT_VIRTUAL_CHANNEL		0xFF
41dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy
42734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define SAMPLE_1        1
43734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define SAMPLE_4        4
44734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define SAMPLE_8        8
45734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define SAMPLE_16       16
46734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define RISING_EDGE     0
47734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define FALLING_EDGE    1
48734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones
49734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones/* Arbitrary ADC conversion type constants */
50734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define ADC_SW				0
51734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones#define ADC_HW				1
52734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones
536321992cd3c56bab6cc52e3384951e12616805a1Daniel Willerudstruct ab8500_gpadc;
546321992cd3c56bab6cc52e3384951e12616805a1Daniel Willerud
556321992cd3c56bab6cc52e3384951e12616805a1Daniel Willerudstruct ab8500_gpadc *ab8500_gpadc_get(char *name);
56734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jonesint ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc *gpadc, u8 channel,
57734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones		u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
58734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jonesstatic inline int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel)
59734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones{
60734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones	return ab8500_gpadc_sw_hw_convert(gpadc, channel,
61734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones			SAMPLE_16, 0, 0, ADC_SW);
62734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones}
63734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones
64734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jonesint ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel,
65734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones		u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
66e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jonesint ab8500_gpadc_double_read_raw(struct ab8500_gpadc *gpadc, u8 channel,
67e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones		u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type,
68e4bffe8d8ad9856143b6e941a17870aee37413d7Lee Jones		int *ibat);
69bd4a40b57b13907b4fe01b6c605be56d8f3733feKarl Komierowskiint ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc,
70734823462590335cbf5c6a1fa5cae84a881dcb43Lee Jones		u8 channel, int ad_value);
71bc6b4132bcae4b8e59766ba2dae8f377009b26d0Lee Jonesvoid ab8540_gpadc_get_otp(struct ab8500_gpadc *gpadc,
72bc6b4132bcae4b8e59766ba2dae8f377009b26d0Lee Jones			u16 *vmain_l, u16 *vmain_h, u16 *btemp_l, u16 *btemp_h,
73bc6b4132bcae4b8e59766ba2dae8f377009b26d0Lee Jones			u16 *vbat_l, u16 *vbat_h, u16 *ibat_l, u16 *ibat_h);
74dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy
75dae2db30c114cd0dec59b4130c315c9cce351741Arun Murthy#endif /* _AB8500_GPADC_H */
76