]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - include/linux/mfd/abx500/ab8500-gpadc.h
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[mirror_ubuntu-jammy-kernel.git] / include / linux / mfd / abx500 / ab8500-gpadc.h
CommitLineData
f50a7f3d 1/* SPDX-License-Identifier: GPL-2.0-only */
dae2db30
AM
2/*
3 * Copyright (C) 2010 ST-Ericsson SA
dae2db30
AM
4 *
5 * Author: Arun R Murthy <arun.murthy@stericsson.com>
6321992c 6 * Author: Daniel Willerud <daniel.willerud@stericsson.com>
73482346 7 * Author: M'boumba Cedric Madianga <cedric.madianga@stericsson.com>
dae2db30
AM
8 */
9
10#ifndef _AB8500_GPADC_H
11#define _AB8500_GPADC_H
12
73482346
LJ
13/* GPADC source: From datasheet(ADCSwSel[4:0] in GPADCCtrl2
14 * and ADCHwSel[4:0] in GPADCCtrl3 ) */
e4bffe8d
LJ
15#define BAT_CTRL 0x01
16#define BTEMP_BALL 0x02
17#define MAIN_CHARGER_V 0x03
18#define ACC_DETECT1 0x04
19#define ACC_DETECT2 0x05
20#define ADC_AUX1 0x06
21#define ADC_AUX2 0x07
22#define MAIN_BAT_V 0x08
23#define VBUS_V 0x09
24#define MAIN_CHARGER_C 0x0A
25#define USB_CHARGER_C 0x0B
26#define BK_BAT_V 0x0C
27#define DIE_TEMP 0x0D
28#define USB_ID 0x0E
29#define XTAL_TEMP 0x12
30#define VBAT_TRUE_MEAS 0x13
31#define BAT_CTRL_AND_IBAT 0x1C
32#define VBAT_MEAS_AND_IBAT 0x1D
33#define VBAT_TRUE_MEAS_AND_IBAT 0x1E
34#define BAT_TEMP_AND_IBAT 0x1F
35
36/* Virtual channel used only for ibat convertion to ampere
37 * Battery current conversion (ibat) cannot be requested as a single conversion
38 * but it is always in combination with other input requests
39 */
40#define IBAT_VIRTUAL_CHANNEL 0xFF
dae2db30 41
73482346
LJ
42#define SAMPLE_1 1
43#define SAMPLE_4 4
44#define SAMPLE_8 8
45#define SAMPLE_16 16
46#define RISING_EDGE 0
47#define FALLING_EDGE 1
48
49/* Arbitrary ADC conversion type constants */
50#define ADC_SW 0
51#define ADC_HW 1
52
6321992c
DW
53struct ab8500_gpadc;
54
55struct ab8500_gpadc *ab8500_gpadc_get(char *name);
73482346
LJ
56int ab8500_gpadc_sw_hw_convert(struct ab8500_gpadc *gpadc, u8 channel,
57 u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
58static inline int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel)
59{
60 return ab8500_gpadc_sw_hw_convert(gpadc, channel,
61 SAMPLE_16, 0, 0, ADC_SW);
62}
63
64int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel,
65 u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type);
e4bffe8d
LJ
66int ab8500_gpadc_double_read_raw(struct ab8500_gpadc *gpadc, u8 channel,
67 u8 avg_sample, u8 trig_edge, u8 trig_timer, u8 conv_type,
68 int *ibat);
bd4a40b5 69int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc,
73482346 70 u8 channel, int ad_value);
bc6b4132
LJ
71void ab8540_gpadc_get_otp(struct ab8500_gpadc *gpadc,
72 u16 *vmain_l, u16 *vmain_h, u16 *btemp_l, u16 *btemp_h,
73 u16 *vbat_l, u16 *vbat_h, u16 *ibat_l, u16 *ibat_h);
dae2db30
AM
74
75#endif /* _AB8500_GPADC_H */