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