76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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 */
 |