linux/include/linux/mfd/wm8350/comparator.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * comparator.h  --  Comparator Aux ADC for Wolfson WM8350 PMIC
   4 *
   5 * Copyright 2007 Wolfson Microelectronics PLC
   6 */
   7
   8#ifndef __LINUX_MFD_WM8350_COMPARATOR_H_
   9#define __LINUX_MFD_WM8350_COMPARATOR_H_
  10
  11/*
  12 * Registers
  13 */
  14
  15#define WM8350_DIGITISER_CONTROL_1              0x90
  16#define WM8350_DIGITISER_CONTROL_2              0x91
  17#define WM8350_AUX1_READBACK                    0x98
  18#define WM8350_AUX2_READBACK                    0x99
  19#define WM8350_AUX3_READBACK                    0x9A
  20#define WM8350_AUX4_READBACK                    0x9B
  21#define WM8350_CHIP_TEMP_READBACK               0x9F
  22#define WM8350_GENERIC_COMPARATOR_CONTROL       0xA3
  23#define WM8350_GENERIC_COMPARATOR_1             0xA4
  24#define WM8350_GENERIC_COMPARATOR_2             0xA5
  25#define WM8350_GENERIC_COMPARATOR_3             0xA6
  26#define WM8350_GENERIC_COMPARATOR_4             0xA7
  27
  28/*
  29 * R144 (0x90) - Digitiser Control (1)
  30 */
  31#define WM8350_AUXADC_CTC                       0x4000
  32#define WM8350_AUXADC_POLL                      0x2000
  33#define WM8350_AUXADC_HIB_MODE                  0x1000
  34#define WM8350_AUXADC_SEL8                      0x0080
  35#define WM8350_AUXADC_SEL7                      0x0040
  36#define WM8350_AUXADC_SEL6                      0x0020
  37#define WM8350_AUXADC_SEL5                      0x0010
  38#define WM8350_AUXADC_SEL4                      0x0008
  39#define WM8350_AUXADC_SEL3                      0x0004
  40#define WM8350_AUXADC_SEL2                      0x0002
  41#define WM8350_AUXADC_SEL1                      0x0001
  42
  43/*
  44 * R145 (0x91) - Digitiser Control (2)
  45 */
  46#define WM8350_AUXADC_MASKMODE_MASK             0x3000
  47#define WM8350_AUXADC_CRATE_MASK                0x0700
  48#define WM8350_AUXADC_CAL                       0x0004
  49#define WM8350_AUX_RBMODE                       0x0002
  50#define WM8350_AUXADC_WAIT                      0x0001
  51
  52/*
  53 * R152 (0x98) - AUX1 Readback
  54 */
  55#define WM8350_AUXADC_SCALE1_MASK               0x6000
  56#define WM8350_AUXADC_REF1                      0x1000
  57#define WM8350_AUXADC_DATA1_MASK                0x0FFF
  58
  59/*
  60 * R153 (0x99) - AUX2 Readback
  61 */
  62#define WM8350_AUXADC_SCALE2_MASK               0x6000
  63#define WM8350_AUXADC_REF2                      0x1000
  64#define WM8350_AUXADC_DATA2_MASK                0x0FFF
  65
  66/*
  67 * R154 (0x9A) - AUX3 Readback
  68 */
  69#define WM8350_AUXADC_SCALE3_MASK               0x6000
  70#define WM8350_AUXADC_REF3                      0x1000
  71#define WM8350_AUXADC_DATA3_MASK                0x0FFF
  72
  73/*
  74 * R155 (0x9B) - AUX4 Readback
  75 */
  76#define WM8350_AUXADC_SCALE4_MASK               0x6000
  77#define WM8350_AUXADC_REF4                      0x1000
  78#define WM8350_AUXADC_DATA4_MASK                0x0FFF
  79
  80/*
  81 * R156 (0x9C) - USB Voltage Readback
  82 */
  83#define WM8350_AUXADC_DATA_USB_MASK             0x0FFF
  84
  85/*
  86 * R157 (0x9D) - LINE Voltage Readback
  87 */
  88#define WM8350_AUXADC_DATA_LINE_MASK            0x0FFF
  89
  90/*
  91 * R158 (0x9E) - BATT Voltage Readback
  92 */
  93#define WM8350_AUXADC_DATA_BATT_MASK            0x0FFF
  94
  95/*
  96 * R159 (0x9F) - Chip Temp Readback
  97 */
  98#define WM8350_AUXADC_DATA_CHIPTEMP_MASK        0x0FFF
  99
 100/*
 101 * R163 (0xA3) - Generic Comparator Control
 102 */
 103#define WM8350_DCMP4_ENA                        0x0008
 104#define WM8350_DCMP3_ENA                        0x0004
 105#define WM8350_DCMP2_ENA                        0x0002
 106#define WM8350_DCMP1_ENA                        0x0001
 107
 108/*
 109 * R164 (0xA4) - Generic comparator 1
 110 */
 111#define WM8350_DCMP1_SRCSEL_MASK                0xE000
 112#define WM8350_DCMP1_GT                         0x1000
 113#define WM8350_DCMP1_THR_MASK                   0x0FFF
 114
 115/*
 116 * R165 (0xA5) - Generic comparator 2
 117 */
 118#define WM8350_DCMP2_SRCSEL_MASK                0xE000
 119#define WM8350_DCMP2_GT                         0x1000
 120#define WM8350_DCMP2_THR_MASK                   0x0FFF
 121
 122/*
 123 * R166 (0xA6) - Generic comparator 3
 124 */
 125#define WM8350_DCMP3_SRCSEL_MASK                0xE000
 126#define WM8350_DCMP3_GT                         0x1000
 127#define WM8350_DCMP3_THR_MASK                   0x0FFF
 128
 129/*
 130 * R167 (0xA7) - Generic comparator 4
 131 */
 132#define WM8350_DCMP4_SRCSEL_MASK                0xE000
 133#define WM8350_DCMP4_GT                         0x1000
 134#define WM8350_DCMP4_THR_MASK                   0x0FFF
 135
 136/*
 137 * Interrupts.
 138 */
 139#define WM8350_IRQ_AUXADC_DATARDY               16
 140#define WM8350_IRQ_AUXADC_DCOMP4                17
 141#define WM8350_IRQ_AUXADC_DCOMP3                18
 142#define WM8350_IRQ_AUXADC_DCOMP2                19
 143#define WM8350_IRQ_AUXADC_DCOMP1                20
 144#define WM8350_IRQ_SYS_HYST_COMP_FAIL           21
 145#define WM8350_IRQ_SYS_CHIP_GT115               22
 146#define WM8350_IRQ_SYS_CHIP_GT140               23
 147
 148/*
 149 * USB/2, LINE & BATT = ((VRTC * 2) / 4095)) * 10e6 uV
 150 * Where VRTC = 2.7 V
 151 */
 152#define WM8350_AUX_COEFF                        1319
 153
 154#define WM8350_AUXADC_AUX1                      0
 155#define WM8350_AUXADC_AUX2                      1
 156#define WM8350_AUXADC_AUX3                      2
 157#define WM8350_AUXADC_AUX4                      3
 158#define WM8350_AUXADC_USB                       4
 159#define WM8350_AUXADC_LINE                      5
 160#define WM8350_AUXADC_BATT                      6
 161#define WM8350_AUXADC_TEMP                      7
 162
 163struct wm8350;
 164
 165/*
 166 * AUX ADC Readback
 167 */
 168int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale,
 169                       int vref);
 170
 171#endif
 172