~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/mfd/wm8994/pdata.h

Version: ~ [ linux-5.5-rc7 ] ~ [ linux-5.4.13 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.97 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.166 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.210 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.210 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.81 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * include/linux/mfd/wm8994/pdata.h -- Platform data for WM8994
  3  *
  4  * Copyright 2009 Wolfson Microelectronics PLC.
  5  *
  6  * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
  7  *
  8  *  This program is free software; you can redistribute  it and/or modify it
  9  *  under  the terms of  the GNU General  Public License as published by the
 10  *  Free Software Foundation;  either version 2 of the  License, or (at your
 11  *  option) any later version.
 12  *
 13  */
 14 
 15 #ifndef __MFD_WM8994_PDATA_H__
 16 #define __MFD_WM8994_PDATA_H__
 17 
 18 #define WM8994_NUM_LDO   2
 19 #define WM8994_NUM_GPIO 11
 20 
 21 struct wm8994_ldo_pdata {
 22         /** GPIOs to enable regulator, 0 or less if not available */
 23         int enable;
 24 
 25         const struct regulator_init_data *init_data;
 26 };
 27 
 28 #define WM8994_CONFIGURE_GPIO 0x10000
 29 
 30 #define WM8994_DRC_REGS 5
 31 #define WM8994_EQ_REGS  20
 32 #define WM8958_MBC_CUTOFF_REGS 20
 33 #define WM8958_MBC_COEFF_REGS  48
 34 #define WM8958_MBC_COMBINED_REGS 56
 35 #define WM8958_VSS_HPF_REGS 2
 36 #define WM8958_VSS_REGS 148
 37 #define WM8958_ENH_EQ_REGS 32
 38 
 39 /**
 40  * DRC configurations are specified with a label and a set of register
 41  * values to write (the enable bits will be ignored).  At runtime an
 42  * enumerated control will be presented for each DRC block allowing
 43  * the user to choose the configration to use.
 44  *
 45  * Configurations may be generated by hand or by using the DRC control
 46  * panel provided by the WISCE - see  http://www.wolfsonmicro.com/wisce/
 47  * for details.
 48  */
 49 struct wm8994_drc_cfg {
 50         const char *name;
 51         u16 regs[WM8994_DRC_REGS];
 52 };
 53 
 54 /**
 55  * ReTune Mobile configurations are specified with a label, sample
 56  * rate and set of values to write (the enable bits will be ignored).
 57  *
 58  * Configurations are expected to be generated using the ReTune Mobile
 59  * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/
 60  */
 61 struct wm8994_retune_mobile_cfg {
 62         const char *name;
 63         unsigned int rate;
 64         u16 regs[WM8994_EQ_REGS];
 65 };
 66 
 67 /**
 68  * Multiband compressor configurations are specified with a label and
 69  * two sets of values to write.  Configurations are expected to be
 70  * generated using the multiband compressor configuration panel in
 71  * WISCE - see http://www.wolfsonmicro.com/wisce/
 72  */
 73 struct wm8958_mbc_cfg {
 74         const char *name;
 75         u16 cutoff_regs[WM8958_MBC_CUTOFF_REGS];
 76         u16 coeff_regs[WM8958_MBC_COEFF_REGS];
 77 
 78         /* Coefficient layout when using MBC+VSS firmware */
 79         u16 combined_regs[WM8958_MBC_COMBINED_REGS];
 80 };
 81 
 82 /**
 83  * VSS HPF configurations are specified with a label and two values to
 84  * write.  Configurations are expected to be generated using the
 85  * multiband compressor configuration panel in WISCE - see
 86  * http://www.wolfsonmicro.com/wisce/
 87  */
 88 struct wm8958_vss_hpf_cfg {
 89         const char *name;
 90         u16 regs[WM8958_VSS_HPF_REGS];
 91 };
 92 
 93 /**
 94  * VSS configurations are specified with a label and array of values
 95  * to write.  Configurations are expected to be generated using the
 96  * multiband compressor configuration panel in WISCE - see
 97  * http://www.wolfsonmicro.com/wisce/
 98  */
 99 struct wm8958_vss_cfg {
100         const char *name;
101         u16 regs[WM8958_VSS_REGS];
102 };
103 
104 /**
105  * Enhanced EQ configurations are specified with a label and array of
106  * values to write.  Configurations are expected to be generated using
107  * the multiband compressor configuration panel in WISCE - see
108  * http://www.wolfsonmicro.com/wisce/
109  */
110 struct wm8958_enh_eq_cfg {
111         const char *name;
112         u16 regs[WM8958_ENH_EQ_REGS];
113 };
114 
115 /**
116  * Microphone detection rates, used to tune response rates and power
117  * consumption for WM8958/WM1811 microphone detection.
118  *
119  * @sysclk: System clock rate to use this configuration for.
120  * @idle: True if this configuration should use when no accessory is detected,
121  *        false otherwise.
122  * @start: Value for MICD_BIAS_START_TIME register field (not shifted).
123  * @rate: Value for MICD_RATE register field (not shifted).
124  */
125 struct wm8958_micd_rate {
126         int sysclk;
127         bool idle;
128         int start;
129         int rate;
130 };
131 
132 struct wm8994_pdata {
133         int gpio_base;
134 
135         /**
136          * Default values for GPIOs if non-zero, WM8994_CONFIGURE_GPIO
137          * can be used for all zero values.
138          */
139         int gpio_defaults[WM8994_NUM_GPIO];
140 
141         struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO];
142 
143         int irq_base;  /** Base IRQ number for WM8994, required for IRQs */
144 
145         int num_drc_cfgs;
146         struct wm8994_drc_cfg *drc_cfgs;
147 
148         int num_retune_mobile_cfgs;
149         struct wm8994_retune_mobile_cfg *retune_mobile_cfgs;
150 
151         int num_mbc_cfgs;
152         struct wm8958_mbc_cfg *mbc_cfgs;
153 
154         int num_vss_cfgs;
155         struct wm8958_vss_cfg *vss_cfgs;
156 
157         int num_vss_hpf_cfgs;
158         struct wm8958_vss_hpf_cfg *vss_hpf_cfgs;
159 
160         int num_enh_eq_cfgs;
161         struct wm8958_enh_eq_cfg *enh_eq_cfgs;
162 
163         int num_micd_rates;
164         struct wm8958_micd_rate *micd_rates;
165 
166         /* LINEOUT can be differential or single ended */
167         unsigned int lineout1_diff:1;
168         unsigned int lineout2_diff:1;
169 
170         /* Common mode feedback */
171         unsigned int lineout1fb:1;
172         unsigned int lineout2fb:1;
173 
174         /* IRQ for microphone detection if brought out directly as a
175          * signal.
176          */
177         int micdet_irq;
178 
179         /* WM8994 microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */
180         unsigned int micbias1_lvl:1;
181         unsigned int micbias2_lvl:1;
182 
183         /* WM8994 jack detect threashold levels, see datasheet for values */
184         unsigned int jd_scthr:2;
185         unsigned int jd_thr:2;
186 
187         /* Configure WM1811 jack detection for use with external capacitor */
188         unsigned int jd_ext_cap:1;
189 
190         /* WM8958 microphone bias configuration */
191         int micbias[2];
192 
193         /* WM8958 microphone detection ranges */
194         u16 micd_lvl_sel;
195 
196         /* Disable the internal pull downs on the LDOs if they are
197          * always driven (eg, connected to an always on supply or
198          * GPIO that always drives an output.  If they float power
199          * consumption will rise.
200          */
201         bool ldo_ena_always_driven;
202 
203         /*
204          * SPKMODE must be pulled internally by the device on this
205          * system.
206          */
207         bool spkmode_pu;
208 };
209 
210 #endif
211 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp