Commit 73482346 authored by Lee Jones's avatar Lee Jones

mfd: ab8500-gpadc: Add gpadc hw conversion

Add the support of gpacd hw conversion and make the number of
sample configurable.
Signed-off-by: default avatarM'boumba Cedric Madianga <cedric.madianga@stericsson.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Reviewed-by: default avatarMattias WALLIN <mattias.wallin@stericsson.com>
Tested-by: default avatarMichel JAOUEN <michel.jaouen@stericsson.com>
Acked-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent d89cc5aa
This diff is collapsed.
This diff is collapsed.
...@@ -4,12 +4,14 @@ ...@@ -4,12 +4,14 @@
* *
* Author: Arun R Murthy <arun.murthy@stericsson.com> * Author: Arun R Murthy <arun.murthy@stericsson.com>
* Author: Daniel Willerud <daniel.willerud@stericsson.com> * Author: Daniel Willerud <daniel.willerud@stericsson.com>
* Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com>
*/ */
#ifndef _AB8500_GPADC_H #ifndef _AB8500_GPADC_H
#define _AB8500_GPADC_H #define _AB8500_GPADC_H
/* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2) */ /* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2
* and ADCHwSel[4:0] in GPADCCtrl3 ) */
#define BAT_CTRL 0x01 #define BAT_CTRL 0x01
#define BTEMP_BALL 0x02 #define BTEMP_BALL 0x02
#define MAIN_CHARGER_V 0x03 #define MAIN_CHARGER_V 0x03
...@@ -24,12 +26,32 @@ ...@@ -24,12 +26,32 @@
#define BK_BAT_V 0x0C #define BK_BAT_V 0x0C
#define DIE_TEMP 0x0D #define DIE_TEMP 0x0D
#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;
struct ab8500_gpadc *ab8500_gpadc_get(char *name); struct ab8500_gpadc *ab8500_gpadc_get(char *name);
int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel); int ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc *gpadc, u8 channel,
int ab8500_gpadc_read_raw(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_ad_to_voltage(struct ab8500_gpadc *gpadc, int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc,
u8 channel, int ad_value); u8 channel, int ad_value);
#endif /* _AB8500_GPADC_H */ #endif /* _AB8500_GPADC_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment