Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * comparator.h  --  Comparator Aux ADC for Wolfson WM8350 PMIC
0004  *
0005  * Copyright 2007 Wolfson Microelectronics PLC
0006  */
0007 
0008 #ifndef __LINUX_MFD_WM8350_COMPARATOR_H_
0009 #define __LINUX_MFD_WM8350_COMPARATOR_H_
0010 
0011 /*
0012  * Registers
0013  */
0014 
0015 #define WM8350_DIGITISER_CONTROL_1              0x90
0016 #define WM8350_DIGITISER_CONTROL_2              0x91
0017 #define WM8350_AUX1_READBACK                    0x98
0018 #define WM8350_AUX2_READBACK                    0x99
0019 #define WM8350_AUX3_READBACK                    0x9A
0020 #define WM8350_AUX4_READBACK                    0x9B
0021 #define WM8350_CHIP_TEMP_READBACK               0x9F
0022 #define WM8350_GENERIC_COMPARATOR_CONTROL       0xA3
0023 #define WM8350_GENERIC_COMPARATOR_1             0xA4
0024 #define WM8350_GENERIC_COMPARATOR_2             0xA5
0025 #define WM8350_GENERIC_COMPARATOR_3             0xA6
0026 #define WM8350_GENERIC_COMPARATOR_4             0xA7
0027 
0028 /*
0029  * R144 (0x90) - Digitiser Control (1)
0030  */
0031 #define WM8350_AUXADC_CTC                       0x4000
0032 #define WM8350_AUXADC_POLL                      0x2000
0033 #define WM8350_AUXADC_HIB_MODE                  0x1000
0034 #define WM8350_AUXADC_SEL8                      0x0080
0035 #define WM8350_AUXADC_SEL7                      0x0040
0036 #define WM8350_AUXADC_SEL6                      0x0020
0037 #define WM8350_AUXADC_SEL5                      0x0010
0038 #define WM8350_AUXADC_SEL4                      0x0008
0039 #define WM8350_AUXADC_SEL3                      0x0004
0040 #define WM8350_AUXADC_SEL2                      0x0002
0041 #define WM8350_AUXADC_SEL1                      0x0001
0042 
0043 /*
0044  * R145 (0x91) - Digitiser Control (2)
0045  */
0046 #define WM8350_AUXADC_MASKMODE_MASK             0x3000
0047 #define WM8350_AUXADC_CRATE_MASK                0x0700
0048 #define WM8350_AUXADC_CAL                       0x0004
0049 #define WM8350_AUX_RBMODE                       0x0002
0050 #define WM8350_AUXADC_WAIT                      0x0001
0051 
0052 /*
0053  * R152 (0x98) - AUX1 Readback
0054  */
0055 #define WM8350_AUXADC_SCALE1_MASK               0x6000
0056 #define WM8350_AUXADC_REF1                      0x1000
0057 #define WM8350_AUXADC_DATA1_MASK                0x0FFF
0058 
0059 /*
0060  * R153 (0x99) - AUX2 Readback
0061  */
0062 #define WM8350_AUXADC_SCALE2_MASK               0x6000
0063 #define WM8350_AUXADC_REF2                      0x1000
0064 #define WM8350_AUXADC_DATA2_MASK                0x0FFF
0065 
0066 /*
0067  * R154 (0x9A) - AUX3 Readback
0068  */
0069 #define WM8350_AUXADC_SCALE3_MASK               0x6000
0070 #define WM8350_AUXADC_REF3                      0x1000
0071 #define WM8350_AUXADC_DATA3_MASK                0x0FFF
0072 
0073 /*
0074  * R155 (0x9B) - AUX4 Readback
0075  */
0076 #define WM8350_AUXADC_SCALE4_MASK               0x6000
0077 #define WM8350_AUXADC_REF4                      0x1000
0078 #define WM8350_AUXADC_DATA4_MASK                0x0FFF
0079 
0080 /*
0081  * R156 (0x9C) - USB Voltage Readback
0082  */
0083 #define WM8350_AUXADC_DATA_USB_MASK             0x0FFF
0084 
0085 /*
0086  * R157 (0x9D) - LINE Voltage Readback
0087  */
0088 #define WM8350_AUXADC_DATA_LINE_MASK            0x0FFF
0089 
0090 /*
0091  * R158 (0x9E) - BATT Voltage Readback
0092  */
0093 #define WM8350_AUXADC_DATA_BATT_MASK            0x0FFF
0094 
0095 /*
0096  * R159 (0x9F) - Chip Temp Readback
0097  */
0098 #define WM8350_AUXADC_DATA_CHIPTEMP_MASK        0x0FFF
0099 
0100 /*
0101  * R163 (0xA3) - Generic Comparator Control
0102  */
0103 #define WM8350_DCMP4_ENA                        0x0008
0104 #define WM8350_DCMP3_ENA                        0x0004
0105 #define WM8350_DCMP2_ENA                        0x0002
0106 #define WM8350_DCMP1_ENA                        0x0001
0107 
0108 /*
0109  * R164 (0xA4) - Generic comparator 1
0110  */
0111 #define WM8350_DCMP1_SRCSEL_MASK                0xE000
0112 #define WM8350_DCMP1_GT                         0x1000
0113 #define WM8350_DCMP1_THR_MASK                   0x0FFF
0114 
0115 /*
0116  * R165 (0xA5) - Generic comparator 2
0117  */
0118 #define WM8350_DCMP2_SRCSEL_MASK                0xE000
0119 #define WM8350_DCMP2_GT                         0x1000
0120 #define WM8350_DCMP2_THR_MASK                   0x0FFF
0121 
0122 /*
0123  * R166 (0xA6) - Generic comparator 3
0124  */
0125 #define WM8350_DCMP3_SRCSEL_MASK                0xE000
0126 #define WM8350_DCMP3_GT                         0x1000
0127 #define WM8350_DCMP3_THR_MASK                   0x0FFF
0128 
0129 /*
0130  * R167 (0xA7) - Generic comparator 4
0131  */
0132 #define WM8350_DCMP4_SRCSEL_MASK                0xE000
0133 #define WM8350_DCMP4_GT                         0x1000
0134 #define WM8350_DCMP4_THR_MASK                   0x0FFF
0135 
0136 /*
0137  * Interrupts.
0138  */
0139 #define WM8350_IRQ_AUXADC_DATARDY       16
0140 #define WM8350_IRQ_AUXADC_DCOMP4        17
0141 #define WM8350_IRQ_AUXADC_DCOMP3        18
0142 #define WM8350_IRQ_AUXADC_DCOMP2        19
0143 #define WM8350_IRQ_AUXADC_DCOMP1        20
0144 #define WM8350_IRQ_SYS_HYST_COMP_FAIL       21
0145 #define WM8350_IRQ_SYS_CHIP_GT115       22
0146 #define WM8350_IRQ_SYS_CHIP_GT140       23
0147 
0148 /*
0149  * USB/2, LINE & BATT = ((VRTC * 2) / 4095)) * 10e6 uV
0150  * Where VRTC = 2.7 V
0151  */
0152 #define WM8350_AUX_COEFF            1319
0153 
0154 #define WM8350_AUXADC_AUX1          0
0155 #define WM8350_AUXADC_AUX2          1
0156 #define WM8350_AUXADC_AUX3          2
0157 #define WM8350_AUXADC_AUX4          3
0158 #define WM8350_AUXADC_USB           4
0159 #define WM8350_AUXADC_LINE          5
0160 #define WM8350_AUXADC_BATT          6
0161 #define WM8350_AUXADC_TEMP          7
0162 
0163 struct wm8350;
0164 
0165 /*
0166  * AUX ADC Readback
0167  */
0168 int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale,
0169                int vref);
0170 
0171 #endif