|  | /* | 
|  | * Copyright (C) 2010 ST-Ericsson SA | 
|  | * Licensed under GPLv2. | 
|  | * | 
|  | * Author: Arun R Murthy <arun.murthy@stericsson.com> | 
|  | * Author: Daniel Willerud <daniel.willerud@stericsson.com> | 
|  | * Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com> | 
|  | */ | 
|  |  | 
|  | #ifndef	_AB8500_GPADC_H | 
|  | #define _AB8500_GPADC_H | 
|  |  | 
|  | /* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2 | 
|  | * and ADCHwSel[4:0] in GPADCCtrl3 ) */ | 
|  | #define BAT_CTRL		0x01 | 
|  | #define BTEMP_BALL		0x02 | 
|  | #define MAIN_CHARGER_V		0x03 | 
|  | #define ACC_DETECT1		0x04 | 
|  | #define ACC_DETECT2		0x05 | 
|  | #define ADC_AUX1		0x06 | 
|  | #define ADC_AUX2		0x07 | 
|  | #define MAIN_BAT_V		0x08 | 
|  | #define VBUS_V			0x09 | 
|  | #define MAIN_CHARGER_C		0x0A | 
|  | #define USB_CHARGER_C		0x0B | 
|  | #define BK_BAT_V		0x0C | 
|  | #define DIE_TEMP		0x0D | 
|  | #define USB_ID			0x0E | 
|  | #define XTAL_TEMP		0x12 | 
|  | #define VBAT_TRUE_MEAS		0x13 | 
|  | #define BAT_CTRL_AND_IBAT	0x1C | 
|  | #define VBAT_MEAS_AND_IBAT	0x1D | 
|  | #define VBAT_TRUE_MEAS_AND_IBAT	0x1E | 
|  | #define BAT_TEMP_AND_IBAT	0x1F | 
|  |  | 
|  | /* Virtual channel used only for ibat convertion to ampere | 
|  | * Battery current conversion (ibat) cannot be requested as a single conversion | 
|  | *  but it is always in combination with other input requests | 
|  | */ | 
|  | #define IBAT_VIRTUAL_CHANNEL		0xFF | 
|  |  | 
|  | #define SAMPLE_1        1 | 
|  | #define SAMPLE_4        4 | 
|  | #define SAMPLE_8        8 | 
|  | #define SAMPLE_16       16 | 
|  | #define RISING_EDGE     0 | 
|  | #define FALLING_EDGE    1 | 
|  |  | 
|  | /* Arbitrary ADC conversion type constants */ | 
|  | #define ADC_SW				0 | 
|  | #define ADC_HW				1 | 
|  |  | 
|  | struct ab8500_gpadc; | 
|  |  | 
|  | struct ab8500_gpadc *ab8500_gpadc_get(char *name); | 
|  | int ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc *gpadc, u8 channel, | 
|  | u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type); | 
|  | static inline int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel) | 
|  | { | 
|  | return ab8500_gpadc_sw_hw_convert(gpadc, channel, | 
|  | SAMPLE_16, 0, 0, ADC_SW); | 
|  | } | 
|  |  | 
|  | int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel, | 
|  | u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type); | 
|  | int ab8500_gpadc_double_read_raw(struct ab8500_gpadc *gpadc, u8 channel, | 
|  | u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type, | 
|  | int *ibat); | 
|  | int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc, | 
|  | u8 channel, int ad_value); | 
|  | void ab8540_gpadc_get_otp(struct ab8500_gpadc *gpadc, | 
|  | u16 *vmain_l, u16 *vmain_h, u16 *btemp_l, u16 *btemp_h, | 
|  | u16 *vbat_l, u16 *vbat_h, u16 *ibat_l, u16 *ibat_h); | 
|  |  | 
|  | #endif /* _AB8500_GPADC_H */ |