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

TOMOYO Linux Cross Reference
Linux/sound/soc/codecs/wcd939x-sdw.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /sound/soc/codecs/wcd939x-sdw.c (Architecture mips) and /sound/soc/codecs/wcd939x-sdw.c (Architecture sparc)


  1 // SPDX-License-Identifier: GPL-2.0                 1 // SPDX-License-Identifier: GPL-2.0
  2 /*                                                  2 /*
  3  * Copyright (c) 2023, Linaro Limited               3  * Copyright (c) 2023, Linaro Limited
  4  */                                                 4  */
  5                                                     5 
  6 #include <linux/module.h>                           6 #include <linux/module.h>
  7 #include <linux/slab.h>                             7 #include <linux/slab.h>
  8 #include <linux/platform_device.h>                  8 #include <linux/platform_device.h>
  9 #include <linux/device.h>                           9 #include <linux/device.h>
 10 #include <linux/kernel.h>                          10 #include <linux/kernel.h>
 11 #include <linux/component.h>                       11 #include <linux/component.h>
 12 #include <linux/pm_runtime.h>                      12 #include <linux/pm_runtime.h>
 13 #include <linux/irq.h>                             13 #include <linux/irq.h>
 14 #include <linux/irqdomain.h>                       14 #include <linux/irqdomain.h>
 15 #include <linux/of.h>                              15 #include <linux/of.h>
 16 #include <linux/soundwire/sdw.h>                   16 #include <linux/soundwire/sdw.h>
 17 #include <linux/soundwire/sdw_type.h>              17 #include <linux/soundwire/sdw_type.h>
 18 #include <linux/soundwire/sdw_registers.h>         18 #include <linux/soundwire/sdw_registers.h>
 19 #include <linux/regmap.h>                          19 #include <linux/regmap.h>
 20 #include <sound/soc.h>                             20 #include <sound/soc.h>
 21 #include <sound/soc-dapm.h>                        21 #include <sound/soc-dapm.h>
 22 #include "wcd939x.h"                               22 #include "wcd939x.h"
 23                                                    23 
 24 #define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0x     24 #define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m))
 25                                                    25 
 26 static const struct wcd939x_sdw_ch_info wcd939     26 static const struct wcd939x_sdw_ch_info wcd939x_sdw_rx_ch_info[] = {
 27         WCD_SDW_CH(WCD939X_HPH_L, WCD939X_HPH_     27         WCD_SDW_CH(WCD939X_HPH_L, WCD939X_HPH_PORT, BIT(0)),
 28         WCD_SDW_CH(WCD939X_HPH_R, WCD939X_HPH_     28         WCD_SDW_CH(WCD939X_HPH_R, WCD939X_HPH_PORT, BIT(1)),
 29         WCD_SDW_CH(WCD939X_CLSH, WCD939X_CLSH_     29         WCD_SDW_CH(WCD939X_CLSH, WCD939X_CLSH_PORT, BIT(0)),
 30         WCD_SDW_CH(WCD939X_COMP_L, WCD939X_COM     30         WCD_SDW_CH(WCD939X_COMP_L, WCD939X_COMP_PORT, BIT(0)),
 31         WCD_SDW_CH(WCD939X_COMP_R, WCD939X_COM     31         WCD_SDW_CH(WCD939X_COMP_R, WCD939X_COMP_PORT, BIT(1)),
 32         WCD_SDW_CH(WCD939X_LO, WCD939X_LO_PORT     32         WCD_SDW_CH(WCD939X_LO, WCD939X_LO_PORT, BIT(0)),
 33         WCD_SDW_CH(WCD939X_DSD_L, WCD939X_DSD_     33         WCD_SDW_CH(WCD939X_DSD_L, WCD939X_DSD_PORT, BIT(0)),
 34         WCD_SDW_CH(WCD939X_DSD_R, WCD939X_DSD_     34         WCD_SDW_CH(WCD939X_DSD_R, WCD939X_DSD_PORT, BIT(1)),
 35         WCD_SDW_CH(WCD939X_HIFI_PCM_L, WCD939X     35         WCD_SDW_CH(WCD939X_HIFI_PCM_L, WCD939X_HIFI_PCM_PORT, BIT(0)),
 36         WCD_SDW_CH(WCD939X_HIFI_PCM_R, WCD939X     36         WCD_SDW_CH(WCD939X_HIFI_PCM_R, WCD939X_HIFI_PCM_PORT, BIT(1)),
 37 };                                                 37 };
 38                                                    38 
 39 static const struct wcd939x_sdw_ch_info wcd939     39 static const struct wcd939x_sdw_ch_info wcd939x_sdw_tx_ch_info[] = {
 40         WCD_SDW_CH(WCD939X_ADC1, WCD939X_ADC_1     40         WCD_SDW_CH(WCD939X_ADC1, WCD939X_ADC_1_4_PORT, BIT(0)),
 41         WCD_SDW_CH(WCD939X_ADC2, WCD939X_ADC_1     41         WCD_SDW_CH(WCD939X_ADC2, WCD939X_ADC_1_4_PORT, BIT(1)),
 42         WCD_SDW_CH(WCD939X_ADC3, WCD939X_ADC_1     42         WCD_SDW_CH(WCD939X_ADC3, WCD939X_ADC_1_4_PORT, BIT(2)),
 43         WCD_SDW_CH(WCD939X_ADC4, WCD939X_ADC_1     43         WCD_SDW_CH(WCD939X_ADC4, WCD939X_ADC_1_4_PORT, BIT(3)),
 44         WCD_SDW_CH(WCD939X_DMIC0, WCD939X_DMIC     44         WCD_SDW_CH(WCD939X_DMIC0, WCD939X_DMIC_0_3_MBHC_PORT, BIT(0)),
 45         WCD_SDW_CH(WCD939X_DMIC1, WCD939X_DMIC     45         WCD_SDW_CH(WCD939X_DMIC1, WCD939X_DMIC_0_3_MBHC_PORT, BIT(1)),
 46         WCD_SDW_CH(WCD939X_MBHC, WCD939X_DMIC_     46         WCD_SDW_CH(WCD939X_MBHC, WCD939X_DMIC_0_3_MBHC_PORT, BIT(2)),
 47         WCD_SDW_CH(WCD939X_DMIC2, WCD939X_DMIC     47         WCD_SDW_CH(WCD939X_DMIC2, WCD939X_DMIC_0_3_MBHC_PORT, BIT(2)),
 48         WCD_SDW_CH(WCD939X_DMIC3, WCD939X_DMIC     48         WCD_SDW_CH(WCD939X_DMIC3, WCD939X_DMIC_0_3_MBHC_PORT, BIT(3)),
 49         WCD_SDW_CH(WCD939X_DMIC4, WCD939X_DMIC     49         WCD_SDW_CH(WCD939X_DMIC4, WCD939X_DMIC_3_7_PORT, BIT(0)),
 50         WCD_SDW_CH(WCD939X_DMIC5, WCD939X_DMIC     50         WCD_SDW_CH(WCD939X_DMIC5, WCD939X_DMIC_3_7_PORT, BIT(1)),
 51         WCD_SDW_CH(WCD939X_DMIC6, WCD939X_DMIC     51         WCD_SDW_CH(WCD939X_DMIC6, WCD939X_DMIC_3_7_PORT, BIT(2)),
 52         WCD_SDW_CH(WCD939X_DMIC7, WCD939X_DMIC     52         WCD_SDW_CH(WCD939X_DMIC7, WCD939X_DMIC_3_7_PORT, BIT(3)),
 53 };                                                 53 };
 54                                                    54 
 55 static struct sdw_dpn_prop wcd939x_rx_dpn_prop     55 static struct sdw_dpn_prop wcd939x_rx_dpn_prop[WCD939X_MAX_RX_SWR_PORTS] = {
 56         {                                          56         {
 57                 .num = WCD939X_HPH_PORT,           57                 .num = WCD939X_HPH_PORT,
 58                 .type = SDW_DPN_SIMPLE,            58                 .type = SDW_DPN_SIMPLE,
 59                 .min_ch = 1,                       59                 .min_ch = 1,
 60                 .max_ch = 2,                       60                 .max_ch = 2,
 61                 .simple_ch_prep_sm = true,         61                 .simple_ch_prep_sm = true,
 62         },                                         62         },
 63         {                                          63         {
 64                 .num = WCD939X_CLSH_PORT,          64                 .num = WCD939X_CLSH_PORT,
 65                 .type = SDW_DPN_SIMPLE,            65                 .type = SDW_DPN_SIMPLE,
 66                 .min_ch = 1,                       66                 .min_ch = 1,
 67                 .max_ch = 1,                       67                 .max_ch = 1,
 68                 .simple_ch_prep_sm = true,         68                 .simple_ch_prep_sm = true,
 69         },                                         69         },
 70         {                                          70         {
 71                 .num = WCD939X_COMP_PORT,          71                 .num = WCD939X_COMP_PORT,
 72                 .type = SDW_DPN_SIMPLE,            72                 .type = SDW_DPN_SIMPLE,
 73                 .min_ch = 1,                       73                 .min_ch = 1,
 74                 .max_ch = 2,                       74                 .max_ch = 2,
 75                 .simple_ch_prep_sm = true,         75                 .simple_ch_prep_sm = true,
 76         },                                         76         },
 77         {                                          77         {
 78                 .num = WCD939X_LO_PORT,            78                 .num = WCD939X_LO_PORT,
 79                 .type = SDW_DPN_SIMPLE,            79                 .type = SDW_DPN_SIMPLE,
 80                 .min_ch = 1,                       80                 .min_ch = 1,
 81                 .max_ch = 1,                       81                 .max_ch = 1,
 82                 .simple_ch_prep_sm = true,         82                 .simple_ch_prep_sm = true,
 83         },                                         83         },
 84         {                                          84         {
 85                 .num = WCD939X_DSD_PORT,           85                 .num = WCD939X_DSD_PORT,
 86                 .type = SDW_DPN_SIMPLE,            86                 .type = SDW_DPN_SIMPLE,
 87                 .min_ch = 1,                       87                 .min_ch = 1,
 88                 .max_ch = 2,                       88                 .max_ch = 2,
 89                 .simple_ch_prep_sm = true,         89                 .simple_ch_prep_sm = true,
 90         },                                         90         },
 91         {                                          91         {
 92                 .num = WCD939X_HIFI_PCM_PORT,      92                 .num = WCD939X_HIFI_PCM_PORT,
 93                 .type = SDW_DPN_SIMPLE,            93                 .type = SDW_DPN_SIMPLE,
 94                 .min_ch = 1,                       94                 .min_ch = 1,
 95                 .max_ch = 2,                       95                 .max_ch = 2,
 96                 .simple_ch_prep_sm = true,         96                 .simple_ch_prep_sm = true,
 97         }                                          97         }
 98 };                                                 98 };
 99                                                    99 
100 static struct sdw_dpn_prop wcd939x_tx_dpn_prop    100 static struct sdw_dpn_prop wcd939x_tx_dpn_prop[WCD939X_MAX_TX_SWR_PORTS] = {
101         {                                         101         {
102                 .num = WCD939X_ADC_1_4_PORT,      102                 .num = WCD939X_ADC_1_4_PORT,
103                 .type = SDW_DPN_SIMPLE,           103                 .type = SDW_DPN_SIMPLE,
104                 .min_ch = 1,                      104                 .min_ch = 1,
105                 .max_ch = 4,                      105                 .max_ch = 4,
106                 .simple_ch_prep_sm = true,        106                 .simple_ch_prep_sm = true,
107         },                                        107         },
108         {                                         108         {
109                 .num = WCD939X_ADC_DMIC_1_2_PO    109                 .num = WCD939X_ADC_DMIC_1_2_PORT,
110                 .type = SDW_DPN_SIMPLE,           110                 .type = SDW_DPN_SIMPLE,
111                 .min_ch = 1,                      111                 .min_ch = 1,
112                 .max_ch = 4,                      112                 .max_ch = 4,
113                 .simple_ch_prep_sm = true,        113                 .simple_ch_prep_sm = true,
114         },                                        114         },
115         {                                         115         {
116                 .num = WCD939X_DMIC_0_3_MBHC_P    116                 .num = WCD939X_DMIC_0_3_MBHC_PORT,
117                 .type = SDW_DPN_SIMPLE,           117                 .type = SDW_DPN_SIMPLE,
118                 .min_ch = 1,                      118                 .min_ch = 1,
119                 .max_ch = 4,                      119                 .max_ch = 4,
120                 .simple_ch_prep_sm = true,        120                 .simple_ch_prep_sm = true,
121         },                                        121         },
122         {                                         122         {
123                 .num = WCD939X_DMIC_3_7_PORT,     123                 .num = WCD939X_DMIC_3_7_PORT,
124                 .type = SDW_DPN_SIMPLE,           124                 .type = SDW_DPN_SIMPLE,
125                 .min_ch = 1,                      125                 .min_ch = 1,
126                 .max_ch = 4,                      126                 .max_ch = 4,
127                 .simple_ch_prep_sm = true,        127                 .simple_ch_prep_sm = true,
128         }                                         128         }
129 };                                                129 };
130                                                   130 
131 struct device *wcd939x_sdw_device_get(struct d    131 struct device *wcd939x_sdw_device_get(struct device_node *np)
132 {                                                 132 {
133         return bus_find_device_by_of_node(&sdw    133         return bus_find_device_by_of_node(&sdw_bus_type, np);
134 }                                                 134 }
135 EXPORT_SYMBOL_GPL(wcd939x_sdw_device_get);        135 EXPORT_SYMBOL_GPL(wcd939x_sdw_device_get);
136                                                   136 
137 unsigned int wcd939x_swr_get_current_bank(stru    137 unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *sdev)
138 {                                                 138 {
139         return FIELD_GET(SDW_SCP_STAT_CURR_BAN    139         return FIELD_GET(SDW_SCP_STAT_CURR_BANK,
140                          sdw_read(sdev, SDW_SC    140                          sdw_read(sdev, SDW_SCP_CTRL));
141 }                                                 141 }
142 EXPORT_SYMBOL_GPL(wcd939x_swr_get_current_bank    142 EXPORT_SYMBOL_GPL(wcd939x_swr_get_current_bank);
143                                                   143 
144 int wcd939x_sdw_hw_params(struct wcd939x_sdw_p    144 int wcd939x_sdw_hw_params(struct wcd939x_sdw_priv *wcd,
145                           struct snd_pcm_subst    145                           struct snd_pcm_substream *substream,
146                           struct snd_pcm_hw_pa    146                           struct snd_pcm_hw_params *params,
147                           struct snd_soc_dai *    147                           struct snd_soc_dai *dai)
148 {                                                 148 {
149         struct sdw_port_config port_config[WCD    149         struct sdw_port_config port_config[WCD939X_MAX_SWR_PORTS];
150         unsigned long ch_mask;                    150         unsigned long ch_mask;
151         int i, j;                                 151         int i, j;
152                                                   152 
153         wcd->sconfig.ch_count = 1;                153         wcd->sconfig.ch_count = 1;
154         wcd->active_ports = 0;                    154         wcd->active_ports = 0;
155         for (i = 0; i < WCD939X_MAX_SWR_PORTS;    155         for (i = 0; i < WCD939X_MAX_SWR_PORTS; i++) {
156                 ch_mask = wcd->port_config[i].    156                 ch_mask = wcd->port_config[i].ch_mask;
157                                                   157 
158                 if (!ch_mask)                     158                 if (!ch_mask)
159                         continue;                 159                         continue;
160                                                   160 
161                 for_each_set_bit(j, &ch_mask,     161                 for_each_set_bit(j, &ch_mask, 4)
162                         wcd->sconfig.ch_count+    162                         wcd->sconfig.ch_count++;
163                                                   163 
164                 port_config[wcd->active_ports]    164                 port_config[wcd->active_ports] = wcd->port_config[i];
165                 wcd->active_ports++;              165                 wcd->active_ports++;
166         }                                         166         }
167                                                   167 
168         wcd->sconfig.bps = 1;                     168         wcd->sconfig.bps = 1;
169         wcd->sconfig.frame_rate = params_rate(    169         wcd->sconfig.frame_rate = params_rate(params);
170         if (wcd->is_tx)                           170         if (wcd->is_tx)
171                 wcd->sconfig.direction = SDW_D    171                 wcd->sconfig.direction = SDW_DATA_DIR_TX;
172         else                                      172         else
173                 wcd->sconfig.direction = SDW_D    173                 wcd->sconfig.direction = SDW_DATA_DIR_RX;
174                                                   174 
175         wcd->sconfig.type = SDW_STREAM_PCM;       175         wcd->sconfig.type = SDW_STREAM_PCM;
176                                                   176 
177         return sdw_stream_add_slave(wcd->sdev,    177         return sdw_stream_add_slave(wcd->sdev, &wcd->sconfig, &port_config[0],
178                                     wcd->activ    178                                     wcd->active_ports, wcd->sruntime);
179 }                                                 179 }
180 EXPORT_SYMBOL_GPL(wcd939x_sdw_hw_params);         180 EXPORT_SYMBOL_GPL(wcd939x_sdw_hw_params);
181                                                   181 
182 int wcd939x_sdw_free(struct wcd939x_sdw_priv *    182 int wcd939x_sdw_free(struct wcd939x_sdw_priv *wcd,
183                      struct snd_pcm_substream     183                      struct snd_pcm_substream *substream,
184                      struct snd_soc_dai *dai)     184                      struct snd_soc_dai *dai)
185 {                                                 185 {
186         sdw_stream_remove_slave(wcd->sdev, wcd    186         sdw_stream_remove_slave(wcd->sdev, wcd->sruntime);
187                                                   187 
188         return 0;                                 188         return 0;
189 }                                                 189 }
190 EXPORT_SYMBOL_GPL(wcd939x_sdw_free);              190 EXPORT_SYMBOL_GPL(wcd939x_sdw_free);
191                                                   191 
192 int wcd939x_sdw_set_sdw_stream(struct wcd939x_    192 int wcd939x_sdw_set_sdw_stream(struct wcd939x_sdw_priv *wcd,
193                                struct snd_soc_    193                                struct snd_soc_dai *dai, void *stream,
194                                int direction)     194                                int direction)
195 {                                                 195 {
196         wcd->sruntime = stream;                   196         wcd->sruntime = stream;
197                                                   197 
198         return 0;                                 198         return 0;
199 }                                                 199 }
200 EXPORT_SYMBOL_GPL(wcd939x_sdw_set_sdw_stream);    200 EXPORT_SYMBOL_GPL(wcd939x_sdw_set_sdw_stream);
201                                                   201 
202 struct regmap *wcd939x_swr_get_regmap(struct w    202 struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd)
203 {                                                 203 {
204         if (wcd->regmap)                          204         if (wcd->regmap)
205                 return wcd->regmap;               205                 return wcd->regmap;
206                                                   206 
207         return ERR_PTR(-EINVAL);                  207         return ERR_PTR(-EINVAL);
208 }                                                 208 }
209 EXPORT_SYMBOL_GPL(wcd939x_swr_get_regmap);        209 EXPORT_SYMBOL_GPL(wcd939x_swr_get_regmap);
210                                                   210 
211 static int wcd9390_update_status(struct sdw_sl    211 static int wcd9390_update_status(struct sdw_slave *slave,
212                                  enum sdw_slav    212                                  enum sdw_slave_status status)
213 {                                                 213 {
214         struct wcd939x_sdw_priv *wcd = dev_get    214         struct wcd939x_sdw_priv *wcd = dev_get_drvdata(&slave->dev);
215                                                   215 
216         if (wcd->regmap && status == SDW_SLAVE    216         if (wcd->regmap && status == SDW_SLAVE_ATTACHED) {
217                 /* Write out any cached change    217                 /* Write out any cached changes that happened between probe and attach */
218                 regcache_cache_only(wcd->regma    218                 regcache_cache_only(wcd->regmap, false);
219                 return regcache_sync(wcd->regm    219                 return regcache_sync(wcd->regmap);
220         }                                         220         }
221                                                   221 
222         return 0;                                 222         return 0;
223 }                                                 223 }
224                                                   224 
225 static int wcd9390_bus_config(struct sdw_slave    225 static int wcd9390_bus_config(struct sdw_slave *slave,
226                               struct sdw_bus_p    226                               struct sdw_bus_params *params)
227 {                                                 227 {
228         sdw_write(slave, SWRS_SCP_HOST_CLK_DIV    228         sdw_write(slave, SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(params->next_bank),
229                   0x01);                          229                   0x01);
230                                                   230 
231         return 0;                                 231         return 0;
232 }                                                 232 }
233                                                   233 
234 /*                                                234 /*
235  * Handle Soundwire out-of-band interrupt even    235  * Handle Soundwire out-of-band interrupt event by triggering
236  * the first irq of the slave_irq irq domain,     236  * the first irq of the slave_irq irq domain, which then will
237  * be handled by the regmap_irq threaded irq.     237  * be handled by the regmap_irq threaded irq.
238  * Looping is to ensure no interrupts were mis    238  * Looping is to ensure no interrupts were missed in the process.
239  */                                               239  */
240 static int wcd9390_interrupt_callback(struct s    240 static int wcd9390_interrupt_callback(struct sdw_slave *slave,
241                                       struct s    241                                       struct sdw_slave_intr_status *status)
242 {                                                 242 {
243         struct wcd939x_sdw_priv *wcd = dev_get    243         struct wcd939x_sdw_priv *wcd = dev_get_drvdata(&slave->dev);
244         struct irq_domain *slave_irq = wcd->sl    244         struct irq_domain *slave_irq = wcd->slave_irq;
245         u32 sts1, sts2, sts3;                     245         u32 sts1, sts2, sts3;
246                                                   246 
247         do {                                      247         do {
248                 handle_nested_irq(irq_find_map    248                 handle_nested_irq(irq_find_mapping(slave_irq, 0));
249                 regmap_read(wcd->regmap, WCD93    249                 regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_0, &sts1);
250                 regmap_read(wcd->regmap, WCD93    250                 regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_1, &sts2);
251                 regmap_read(wcd->regmap, WCD93    251                 regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_2, &sts3);
252                                                   252 
253         } while (sts1 || sts2 || sts3);           253         } while (sts1 || sts2 || sts3);
254                                                   254 
255         return IRQ_HANDLED;                       255         return IRQ_HANDLED;
256 }                                                 256 }
257                                                   257 
258 static const struct reg_default wcd939x_defaul    258 static const struct reg_default wcd939x_defaults[] = {
259         /* Default values except for Read-Only    259         /* Default values except for Read-Only & Volatile registers */
260         { WCD939X_ANA_PAGE, 0x00 },               260         { WCD939X_ANA_PAGE, 0x00 },
261         { WCD939X_ANA_BIAS, 0x00 },               261         { WCD939X_ANA_BIAS, 0x00 },
262         { WCD939X_ANA_RX_SUPPLIES, 0x00 },        262         { WCD939X_ANA_RX_SUPPLIES, 0x00 },
263         { WCD939X_ANA_HPH, 0x0c },                263         { WCD939X_ANA_HPH, 0x0c },
264         { WCD939X_ANA_EAR, 0x00 },                264         { WCD939X_ANA_EAR, 0x00 },
265         { WCD939X_ANA_EAR_COMPANDER_CTL, 0x02     265         { WCD939X_ANA_EAR_COMPANDER_CTL, 0x02 },
266         { WCD939X_ANA_TX_CH1, 0x20 },             266         { WCD939X_ANA_TX_CH1, 0x20 },
267         { WCD939X_ANA_TX_CH2, 0x00 },             267         { WCD939X_ANA_TX_CH2, 0x00 },
268         { WCD939X_ANA_TX_CH3, 0x20 },             268         { WCD939X_ANA_TX_CH3, 0x20 },
269         { WCD939X_ANA_TX_CH4, 0x00 },             269         { WCD939X_ANA_TX_CH4, 0x00 },
270         { WCD939X_ANA_MICB1_MICB2_DSP_EN_LOGIC    270         { WCD939X_ANA_MICB1_MICB2_DSP_EN_LOGIC, 0x00 },
271         { WCD939X_ANA_MICB3_DSP_EN_LOGIC, 0x00    271         { WCD939X_ANA_MICB3_DSP_EN_LOGIC, 0x00 },
272         { WCD939X_ANA_MBHC_MECH, 0x39 },          272         { WCD939X_ANA_MBHC_MECH, 0x39 },
273         { WCD939X_ANA_MBHC_ELECT, 0x08 },         273         { WCD939X_ANA_MBHC_ELECT, 0x08 },
274         { WCD939X_ANA_MBHC_ZDET, 0x00 },          274         { WCD939X_ANA_MBHC_ZDET, 0x00 },
275         { WCD939X_ANA_MBHC_BTN0, 0x00 },          275         { WCD939X_ANA_MBHC_BTN0, 0x00 },
276         { WCD939X_ANA_MBHC_BTN1, 0x10 },          276         { WCD939X_ANA_MBHC_BTN1, 0x10 },
277         { WCD939X_ANA_MBHC_BTN2, 0x20 },          277         { WCD939X_ANA_MBHC_BTN2, 0x20 },
278         { WCD939X_ANA_MBHC_BTN3, 0x30 },          278         { WCD939X_ANA_MBHC_BTN3, 0x30 },
279         { WCD939X_ANA_MBHC_BTN4, 0x40 },          279         { WCD939X_ANA_MBHC_BTN4, 0x40 },
280         { WCD939X_ANA_MBHC_BTN5, 0x50 },          280         { WCD939X_ANA_MBHC_BTN5, 0x50 },
281         { WCD939X_ANA_MBHC_BTN6, 0x60 },          281         { WCD939X_ANA_MBHC_BTN6, 0x60 },
282         { WCD939X_ANA_MBHC_BTN7, 0x70 },          282         { WCD939X_ANA_MBHC_BTN7, 0x70 },
283         { WCD939X_ANA_MICB1, 0x10 },              283         { WCD939X_ANA_MICB1, 0x10 },
284         { WCD939X_ANA_MICB2, 0x10 },              284         { WCD939X_ANA_MICB2, 0x10 },
285         { WCD939X_ANA_MICB2_RAMP, 0x00 },         285         { WCD939X_ANA_MICB2_RAMP, 0x00 },
286         { WCD939X_ANA_MICB3, 0x00 },              286         { WCD939X_ANA_MICB3, 0x00 },
287         { WCD939X_ANA_MICB4, 0x00 },              287         { WCD939X_ANA_MICB4, 0x00 },
288         { WCD939X_BIAS_CTL, 0x2a },               288         { WCD939X_BIAS_CTL, 0x2a },
289         { WCD939X_BIAS_VBG_FINE_ADJ, 0x55 },      289         { WCD939X_BIAS_VBG_FINE_ADJ, 0x55 },
290         { WCD939X_LDOL_VDDCX_ADJUST, 0x01 },      290         { WCD939X_LDOL_VDDCX_ADJUST, 0x01 },
291         { WCD939X_LDOL_DISABLE_LDOL, 0x00 },      291         { WCD939X_LDOL_DISABLE_LDOL, 0x00 },
292         { WCD939X_MBHC_CTL_CLK, 0x00 },           292         { WCD939X_MBHC_CTL_CLK, 0x00 },
293         { WCD939X_MBHC_CTL_ANA, 0x00 },           293         { WCD939X_MBHC_CTL_ANA, 0x00 },
294         { WCD939X_MBHC_ZDET_VNEG_CTL, 0x00 },     294         { WCD939X_MBHC_ZDET_VNEG_CTL, 0x00 },
295         { WCD939X_MBHC_ZDET_BIAS_CTL, 0x46 },     295         { WCD939X_MBHC_ZDET_BIAS_CTL, 0x46 },
296         { WCD939X_MBHC_CTL_BCS, 0x00 },           296         { WCD939X_MBHC_CTL_BCS, 0x00 },
297         { WCD939X_MBHC_TEST_CTL, 0x00 },          297         { WCD939X_MBHC_TEST_CTL, 0x00 },
298         { WCD939X_LDOH_MODE, 0x2b },              298         { WCD939X_LDOH_MODE, 0x2b },
299         { WCD939X_LDOH_BIAS, 0x68 },              299         { WCD939X_LDOH_BIAS, 0x68 },
300         { WCD939X_LDOH_STB_LOADS, 0x00 },         300         { WCD939X_LDOH_STB_LOADS, 0x00 },
301         { WCD939X_LDOH_SLOWRAMP, 0x50 },          301         { WCD939X_LDOH_SLOWRAMP, 0x50 },
302         { WCD939X_MICB1_TEST_CTL_1, 0x1a },       302         { WCD939X_MICB1_TEST_CTL_1, 0x1a },
303         { WCD939X_MICB1_TEST_CTL_2, 0x00 },       303         { WCD939X_MICB1_TEST_CTL_2, 0x00 },
304         { WCD939X_MICB1_TEST_CTL_3, 0xa4 },       304         { WCD939X_MICB1_TEST_CTL_3, 0xa4 },
305         { WCD939X_MICB2_TEST_CTL_1, 0x1a },       305         { WCD939X_MICB2_TEST_CTL_1, 0x1a },
306         { WCD939X_MICB2_TEST_CTL_2, 0x00 },       306         { WCD939X_MICB2_TEST_CTL_2, 0x00 },
307         { WCD939X_MICB2_TEST_CTL_3, 0x24 },       307         { WCD939X_MICB2_TEST_CTL_3, 0x24 },
308         { WCD939X_MICB3_TEST_CTL_1, 0x9a },       308         { WCD939X_MICB3_TEST_CTL_1, 0x9a },
309         { WCD939X_MICB3_TEST_CTL_2, 0x80 },       309         { WCD939X_MICB3_TEST_CTL_2, 0x80 },
310         { WCD939X_MICB3_TEST_CTL_3, 0x24 },       310         { WCD939X_MICB3_TEST_CTL_3, 0x24 },
311         { WCD939X_MICB4_TEST_CTL_1, 0x1a },       311         { WCD939X_MICB4_TEST_CTL_1, 0x1a },
312         { WCD939X_MICB4_TEST_CTL_2, 0x80 },       312         { WCD939X_MICB4_TEST_CTL_2, 0x80 },
313         { WCD939X_MICB4_TEST_CTL_3, 0x24 },       313         { WCD939X_MICB4_TEST_CTL_3, 0x24 },
314         { WCD939X_TX_COM_ADC_VCM, 0x39 },         314         { WCD939X_TX_COM_ADC_VCM, 0x39 },
315         { WCD939X_TX_COM_BIAS_ATEST, 0xe0 },      315         { WCD939X_TX_COM_BIAS_ATEST, 0xe0 },
316         { WCD939X_TX_COM_SPARE1, 0x00 },          316         { WCD939X_TX_COM_SPARE1, 0x00 },
317         { WCD939X_TX_COM_SPARE2, 0x00 },          317         { WCD939X_TX_COM_SPARE2, 0x00 },
318         { WCD939X_TX_COM_TXFE_DIV_CTL, 0x22 },    318         { WCD939X_TX_COM_TXFE_DIV_CTL, 0x22 },
319         { WCD939X_TX_COM_TXFE_DIV_START, 0x00     319         { WCD939X_TX_COM_TXFE_DIV_START, 0x00 },
320         { WCD939X_TX_COM_SPARE3, 0x00 },          320         { WCD939X_TX_COM_SPARE3, 0x00 },
321         { WCD939X_TX_COM_SPARE4, 0x00 },          321         { WCD939X_TX_COM_SPARE4, 0x00 },
322         { WCD939X_TX_1_2_TEST_EN, 0xcc },         322         { WCD939X_TX_1_2_TEST_EN, 0xcc },
323         { WCD939X_TX_1_2_ADC_IB, 0xe9 },          323         { WCD939X_TX_1_2_ADC_IB, 0xe9 },
324         { WCD939X_TX_1_2_ATEST_REFCTL, 0x0b },    324         { WCD939X_TX_1_2_ATEST_REFCTL, 0x0b },
325         { WCD939X_TX_1_2_TEST_CTL, 0x38 },        325         { WCD939X_TX_1_2_TEST_CTL, 0x38 },
326         { WCD939X_TX_1_2_TEST_BLK_EN1, 0xff },    326         { WCD939X_TX_1_2_TEST_BLK_EN1, 0xff },
327         { WCD939X_TX_1_2_TXFE1_CLKDIV, 0x00 },    327         { WCD939X_TX_1_2_TXFE1_CLKDIV, 0x00 },
328         { WCD939X_TX_3_4_TEST_EN, 0xcc },         328         { WCD939X_TX_3_4_TEST_EN, 0xcc },
329         { WCD939X_TX_3_4_ADC_IB, 0xe9 },          329         { WCD939X_TX_3_4_ADC_IB, 0xe9 },
330         { WCD939X_TX_3_4_ATEST_REFCTL, 0x0b },    330         { WCD939X_TX_3_4_ATEST_REFCTL, 0x0b },
331         { WCD939X_TX_3_4_TEST_CTL, 0x38 },        331         { WCD939X_TX_3_4_TEST_CTL, 0x38 },
332         { WCD939X_TX_3_4_TEST_BLK_EN3, 0xff },    332         { WCD939X_TX_3_4_TEST_BLK_EN3, 0xff },
333         { WCD939X_TX_3_4_TXFE3_CLKDIV, 0x00 },    333         { WCD939X_TX_3_4_TXFE3_CLKDIV, 0x00 },
334         { WCD939X_TX_3_4_TEST_BLK_EN2, 0xfb },    334         { WCD939X_TX_3_4_TEST_BLK_EN2, 0xfb },
335         { WCD939X_TX_3_4_TXFE2_CLKDIV, 0x00 },    335         { WCD939X_TX_3_4_TXFE2_CLKDIV, 0x00 },
336         { WCD939X_TX_3_4_SPARE1, 0x00 },          336         { WCD939X_TX_3_4_SPARE1, 0x00 },
337         { WCD939X_TX_3_4_TEST_BLK_EN4, 0xfb },    337         { WCD939X_TX_3_4_TEST_BLK_EN4, 0xfb },
338         { WCD939X_TX_3_4_TXFE4_CLKDIV, 0x00 },    338         { WCD939X_TX_3_4_TXFE4_CLKDIV, 0x00 },
339         { WCD939X_TX_3_4_SPARE2, 0x00 },          339         { WCD939X_TX_3_4_SPARE2, 0x00 },
340         { WCD939X_CLASSH_MODE_1, 0x40 },          340         { WCD939X_CLASSH_MODE_1, 0x40 },
341         { WCD939X_CLASSH_MODE_2, 0x3a },          341         { WCD939X_CLASSH_MODE_2, 0x3a },
342         { WCD939X_CLASSH_MODE_3, 0xf0 },          342         { WCD939X_CLASSH_MODE_3, 0xf0 },
343         { WCD939X_CLASSH_CTRL_VCL_1, 0x7c },      343         { WCD939X_CLASSH_CTRL_VCL_1, 0x7c },
344         { WCD939X_CLASSH_CTRL_VCL_2, 0x82 },      344         { WCD939X_CLASSH_CTRL_VCL_2, 0x82 },
345         { WCD939X_CLASSH_CTRL_CCL_1, 0x31 },      345         { WCD939X_CLASSH_CTRL_CCL_1, 0x31 },
346         { WCD939X_CLASSH_CTRL_CCL_2, 0x80 },      346         { WCD939X_CLASSH_CTRL_CCL_2, 0x80 },
347         { WCD939X_CLASSH_CTRL_CCL_3, 0x80 },      347         { WCD939X_CLASSH_CTRL_CCL_3, 0x80 },
348         { WCD939X_CLASSH_CTRL_CCL_4, 0x51 },      348         { WCD939X_CLASSH_CTRL_CCL_4, 0x51 },
349         { WCD939X_CLASSH_CTRL_CCL_5, 0x00 },      349         { WCD939X_CLASSH_CTRL_CCL_5, 0x00 },
350         { WCD939X_CLASSH_BUCK_TMUX_A_D, 0x00 }    350         { WCD939X_CLASSH_BUCK_TMUX_A_D, 0x00 },
351         { WCD939X_CLASSH_BUCK_SW_DRV_CNTL, 0x7    351         { WCD939X_CLASSH_BUCK_SW_DRV_CNTL, 0x77 },
352         { WCD939X_CLASSH_SPARE, 0x80 },           352         { WCD939X_CLASSH_SPARE, 0x80 },
353         { WCD939X_FLYBACK_EN, 0x4e },             353         { WCD939X_FLYBACK_EN, 0x4e },
354         { WCD939X_FLYBACK_VNEG_CTRL_1, 0x0b },    354         { WCD939X_FLYBACK_VNEG_CTRL_1, 0x0b },
355         { WCD939X_FLYBACK_VNEG_CTRL_2, 0x45 },    355         { WCD939X_FLYBACK_VNEG_CTRL_2, 0x45 },
356         { WCD939X_FLYBACK_VNEG_CTRL_3, 0x14 },    356         { WCD939X_FLYBACK_VNEG_CTRL_3, 0x14 },
357         { WCD939X_FLYBACK_VNEG_CTRL_4, 0xdb },    357         { WCD939X_FLYBACK_VNEG_CTRL_4, 0xdb },
358         { WCD939X_FLYBACK_VNEG_CTRL_5, 0x83 },    358         { WCD939X_FLYBACK_VNEG_CTRL_5, 0x83 },
359         { WCD939X_FLYBACK_VNEG_CTRL_6, 0x98 },    359         { WCD939X_FLYBACK_VNEG_CTRL_6, 0x98 },
360         { WCD939X_FLYBACK_VNEG_CTRL_7, 0xa9 },    360         { WCD939X_FLYBACK_VNEG_CTRL_7, 0xa9 },
361         { WCD939X_FLYBACK_VNEG_CTRL_8, 0x68 },    361         { WCD939X_FLYBACK_VNEG_CTRL_8, 0x68 },
362         { WCD939X_FLYBACK_VNEG_CTRL_9, 0x66 },    362         { WCD939X_FLYBACK_VNEG_CTRL_9, 0x66 },
363         { WCD939X_FLYBACK_VNEGDAC_CTRL_1, 0xed    363         { WCD939X_FLYBACK_VNEGDAC_CTRL_1, 0xed },
364         { WCD939X_FLYBACK_VNEGDAC_CTRL_2, 0xf8    364         { WCD939X_FLYBACK_VNEGDAC_CTRL_2, 0xf8 },
365         { WCD939X_FLYBACK_VNEGDAC_CTRL_3, 0xa6    365         { WCD939X_FLYBACK_VNEGDAC_CTRL_3, 0xa6 },
366         { WCD939X_FLYBACK_CTRL_1, 0x65 },         366         { WCD939X_FLYBACK_CTRL_1, 0x65 },
367         { WCD939X_FLYBACK_TEST_CTL, 0x02 },       367         { WCD939X_FLYBACK_TEST_CTL, 0x02 },
368         { WCD939X_RX_AUX_SW_CTL, 0x00 },          368         { WCD939X_RX_AUX_SW_CTL, 0x00 },
369         { WCD939X_RX_PA_AUX_IN_CONN, 0x01 },      369         { WCD939X_RX_PA_AUX_IN_CONN, 0x01 },
370         { WCD939X_RX_TIMER_DIV, 0x32 },           370         { WCD939X_RX_TIMER_DIV, 0x32 },
371         { WCD939X_RX_OCP_CTL, 0x1f },             371         { WCD939X_RX_OCP_CTL, 0x1f },
372         { WCD939X_RX_OCP_COUNT, 0x77 },           372         { WCD939X_RX_OCP_COUNT, 0x77 },
373         { WCD939X_RX_BIAS_EAR_DAC, 0xa0 },        373         { WCD939X_RX_BIAS_EAR_DAC, 0xa0 },
374         { WCD939X_RX_BIAS_EAR_AMP, 0xaa },        374         { WCD939X_RX_BIAS_EAR_AMP, 0xaa },
375         { WCD939X_RX_BIAS_HPH_LDO, 0xa9 },        375         { WCD939X_RX_BIAS_HPH_LDO, 0xa9 },
376         { WCD939X_RX_BIAS_HPH_PA, 0xaa },         376         { WCD939X_RX_BIAS_HPH_PA, 0xaa },
377         { WCD939X_RX_BIAS_HPH_RDACBUFF_CNP2, 0    377         { WCD939X_RX_BIAS_HPH_RDACBUFF_CNP2, 0xca },
378         { WCD939X_RX_BIAS_HPH_RDAC_LDO, 0x88 }    378         { WCD939X_RX_BIAS_HPH_RDAC_LDO, 0x88 },
379         { WCD939X_RX_BIAS_HPH_CNP1, 0x82 },       379         { WCD939X_RX_BIAS_HPH_CNP1, 0x82 },
380         { WCD939X_RX_BIAS_HPH_LOWPOWER, 0x82 }    380         { WCD939X_RX_BIAS_HPH_LOWPOWER, 0x82 },
381         { WCD939X_RX_BIAS_AUX_DAC, 0xa0 },        381         { WCD939X_RX_BIAS_AUX_DAC, 0xa0 },
382         { WCD939X_RX_BIAS_AUX_AMP, 0xaa },        382         { WCD939X_RX_BIAS_AUX_AMP, 0xaa },
383         { WCD939X_RX_BIAS_VNEGDAC_BLEEDER, 0x5    383         { WCD939X_RX_BIAS_VNEGDAC_BLEEDER, 0x50 },
384         { WCD939X_RX_BIAS_MISC, 0x00 },           384         { WCD939X_RX_BIAS_MISC, 0x00 },
385         { WCD939X_RX_BIAS_BUCK_RST, 0x08 },       385         { WCD939X_RX_BIAS_BUCK_RST, 0x08 },
386         { WCD939X_RX_BIAS_BUCK_VREF_ERRAMP, 0x    386         { WCD939X_RX_BIAS_BUCK_VREF_ERRAMP, 0x44 },
387         { WCD939X_RX_BIAS_FLYB_ERRAMP, 0x40 },    387         { WCD939X_RX_BIAS_FLYB_ERRAMP, 0x40 },
388         { WCD939X_RX_BIAS_FLYB_BUFF, 0xaa },      388         { WCD939X_RX_BIAS_FLYB_BUFF, 0xaa },
389         { WCD939X_RX_BIAS_FLYB_MID_RST, 0x14 }    389         { WCD939X_RX_BIAS_FLYB_MID_RST, 0x14 },
390         { WCD939X_HPH_CNP_EN, 0x80 },             390         { WCD939X_HPH_CNP_EN, 0x80 },
391         { WCD939X_HPH_CNP_WG_CTL, 0x9a },         391         { WCD939X_HPH_CNP_WG_CTL, 0x9a },
392         { WCD939X_HPH_CNP_WG_TIME, 0x14 },        392         { WCD939X_HPH_CNP_WG_TIME, 0x14 },
393         { WCD939X_HPH_OCP_CTL, 0x28 },            393         { WCD939X_HPH_OCP_CTL, 0x28 },
394         { WCD939X_HPH_AUTO_CHOP, 0x56 },          394         { WCD939X_HPH_AUTO_CHOP, 0x56 },
395         { WCD939X_HPH_CHOP_CTL, 0x83 },           395         { WCD939X_HPH_CHOP_CTL, 0x83 },
396         { WCD939X_HPH_PA_CTL1, 0x46 },            396         { WCD939X_HPH_PA_CTL1, 0x46 },
397         { WCD939X_HPH_PA_CTL2, 0x50 },            397         { WCD939X_HPH_PA_CTL2, 0x50 },
398         { WCD939X_HPH_L_EN, 0x80 },               398         { WCD939X_HPH_L_EN, 0x80 },
399         { WCD939X_HPH_L_TEST, 0xe0 },             399         { WCD939X_HPH_L_TEST, 0xe0 },
400         { WCD939X_HPH_L_ATEST, 0x50 },            400         { WCD939X_HPH_L_ATEST, 0x50 },
401         { WCD939X_HPH_R_EN, 0x80 },               401         { WCD939X_HPH_R_EN, 0x80 },
402         { WCD939X_HPH_R_TEST, 0xe0 },             402         { WCD939X_HPH_R_TEST, 0xe0 },
403         { WCD939X_HPH_R_ATEST, 0x50 },            403         { WCD939X_HPH_R_ATEST, 0x50 },
404         { WCD939X_HPH_RDAC_CLK_CTL1, 0x80 },      404         { WCD939X_HPH_RDAC_CLK_CTL1, 0x80 },
405         { WCD939X_HPH_RDAC_CLK_CTL2, 0x0b },      405         { WCD939X_HPH_RDAC_CLK_CTL2, 0x0b },
406         { WCD939X_HPH_RDAC_LDO_CTL, 0x33 },       406         { WCD939X_HPH_RDAC_LDO_CTL, 0x33 },
407         { WCD939X_HPH_RDAC_CHOP_CLK_LP_CTL, 0x    407         { WCD939X_HPH_RDAC_CHOP_CLK_LP_CTL, 0x00 },
408         { WCD939X_HPH_REFBUFF_UHQA_CTL, 0x00 }    408         { WCD939X_HPH_REFBUFF_UHQA_CTL, 0x00 },
409         { WCD939X_HPH_REFBUFF_LP_CTL, 0x8e },     409         { WCD939X_HPH_REFBUFF_LP_CTL, 0x8e },
410         { WCD939X_HPH_L_DAC_CTL, 0x20 },          410         { WCD939X_HPH_L_DAC_CTL, 0x20 },
411         { WCD939X_HPH_R_DAC_CTL, 0x20 },          411         { WCD939X_HPH_R_DAC_CTL, 0x20 },
412         { WCD939X_HPH_SURGE_COMP_SEL, 0x55 },     412         { WCD939X_HPH_SURGE_COMP_SEL, 0x55 },
413         { WCD939X_HPH_SURGE_EN, 0x19 },           413         { WCD939X_HPH_SURGE_EN, 0x19 },
414         { WCD939X_HPH_SURGE_MISC1, 0xa0 },        414         { WCD939X_HPH_SURGE_MISC1, 0xa0 },
415         { WCD939X_EAR_EN, 0x22 },                 415         { WCD939X_EAR_EN, 0x22 },
416         { WCD939X_EAR_PA_CON, 0x44 },             416         { WCD939X_EAR_PA_CON, 0x44 },
417         { WCD939X_EAR_SP_CON, 0xdb },             417         { WCD939X_EAR_SP_CON, 0xdb },
418         { WCD939X_EAR_DAC_CON, 0x80 },            418         { WCD939X_EAR_DAC_CON, 0x80 },
419         { WCD939X_EAR_CNP_FSM_CON, 0xb2 },        419         { WCD939X_EAR_CNP_FSM_CON, 0xb2 },
420         { WCD939X_EAR_TEST_CTL, 0x00 },           420         { WCD939X_EAR_TEST_CTL, 0x00 },
421         { WCD939X_FLYBACK_NEW_CTRL_2, 0x00 },     421         { WCD939X_FLYBACK_NEW_CTRL_2, 0x00 },
422         { WCD939X_FLYBACK_NEW_CTRL_3, 0x00 },     422         { WCD939X_FLYBACK_NEW_CTRL_3, 0x00 },
423         { WCD939X_FLYBACK_NEW_CTRL_4, 0x44 },     423         { WCD939X_FLYBACK_NEW_CTRL_4, 0x44 },
424         { WCD939X_ANA_NEW_PAGE, 0x00 },           424         { WCD939X_ANA_NEW_PAGE, 0x00 },
425         { WCD939X_HPH_NEW_ANA_HPH2, 0x00 },       425         { WCD939X_HPH_NEW_ANA_HPH2, 0x00 },
426         { WCD939X_HPH_NEW_ANA_HPH3, 0x00 },       426         { WCD939X_HPH_NEW_ANA_HPH3, 0x00 },
427         { WCD939X_SLEEP_CTL, 0x18 },              427         { WCD939X_SLEEP_CTL, 0x18 },
428         { WCD939X_SLEEP_WATCHDOG_CTL, 0x00 },     428         { WCD939X_SLEEP_WATCHDOG_CTL, 0x00 },
429         { WCD939X_MBHC_NEW_ELECT_REM_CLAMP_CTL    429         { WCD939X_MBHC_NEW_ELECT_REM_CLAMP_CTL, 0x00 },
430         { WCD939X_MBHC_NEW_CTL_1, 0x02 },         430         { WCD939X_MBHC_NEW_CTL_1, 0x02 },
431         { WCD939X_MBHC_NEW_CTL_2, 0x05 },         431         { WCD939X_MBHC_NEW_CTL_2, 0x05 },
432         { WCD939X_MBHC_NEW_PLUG_DETECT_CTL, 0x    432         { WCD939X_MBHC_NEW_PLUG_DETECT_CTL, 0xe9 },
433         { WCD939X_MBHC_NEW_ZDET_ANA_CTL, 0x0f     433         { WCD939X_MBHC_NEW_ZDET_ANA_CTL, 0x0f },
434         { WCD939X_MBHC_NEW_ZDET_RAMP_CTL, 0x00    434         { WCD939X_MBHC_NEW_ZDET_RAMP_CTL, 0x00 },
435         { WCD939X_TX_NEW_CH12_MUX, 0x11 },        435         { WCD939X_TX_NEW_CH12_MUX, 0x11 },
436         { WCD939X_TX_NEW_CH34_MUX, 0x23 },        436         { WCD939X_TX_NEW_CH34_MUX, 0x23 },
437         { WCD939X_DIE_CRACK_DET_EN, 0x00 },       437         { WCD939X_DIE_CRACK_DET_EN, 0x00 },
438         { WCD939X_HPH_NEW_INT_RDAC_GAIN_CTL, 0    438         { WCD939X_HPH_NEW_INT_RDAC_GAIN_CTL, 0x00 },
439         { WCD939X_HPH_NEW_INT_PA_GAIN_CTL_L, 0    439         { WCD939X_HPH_NEW_INT_PA_GAIN_CTL_L, 0x00 },
440         { WCD939X_HPH_NEW_INT_RDAC_VREF_CTL, 0    440         { WCD939X_HPH_NEW_INT_RDAC_VREF_CTL, 0x08 },
441         { WCD939X_HPH_NEW_INT_RDAC_OVERRIDE_CT    441         { WCD939X_HPH_NEW_INT_RDAC_OVERRIDE_CTL, 0x00 },
442         { WCD939X_HPH_NEW_INT_PA_GAIN_CTL_R, 0    442         { WCD939X_HPH_NEW_INT_PA_GAIN_CTL_R, 0x00 },
443         { WCD939X_HPH_NEW_INT_PA_MISC1, 0x32 }    443         { WCD939X_HPH_NEW_INT_PA_MISC1, 0x32 },
444         { WCD939X_HPH_NEW_INT_PA_MISC2, 0x00 }    444         { WCD939X_HPH_NEW_INT_PA_MISC2, 0x00 },
445         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC, 0x    445         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC, 0x00 },
446         { WCD939X_HPH_NEW_INT_TIMER1, 0xfe },     446         { WCD939X_HPH_NEW_INT_TIMER1, 0xfe },
447         { WCD939X_HPH_NEW_INT_TIMER2, 0x02 },     447         { WCD939X_HPH_NEW_INT_TIMER2, 0x02 },
448         { WCD939X_HPH_NEW_INT_TIMER3, 0x4e },     448         { WCD939X_HPH_NEW_INT_TIMER3, 0x4e },
449         { WCD939X_HPH_NEW_INT_TIMER4, 0x54 },     449         { WCD939X_HPH_NEW_INT_TIMER4, 0x54 },
450         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC2, 0    450         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC2, 0x0b },
451         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC3, 0    451         { WCD939X_HPH_NEW_INT_PA_RDAC_MISC3, 0x00 },
452         { WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_L,     452         { WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_L, 0xa0 },
453         { WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_R,     453         { WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_R, 0xa0 },
454         { WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_LOH    454         { WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_LOHIFI, 0x64 },
455         { WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_ULP    455         { WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_ULP, 0x01 },
456         { WCD939X_RX_NEW_INT_HPH_RDAC_LDO_LP,     456         { WCD939X_RX_NEW_INT_HPH_RDAC_LDO_LP, 0x11 },
457         { WCD939X_MBHC_NEW_INT_MOISTURE_DET_DC    457         { WCD939X_MBHC_NEW_INT_MOISTURE_DET_DC_CTRL, 0x57 },
458         { WCD939X_MBHC_NEW_INT_MOISTURE_DET_PO    458         { WCD939X_MBHC_NEW_INT_MOISTURE_DET_POLLING_CTRL, 0x01 },
459         { WCD939X_MBHC_NEW_INT_MECH_DET_CURREN    459         { WCD939X_MBHC_NEW_INT_MECH_DET_CURRENT, 0x00 },
460         { WCD939X_MBHC_NEW_INT_ZDET_CLK_AND_MO    460         { WCD939X_MBHC_NEW_INT_ZDET_CLK_AND_MOISTURE_CTL_NEW, 0x47 },
461         { WCD939X_EAR_INT_NEW_CHOPPER_CON, 0xa    461         { WCD939X_EAR_INT_NEW_CHOPPER_CON, 0xa8 },
462         { WCD939X_EAR_INT_NEW_CNP_VCM_CON1, 0x    462         { WCD939X_EAR_INT_NEW_CNP_VCM_CON1, 0x42 },
463         { WCD939X_EAR_INT_NEW_CNP_VCM_CON2, 0x    463         { WCD939X_EAR_INT_NEW_CNP_VCM_CON2, 0x22 },
464         { WCD939X_EAR_INT_NEW_DYNAMIC_BIAS, 0x    464         { WCD939X_EAR_INT_NEW_DYNAMIC_BIAS, 0x00 },
465         { WCD939X_SLEEP_INT_WATCHDOG_CTL_1, 0x    465         { WCD939X_SLEEP_INT_WATCHDOG_CTL_1, 0x0a },
466         { WCD939X_SLEEP_INT_WATCHDOG_CTL_2, 0x    466         { WCD939X_SLEEP_INT_WATCHDOG_CTL_2, 0x0a },
467         { WCD939X_DIE_CRACK_INT_DET_INT1, 0x02    467         { WCD939X_DIE_CRACK_INT_DET_INT1, 0x02 },
468         { WCD939X_DIE_CRACK_INT_DET_INT2, 0x60    468         { WCD939X_DIE_CRACK_INT_DET_INT2, 0x60 },
469         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L2    469         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L2, 0xff },
470         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L1    470         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L1, 0x7f },
471         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L0    471         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L0, 0x3f },
472         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_UL    472         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_ULP1P2M, 0x1f },
473         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_UL    473         { WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_ULP0P6M, 0x0f },
474         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1    474         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_L2L1, 0xd7 },
475         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1    475         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_L0, 0xc8 },
476         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1    476         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_ULP, 0xc6 },
477         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2    477         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_L2L1, 0x95 },
478         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2    478         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_L0, 0x6a },
479         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2    479         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_ULP, 0x05 },
480         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2    480         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2CASC_L2L1L0, 0xa5 },
481         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2    481         { WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2CASC_ULP, 0x13 },
482         { WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L2    482         { WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L2L1, 0x88 },
483         { WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L0    483         { WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L0ULP, 0x42 },
484         { WCD939X_TX_COM_NEW_INT_ADC_INT_L2, 0    484         { WCD939X_TX_COM_NEW_INT_ADC_INT_L2, 0xff },
485         { WCD939X_TX_COM_NEW_INT_ADC_INT_L1, 0    485         { WCD939X_TX_COM_NEW_INT_ADC_INT_L1, 0x64 },
486         { WCD939X_TX_COM_NEW_INT_ADC_INT_L0, 0    486         { WCD939X_TX_COM_NEW_INT_ADC_INT_L0, 0x64 },
487         { WCD939X_TX_COM_NEW_INT_ADC_INT_ULP,     487         { WCD939X_TX_COM_NEW_INT_ADC_INT_ULP, 0x77 },
488         { WCD939X_DIGITAL_PAGE, 0x00 },           488         { WCD939X_DIGITAL_PAGE, 0x00 },
489         { WCD939X_DIGITAL_SWR_TX_CLK_RATE, 0x0    489         { WCD939X_DIGITAL_SWR_TX_CLK_RATE, 0x00 },
490         { WCD939X_DIGITAL_CDC_RST_CTL, 0x03 },    490         { WCD939X_DIGITAL_CDC_RST_CTL, 0x03 },
491         { WCD939X_DIGITAL_TOP_CLK_CFG, 0x00 },    491         { WCD939X_DIGITAL_TOP_CLK_CFG, 0x00 },
492         { WCD939X_DIGITAL_CDC_ANA_CLK_CTL, 0x0    492         { WCD939X_DIGITAL_CDC_ANA_CLK_CTL, 0x00 },
493         { WCD939X_DIGITAL_CDC_DIG_CLK_CTL, 0xf    493         { WCD939X_DIGITAL_CDC_DIG_CLK_CTL, 0xf0 },
494         { WCD939X_DIGITAL_SWR_RST_EN, 0x00 },     494         { WCD939X_DIGITAL_SWR_RST_EN, 0x00 },
495         { WCD939X_DIGITAL_CDC_PATH_MODE, 0x55     495         { WCD939X_DIGITAL_CDC_PATH_MODE, 0x55 },
496         { WCD939X_DIGITAL_CDC_RX_RST, 0x00 },     496         { WCD939X_DIGITAL_CDC_RX_RST, 0x00 },
497         { WCD939X_DIGITAL_CDC_RX0_CTL, 0xfc },    497         { WCD939X_DIGITAL_CDC_RX0_CTL, 0xfc },
498         { WCD939X_DIGITAL_CDC_RX1_CTL, 0xfc },    498         { WCD939X_DIGITAL_CDC_RX1_CTL, 0xfc },
499         { WCD939X_DIGITAL_CDC_RX2_CTL, 0xfc },    499         { WCD939X_DIGITAL_CDC_RX2_CTL, 0xfc },
500         { WCD939X_DIGITAL_CDC_TX_ANA_MODE_0_1,    500         { WCD939X_DIGITAL_CDC_TX_ANA_MODE_0_1, 0x00 },
501         { WCD939X_DIGITAL_CDC_TX_ANA_MODE_2_3,    501         { WCD939X_DIGITAL_CDC_TX_ANA_MODE_2_3, 0x00 },
502         { WCD939X_DIGITAL_CDC_COMP_CTL_0, 0x00    502         { WCD939X_DIGITAL_CDC_COMP_CTL_0, 0x00 },
503         { WCD939X_DIGITAL_CDC_ANA_TX_CLK_CTL,     503         { WCD939X_DIGITAL_CDC_ANA_TX_CLK_CTL, 0x1e },
504         { WCD939X_DIGITAL_CDC_HPH_DSM_A1_0, 0x    504         { WCD939X_DIGITAL_CDC_HPH_DSM_A1_0, 0x00 },
505         { WCD939X_DIGITAL_CDC_HPH_DSM_A1_1, 0x    505         { WCD939X_DIGITAL_CDC_HPH_DSM_A1_1, 0x01 },
506         { WCD939X_DIGITAL_CDC_HPH_DSM_A2_0, 0x    506         { WCD939X_DIGITAL_CDC_HPH_DSM_A2_0, 0x63 },
507         { WCD939X_DIGITAL_CDC_HPH_DSM_A2_1, 0x    507         { WCD939X_DIGITAL_CDC_HPH_DSM_A2_1, 0x04 },
508         { WCD939X_DIGITAL_CDC_HPH_DSM_A3_0, 0x    508         { WCD939X_DIGITAL_CDC_HPH_DSM_A3_0, 0xac },
509         { WCD939X_DIGITAL_CDC_HPH_DSM_A3_1, 0x    509         { WCD939X_DIGITAL_CDC_HPH_DSM_A3_1, 0x04 },
510         { WCD939X_DIGITAL_CDC_HPH_DSM_A4_0, 0x    510         { WCD939X_DIGITAL_CDC_HPH_DSM_A4_0, 0x1a },
511         { WCD939X_DIGITAL_CDC_HPH_DSM_A4_1, 0x    511         { WCD939X_DIGITAL_CDC_HPH_DSM_A4_1, 0x03 },
512         { WCD939X_DIGITAL_CDC_HPH_DSM_A5_0, 0x    512         { WCD939X_DIGITAL_CDC_HPH_DSM_A5_0, 0xbc },
513         { WCD939X_DIGITAL_CDC_HPH_DSM_A5_1, 0x    513         { WCD939X_DIGITAL_CDC_HPH_DSM_A5_1, 0x02 },
514         { WCD939X_DIGITAL_CDC_HPH_DSM_A6_0, 0x    514         { WCD939X_DIGITAL_CDC_HPH_DSM_A6_0, 0xc7 },
515         { WCD939X_DIGITAL_CDC_HPH_DSM_A7_0, 0x    515         { WCD939X_DIGITAL_CDC_HPH_DSM_A7_0, 0xf8 },
516         { WCD939X_DIGITAL_CDC_HPH_DSM_C_0, 0x4    516         { WCD939X_DIGITAL_CDC_HPH_DSM_C_0, 0x47 },
517         { WCD939X_DIGITAL_CDC_HPH_DSM_C_1, 0x4    517         { WCD939X_DIGITAL_CDC_HPH_DSM_C_1, 0x43 },
518         { WCD939X_DIGITAL_CDC_HPH_DSM_C_2, 0xb    518         { WCD939X_DIGITAL_CDC_HPH_DSM_C_2, 0xb1 },
519         { WCD939X_DIGITAL_CDC_HPH_DSM_C_3, 0x1    519         { WCD939X_DIGITAL_CDC_HPH_DSM_C_3, 0x17 },
520         { WCD939X_DIGITAL_CDC_HPH_DSM_R1, 0x4d    520         { WCD939X_DIGITAL_CDC_HPH_DSM_R1, 0x4d },
521         { WCD939X_DIGITAL_CDC_HPH_DSM_R2, 0x29    521         { WCD939X_DIGITAL_CDC_HPH_DSM_R2, 0x29 },
522         { WCD939X_DIGITAL_CDC_HPH_DSM_R3, 0x34    522         { WCD939X_DIGITAL_CDC_HPH_DSM_R3, 0x34 },
523         { WCD939X_DIGITAL_CDC_HPH_DSM_R4, 0x59    523         { WCD939X_DIGITAL_CDC_HPH_DSM_R4, 0x59 },
524         { WCD939X_DIGITAL_CDC_HPH_DSM_R5, 0x66    524         { WCD939X_DIGITAL_CDC_HPH_DSM_R5, 0x66 },
525         { WCD939X_DIGITAL_CDC_HPH_DSM_R6, 0x87    525         { WCD939X_DIGITAL_CDC_HPH_DSM_R6, 0x87 },
526         { WCD939X_DIGITAL_CDC_HPH_DSM_R7, 0x64    526         { WCD939X_DIGITAL_CDC_HPH_DSM_R7, 0x64 },
527         { WCD939X_DIGITAL_CDC_EAR_DSM_A1_0, 0x    527         { WCD939X_DIGITAL_CDC_EAR_DSM_A1_0, 0x00 },
528         { WCD939X_DIGITAL_CDC_EAR_DSM_A1_1, 0x    528         { WCD939X_DIGITAL_CDC_EAR_DSM_A1_1, 0x01 },
529         { WCD939X_DIGITAL_CDC_EAR_DSM_A2_0, 0x    529         { WCD939X_DIGITAL_CDC_EAR_DSM_A2_0, 0x96 },
530         { WCD939X_DIGITAL_CDC_EAR_DSM_A2_1, 0x    530         { WCD939X_DIGITAL_CDC_EAR_DSM_A2_1, 0x09 },
531         { WCD939X_DIGITAL_CDC_EAR_DSM_A3_0, 0x    531         { WCD939X_DIGITAL_CDC_EAR_DSM_A3_0, 0xab },
532         { WCD939X_DIGITAL_CDC_EAR_DSM_A3_1, 0x    532         { WCD939X_DIGITAL_CDC_EAR_DSM_A3_1, 0x05 },
533         { WCD939X_DIGITAL_CDC_EAR_DSM_A4_0, 0x    533         { WCD939X_DIGITAL_CDC_EAR_DSM_A4_0, 0x1c },
534         { WCD939X_DIGITAL_CDC_EAR_DSM_A4_1, 0x    534         { WCD939X_DIGITAL_CDC_EAR_DSM_A4_1, 0x02 },
535         { WCD939X_DIGITAL_CDC_EAR_DSM_A5_0, 0x    535         { WCD939X_DIGITAL_CDC_EAR_DSM_A5_0, 0x17 },
536         { WCD939X_DIGITAL_CDC_EAR_DSM_A5_1, 0x    536         { WCD939X_DIGITAL_CDC_EAR_DSM_A5_1, 0x02 },
537         { WCD939X_DIGITAL_CDC_EAR_DSM_A6_0, 0x    537         { WCD939X_DIGITAL_CDC_EAR_DSM_A6_0, 0xaa },
538         { WCD939X_DIGITAL_CDC_EAR_DSM_A7_0, 0x    538         { WCD939X_DIGITAL_CDC_EAR_DSM_A7_0, 0xe3 },
539         { WCD939X_DIGITAL_CDC_EAR_DSM_C_0, 0x6    539         { WCD939X_DIGITAL_CDC_EAR_DSM_C_0, 0x69 },
540         { WCD939X_DIGITAL_CDC_EAR_DSM_C_1, 0x5    540         { WCD939X_DIGITAL_CDC_EAR_DSM_C_1, 0x54 },
541         { WCD939X_DIGITAL_CDC_EAR_DSM_C_2, 0x0    541         { WCD939X_DIGITAL_CDC_EAR_DSM_C_2, 0x02 },
542         { WCD939X_DIGITAL_CDC_EAR_DSM_C_3, 0x1    542         { WCD939X_DIGITAL_CDC_EAR_DSM_C_3, 0x15 },
543         { WCD939X_DIGITAL_CDC_EAR_DSM_R1, 0xa4    543         { WCD939X_DIGITAL_CDC_EAR_DSM_R1, 0xa4 },
544         { WCD939X_DIGITAL_CDC_EAR_DSM_R2, 0xb5    544         { WCD939X_DIGITAL_CDC_EAR_DSM_R2, 0xb5 },
545         { WCD939X_DIGITAL_CDC_EAR_DSM_R3, 0x86    545         { WCD939X_DIGITAL_CDC_EAR_DSM_R3, 0x86 },
546         { WCD939X_DIGITAL_CDC_EAR_DSM_R4, 0x85    546         { WCD939X_DIGITAL_CDC_EAR_DSM_R4, 0x85 },
547         { WCD939X_DIGITAL_CDC_EAR_DSM_R5, 0xaa    547         { WCD939X_DIGITAL_CDC_EAR_DSM_R5, 0xaa },
548         { WCD939X_DIGITAL_CDC_EAR_DSM_R6, 0xe2    548         { WCD939X_DIGITAL_CDC_EAR_DSM_R6, 0xe2 },
549         { WCD939X_DIGITAL_CDC_EAR_DSM_R7, 0x62    549         { WCD939X_DIGITAL_CDC_EAR_DSM_R7, 0x62 },
550         { WCD939X_DIGITAL_CDC_HPH_GAIN_RX_0, 0    550         { WCD939X_DIGITAL_CDC_HPH_GAIN_RX_0, 0x55 },
551         { WCD939X_DIGITAL_CDC_HPH_GAIN_RX_1, 0    551         { WCD939X_DIGITAL_CDC_HPH_GAIN_RX_1, 0xa9 },
552         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_0,     552         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_0, 0x3d },
553         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_1,     553         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_1, 0x2e },
554         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_2,     554         { WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_2, 0x01 },
555         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_0,     555         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_0, 0x00 },
556         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_1,     556         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_1, 0xfc },
557         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_2,     557         { WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_2, 0x01 },
558         { WCD939X_DIGITAL_CDC_HPH_GAIN_CTL, 0x    558         { WCD939X_DIGITAL_CDC_HPH_GAIN_CTL, 0x00 },
559         { WCD939X_DIGITAL_CDC_EAR_GAIN_CTL, 0x    559         { WCD939X_DIGITAL_CDC_EAR_GAIN_CTL, 0x00 },
560         { WCD939X_DIGITAL_CDC_EAR_PATH_CTL, 0x    560         { WCD939X_DIGITAL_CDC_EAR_PATH_CTL, 0x00 },
561         { WCD939X_DIGITAL_CDC_SWR_CLH, 0x00 },    561         { WCD939X_DIGITAL_CDC_SWR_CLH, 0x00 },
562         { WCD939X_DIGITAL_SWR_CLH_BYP, 0x00 },    562         { WCD939X_DIGITAL_SWR_CLH_BYP, 0x00 },
563         { WCD939X_DIGITAL_CDC_TX0_CTL, 0x68 },    563         { WCD939X_DIGITAL_CDC_TX0_CTL, 0x68 },
564         { WCD939X_DIGITAL_CDC_TX1_CTL, 0x68 },    564         { WCD939X_DIGITAL_CDC_TX1_CTL, 0x68 },
565         { WCD939X_DIGITAL_CDC_TX2_CTL, 0x68 },    565         { WCD939X_DIGITAL_CDC_TX2_CTL, 0x68 },
566         { WCD939X_DIGITAL_CDC_TX_RST, 0x00 },     566         { WCD939X_DIGITAL_CDC_TX_RST, 0x00 },
567         { WCD939X_DIGITAL_CDC_REQ_CTL, 0x01 },    567         { WCD939X_DIGITAL_CDC_REQ_CTL, 0x01 },
568         { WCD939X_DIGITAL_CDC_RST, 0x00 },        568         { WCD939X_DIGITAL_CDC_RST, 0x00 },
569         { WCD939X_DIGITAL_CDC_AMIC_CTL, 0x0f }    569         { WCD939X_DIGITAL_CDC_AMIC_CTL, 0x0f },
570         { WCD939X_DIGITAL_CDC_DMIC_CTL, 0x04 }    570         { WCD939X_DIGITAL_CDC_DMIC_CTL, 0x04 },
571         { WCD939X_DIGITAL_CDC_DMIC1_CTL, 0x01     571         { WCD939X_DIGITAL_CDC_DMIC1_CTL, 0x01 },
572         { WCD939X_DIGITAL_CDC_DMIC2_CTL, 0x01     572         { WCD939X_DIGITAL_CDC_DMIC2_CTL, 0x01 },
573         { WCD939X_DIGITAL_CDC_DMIC3_CTL, 0x01     573         { WCD939X_DIGITAL_CDC_DMIC3_CTL, 0x01 },
574         { WCD939X_DIGITAL_CDC_DMIC4_CTL, 0x01     574         { WCD939X_DIGITAL_CDC_DMIC4_CTL, 0x01 },
575         { WCD939X_DIGITAL_EFUSE_PRG_CTL, 0x00     575         { WCD939X_DIGITAL_EFUSE_PRG_CTL, 0x00 },
576         { WCD939X_DIGITAL_EFUSE_CTL, 0x2b },      576         { WCD939X_DIGITAL_EFUSE_CTL, 0x2b },
577         { WCD939X_DIGITAL_CDC_DMIC_RATE_1_2, 0    577         { WCD939X_DIGITAL_CDC_DMIC_RATE_1_2, 0x11 },
578         { WCD939X_DIGITAL_CDC_DMIC_RATE_3_4, 0    578         { WCD939X_DIGITAL_CDC_DMIC_RATE_3_4, 0x11 },
579         { WCD939X_DIGITAL_PDM_WD_CTL0, 0x00 },    579         { WCD939X_DIGITAL_PDM_WD_CTL0, 0x00 },
580         { WCD939X_DIGITAL_PDM_WD_CTL1, 0x00 },    580         { WCD939X_DIGITAL_PDM_WD_CTL1, 0x00 },
581         { WCD939X_DIGITAL_PDM_WD_CTL2, 0x00 },    581         { WCD939X_DIGITAL_PDM_WD_CTL2, 0x00 },
582         { WCD939X_DIGITAL_INTR_MODE, 0x00 },      582         { WCD939X_DIGITAL_INTR_MODE, 0x00 },
583         { WCD939X_DIGITAL_INTR_MASK_0, 0xff },    583         { WCD939X_DIGITAL_INTR_MASK_0, 0xff },
584         { WCD939X_DIGITAL_INTR_MASK_1, 0xe7 },    584         { WCD939X_DIGITAL_INTR_MASK_1, 0xe7 },
585         { WCD939X_DIGITAL_INTR_MASK_2, 0x0e },    585         { WCD939X_DIGITAL_INTR_MASK_2, 0x0e },
586         { WCD939X_DIGITAL_INTR_CLEAR_0, 0x00 }    586         { WCD939X_DIGITAL_INTR_CLEAR_0, 0x00 },
587         { WCD939X_DIGITAL_INTR_CLEAR_1, 0x00 }    587         { WCD939X_DIGITAL_INTR_CLEAR_1, 0x00 },
588         { WCD939X_DIGITAL_INTR_CLEAR_2, 0x00 }    588         { WCD939X_DIGITAL_INTR_CLEAR_2, 0x00 },
589         { WCD939X_DIGITAL_INTR_LEVEL_0, 0x00 }    589         { WCD939X_DIGITAL_INTR_LEVEL_0, 0x00 },
590         { WCD939X_DIGITAL_INTR_LEVEL_1, 0x00 }    590         { WCD939X_DIGITAL_INTR_LEVEL_1, 0x00 },
591         { WCD939X_DIGITAL_INTR_LEVEL_2, 0x00 }    591         { WCD939X_DIGITAL_INTR_LEVEL_2, 0x00 },
592         { WCD939X_DIGITAL_INTR_SET_0, 0x00 },     592         { WCD939X_DIGITAL_INTR_SET_0, 0x00 },
593         { WCD939X_DIGITAL_INTR_SET_1, 0x00 },     593         { WCD939X_DIGITAL_INTR_SET_1, 0x00 },
594         { WCD939X_DIGITAL_INTR_SET_2, 0x00 },     594         { WCD939X_DIGITAL_INTR_SET_2, 0x00 },
595         { WCD939X_DIGITAL_INTR_TEST_0, 0x00 },    595         { WCD939X_DIGITAL_INTR_TEST_0, 0x00 },
596         { WCD939X_DIGITAL_INTR_TEST_1, 0x00 },    596         { WCD939X_DIGITAL_INTR_TEST_1, 0x00 },
597         { WCD939X_DIGITAL_INTR_TEST_2, 0x00 },    597         { WCD939X_DIGITAL_INTR_TEST_2, 0x00 },
598         { WCD939X_DIGITAL_TX_MODE_DBG_EN, 0x00    598         { WCD939X_DIGITAL_TX_MODE_DBG_EN, 0x00 },
599         { WCD939X_DIGITAL_TX_MODE_DBG_0_1, 0x0    599         { WCD939X_DIGITAL_TX_MODE_DBG_0_1, 0x00 },
600         { WCD939X_DIGITAL_TX_MODE_DBG_2_3, 0x0    600         { WCD939X_DIGITAL_TX_MODE_DBG_2_3, 0x00 },
601         { WCD939X_DIGITAL_LB_IN_SEL_CTL, 0x00     601         { WCD939X_DIGITAL_LB_IN_SEL_CTL, 0x00 },
602         { WCD939X_DIGITAL_LOOP_BACK_MODE, 0x00    602         { WCD939X_DIGITAL_LOOP_BACK_MODE, 0x00 },
603         { WCD939X_DIGITAL_SWR_DAC_TEST, 0x00 }    603         { WCD939X_DIGITAL_SWR_DAC_TEST, 0x00 },
604         { WCD939X_DIGITAL_SWR_HM_TEST_RX_0, 0x    604         { WCD939X_DIGITAL_SWR_HM_TEST_RX_0, 0x40 },
605         { WCD939X_DIGITAL_SWR_HM_TEST_TX_0, 0x    605         { WCD939X_DIGITAL_SWR_HM_TEST_TX_0, 0x40 },
606         { WCD939X_DIGITAL_SWR_HM_TEST_RX_1, 0x    606         { WCD939X_DIGITAL_SWR_HM_TEST_RX_1, 0x00 },
607         { WCD939X_DIGITAL_SWR_HM_TEST_TX_1, 0x    607         { WCD939X_DIGITAL_SWR_HM_TEST_TX_1, 0x00 },
608         { WCD939X_DIGITAL_SWR_HM_TEST_TX_2, 0x    608         { WCD939X_DIGITAL_SWR_HM_TEST_TX_2, 0x00 },
609         { WCD939X_DIGITAL_PAD_CTL_SWR_0, 0x8f     609         { WCD939X_DIGITAL_PAD_CTL_SWR_0, 0x8f },
610         { WCD939X_DIGITAL_PAD_CTL_SWR_1, 0x06     610         { WCD939X_DIGITAL_PAD_CTL_SWR_1, 0x06 },
611         { WCD939X_DIGITAL_I2C_CTL, 0x00 },        611         { WCD939X_DIGITAL_I2C_CTL, 0x00 },
612         { WCD939X_DIGITAL_CDC_TX_TANGGU_SW_MOD    612         { WCD939X_DIGITAL_CDC_TX_TANGGU_SW_MODE, 0x00 },
613         { WCD939X_DIGITAL_EFUSE_TEST_CTL_0, 0x    613         { WCD939X_DIGITAL_EFUSE_TEST_CTL_0, 0x00 },
614         { WCD939X_DIGITAL_EFUSE_TEST_CTL_1, 0x    614         { WCD939X_DIGITAL_EFUSE_TEST_CTL_1, 0x00 },
615         { WCD939X_DIGITAL_PAD_CTL_PDM_RX0, 0xf    615         { WCD939X_DIGITAL_PAD_CTL_PDM_RX0, 0xf1 },
616         { WCD939X_DIGITAL_PAD_CTL_PDM_RX1, 0xf    616         { WCD939X_DIGITAL_PAD_CTL_PDM_RX1, 0xf1 },
617         { WCD939X_DIGITAL_PAD_CTL_PDM_TX0, 0xf    617         { WCD939X_DIGITAL_PAD_CTL_PDM_TX0, 0xf1 },
618         { WCD939X_DIGITAL_PAD_CTL_PDM_TX1, 0xf    618         { WCD939X_DIGITAL_PAD_CTL_PDM_TX1, 0xf1 },
619         { WCD939X_DIGITAL_PAD_CTL_PDM_TX2, 0xf    619         { WCD939X_DIGITAL_PAD_CTL_PDM_TX2, 0xf1 },
620         { WCD939X_DIGITAL_PAD_INP_DIS_0, 0x00     620         { WCD939X_DIGITAL_PAD_INP_DIS_0, 0x00 },
621         { WCD939X_DIGITAL_PAD_INP_DIS_1, 0x00     621         { WCD939X_DIGITAL_PAD_INP_DIS_1, 0x00 },
622         { WCD939X_DIGITAL_DRIVE_STRENGTH_0, 0x    622         { WCD939X_DIGITAL_DRIVE_STRENGTH_0, 0x00 },
623         { WCD939X_DIGITAL_DRIVE_STRENGTH_1, 0x    623         { WCD939X_DIGITAL_DRIVE_STRENGTH_1, 0x00 },
624         { WCD939X_DIGITAL_DRIVE_STRENGTH_2, 0x    624         { WCD939X_DIGITAL_DRIVE_STRENGTH_2, 0x00 },
625         { WCD939X_DIGITAL_RX_DATA_EDGE_CTL, 0x    625         { WCD939X_DIGITAL_RX_DATA_EDGE_CTL, 0x1f },
626         { WCD939X_DIGITAL_TX_DATA_EDGE_CTL, 0x    626         { WCD939X_DIGITAL_TX_DATA_EDGE_CTL, 0x80 },
627         { WCD939X_DIGITAL_GPIO_MODE, 0x00 },      627         { WCD939X_DIGITAL_GPIO_MODE, 0x00 },
628         { WCD939X_DIGITAL_PIN_CTL_OE, 0x00 },     628         { WCD939X_DIGITAL_PIN_CTL_OE, 0x00 },
629         { WCD939X_DIGITAL_PIN_CTL_DATA_0, 0x00    629         { WCD939X_DIGITAL_PIN_CTL_DATA_0, 0x00 },
630         { WCD939X_DIGITAL_PIN_CTL_DATA_1, 0x00    630         { WCD939X_DIGITAL_PIN_CTL_DATA_1, 0x00 },
631         { WCD939X_DIGITAL_DIG_DEBUG_CTL, 0x00     631         { WCD939X_DIGITAL_DIG_DEBUG_CTL, 0x00 },
632         { WCD939X_DIGITAL_DIG_DEBUG_EN, 0x00 }    632         { WCD939X_DIGITAL_DIG_DEBUG_EN, 0x00 },
633         { WCD939X_DIGITAL_ANA_CSR_DBG_ADD, 0x0    633         { WCD939X_DIGITAL_ANA_CSR_DBG_ADD, 0x00 },
634         { WCD939X_DIGITAL_ANA_CSR_DBG_CTL, 0x4    634         { WCD939X_DIGITAL_ANA_CSR_DBG_CTL, 0x48 },
635         { WCD939X_DIGITAL_SSP_DBG, 0x00 },        635         { WCD939X_DIGITAL_SSP_DBG, 0x00 },
636         { WCD939X_DIGITAL_SPARE_0, 0x00 },        636         { WCD939X_DIGITAL_SPARE_0, 0x00 },
637         { WCD939X_DIGITAL_SPARE_1, 0x00 },        637         { WCD939X_DIGITAL_SPARE_1, 0x00 },
638         { WCD939X_DIGITAL_SPARE_2, 0x00 },        638         { WCD939X_DIGITAL_SPARE_2, 0x00 },
639         { WCD939X_DIGITAL_TX_REQ_FB_CTL_0, 0x8    639         { WCD939X_DIGITAL_TX_REQ_FB_CTL_0, 0x88 },
640         { WCD939X_DIGITAL_TX_REQ_FB_CTL_1, 0x8    640         { WCD939X_DIGITAL_TX_REQ_FB_CTL_1, 0x88 },
641         { WCD939X_DIGITAL_TX_REQ_FB_CTL_2, 0x8    641         { WCD939X_DIGITAL_TX_REQ_FB_CTL_2, 0x88 },
642         { WCD939X_DIGITAL_TX_REQ_FB_CTL_3, 0x8    642         { WCD939X_DIGITAL_TX_REQ_FB_CTL_3, 0x88 },
643         { WCD939X_DIGITAL_TX_REQ_FB_CTL_4, 0x8    643         { WCD939X_DIGITAL_TX_REQ_FB_CTL_4, 0x88 },
644         { WCD939X_DIGITAL_DEM_BYPASS_DATA0, 0x    644         { WCD939X_DIGITAL_DEM_BYPASS_DATA0, 0x55 },
645         { WCD939X_DIGITAL_DEM_BYPASS_DATA1, 0x    645         { WCD939X_DIGITAL_DEM_BYPASS_DATA1, 0x55 },
646         { WCD939X_DIGITAL_DEM_BYPASS_DATA2, 0x    646         { WCD939X_DIGITAL_DEM_BYPASS_DATA2, 0x55 },
647         { WCD939X_DIGITAL_DEM_BYPASS_DATA3, 0x    647         { WCD939X_DIGITAL_DEM_BYPASS_DATA3, 0x01 },
648         { WCD939X_DIGITAL_DEM_SECOND_ORDER, 0x    648         { WCD939X_DIGITAL_DEM_SECOND_ORDER, 0x03 },
649         { WCD939X_DIGITAL_DSM_CTRL, 0x00 },       649         { WCD939X_DIGITAL_DSM_CTRL, 0x00 },
650         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_0,    650         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_0, 0x00 },
651         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_1,    651         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_1, 0x00 },
652         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_2,    652         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_2, 0x00 },
653         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_3,    653         { WCD939X_DIGITAL_DSM_0_STATIC_DATA_3, 0x00 },
654         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_0,    654         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_0, 0x00 },
655         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_1,    655         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_1, 0x00 },
656         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_2,    656         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_2, 0x00 },
657         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_3,    657         { WCD939X_DIGITAL_DSM_1_STATIC_DATA_3, 0x00 },
658         { WCD939X_RX_TOP_PAGE, 0x00 },            658         { WCD939X_RX_TOP_PAGE, 0x00 },
659         { WCD939X_RX_TOP_TOP_CFG0, 0x00 },        659         { WCD939X_RX_TOP_TOP_CFG0, 0x00 },
660         { WCD939X_RX_TOP_HPHL_COMP_WR_LSB, 0x0    660         { WCD939X_RX_TOP_HPHL_COMP_WR_LSB, 0x00 },
661         { WCD939X_RX_TOP_HPHL_COMP_WR_MSB, 0x0    661         { WCD939X_RX_TOP_HPHL_COMP_WR_MSB, 0x00 },
662         { WCD939X_RX_TOP_HPHL_COMP_LUT, 0x00 }    662         { WCD939X_RX_TOP_HPHL_COMP_LUT, 0x00 },
663         { WCD939X_RX_TOP_HPHR_COMP_WR_LSB, 0x0    663         { WCD939X_RX_TOP_HPHR_COMP_WR_LSB, 0x00 },
664         { WCD939X_RX_TOP_HPHR_COMP_WR_MSB, 0x0    664         { WCD939X_RX_TOP_HPHR_COMP_WR_MSB, 0x00 },
665         { WCD939X_RX_TOP_HPHR_COMP_LUT, 0x00 }    665         { WCD939X_RX_TOP_HPHR_COMP_LUT, 0x00 },
666         { WCD939X_RX_TOP_DSD0_DEBUG_CFG1, 0x05    666         { WCD939X_RX_TOP_DSD0_DEBUG_CFG1, 0x05 },
667         { WCD939X_RX_TOP_DSD0_DEBUG_CFG2, 0x08    667         { WCD939X_RX_TOP_DSD0_DEBUG_CFG2, 0x08 },
668         { WCD939X_RX_TOP_DSD0_DEBUG_CFG3, 0x00    668         { WCD939X_RX_TOP_DSD0_DEBUG_CFG3, 0x00 },
669         { WCD939X_RX_TOP_DSD0_DEBUG_CFG4, 0x00    669         { WCD939X_RX_TOP_DSD0_DEBUG_CFG4, 0x00 },
670         { WCD939X_RX_TOP_DSD1_DEBUG_CFG1, 0x03    670         { WCD939X_RX_TOP_DSD1_DEBUG_CFG1, 0x03 },
671         { WCD939X_RX_TOP_DSD1_DEBUG_CFG2, 0x08    671         { WCD939X_RX_TOP_DSD1_DEBUG_CFG2, 0x08 },
672         { WCD939X_RX_TOP_DSD1_DEBUG_CFG3, 0x00    672         { WCD939X_RX_TOP_DSD1_DEBUG_CFG3, 0x00 },
673         { WCD939X_RX_TOP_DSD1_DEBUG_CFG4, 0x00    673         { WCD939X_RX_TOP_DSD1_DEBUG_CFG4, 0x00 },
674         { WCD939X_RX_TOP_HPHL_PATH_CFG0, 0x00     674         { WCD939X_RX_TOP_HPHL_PATH_CFG0, 0x00 },
675         { WCD939X_RX_TOP_HPHL_PATH_CFG1, 0x00     675         { WCD939X_RX_TOP_HPHL_PATH_CFG1, 0x00 },
676         { WCD939X_RX_TOP_HPHR_PATH_CFG0, 0x00     676         { WCD939X_RX_TOP_HPHR_PATH_CFG0, 0x00 },
677         { WCD939X_RX_TOP_HPHR_PATH_CFG1, 0x00     677         { WCD939X_RX_TOP_HPHR_PATH_CFG1, 0x00 },
678         { WCD939X_RX_TOP_PATH_CFG2, 0x00 },       678         { WCD939X_RX_TOP_PATH_CFG2, 0x00 },
679         { WCD939X_RX_TOP_HPHL_PATH_SEC0, 0x00     679         { WCD939X_RX_TOP_HPHL_PATH_SEC0, 0x00 },
680         { WCD939X_RX_TOP_HPHL_PATH_SEC1, 0x00     680         { WCD939X_RX_TOP_HPHL_PATH_SEC1, 0x00 },
681         { WCD939X_RX_TOP_HPHL_PATH_SEC2, 0x00     681         { WCD939X_RX_TOP_HPHL_PATH_SEC2, 0x00 },
682         { WCD939X_RX_TOP_HPHL_PATH_SEC3, 0x00     682         { WCD939X_RX_TOP_HPHL_PATH_SEC3, 0x00 },
683         { WCD939X_RX_TOP_HPHR_PATH_SEC0, 0x00     683         { WCD939X_RX_TOP_HPHR_PATH_SEC0, 0x00 },
684         { WCD939X_RX_TOP_HPHR_PATH_SEC1, 0x00     684         { WCD939X_RX_TOP_HPHR_PATH_SEC1, 0x00 },
685         { WCD939X_RX_TOP_HPHR_PATH_SEC2, 0x00     685         { WCD939X_RX_TOP_HPHR_PATH_SEC2, 0x00 },
686         { WCD939X_RX_TOP_HPHR_PATH_SEC3, 0x00     686         { WCD939X_RX_TOP_HPHR_PATH_SEC3, 0x00 },
687         { WCD939X_RX_TOP_PATH_SEC4, 0x00 },       687         { WCD939X_RX_TOP_PATH_SEC4, 0x00 },
688         { WCD939X_RX_TOP_PATH_SEC5, 0x00 },       688         { WCD939X_RX_TOP_PATH_SEC5, 0x00 },
689         { WCD939X_COMPANDER_HPHL_CTL0, 0x60 },    689         { WCD939X_COMPANDER_HPHL_CTL0, 0x60 },
690         { WCD939X_COMPANDER_HPHL_CTL1, 0xdb },    690         { WCD939X_COMPANDER_HPHL_CTL1, 0xdb },
691         { WCD939X_COMPANDER_HPHL_CTL2, 0xff },    691         { WCD939X_COMPANDER_HPHL_CTL2, 0xff },
692         { WCD939X_COMPANDER_HPHL_CTL3, 0x35 },    692         { WCD939X_COMPANDER_HPHL_CTL3, 0x35 },
693         { WCD939X_COMPANDER_HPHL_CTL4, 0xff },    693         { WCD939X_COMPANDER_HPHL_CTL4, 0xff },
694         { WCD939X_COMPANDER_HPHL_CTL5, 0x00 },    694         { WCD939X_COMPANDER_HPHL_CTL5, 0x00 },
695         { WCD939X_COMPANDER_HPHL_CTL7, 0x08 },    695         { WCD939X_COMPANDER_HPHL_CTL7, 0x08 },
696         { WCD939X_COMPANDER_HPHL_CTL8, 0x00 },    696         { WCD939X_COMPANDER_HPHL_CTL8, 0x00 },
697         { WCD939X_COMPANDER_HPHL_CTL9, 0x00 },    697         { WCD939X_COMPANDER_HPHL_CTL9, 0x00 },
698         { WCD939X_COMPANDER_HPHL_CTL10, 0x06 }    698         { WCD939X_COMPANDER_HPHL_CTL10, 0x06 },
699         { WCD939X_COMPANDER_HPHL_CTL11, 0x12 }    699         { WCD939X_COMPANDER_HPHL_CTL11, 0x12 },
700         { WCD939X_COMPANDER_HPHL_CTL12, 0x1e }    700         { WCD939X_COMPANDER_HPHL_CTL12, 0x1e },
701         { WCD939X_COMPANDER_HPHL_CTL13, 0x2a }    701         { WCD939X_COMPANDER_HPHL_CTL13, 0x2a },
702         { WCD939X_COMPANDER_HPHL_CTL14, 0x36 }    702         { WCD939X_COMPANDER_HPHL_CTL14, 0x36 },
703         { WCD939X_COMPANDER_HPHL_CTL15, 0x3c }    703         { WCD939X_COMPANDER_HPHL_CTL15, 0x3c },
704         { WCD939X_COMPANDER_HPHL_CTL16, 0xc4 }    704         { WCD939X_COMPANDER_HPHL_CTL16, 0xc4 },
705         { WCD939X_COMPANDER_HPHL_CTL17, 0x00 }    705         { WCD939X_COMPANDER_HPHL_CTL17, 0x00 },
706         { WCD939X_COMPANDER_HPHL_CTL18, 0x0c }    706         { WCD939X_COMPANDER_HPHL_CTL18, 0x0c },
707         { WCD939X_COMPANDER_HPHL_CTL19, 0x16 }    707         { WCD939X_COMPANDER_HPHL_CTL19, 0x16 },
708         { WCD939X_R_CTL0, 0x60 },                 708         { WCD939X_R_CTL0, 0x60 },
709         { WCD939X_R_CTL1, 0xdb },                 709         { WCD939X_R_CTL1, 0xdb },
710         { WCD939X_R_CTL2, 0xff },                 710         { WCD939X_R_CTL2, 0xff },
711         { WCD939X_R_CTL3, 0x35 },                 711         { WCD939X_R_CTL3, 0x35 },
712         { WCD939X_R_CTL4, 0xff },                 712         { WCD939X_R_CTL4, 0xff },
713         { WCD939X_R_CTL5, 0x00 },                 713         { WCD939X_R_CTL5, 0x00 },
714         { WCD939X_R_CTL7, 0x08 },                 714         { WCD939X_R_CTL7, 0x08 },
715         { WCD939X_R_CTL8, 0x00 },                 715         { WCD939X_R_CTL8, 0x00 },
716         { WCD939X_R_CTL9, 0x00 },                 716         { WCD939X_R_CTL9, 0x00 },
717         { WCD939X_R_CTL10, 0x06 },                717         { WCD939X_R_CTL10, 0x06 },
718         { WCD939X_R_CTL11, 0x12 },                718         { WCD939X_R_CTL11, 0x12 },
719         { WCD939X_R_CTL12, 0x1e },                719         { WCD939X_R_CTL12, 0x1e },
720         { WCD939X_R_CTL13, 0x2a },                720         { WCD939X_R_CTL13, 0x2a },
721         { WCD939X_R_CTL14, 0x36 },                721         { WCD939X_R_CTL14, 0x36 },
722         { WCD939X_R_CTL15, 0x3c },                722         { WCD939X_R_CTL15, 0x3c },
723         { WCD939X_R_CTL16, 0xc4 },                723         { WCD939X_R_CTL16, 0xc4 },
724         { WCD939X_R_CTL17, 0x00 },                724         { WCD939X_R_CTL17, 0x00 },
725         { WCD939X_R_CTL18, 0x0c },                725         { WCD939X_R_CTL18, 0x0c },
726         { WCD939X_R_CTL19, 0x16 },                726         { WCD939X_R_CTL19, 0x16 },
727         { WCD939X_E_PATH_CTL, 0x00 },             727         { WCD939X_E_PATH_CTL, 0x00 },
728         { WCD939X_E_CFG0, 0x07 },                 728         { WCD939X_E_CFG0, 0x07 },
729         { WCD939X_E_CFG1, 0x3c },                 729         { WCD939X_E_CFG1, 0x3c },
730         { WCD939X_E_CFG2, 0x00 },                 730         { WCD939X_E_CFG2, 0x00 },
731         { WCD939X_E_CFG3, 0x00 },                 731         { WCD939X_E_CFG3, 0x00 },
732         { WCD939X_DSD_HPHL_PATH_CTL, 0x00 },      732         { WCD939X_DSD_HPHL_PATH_CTL, 0x00 },
733         { WCD939X_DSD_HPHL_CFG0, 0x00 },          733         { WCD939X_DSD_HPHL_CFG0, 0x00 },
734         { WCD939X_DSD_HPHL_CFG1, 0x00 },          734         { WCD939X_DSD_HPHL_CFG1, 0x00 },
735         { WCD939X_DSD_HPHL_CFG2, 0x22 },          735         { WCD939X_DSD_HPHL_CFG2, 0x22 },
736         { WCD939X_DSD_HPHL_CFG3, 0x00 },          736         { WCD939X_DSD_HPHL_CFG3, 0x00 },
737         { WCD939X_DSD_HPHL_CFG4, 0x1a },          737         { WCD939X_DSD_HPHL_CFG4, 0x1a },
738         { WCD939X_DSD_HPHL_CFG5, 0x00 },          738         { WCD939X_DSD_HPHL_CFG5, 0x00 },
739         { WCD939X_DSD_HPHR_PATH_CTL, 0x00 },      739         { WCD939X_DSD_HPHR_PATH_CTL, 0x00 },
740         { WCD939X_DSD_HPHR_CFG0, 0x00 },          740         { WCD939X_DSD_HPHR_CFG0, 0x00 },
741         { WCD939X_DSD_HPHR_CFG1, 0x00 },          741         { WCD939X_DSD_HPHR_CFG1, 0x00 },
742         { WCD939X_DSD_HPHR_CFG2, 0x22 },          742         { WCD939X_DSD_HPHR_CFG2, 0x22 },
743         { WCD939X_DSD_HPHR_CFG3, 0x00 },          743         { WCD939X_DSD_HPHR_CFG3, 0x00 },
744         { WCD939X_DSD_HPHR_CFG4, 0x1a },          744         { WCD939X_DSD_HPHR_CFG4, 0x1a },
745         { WCD939X_DSD_HPHR_CFG5, 0x00 },          745         { WCD939X_DSD_HPHR_CFG5, 0x00 },
746 };                                                746 };
747                                                   747 
748 static bool wcd939x_rdwr_register(struct devic    748 static bool wcd939x_rdwr_register(struct device *dev, unsigned int reg)
749 {                                                 749 {
750         switch (reg) {                            750         switch (reg) {
751         case WCD939X_ANA_PAGE:                    751         case WCD939X_ANA_PAGE:
752         case WCD939X_ANA_BIAS:                    752         case WCD939X_ANA_BIAS:
753         case WCD939X_ANA_RX_SUPPLIES:             753         case WCD939X_ANA_RX_SUPPLIES:
754         case WCD939X_ANA_HPH:                     754         case WCD939X_ANA_HPH:
755         case WCD939X_ANA_EAR:                     755         case WCD939X_ANA_EAR:
756         case WCD939X_ANA_EAR_COMPANDER_CTL:       756         case WCD939X_ANA_EAR_COMPANDER_CTL:
757         case WCD939X_ANA_TX_CH1:                  757         case WCD939X_ANA_TX_CH1:
758         case WCD939X_ANA_TX_CH2:                  758         case WCD939X_ANA_TX_CH2:
759         case WCD939X_ANA_TX_CH3:                  759         case WCD939X_ANA_TX_CH3:
760         case WCD939X_ANA_TX_CH4:                  760         case WCD939X_ANA_TX_CH4:
761         case WCD939X_ANA_MICB1_MICB2_DSP_EN_LO    761         case WCD939X_ANA_MICB1_MICB2_DSP_EN_LOGIC:
762         case WCD939X_ANA_MICB3_DSP_EN_LOGIC:      762         case WCD939X_ANA_MICB3_DSP_EN_LOGIC:
763         case WCD939X_ANA_MBHC_MECH:               763         case WCD939X_ANA_MBHC_MECH:
764         case WCD939X_ANA_MBHC_ELECT:              764         case WCD939X_ANA_MBHC_ELECT:
765         case WCD939X_ANA_MBHC_ZDET:               765         case WCD939X_ANA_MBHC_ZDET:
766         case WCD939X_ANA_MBHC_BTN0:               766         case WCD939X_ANA_MBHC_BTN0:
767         case WCD939X_ANA_MBHC_BTN1:               767         case WCD939X_ANA_MBHC_BTN1:
768         case WCD939X_ANA_MBHC_BTN2:               768         case WCD939X_ANA_MBHC_BTN2:
769         case WCD939X_ANA_MBHC_BTN3:               769         case WCD939X_ANA_MBHC_BTN3:
770         case WCD939X_ANA_MBHC_BTN4:               770         case WCD939X_ANA_MBHC_BTN4:
771         case WCD939X_ANA_MBHC_BTN5:               771         case WCD939X_ANA_MBHC_BTN5:
772         case WCD939X_ANA_MBHC_BTN6:               772         case WCD939X_ANA_MBHC_BTN6:
773         case WCD939X_ANA_MBHC_BTN7:               773         case WCD939X_ANA_MBHC_BTN7:
774         case WCD939X_ANA_MICB1:                   774         case WCD939X_ANA_MICB1:
775         case WCD939X_ANA_MICB2:                   775         case WCD939X_ANA_MICB2:
776         case WCD939X_ANA_MICB2_RAMP:              776         case WCD939X_ANA_MICB2_RAMP:
777         case WCD939X_ANA_MICB3:                   777         case WCD939X_ANA_MICB3:
778         case WCD939X_ANA_MICB4:                   778         case WCD939X_ANA_MICB4:
779         case WCD939X_BIAS_CTL:                    779         case WCD939X_BIAS_CTL:
780         case WCD939X_BIAS_VBG_FINE_ADJ:           780         case WCD939X_BIAS_VBG_FINE_ADJ:
781         case WCD939X_LDOL_VDDCX_ADJUST:           781         case WCD939X_LDOL_VDDCX_ADJUST:
782         case WCD939X_LDOL_DISABLE_LDOL:           782         case WCD939X_LDOL_DISABLE_LDOL:
783         case WCD939X_MBHC_CTL_CLK:                783         case WCD939X_MBHC_CTL_CLK:
784         case WCD939X_MBHC_CTL_ANA:                784         case WCD939X_MBHC_CTL_ANA:
785         case WCD939X_MBHC_ZDET_VNEG_CTL:          785         case WCD939X_MBHC_ZDET_VNEG_CTL:
786         case WCD939X_MBHC_ZDET_BIAS_CTL:          786         case WCD939X_MBHC_ZDET_BIAS_CTL:
787         case WCD939X_MBHC_CTL_BCS:                787         case WCD939X_MBHC_CTL_BCS:
788         case WCD939X_MBHC_TEST_CTL:               788         case WCD939X_MBHC_TEST_CTL:
789         case WCD939X_LDOH_MODE:                   789         case WCD939X_LDOH_MODE:
790         case WCD939X_LDOH_BIAS:                   790         case WCD939X_LDOH_BIAS:
791         case WCD939X_LDOH_STB_LOADS:              791         case WCD939X_LDOH_STB_LOADS:
792         case WCD939X_LDOH_SLOWRAMP:               792         case WCD939X_LDOH_SLOWRAMP:
793         case WCD939X_MICB1_TEST_CTL_1:            793         case WCD939X_MICB1_TEST_CTL_1:
794         case WCD939X_MICB1_TEST_CTL_2:            794         case WCD939X_MICB1_TEST_CTL_2:
795         case WCD939X_MICB1_TEST_CTL_3:            795         case WCD939X_MICB1_TEST_CTL_3:
796         case WCD939X_MICB2_TEST_CTL_1:            796         case WCD939X_MICB2_TEST_CTL_1:
797         case WCD939X_MICB2_TEST_CTL_2:            797         case WCD939X_MICB2_TEST_CTL_2:
798         case WCD939X_MICB2_TEST_CTL_3:            798         case WCD939X_MICB2_TEST_CTL_3:
799         case WCD939X_MICB3_TEST_CTL_1:            799         case WCD939X_MICB3_TEST_CTL_1:
800         case WCD939X_MICB3_TEST_CTL_2:            800         case WCD939X_MICB3_TEST_CTL_2:
801         case WCD939X_MICB3_TEST_CTL_3:            801         case WCD939X_MICB3_TEST_CTL_3:
802         case WCD939X_MICB4_TEST_CTL_1:            802         case WCD939X_MICB4_TEST_CTL_1:
803         case WCD939X_MICB4_TEST_CTL_2:            803         case WCD939X_MICB4_TEST_CTL_2:
804         case WCD939X_MICB4_TEST_CTL_3:            804         case WCD939X_MICB4_TEST_CTL_3:
805         case WCD939X_TX_COM_ADC_VCM:              805         case WCD939X_TX_COM_ADC_VCM:
806         case WCD939X_TX_COM_BIAS_ATEST:           806         case WCD939X_TX_COM_BIAS_ATEST:
807         case WCD939X_TX_COM_SPARE1:               807         case WCD939X_TX_COM_SPARE1:
808         case WCD939X_TX_COM_SPARE2:               808         case WCD939X_TX_COM_SPARE2:
809         case WCD939X_TX_COM_TXFE_DIV_CTL:         809         case WCD939X_TX_COM_TXFE_DIV_CTL:
810         case WCD939X_TX_COM_TXFE_DIV_START:       810         case WCD939X_TX_COM_TXFE_DIV_START:
811         case WCD939X_TX_COM_SPARE3:               811         case WCD939X_TX_COM_SPARE3:
812         case WCD939X_TX_COM_SPARE4:               812         case WCD939X_TX_COM_SPARE4:
813         case WCD939X_TX_1_2_TEST_EN:              813         case WCD939X_TX_1_2_TEST_EN:
814         case WCD939X_TX_1_2_ADC_IB:               814         case WCD939X_TX_1_2_ADC_IB:
815         case WCD939X_TX_1_2_ATEST_REFCTL:         815         case WCD939X_TX_1_2_ATEST_REFCTL:
816         case WCD939X_TX_1_2_TEST_CTL:             816         case WCD939X_TX_1_2_TEST_CTL:
817         case WCD939X_TX_1_2_TEST_BLK_EN1:         817         case WCD939X_TX_1_2_TEST_BLK_EN1:
818         case WCD939X_TX_1_2_TXFE1_CLKDIV:         818         case WCD939X_TX_1_2_TXFE1_CLKDIV:
819         case WCD939X_TX_3_4_TEST_EN:              819         case WCD939X_TX_3_4_TEST_EN:
820         case WCD939X_TX_3_4_ADC_IB:               820         case WCD939X_TX_3_4_ADC_IB:
821         case WCD939X_TX_3_4_ATEST_REFCTL:         821         case WCD939X_TX_3_4_ATEST_REFCTL:
822         case WCD939X_TX_3_4_TEST_CTL:             822         case WCD939X_TX_3_4_TEST_CTL:
823         case WCD939X_TX_3_4_TEST_BLK_EN3:         823         case WCD939X_TX_3_4_TEST_BLK_EN3:
824         case WCD939X_TX_3_4_TXFE3_CLKDIV:         824         case WCD939X_TX_3_4_TXFE3_CLKDIV:
825         case WCD939X_TX_3_4_TEST_BLK_EN2:         825         case WCD939X_TX_3_4_TEST_BLK_EN2:
826         case WCD939X_TX_3_4_TXFE2_CLKDIV:         826         case WCD939X_TX_3_4_TXFE2_CLKDIV:
827         case WCD939X_TX_3_4_SPARE1:               827         case WCD939X_TX_3_4_SPARE1:
828         case WCD939X_TX_3_4_TEST_BLK_EN4:         828         case WCD939X_TX_3_4_TEST_BLK_EN4:
829         case WCD939X_TX_3_4_TXFE4_CLKDIV:         829         case WCD939X_TX_3_4_TXFE4_CLKDIV:
830         case WCD939X_TX_3_4_SPARE2:               830         case WCD939X_TX_3_4_SPARE2:
831         case WCD939X_CLASSH_MODE_1:               831         case WCD939X_CLASSH_MODE_1:
832         case WCD939X_CLASSH_MODE_2:               832         case WCD939X_CLASSH_MODE_2:
833         case WCD939X_CLASSH_MODE_3:               833         case WCD939X_CLASSH_MODE_3:
834         case WCD939X_CLASSH_CTRL_VCL_1:           834         case WCD939X_CLASSH_CTRL_VCL_1:
835         case WCD939X_CLASSH_CTRL_VCL_2:           835         case WCD939X_CLASSH_CTRL_VCL_2:
836         case WCD939X_CLASSH_CTRL_CCL_1:           836         case WCD939X_CLASSH_CTRL_CCL_1:
837         case WCD939X_CLASSH_CTRL_CCL_2:           837         case WCD939X_CLASSH_CTRL_CCL_2:
838         case WCD939X_CLASSH_CTRL_CCL_3:           838         case WCD939X_CLASSH_CTRL_CCL_3:
839         case WCD939X_CLASSH_CTRL_CCL_4:           839         case WCD939X_CLASSH_CTRL_CCL_4:
840         case WCD939X_CLASSH_CTRL_CCL_5:           840         case WCD939X_CLASSH_CTRL_CCL_5:
841         case WCD939X_CLASSH_BUCK_TMUX_A_D:        841         case WCD939X_CLASSH_BUCK_TMUX_A_D:
842         case WCD939X_CLASSH_BUCK_SW_DRV_CNTL:     842         case WCD939X_CLASSH_BUCK_SW_DRV_CNTL:
843         case WCD939X_CLASSH_SPARE:                843         case WCD939X_CLASSH_SPARE:
844         case WCD939X_FLYBACK_EN:                  844         case WCD939X_FLYBACK_EN:
845         case WCD939X_FLYBACK_VNEG_CTRL_1:         845         case WCD939X_FLYBACK_VNEG_CTRL_1:
846         case WCD939X_FLYBACK_VNEG_CTRL_2:         846         case WCD939X_FLYBACK_VNEG_CTRL_2:
847         case WCD939X_FLYBACK_VNEG_CTRL_3:         847         case WCD939X_FLYBACK_VNEG_CTRL_3:
848         case WCD939X_FLYBACK_VNEG_CTRL_4:         848         case WCD939X_FLYBACK_VNEG_CTRL_4:
849         case WCD939X_FLYBACK_VNEG_CTRL_5:         849         case WCD939X_FLYBACK_VNEG_CTRL_5:
850         case WCD939X_FLYBACK_VNEG_CTRL_6:         850         case WCD939X_FLYBACK_VNEG_CTRL_6:
851         case WCD939X_FLYBACK_VNEG_CTRL_7:         851         case WCD939X_FLYBACK_VNEG_CTRL_7:
852         case WCD939X_FLYBACK_VNEG_CTRL_8:         852         case WCD939X_FLYBACK_VNEG_CTRL_8:
853         case WCD939X_FLYBACK_VNEG_CTRL_9:         853         case WCD939X_FLYBACK_VNEG_CTRL_9:
854         case WCD939X_FLYBACK_VNEGDAC_CTRL_1:      854         case WCD939X_FLYBACK_VNEGDAC_CTRL_1:
855         case WCD939X_FLYBACK_VNEGDAC_CTRL_2:      855         case WCD939X_FLYBACK_VNEGDAC_CTRL_2:
856         case WCD939X_FLYBACK_VNEGDAC_CTRL_3:      856         case WCD939X_FLYBACK_VNEGDAC_CTRL_3:
857         case WCD939X_FLYBACK_CTRL_1:              857         case WCD939X_FLYBACK_CTRL_1:
858         case WCD939X_FLYBACK_TEST_CTL:            858         case WCD939X_FLYBACK_TEST_CTL:
859         case WCD939X_RX_AUX_SW_CTL:               859         case WCD939X_RX_AUX_SW_CTL:
860         case WCD939X_RX_PA_AUX_IN_CONN:           860         case WCD939X_RX_PA_AUX_IN_CONN:
861         case WCD939X_RX_TIMER_DIV:                861         case WCD939X_RX_TIMER_DIV:
862         case WCD939X_RX_OCP_CTL:                  862         case WCD939X_RX_OCP_CTL:
863         case WCD939X_RX_OCP_COUNT:                863         case WCD939X_RX_OCP_COUNT:
864         case WCD939X_RX_BIAS_EAR_DAC:             864         case WCD939X_RX_BIAS_EAR_DAC:
865         case WCD939X_RX_BIAS_EAR_AMP:             865         case WCD939X_RX_BIAS_EAR_AMP:
866         case WCD939X_RX_BIAS_HPH_LDO:             866         case WCD939X_RX_BIAS_HPH_LDO:
867         case WCD939X_RX_BIAS_HPH_PA:              867         case WCD939X_RX_BIAS_HPH_PA:
868         case WCD939X_RX_BIAS_HPH_RDACBUFF_CNP2    868         case WCD939X_RX_BIAS_HPH_RDACBUFF_CNP2:
869         case WCD939X_RX_BIAS_HPH_RDAC_LDO:        869         case WCD939X_RX_BIAS_HPH_RDAC_LDO:
870         case WCD939X_RX_BIAS_HPH_CNP1:            870         case WCD939X_RX_BIAS_HPH_CNP1:
871         case WCD939X_RX_BIAS_HPH_LOWPOWER:        871         case WCD939X_RX_BIAS_HPH_LOWPOWER:
872         case WCD939X_RX_BIAS_AUX_DAC:             872         case WCD939X_RX_BIAS_AUX_DAC:
873         case WCD939X_RX_BIAS_AUX_AMP:             873         case WCD939X_RX_BIAS_AUX_AMP:
874         case WCD939X_RX_BIAS_VNEGDAC_BLEEDER:     874         case WCD939X_RX_BIAS_VNEGDAC_BLEEDER:
875         case WCD939X_RX_BIAS_MISC:                875         case WCD939X_RX_BIAS_MISC:
876         case WCD939X_RX_BIAS_BUCK_RST:            876         case WCD939X_RX_BIAS_BUCK_RST:
877         case WCD939X_RX_BIAS_BUCK_VREF_ERRAMP:    877         case WCD939X_RX_BIAS_BUCK_VREF_ERRAMP:
878         case WCD939X_RX_BIAS_FLYB_ERRAMP:         878         case WCD939X_RX_BIAS_FLYB_ERRAMP:
879         case WCD939X_RX_BIAS_FLYB_BUFF:           879         case WCD939X_RX_BIAS_FLYB_BUFF:
880         case WCD939X_RX_BIAS_FLYB_MID_RST:        880         case WCD939X_RX_BIAS_FLYB_MID_RST:
881         case WCD939X_HPH_CNP_EN:                  881         case WCD939X_HPH_CNP_EN:
882         case WCD939X_HPH_CNP_WG_CTL:              882         case WCD939X_HPH_CNP_WG_CTL:
883         case WCD939X_HPH_CNP_WG_TIME:             883         case WCD939X_HPH_CNP_WG_TIME:
884         case WCD939X_HPH_OCP_CTL:                 884         case WCD939X_HPH_OCP_CTL:
885         case WCD939X_HPH_AUTO_CHOP:               885         case WCD939X_HPH_AUTO_CHOP:
886         case WCD939X_HPH_CHOP_CTL:                886         case WCD939X_HPH_CHOP_CTL:
887         case WCD939X_HPH_PA_CTL1:                 887         case WCD939X_HPH_PA_CTL1:
888         case WCD939X_HPH_PA_CTL2:                 888         case WCD939X_HPH_PA_CTL2:
889         case WCD939X_HPH_L_EN:                    889         case WCD939X_HPH_L_EN:
890         case WCD939X_HPH_L_TEST:                  890         case WCD939X_HPH_L_TEST:
891         case WCD939X_HPH_L_ATEST:                 891         case WCD939X_HPH_L_ATEST:
892         case WCD939X_HPH_R_EN:                    892         case WCD939X_HPH_R_EN:
893         case WCD939X_HPH_R_TEST:                  893         case WCD939X_HPH_R_TEST:
894         case WCD939X_HPH_R_ATEST:                 894         case WCD939X_HPH_R_ATEST:
895         case WCD939X_HPH_RDAC_CLK_CTL1:           895         case WCD939X_HPH_RDAC_CLK_CTL1:
896         case WCD939X_HPH_RDAC_CLK_CTL2:           896         case WCD939X_HPH_RDAC_CLK_CTL2:
897         case WCD939X_HPH_RDAC_LDO_CTL:            897         case WCD939X_HPH_RDAC_LDO_CTL:
898         case WCD939X_HPH_RDAC_CHOP_CLK_LP_CTL:    898         case WCD939X_HPH_RDAC_CHOP_CLK_LP_CTL:
899         case WCD939X_HPH_REFBUFF_UHQA_CTL:        899         case WCD939X_HPH_REFBUFF_UHQA_CTL:
900         case WCD939X_HPH_REFBUFF_LP_CTL:          900         case WCD939X_HPH_REFBUFF_LP_CTL:
901         case WCD939X_HPH_L_DAC_CTL:               901         case WCD939X_HPH_L_DAC_CTL:
902         case WCD939X_HPH_R_DAC_CTL:               902         case WCD939X_HPH_R_DAC_CTL:
903         case WCD939X_HPH_SURGE_COMP_SEL:          903         case WCD939X_HPH_SURGE_COMP_SEL:
904         case WCD939X_HPH_SURGE_EN:                904         case WCD939X_HPH_SURGE_EN:
905         case WCD939X_HPH_SURGE_MISC1:             905         case WCD939X_HPH_SURGE_MISC1:
906         case WCD939X_EAR_EN:                      906         case WCD939X_EAR_EN:
907         case WCD939X_EAR_PA_CON:                  907         case WCD939X_EAR_PA_CON:
908         case WCD939X_EAR_SP_CON:                  908         case WCD939X_EAR_SP_CON:
909         case WCD939X_EAR_DAC_CON:                 909         case WCD939X_EAR_DAC_CON:
910         case WCD939X_EAR_CNP_FSM_CON:             910         case WCD939X_EAR_CNP_FSM_CON:
911         case WCD939X_EAR_TEST_CTL:                911         case WCD939X_EAR_TEST_CTL:
912         case WCD939X_FLYBACK_NEW_CTRL_2:          912         case WCD939X_FLYBACK_NEW_CTRL_2:
913         case WCD939X_FLYBACK_NEW_CTRL_3:          913         case WCD939X_FLYBACK_NEW_CTRL_3:
914         case WCD939X_FLYBACK_NEW_CTRL_4:          914         case WCD939X_FLYBACK_NEW_CTRL_4:
915         case WCD939X_ANA_NEW_PAGE:                915         case WCD939X_ANA_NEW_PAGE:
916         case WCD939X_HPH_NEW_ANA_HPH2:            916         case WCD939X_HPH_NEW_ANA_HPH2:
917         case WCD939X_HPH_NEW_ANA_HPH3:            917         case WCD939X_HPH_NEW_ANA_HPH3:
918         case WCD939X_SLEEP_CTL:                   918         case WCD939X_SLEEP_CTL:
919         case WCD939X_SLEEP_WATCHDOG_CTL:          919         case WCD939X_SLEEP_WATCHDOG_CTL:
920         case WCD939X_MBHC_NEW_ELECT_REM_CLAMP_    920         case WCD939X_MBHC_NEW_ELECT_REM_CLAMP_CTL:
921         case WCD939X_MBHC_NEW_CTL_1:              921         case WCD939X_MBHC_NEW_CTL_1:
922         case WCD939X_MBHC_NEW_CTL_2:              922         case WCD939X_MBHC_NEW_CTL_2:
923         case WCD939X_MBHC_NEW_PLUG_DETECT_CTL:    923         case WCD939X_MBHC_NEW_PLUG_DETECT_CTL:
924         case WCD939X_MBHC_NEW_ZDET_ANA_CTL:       924         case WCD939X_MBHC_NEW_ZDET_ANA_CTL:
925         case WCD939X_MBHC_NEW_ZDET_RAMP_CTL:      925         case WCD939X_MBHC_NEW_ZDET_RAMP_CTL:
926         case WCD939X_TX_NEW_CH12_MUX:             926         case WCD939X_TX_NEW_CH12_MUX:
927         case WCD939X_TX_NEW_CH34_MUX:             927         case WCD939X_TX_NEW_CH34_MUX:
928         case WCD939X_DIE_CRACK_DET_EN:            928         case WCD939X_DIE_CRACK_DET_EN:
929         case WCD939X_HPH_NEW_INT_RDAC_GAIN_CTL    929         case WCD939X_HPH_NEW_INT_RDAC_GAIN_CTL:
930         case WCD939X_HPH_NEW_INT_PA_GAIN_CTL_L    930         case WCD939X_HPH_NEW_INT_PA_GAIN_CTL_L:
931         case WCD939X_HPH_NEW_INT_RDAC_VREF_CTL    931         case WCD939X_HPH_NEW_INT_RDAC_VREF_CTL:
932         case WCD939X_HPH_NEW_INT_RDAC_OVERRIDE    932         case WCD939X_HPH_NEW_INT_RDAC_OVERRIDE_CTL:
933         case WCD939X_HPH_NEW_INT_PA_GAIN_CTL_R    933         case WCD939X_HPH_NEW_INT_PA_GAIN_CTL_R:
934         case WCD939X_HPH_NEW_INT_PA_MISC1:        934         case WCD939X_HPH_NEW_INT_PA_MISC1:
935         case WCD939X_HPH_NEW_INT_PA_MISC2:        935         case WCD939X_HPH_NEW_INT_PA_MISC2:
936         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC:    936         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC:
937         case WCD939X_HPH_NEW_INT_TIMER1:          937         case WCD939X_HPH_NEW_INT_TIMER1:
938         case WCD939X_HPH_NEW_INT_TIMER2:          938         case WCD939X_HPH_NEW_INT_TIMER2:
939         case WCD939X_HPH_NEW_INT_TIMER3:          939         case WCD939X_HPH_NEW_INT_TIMER3:
940         case WCD939X_HPH_NEW_INT_TIMER4:          940         case WCD939X_HPH_NEW_INT_TIMER4:
941         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC2    941         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC2:
942         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC3    942         case WCD939X_HPH_NEW_INT_PA_RDAC_MISC3:
943         case WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_    943         case WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_L:
944         case WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_    944         case WCD939X_HPH_NEW_INT_RDAC_HD2_CTL_R:
945         case WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_    945         case WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_LOHIFI:
946         case WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_    946         case WCD939X_RX_NEW_INT_HPH_RDAC_BIAS_ULP:
947         case WCD939X_RX_NEW_INT_HPH_RDAC_LDO_L    947         case WCD939X_RX_NEW_INT_HPH_RDAC_LDO_LP:
948         case WCD939X_MBHC_NEW_INT_MOISTURE_DET    948         case WCD939X_MBHC_NEW_INT_MOISTURE_DET_DC_CTRL:
949         case WCD939X_MBHC_NEW_INT_MOISTURE_DET    949         case WCD939X_MBHC_NEW_INT_MOISTURE_DET_POLLING_CTRL:
950         case WCD939X_MBHC_NEW_INT_MECH_DET_CUR    950         case WCD939X_MBHC_NEW_INT_MECH_DET_CURRENT:
951         case WCD939X_MBHC_NEW_INT_ZDET_CLK_AND    951         case WCD939X_MBHC_NEW_INT_ZDET_CLK_AND_MOISTURE_CTL_NEW:
952         case WCD939X_EAR_INT_NEW_CHOPPER_CON:     952         case WCD939X_EAR_INT_NEW_CHOPPER_CON:
953         case WCD939X_EAR_INT_NEW_CNP_VCM_CON1:    953         case WCD939X_EAR_INT_NEW_CNP_VCM_CON1:
954         case WCD939X_EAR_INT_NEW_CNP_VCM_CON2:    954         case WCD939X_EAR_INT_NEW_CNP_VCM_CON2:
955         case WCD939X_EAR_INT_NEW_DYNAMIC_BIAS:    955         case WCD939X_EAR_INT_NEW_DYNAMIC_BIAS:
956         case WCD939X_SLEEP_INT_WATCHDOG_CTL_1:    956         case WCD939X_SLEEP_INT_WATCHDOG_CTL_1:
957         case WCD939X_SLEEP_INT_WATCHDOG_CTL_2:    957         case WCD939X_SLEEP_INT_WATCHDOG_CTL_2:
958         case WCD939X_DIE_CRACK_INT_DET_INT1:      958         case WCD939X_DIE_CRACK_INT_DET_INT1:
959         case WCD939X_DIE_CRACK_INT_DET_INT2:      959         case WCD939X_DIE_CRACK_INT_DET_INT2:
960         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP    960         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L2:
961         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP    961         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L1:
962         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP    962         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_L0:
963         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP    963         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_ULP1P2M:
964         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP    964         case WCD939X_TX_COM_NEW_INT_FE_DIVSTOP_ULP0P6M:
965         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    965         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_L2L1:
966         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    966         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_L0:
967         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    967         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG1_ULP:
968         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    968         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_L2L1:
969         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    969         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_L0:
970         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    970         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2MAIN_ULP:
971         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    971         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2CASC_L2L1L0:
972         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_S    972         case WCD939X_TX_COM_NEW_INT_FE_ICTRL_STG2CASC_ULP:
973         case WCD939X_TX_COM_NEW_INT_ADC_SCBIAS    973         case WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L2L1:
974         case WCD939X_TX_COM_NEW_INT_ADC_SCBIAS    974         case WCD939X_TX_COM_NEW_INT_ADC_SCBIAS_L0ULP:
975         case WCD939X_TX_COM_NEW_INT_ADC_INT_L2    975         case WCD939X_TX_COM_NEW_INT_ADC_INT_L2:
976         case WCD939X_TX_COM_NEW_INT_ADC_INT_L1    976         case WCD939X_TX_COM_NEW_INT_ADC_INT_L1:
977         case WCD939X_TX_COM_NEW_INT_ADC_INT_L0    977         case WCD939X_TX_COM_NEW_INT_ADC_INT_L0:
978         case WCD939X_TX_COM_NEW_INT_ADC_INT_UL    978         case WCD939X_TX_COM_NEW_INT_ADC_INT_ULP:
979         case WCD939X_DIGITAL_PAGE:                979         case WCD939X_DIGITAL_PAGE:
980         case WCD939X_DIGITAL_SWR_TX_CLK_RATE:     980         case WCD939X_DIGITAL_SWR_TX_CLK_RATE:
981         case WCD939X_DIGITAL_CDC_RST_CTL:         981         case WCD939X_DIGITAL_CDC_RST_CTL:
982         case WCD939X_DIGITAL_TOP_CLK_CFG:         982         case WCD939X_DIGITAL_TOP_CLK_CFG:
983         case WCD939X_DIGITAL_CDC_ANA_CLK_CTL:     983         case WCD939X_DIGITAL_CDC_ANA_CLK_CTL:
984         case WCD939X_DIGITAL_CDC_DIG_CLK_CTL:     984         case WCD939X_DIGITAL_CDC_DIG_CLK_CTL:
985         case WCD939X_DIGITAL_SWR_RST_EN:          985         case WCD939X_DIGITAL_SWR_RST_EN:
986         case WCD939X_DIGITAL_CDC_PATH_MODE:       986         case WCD939X_DIGITAL_CDC_PATH_MODE:
987         case WCD939X_DIGITAL_CDC_RX_RST:          987         case WCD939X_DIGITAL_CDC_RX_RST:
988         case WCD939X_DIGITAL_CDC_RX0_CTL:         988         case WCD939X_DIGITAL_CDC_RX0_CTL:
989         case WCD939X_DIGITAL_CDC_RX1_CTL:         989         case WCD939X_DIGITAL_CDC_RX1_CTL:
990         case WCD939X_DIGITAL_CDC_RX2_CTL:         990         case WCD939X_DIGITAL_CDC_RX2_CTL:
991         case WCD939X_DIGITAL_CDC_TX_ANA_MODE_0    991         case WCD939X_DIGITAL_CDC_TX_ANA_MODE_0_1:
992         case WCD939X_DIGITAL_CDC_TX_ANA_MODE_2    992         case WCD939X_DIGITAL_CDC_TX_ANA_MODE_2_3:
993         case WCD939X_DIGITAL_CDC_COMP_CTL_0:      993         case WCD939X_DIGITAL_CDC_COMP_CTL_0:
994         case WCD939X_DIGITAL_CDC_ANA_TX_CLK_CT    994         case WCD939X_DIGITAL_CDC_ANA_TX_CLK_CTL:
995         case WCD939X_DIGITAL_CDC_HPH_DSM_A1_0:    995         case WCD939X_DIGITAL_CDC_HPH_DSM_A1_0:
996         case WCD939X_DIGITAL_CDC_HPH_DSM_A1_1:    996         case WCD939X_DIGITAL_CDC_HPH_DSM_A1_1:
997         case WCD939X_DIGITAL_CDC_HPH_DSM_A2_0:    997         case WCD939X_DIGITAL_CDC_HPH_DSM_A2_0:
998         case WCD939X_DIGITAL_CDC_HPH_DSM_A2_1:    998         case WCD939X_DIGITAL_CDC_HPH_DSM_A2_1:
999         case WCD939X_DIGITAL_CDC_HPH_DSM_A3_0:    999         case WCD939X_DIGITAL_CDC_HPH_DSM_A3_0:
1000         case WCD939X_DIGITAL_CDC_HPH_DSM_A3_1    1000         case WCD939X_DIGITAL_CDC_HPH_DSM_A3_1:
1001         case WCD939X_DIGITAL_CDC_HPH_DSM_A4_0    1001         case WCD939X_DIGITAL_CDC_HPH_DSM_A4_0:
1002         case WCD939X_DIGITAL_CDC_HPH_DSM_A4_1    1002         case WCD939X_DIGITAL_CDC_HPH_DSM_A4_1:
1003         case WCD939X_DIGITAL_CDC_HPH_DSM_A5_0    1003         case WCD939X_DIGITAL_CDC_HPH_DSM_A5_0:
1004         case WCD939X_DIGITAL_CDC_HPH_DSM_A5_1    1004         case WCD939X_DIGITAL_CDC_HPH_DSM_A5_1:
1005         case WCD939X_DIGITAL_CDC_HPH_DSM_A6_0    1005         case WCD939X_DIGITAL_CDC_HPH_DSM_A6_0:
1006         case WCD939X_DIGITAL_CDC_HPH_DSM_A7_0    1006         case WCD939X_DIGITAL_CDC_HPH_DSM_A7_0:
1007         case WCD939X_DIGITAL_CDC_HPH_DSM_C_0:    1007         case WCD939X_DIGITAL_CDC_HPH_DSM_C_0:
1008         case WCD939X_DIGITAL_CDC_HPH_DSM_C_1:    1008         case WCD939X_DIGITAL_CDC_HPH_DSM_C_1:
1009         case WCD939X_DIGITAL_CDC_HPH_DSM_C_2:    1009         case WCD939X_DIGITAL_CDC_HPH_DSM_C_2:
1010         case WCD939X_DIGITAL_CDC_HPH_DSM_C_3:    1010         case WCD939X_DIGITAL_CDC_HPH_DSM_C_3:
1011         case WCD939X_DIGITAL_CDC_HPH_DSM_R1:     1011         case WCD939X_DIGITAL_CDC_HPH_DSM_R1:
1012         case WCD939X_DIGITAL_CDC_HPH_DSM_R2:     1012         case WCD939X_DIGITAL_CDC_HPH_DSM_R2:
1013         case WCD939X_DIGITAL_CDC_HPH_DSM_R3:     1013         case WCD939X_DIGITAL_CDC_HPH_DSM_R3:
1014         case WCD939X_DIGITAL_CDC_HPH_DSM_R4:     1014         case WCD939X_DIGITAL_CDC_HPH_DSM_R4:
1015         case WCD939X_DIGITAL_CDC_HPH_DSM_R5:     1015         case WCD939X_DIGITAL_CDC_HPH_DSM_R5:
1016         case WCD939X_DIGITAL_CDC_HPH_DSM_R6:     1016         case WCD939X_DIGITAL_CDC_HPH_DSM_R6:
1017         case WCD939X_DIGITAL_CDC_HPH_DSM_R7:     1017         case WCD939X_DIGITAL_CDC_HPH_DSM_R7:
1018         case WCD939X_DIGITAL_CDC_EAR_DSM_A1_0    1018         case WCD939X_DIGITAL_CDC_EAR_DSM_A1_0:
1019         case WCD939X_DIGITAL_CDC_EAR_DSM_A1_1    1019         case WCD939X_DIGITAL_CDC_EAR_DSM_A1_1:
1020         case WCD939X_DIGITAL_CDC_EAR_DSM_A2_0    1020         case WCD939X_DIGITAL_CDC_EAR_DSM_A2_0:
1021         case WCD939X_DIGITAL_CDC_EAR_DSM_A2_1    1021         case WCD939X_DIGITAL_CDC_EAR_DSM_A2_1:
1022         case WCD939X_DIGITAL_CDC_EAR_DSM_A3_0    1022         case WCD939X_DIGITAL_CDC_EAR_DSM_A3_0:
1023         case WCD939X_DIGITAL_CDC_EAR_DSM_A3_1    1023         case WCD939X_DIGITAL_CDC_EAR_DSM_A3_1:
1024         case WCD939X_DIGITAL_CDC_EAR_DSM_A4_0    1024         case WCD939X_DIGITAL_CDC_EAR_DSM_A4_0:
1025         case WCD939X_DIGITAL_CDC_EAR_DSM_A4_1    1025         case WCD939X_DIGITAL_CDC_EAR_DSM_A4_1:
1026         case WCD939X_DIGITAL_CDC_EAR_DSM_A5_0    1026         case WCD939X_DIGITAL_CDC_EAR_DSM_A5_0:
1027         case WCD939X_DIGITAL_CDC_EAR_DSM_A5_1    1027         case WCD939X_DIGITAL_CDC_EAR_DSM_A5_1:
1028         case WCD939X_DIGITAL_CDC_EAR_DSM_A6_0    1028         case WCD939X_DIGITAL_CDC_EAR_DSM_A6_0:
1029         case WCD939X_DIGITAL_CDC_EAR_DSM_A7_0    1029         case WCD939X_DIGITAL_CDC_EAR_DSM_A7_0:
1030         case WCD939X_DIGITAL_CDC_EAR_DSM_C_0:    1030         case WCD939X_DIGITAL_CDC_EAR_DSM_C_0:
1031         case WCD939X_DIGITAL_CDC_EAR_DSM_C_1:    1031         case WCD939X_DIGITAL_CDC_EAR_DSM_C_1:
1032         case WCD939X_DIGITAL_CDC_EAR_DSM_C_2:    1032         case WCD939X_DIGITAL_CDC_EAR_DSM_C_2:
1033         case WCD939X_DIGITAL_CDC_EAR_DSM_C_3:    1033         case WCD939X_DIGITAL_CDC_EAR_DSM_C_3:
1034         case WCD939X_DIGITAL_CDC_EAR_DSM_R1:     1034         case WCD939X_DIGITAL_CDC_EAR_DSM_R1:
1035         case WCD939X_DIGITAL_CDC_EAR_DSM_R2:     1035         case WCD939X_DIGITAL_CDC_EAR_DSM_R2:
1036         case WCD939X_DIGITAL_CDC_EAR_DSM_R3:     1036         case WCD939X_DIGITAL_CDC_EAR_DSM_R3:
1037         case WCD939X_DIGITAL_CDC_EAR_DSM_R4:     1037         case WCD939X_DIGITAL_CDC_EAR_DSM_R4:
1038         case WCD939X_DIGITAL_CDC_EAR_DSM_R5:     1038         case WCD939X_DIGITAL_CDC_EAR_DSM_R5:
1039         case WCD939X_DIGITAL_CDC_EAR_DSM_R6:     1039         case WCD939X_DIGITAL_CDC_EAR_DSM_R6:
1040         case WCD939X_DIGITAL_CDC_EAR_DSM_R7:     1040         case WCD939X_DIGITAL_CDC_EAR_DSM_R7:
1041         case WCD939X_DIGITAL_CDC_HPH_GAIN_RX_    1041         case WCD939X_DIGITAL_CDC_HPH_GAIN_RX_0:
1042         case WCD939X_DIGITAL_CDC_HPH_GAIN_RX_    1042         case WCD939X_DIGITAL_CDC_HPH_GAIN_RX_1:
1043         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD    1043         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_0:
1044         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD    1044         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_1:
1045         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD    1045         case WCD939X_DIGITAL_CDC_HPH_GAIN_DSD_2:
1046         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD    1046         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_0:
1047         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD    1047         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_1:
1048         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD    1048         case WCD939X_DIGITAL_CDC_EAR_GAIN_DSD_2:
1049         case WCD939X_DIGITAL_CDC_HPH_GAIN_CTL    1049         case WCD939X_DIGITAL_CDC_HPH_GAIN_CTL:
1050         case WCD939X_DIGITAL_CDC_EAR_GAIN_CTL    1050         case WCD939X_DIGITAL_CDC_EAR_GAIN_CTL:
1051         case WCD939X_DIGITAL_CDC_EAR_PATH_CTL    1051         case WCD939X_DIGITAL_CDC_EAR_PATH_CTL:
1052         case WCD939X_DIGITAL_CDC_SWR_CLH:        1052         case WCD939X_DIGITAL_CDC_SWR_CLH:
1053         case WCD939X_DIGITAL_SWR_CLH_BYP:        1053         case WCD939X_DIGITAL_SWR_CLH_BYP:
1054         case WCD939X_DIGITAL_CDC_TX0_CTL:        1054         case WCD939X_DIGITAL_CDC_TX0_CTL:
1055         case WCD939X_DIGITAL_CDC_TX1_CTL:        1055         case WCD939X_DIGITAL_CDC_TX1_CTL:
1056         case WCD939X_DIGITAL_CDC_TX2_CTL:        1056         case WCD939X_DIGITAL_CDC_TX2_CTL:
1057         case WCD939X_DIGITAL_CDC_TX_RST:         1057         case WCD939X_DIGITAL_CDC_TX_RST:
1058         case WCD939X_DIGITAL_CDC_REQ_CTL:        1058         case WCD939X_DIGITAL_CDC_REQ_CTL:
1059         case WCD939X_DIGITAL_CDC_RST:            1059         case WCD939X_DIGITAL_CDC_RST:
1060         case WCD939X_DIGITAL_CDC_AMIC_CTL:       1060         case WCD939X_DIGITAL_CDC_AMIC_CTL:
1061         case WCD939X_DIGITAL_CDC_DMIC_CTL:       1061         case WCD939X_DIGITAL_CDC_DMIC_CTL:
1062         case WCD939X_DIGITAL_CDC_DMIC1_CTL:      1062         case WCD939X_DIGITAL_CDC_DMIC1_CTL:
1063         case WCD939X_DIGITAL_CDC_DMIC2_CTL:      1063         case WCD939X_DIGITAL_CDC_DMIC2_CTL:
1064         case WCD939X_DIGITAL_CDC_DMIC3_CTL:      1064         case WCD939X_DIGITAL_CDC_DMIC3_CTL:
1065         case WCD939X_DIGITAL_CDC_DMIC4_CTL:      1065         case WCD939X_DIGITAL_CDC_DMIC4_CTL:
1066         case WCD939X_DIGITAL_EFUSE_PRG_CTL:      1066         case WCD939X_DIGITAL_EFUSE_PRG_CTL:
1067         case WCD939X_DIGITAL_EFUSE_CTL:          1067         case WCD939X_DIGITAL_EFUSE_CTL:
1068         case WCD939X_DIGITAL_CDC_DMIC_RATE_1_    1068         case WCD939X_DIGITAL_CDC_DMIC_RATE_1_2:
1069         case WCD939X_DIGITAL_CDC_DMIC_RATE_3_    1069         case WCD939X_DIGITAL_CDC_DMIC_RATE_3_4:
1070         case WCD939X_DIGITAL_PDM_WD_CTL0:        1070         case WCD939X_DIGITAL_PDM_WD_CTL0:
1071         case WCD939X_DIGITAL_PDM_WD_CTL1:        1071         case WCD939X_DIGITAL_PDM_WD_CTL1:
1072         case WCD939X_DIGITAL_PDM_WD_CTL2:        1072         case WCD939X_DIGITAL_PDM_WD_CTL2:
1073         case WCD939X_DIGITAL_INTR_MODE:          1073         case WCD939X_DIGITAL_INTR_MODE:
1074         case WCD939X_DIGITAL_INTR_MASK_0:        1074         case WCD939X_DIGITAL_INTR_MASK_0:
1075         case WCD939X_DIGITAL_INTR_MASK_1:        1075         case WCD939X_DIGITAL_INTR_MASK_1:
1076         case WCD939X_DIGITAL_INTR_MASK_2:        1076         case WCD939X_DIGITAL_INTR_MASK_2:
1077         case WCD939X_DIGITAL_INTR_CLEAR_0:       1077         case WCD939X_DIGITAL_INTR_CLEAR_0:
1078         case WCD939X_DIGITAL_INTR_CLEAR_1:       1078         case WCD939X_DIGITAL_INTR_CLEAR_1:
1079         case WCD939X_DIGITAL_INTR_CLEAR_2:       1079         case WCD939X_DIGITAL_INTR_CLEAR_2:
1080         case WCD939X_DIGITAL_INTR_LEVEL_0:       1080         case WCD939X_DIGITAL_INTR_LEVEL_0:
1081         case WCD939X_DIGITAL_INTR_LEVEL_1:       1081         case WCD939X_DIGITAL_INTR_LEVEL_1:
1082         case WCD939X_DIGITAL_INTR_LEVEL_2:       1082         case WCD939X_DIGITAL_INTR_LEVEL_2:
1083         case WCD939X_DIGITAL_INTR_SET_0:         1083         case WCD939X_DIGITAL_INTR_SET_0:
1084         case WCD939X_DIGITAL_INTR_SET_1:         1084         case WCD939X_DIGITAL_INTR_SET_1:
1085         case WCD939X_DIGITAL_INTR_SET_2:         1085         case WCD939X_DIGITAL_INTR_SET_2:
1086         case WCD939X_DIGITAL_INTR_TEST_0:        1086         case WCD939X_DIGITAL_INTR_TEST_0:
1087         case WCD939X_DIGITAL_INTR_TEST_1:        1087         case WCD939X_DIGITAL_INTR_TEST_1:
1088         case WCD939X_DIGITAL_INTR_TEST_2:        1088         case WCD939X_DIGITAL_INTR_TEST_2:
1089         case WCD939X_DIGITAL_TX_MODE_DBG_EN:     1089         case WCD939X_DIGITAL_TX_MODE_DBG_EN:
1090         case WCD939X_DIGITAL_TX_MODE_DBG_0_1:    1090         case WCD939X_DIGITAL_TX_MODE_DBG_0_1:
1091         case WCD939X_DIGITAL_TX_MODE_DBG_2_3:    1091         case WCD939X_DIGITAL_TX_MODE_DBG_2_3:
1092         case WCD939X_DIGITAL_LB_IN_SEL_CTL:      1092         case WCD939X_DIGITAL_LB_IN_SEL_CTL:
1093         case WCD939X_DIGITAL_LOOP_BACK_MODE:     1093         case WCD939X_DIGITAL_LOOP_BACK_MODE:
1094         case WCD939X_DIGITAL_SWR_DAC_TEST:       1094         case WCD939X_DIGITAL_SWR_DAC_TEST:
1095         case WCD939X_DIGITAL_SWR_HM_TEST_RX_0    1095         case WCD939X_DIGITAL_SWR_HM_TEST_RX_0:
1096         case WCD939X_DIGITAL_SWR_HM_TEST_TX_0    1096         case WCD939X_DIGITAL_SWR_HM_TEST_TX_0:
1097         case WCD939X_DIGITAL_SWR_HM_TEST_RX_1    1097         case WCD939X_DIGITAL_SWR_HM_TEST_RX_1:
1098         case WCD939X_DIGITAL_SWR_HM_TEST_TX_1    1098         case WCD939X_DIGITAL_SWR_HM_TEST_TX_1:
1099         case WCD939X_DIGITAL_SWR_HM_TEST_TX_2    1099         case WCD939X_DIGITAL_SWR_HM_TEST_TX_2:
1100         case WCD939X_DIGITAL_PAD_CTL_SWR_0:      1100         case WCD939X_DIGITAL_PAD_CTL_SWR_0:
1101         case WCD939X_DIGITAL_PAD_CTL_SWR_1:      1101         case WCD939X_DIGITAL_PAD_CTL_SWR_1:
1102         case WCD939X_DIGITAL_I2C_CTL:            1102         case WCD939X_DIGITAL_I2C_CTL:
1103         case WCD939X_DIGITAL_CDC_TX_TANGGU_SW    1103         case WCD939X_DIGITAL_CDC_TX_TANGGU_SW_MODE:
1104         case WCD939X_DIGITAL_EFUSE_TEST_CTL_0    1104         case WCD939X_DIGITAL_EFUSE_TEST_CTL_0:
1105         case WCD939X_DIGITAL_EFUSE_TEST_CTL_1    1105         case WCD939X_DIGITAL_EFUSE_TEST_CTL_1:
1106         case WCD939X_DIGITAL_PAD_CTL_PDM_RX0:    1106         case WCD939X_DIGITAL_PAD_CTL_PDM_RX0:
1107         case WCD939X_DIGITAL_PAD_CTL_PDM_RX1:    1107         case WCD939X_DIGITAL_PAD_CTL_PDM_RX1:
1108         case WCD939X_DIGITAL_PAD_CTL_PDM_TX0:    1108         case WCD939X_DIGITAL_PAD_CTL_PDM_TX0:
1109         case WCD939X_DIGITAL_PAD_CTL_PDM_TX1:    1109         case WCD939X_DIGITAL_PAD_CTL_PDM_TX1:
1110         case WCD939X_DIGITAL_PAD_CTL_PDM_TX2:    1110         case WCD939X_DIGITAL_PAD_CTL_PDM_TX2:
1111         case WCD939X_DIGITAL_PAD_INP_DIS_0:      1111         case WCD939X_DIGITAL_PAD_INP_DIS_0:
1112         case WCD939X_DIGITAL_PAD_INP_DIS_1:      1112         case WCD939X_DIGITAL_PAD_INP_DIS_1:
1113         case WCD939X_DIGITAL_DRIVE_STRENGTH_0    1113         case WCD939X_DIGITAL_DRIVE_STRENGTH_0:
1114         case WCD939X_DIGITAL_DRIVE_STRENGTH_1    1114         case WCD939X_DIGITAL_DRIVE_STRENGTH_1:
1115         case WCD939X_DIGITAL_DRIVE_STRENGTH_2    1115         case WCD939X_DIGITAL_DRIVE_STRENGTH_2:
1116         case WCD939X_DIGITAL_RX_DATA_EDGE_CTL    1116         case WCD939X_DIGITAL_RX_DATA_EDGE_CTL:
1117         case WCD939X_DIGITAL_TX_DATA_EDGE_CTL    1117         case WCD939X_DIGITAL_TX_DATA_EDGE_CTL:
1118         case WCD939X_DIGITAL_GPIO_MODE:          1118         case WCD939X_DIGITAL_GPIO_MODE:
1119         case WCD939X_DIGITAL_PIN_CTL_OE:         1119         case WCD939X_DIGITAL_PIN_CTL_OE:
1120         case WCD939X_DIGITAL_PIN_CTL_DATA_0:     1120         case WCD939X_DIGITAL_PIN_CTL_DATA_0:
1121         case WCD939X_DIGITAL_PIN_CTL_DATA_1:     1121         case WCD939X_DIGITAL_PIN_CTL_DATA_1:
1122         case WCD939X_DIGITAL_DIG_DEBUG_CTL:      1122         case WCD939X_DIGITAL_DIG_DEBUG_CTL:
1123         case WCD939X_DIGITAL_DIG_DEBUG_EN:       1123         case WCD939X_DIGITAL_DIG_DEBUG_EN:
1124         case WCD939X_DIGITAL_ANA_CSR_DBG_ADD:    1124         case WCD939X_DIGITAL_ANA_CSR_DBG_ADD:
1125         case WCD939X_DIGITAL_ANA_CSR_DBG_CTL:    1125         case WCD939X_DIGITAL_ANA_CSR_DBG_CTL:
1126         case WCD939X_DIGITAL_SSP_DBG:            1126         case WCD939X_DIGITAL_SSP_DBG:
1127         case WCD939X_DIGITAL_SPARE_0:            1127         case WCD939X_DIGITAL_SPARE_0:
1128         case WCD939X_DIGITAL_SPARE_1:            1128         case WCD939X_DIGITAL_SPARE_1:
1129         case WCD939X_DIGITAL_SPARE_2:            1129         case WCD939X_DIGITAL_SPARE_2:
1130         case WCD939X_DIGITAL_TX_REQ_FB_CTL_0:    1130         case WCD939X_DIGITAL_TX_REQ_FB_CTL_0:
1131         case WCD939X_DIGITAL_TX_REQ_FB_CTL_1:    1131         case WCD939X_DIGITAL_TX_REQ_FB_CTL_1:
1132         case WCD939X_DIGITAL_TX_REQ_FB_CTL_2:    1132         case WCD939X_DIGITAL_TX_REQ_FB_CTL_2:
1133         case WCD939X_DIGITAL_TX_REQ_FB_CTL_3:    1133         case WCD939X_DIGITAL_TX_REQ_FB_CTL_3:
1134         case WCD939X_DIGITAL_TX_REQ_FB_CTL_4:    1134         case WCD939X_DIGITAL_TX_REQ_FB_CTL_4:
1135         case WCD939X_DIGITAL_DEM_BYPASS_DATA0    1135         case WCD939X_DIGITAL_DEM_BYPASS_DATA0:
1136         case WCD939X_DIGITAL_DEM_BYPASS_DATA1    1136         case WCD939X_DIGITAL_DEM_BYPASS_DATA1:
1137         case WCD939X_DIGITAL_DEM_BYPASS_DATA2    1137         case WCD939X_DIGITAL_DEM_BYPASS_DATA2:
1138         case WCD939X_DIGITAL_DEM_BYPASS_DATA3    1138         case WCD939X_DIGITAL_DEM_BYPASS_DATA3:
1139         case WCD939X_DIGITAL_DEM_SECOND_ORDER    1139         case WCD939X_DIGITAL_DEM_SECOND_ORDER:
1140         case WCD939X_DIGITAL_DSM_CTRL:           1140         case WCD939X_DIGITAL_DSM_CTRL:
1141         case WCD939X_DIGITAL_DSM_0_STATIC_DAT    1141         case WCD939X_DIGITAL_DSM_0_STATIC_DATA_0:
1142         case WCD939X_DIGITAL_DSM_0_STATIC_DAT    1142         case WCD939X_DIGITAL_DSM_0_STATIC_DATA_1:
1143         case WCD939X_DIGITAL_DSM_0_STATIC_DAT    1143         case WCD939X_DIGITAL_DSM_0_STATIC_DATA_2:
1144         case WCD939X_DIGITAL_DSM_0_STATIC_DAT    1144         case WCD939X_DIGITAL_DSM_0_STATIC_DATA_3:
1145         case WCD939X_DIGITAL_DSM_1_STATIC_DAT    1145         case WCD939X_DIGITAL_DSM_1_STATIC_DATA_0:
1146         case WCD939X_DIGITAL_DSM_1_STATIC_DAT    1146         case WCD939X_DIGITAL_DSM_1_STATIC_DATA_1:
1147         case WCD939X_DIGITAL_DSM_1_STATIC_DAT    1147         case WCD939X_DIGITAL_DSM_1_STATIC_DATA_2:
1148         case WCD939X_DIGITAL_DSM_1_STATIC_DAT    1148         case WCD939X_DIGITAL_DSM_1_STATIC_DATA_3:
1149         case WCD939X_RX_TOP_PAGE:                1149         case WCD939X_RX_TOP_PAGE:
1150         case WCD939X_RX_TOP_TOP_CFG0:            1150         case WCD939X_RX_TOP_TOP_CFG0:
1151         case WCD939X_RX_TOP_HPHL_COMP_WR_LSB:    1151         case WCD939X_RX_TOP_HPHL_COMP_WR_LSB:
1152         case WCD939X_RX_TOP_HPHL_COMP_WR_MSB:    1152         case WCD939X_RX_TOP_HPHL_COMP_WR_MSB:
1153         case WCD939X_RX_TOP_HPHL_COMP_LUT:       1153         case WCD939X_RX_TOP_HPHL_COMP_LUT:
1154         case WCD939X_RX_TOP_HPHR_COMP_WR_LSB:    1154         case WCD939X_RX_TOP_HPHR_COMP_WR_LSB:
1155         case WCD939X_RX_TOP_HPHR_COMP_WR_MSB:    1155         case WCD939X_RX_TOP_HPHR_COMP_WR_MSB:
1156         case WCD939X_RX_TOP_HPHR_COMP_LUT:       1156         case WCD939X_RX_TOP_HPHR_COMP_LUT:
1157         case WCD939X_RX_TOP_DSD0_DEBUG_CFG1:     1157         case WCD939X_RX_TOP_DSD0_DEBUG_CFG1:
1158         case WCD939X_RX_TOP_DSD0_DEBUG_CFG2:     1158         case WCD939X_RX_TOP_DSD0_DEBUG_CFG2:
1159         case WCD939X_RX_TOP_DSD0_DEBUG_CFG3:     1159         case WCD939X_RX_TOP_DSD0_DEBUG_CFG3:
1160         case WCD939X_RX_TOP_DSD0_DEBUG_CFG4:     1160         case WCD939X_RX_TOP_DSD0_DEBUG_CFG4:
1161         case WCD939X_RX_TOP_DSD1_DEBUG_CFG1:     1161         case WCD939X_RX_TOP_DSD1_DEBUG_CFG1:
1162         case WCD939X_RX_TOP_DSD1_DEBUG_CFG2:     1162         case WCD939X_RX_TOP_DSD1_DEBUG_CFG2:
1163         case WCD939X_RX_TOP_DSD1_DEBUG_CFG3:     1163         case WCD939X_RX_TOP_DSD1_DEBUG_CFG3:
1164         case WCD939X_RX_TOP_DSD1_DEBUG_CFG4:     1164         case WCD939X_RX_TOP_DSD1_DEBUG_CFG4:
1165         case WCD939X_RX_TOP_HPHL_PATH_CFG0:      1165         case WCD939X_RX_TOP_HPHL_PATH_CFG0:
1166         case WCD939X_RX_TOP_HPHL_PATH_CFG1:      1166         case WCD939X_RX_TOP_HPHL_PATH_CFG1:
1167         case WCD939X_RX_TOP_HPHR_PATH_CFG0:      1167         case WCD939X_RX_TOP_HPHR_PATH_CFG0:
1168         case WCD939X_RX_TOP_HPHR_PATH_CFG1:      1168         case WCD939X_RX_TOP_HPHR_PATH_CFG1:
1169         case WCD939X_RX_TOP_PATH_CFG2:           1169         case WCD939X_RX_TOP_PATH_CFG2:
1170         case WCD939X_RX_TOP_HPHL_PATH_SEC0:      1170         case WCD939X_RX_TOP_HPHL_PATH_SEC0:
1171         case WCD939X_RX_TOP_HPHL_PATH_SEC1:      1171         case WCD939X_RX_TOP_HPHL_PATH_SEC1:
1172         case WCD939X_RX_TOP_HPHL_PATH_SEC2:      1172         case WCD939X_RX_TOP_HPHL_PATH_SEC2:
1173         case WCD939X_RX_TOP_HPHL_PATH_SEC3:      1173         case WCD939X_RX_TOP_HPHL_PATH_SEC3:
1174         case WCD939X_RX_TOP_HPHR_PATH_SEC0:      1174         case WCD939X_RX_TOP_HPHR_PATH_SEC0:
1175         case WCD939X_RX_TOP_HPHR_PATH_SEC1:      1175         case WCD939X_RX_TOP_HPHR_PATH_SEC1:
1176         case WCD939X_RX_TOP_HPHR_PATH_SEC2:      1176         case WCD939X_RX_TOP_HPHR_PATH_SEC2:
1177         case WCD939X_RX_TOP_HPHR_PATH_SEC3:      1177         case WCD939X_RX_TOP_HPHR_PATH_SEC3:
1178         case WCD939X_RX_TOP_PATH_SEC4:           1178         case WCD939X_RX_TOP_PATH_SEC4:
1179         case WCD939X_RX_TOP_PATH_SEC5:           1179         case WCD939X_RX_TOP_PATH_SEC5:
1180         case WCD939X_COMPANDER_HPHL_CTL0:        1180         case WCD939X_COMPANDER_HPHL_CTL0:
1181         case WCD939X_COMPANDER_HPHL_CTL1:        1181         case WCD939X_COMPANDER_HPHL_CTL1:
1182         case WCD939X_COMPANDER_HPHL_CTL2:        1182         case WCD939X_COMPANDER_HPHL_CTL2:
1183         case WCD939X_COMPANDER_HPHL_CTL3:        1183         case WCD939X_COMPANDER_HPHL_CTL3:
1184         case WCD939X_COMPANDER_HPHL_CTL4:        1184         case WCD939X_COMPANDER_HPHL_CTL4:
1185         case WCD939X_COMPANDER_HPHL_CTL5:        1185         case WCD939X_COMPANDER_HPHL_CTL5:
1186         case WCD939X_COMPANDER_HPHL_CTL7:        1186         case WCD939X_COMPANDER_HPHL_CTL7:
1187         case WCD939X_COMPANDER_HPHL_CTL8:        1187         case WCD939X_COMPANDER_HPHL_CTL8:
1188         case WCD939X_COMPANDER_HPHL_CTL9:        1188         case WCD939X_COMPANDER_HPHL_CTL9:
1189         case WCD939X_COMPANDER_HPHL_CTL10:       1189         case WCD939X_COMPANDER_HPHL_CTL10:
1190         case WCD939X_COMPANDER_HPHL_CTL11:       1190         case WCD939X_COMPANDER_HPHL_CTL11:
1191         case WCD939X_COMPANDER_HPHL_CTL12:       1191         case WCD939X_COMPANDER_HPHL_CTL12:
1192         case WCD939X_COMPANDER_HPHL_CTL13:       1192         case WCD939X_COMPANDER_HPHL_CTL13:
1193         case WCD939X_COMPANDER_HPHL_CTL14:       1193         case WCD939X_COMPANDER_HPHL_CTL14:
1194         case WCD939X_COMPANDER_HPHL_CTL15:       1194         case WCD939X_COMPANDER_HPHL_CTL15:
1195         case WCD939X_COMPANDER_HPHL_CTL16:       1195         case WCD939X_COMPANDER_HPHL_CTL16:
1196         case WCD939X_COMPANDER_HPHL_CTL17:       1196         case WCD939X_COMPANDER_HPHL_CTL17:
1197         case WCD939X_COMPANDER_HPHL_CTL18:       1197         case WCD939X_COMPANDER_HPHL_CTL18:
1198         case WCD939X_COMPANDER_HPHL_CTL19:       1198         case WCD939X_COMPANDER_HPHL_CTL19:
1199         case WCD939X_R_CTL0:                     1199         case WCD939X_R_CTL0:
1200         case WCD939X_R_CTL1:                     1200         case WCD939X_R_CTL1:
1201         case WCD939X_R_CTL2:                     1201         case WCD939X_R_CTL2:
1202         case WCD939X_R_CTL3:                     1202         case WCD939X_R_CTL3:
1203         case WCD939X_R_CTL4:                     1203         case WCD939X_R_CTL4:
1204         case WCD939X_R_CTL5:                     1204         case WCD939X_R_CTL5:
1205         case WCD939X_R_CTL7:                     1205         case WCD939X_R_CTL7:
1206         case WCD939X_R_CTL8:                     1206         case WCD939X_R_CTL8:
1207         case WCD939X_R_CTL9:                     1207         case WCD939X_R_CTL9:
1208         case WCD939X_R_CTL10:                    1208         case WCD939X_R_CTL10:
1209         case WCD939X_R_CTL11:                    1209         case WCD939X_R_CTL11:
1210         case WCD939X_R_CTL12:                    1210         case WCD939X_R_CTL12:
1211         case WCD939X_R_CTL13:                    1211         case WCD939X_R_CTL13:
1212         case WCD939X_R_CTL14:                    1212         case WCD939X_R_CTL14:
1213         case WCD939X_R_CTL15:                    1213         case WCD939X_R_CTL15:
1214         case WCD939X_R_CTL16:                    1214         case WCD939X_R_CTL16:
1215         case WCD939X_R_CTL17:                    1215         case WCD939X_R_CTL17:
1216         case WCD939X_R_CTL18:                    1216         case WCD939X_R_CTL18:
1217         case WCD939X_R_CTL19:                    1217         case WCD939X_R_CTL19:
1218         case WCD939X_E_PATH_CTL:                 1218         case WCD939X_E_PATH_CTL:
1219         case WCD939X_E_CFG0:                     1219         case WCD939X_E_CFG0:
1220         case WCD939X_E_CFG1:                     1220         case WCD939X_E_CFG1:
1221         case WCD939X_E_CFG2:                     1221         case WCD939X_E_CFG2:
1222         case WCD939X_E_CFG3:                     1222         case WCD939X_E_CFG3:
1223         case WCD939X_DSD_HPHL_PATH_CTL:          1223         case WCD939X_DSD_HPHL_PATH_CTL:
1224         case WCD939X_DSD_HPHL_CFG0:              1224         case WCD939X_DSD_HPHL_CFG0:
1225         case WCD939X_DSD_HPHL_CFG1:              1225         case WCD939X_DSD_HPHL_CFG1:
1226         case WCD939X_DSD_HPHL_CFG2:              1226         case WCD939X_DSD_HPHL_CFG2:
1227         case WCD939X_DSD_HPHL_CFG3:              1227         case WCD939X_DSD_HPHL_CFG3:
1228         case WCD939X_DSD_HPHL_CFG4:              1228         case WCD939X_DSD_HPHL_CFG4:
1229         case WCD939X_DSD_HPHL_CFG5:              1229         case WCD939X_DSD_HPHL_CFG5:
1230         case WCD939X_DSD_HPHR_PATH_CTL:          1230         case WCD939X_DSD_HPHR_PATH_CTL:
1231         case WCD939X_DSD_HPHR_CFG0:              1231         case WCD939X_DSD_HPHR_CFG0:
1232         case WCD939X_DSD_HPHR_CFG1:              1232         case WCD939X_DSD_HPHR_CFG1:
1233         case WCD939X_DSD_HPHR_CFG2:              1233         case WCD939X_DSD_HPHR_CFG2:
1234         case WCD939X_DSD_HPHR_CFG3:              1234         case WCD939X_DSD_HPHR_CFG3:
1235         case WCD939X_DSD_HPHR_CFG4:              1235         case WCD939X_DSD_HPHR_CFG4:
1236         case WCD939X_DSD_HPHR_CFG5:              1236         case WCD939X_DSD_HPHR_CFG5:
1237                 return true;                     1237                 return true;
1238         }                                        1238         }
1239                                                  1239 
1240         return false;                            1240         return false;
1241 }                                                1241 }
1242                                                  1242 
1243 static bool wcd939x_readable_register(struct     1243 static bool wcd939x_readable_register(struct device *dev, unsigned int reg)
1244 {                                                1244 {
1245         /* Read-Only Registers */                1245         /* Read-Only Registers */
1246         switch (reg) {                           1246         switch (reg) {
1247         case WCD939X_ANA_MBHC_RESULT_1:          1247         case WCD939X_ANA_MBHC_RESULT_1:
1248         case WCD939X_ANA_MBHC_RESULT_2:          1248         case WCD939X_ANA_MBHC_RESULT_2:
1249         case WCD939X_ANA_MBHC_RESULT_3:          1249         case WCD939X_ANA_MBHC_RESULT_3:
1250         case WCD939X_MBHC_MOISTURE_DET_FSM_ST    1250         case WCD939X_MBHC_MOISTURE_DET_FSM_STATUS:
1251         case WCD939X_TX_1_2_SAR2_ERR:            1251         case WCD939X_TX_1_2_SAR2_ERR:
1252         case WCD939X_TX_1_2_SAR1_ERR:            1252         case WCD939X_TX_1_2_SAR1_ERR:
1253         case WCD939X_TX_3_4_SAR4_ERR:            1253         case WCD939X_TX_3_4_SAR4_ERR:
1254         case WCD939X_TX_3_4_SAR3_ERR:            1254         case WCD939X_TX_3_4_SAR3_ERR:
1255         case WCD939X_HPH_L_STATUS:               1255         case WCD939X_HPH_L_STATUS:
1256         case WCD939X_HPH_R_STATUS:               1256         case WCD939X_HPH_R_STATUS:
1257         case WCD939X_HPH_SURGE_STATUS:           1257         case WCD939X_HPH_SURGE_STATUS:
1258         case WCD939X_EAR_STATUS_REG_1:           1258         case WCD939X_EAR_STATUS_REG_1:
1259         case WCD939X_EAR_STATUS_REG_2:           1259         case WCD939X_EAR_STATUS_REG_2:
1260         case WCD939X_MBHC_NEW_FSM_STATUS:        1260         case WCD939X_MBHC_NEW_FSM_STATUS:
1261         case WCD939X_MBHC_NEW_ADC_RESULT:        1261         case WCD939X_MBHC_NEW_ADC_RESULT:
1262         case WCD939X_DIE_CRACK_DET_OUT:          1262         case WCD939X_DIE_CRACK_DET_OUT:
1263         case WCD939X_DIGITAL_CHIP_ID0:           1263         case WCD939X_DIGITAL_CHIP_ID0:
1264         case WCD939X_DIGITAL_CHIP_ID1:           1264         case WCD939X_DIGITAL_CHIP_ID1:
1265         case WCD939X_DIGITAL_CHIP_ID2:           1265         case WCD939X_DIGITAL_CHIP_ID2:
1266         case WCD939X_DIGITAL_CHIP_ID3:           1266         case WCD939X_DIGITAL_CHIP_ID3:
1267         case WCD939X_DIGITAL_INTR_STATUS_0:      1267         case WCD939X_DIGITAL_INTR_STATUS_0:
1268         case WCD939X_DIGITAL_INTR_STATUS_1:      1268         case WCD939X_DIGITAL_INTR_STATUS_1:
1269         case WCD939X_DIGITAL_INTR_STATUS_2:      1269         case WCD939X_DIGITAL_INTR_STATUS_2:
1270         case WCD939X_DIGITAL_SWR_HM_TEST_0:      1270         case WCD939X_DIGITAL_SWR_HM_TEST_0:
1271         case WCD939X_DIGITAL_SWR_HM_TEST_1:      1271         case WCD939X_DIGITAL_SWR_HM_TEST_1:
1272         case WCD939X_DIGITAL_EFUSE_T_DATA_0:     1272         case WCD939X_DIGITAL_EFUSE_T_DATA_0:
1273         case WCD939X_DIGITAL_EFUSE_T_DATA_1:     1273         case WCD939X_DIGITAL_EFUSE_T_DATA_1:
1274         case WCD939X_DIGITAL_PIN_STATUS_0:       1274         case WCD939X_DIGITAL_PIN_STATUS_0:
1275         case WCD939X_DIGITAL_PIN_STATUS_1:       1275         case WCD939X_DIGITAL_PIN_STATUS_1:
1276         case WCD939X_DIGITAL_MODE_STATUS_0:      1276         case WCD939X_DIGITAL_MODE_STATUS_0:
1277         case WCD939X_DIGITAL_MODE_STATUS_1:      1277         case WCD939X_DIGITAL_MODE_STATUS_1:
1278         case WCD939X_DIGITAL_EFUSE_REG_0:        1278         case WCD939X_DIGITAL_EFUSE_REG_0:
1279         case WCD939X_DIGITAL_EFUSE_REG_1:        1279         case WCD939X_DIGITAL_EFUSE_REG_1:
1280         case WCD939X_DIGITAL_EFUSE_REG_2:        1280         case WCD939X_DIGITAL_EFUSE_REG_2:
1281         case WCD939X_DIGITAL_EFUSE_REG_3:        1281         case WCD939X_DIGITAL_EFUSE_REG_3:
1282         case WCD939X_DIGITAL_EFUSE_REG_4:        1282         case WCD939X_DIGITAL_EFUSE_REG_4:
1283         case WCD939X_DIGITAL_EFUSE_REG_5:        1283         case WCD939X_DIGITAL_EFUSE_REG_5:
1284         case WCD939X_DIGITAL_EFUSE_REG_6:        1284         case WCD939X_DIGITAL_EFUSE_REG_6:
1285         case WCD939X_DIGITAL_EFUSE_REG_7:        1285         case WCD939X_DIGITAL_EFUSE_REG_7:
1286         case WCD939X_DIGITAL_EFUSE_REG_8:        1286         case WCD939X_DIGITAL_EFUSE_REG_8:
1287         case WCD939X_DIGITAL_EFUSE_REG_9:        1287         case WCD939X_DIGITAL_EFUSE_REG_9:
1288         case WCD939X_DIGITAL_EFUSE_REG_10:       1288         case WCD939X_DIGITAL_EFUSE_REG_10:
1289         case WCD939X_DIGITAL_EFUSE_REG_11:       1289         case WCD939X_DIGITAL_EFUSE_REG_11:
1290         case WCD939X_DIGITAL_EFUSE_REG_12:       1290         case WCD939X_DIGITAL_EFUSE_REG_12:
1291         case WCD939X_DIGITAL_EFUSE_REG_13:       1291         case WCD939X_DIGITAL_EFUSE_REG_13:
1292         case WCD939X_DIGITAL_EFUSE_REG_14:       1292         case WCD939X_DIGITAL_EFUSE_REG_14:
1293         case WCD939X_DIGITAL_EFUSE_REG_15:       1293         case WCD939X_DIGITAL_EFUSE_REG_15:
1294         case WCD939X_DIGITAL_EFUSE_REG_16:       1294         case WCD939X_DIGITAL_EFUSE_REG_16:
1295         case WCD939X_DIGITAL_EFUSE_REG_17:       1295         case WCD939X_DIGITAL_EFUSE_REG_17:
1296         case WCD939X_DIGITAL_EFUSE_REG_18:       1296         case WCD939X_DIGITAL_EFUSE_REG_18:
1297         case WCD939X_DIGITAL_EFUSE_REG_19:       1297         case WCD939X_DIGITAL_EFUSE_REG_19:
1298         case WCD939X_DIGITAL_EFUSE_REG_20:       1298         case WCD939X_DIGITAL_EFUSE_REG_20:
1299         case WCD939X_DIGITAL_EFUSE_REG_21:       1299         case WCD939X_DIGITAL_EFUSE_REG_21:
1300         case WCD939X_DIGITAL_EFUSE_REG_22:       1300         case WCD939X_DIGITAL_EFUSE_REG_22:
1301         case WCD939X_DIGITAL_EFUSE_REG_23:       1301         case WCD939X_DIGITAL_EFUSE_REG_23:
1302         case WCD939X_DIGITAL_EFUSE_REG_24:       1302         case WCD939X_DIGITAL_EFUSE_REG_24:
1303         case WCD939X_DIGITAL_EFUSE_REG_25:       1303         case WCD939X_DIGITAL_EFUSE_REG_25:
1304         case WCD939X_DIGITAL_EFUSE_REG_26:       1304         case WCD939X_DIGITAL_EFUSE_REG_26:
1305         case WCD939X_DIGITAL_EFUSE_REG_27:       1305         case WCD939X_DIGITAL_EFUSE_REG_27:
1306         case WCD939X_DIGITAL_EFUSE_REG_28:       1306         case WCD939X_DIGITAL_EFUSE_REG_28:
1307         case WCD939X_DIGITAL_EFUSE_REG_29:       1307         case WCD939X_DIGITAL_EFUSE_REG_29:
1308         case WCD939X_DIGITAL_EFUSE_REG_30:       1308         case WCD939X_DIGITAL_EFUSE_REG_30:
1309         case WCD939X_DIGITAL_EFUSE_REG_31:       1309         case WCD939X_DIGITAL_EFUSE_REG_31:
1310         case WCD939X_RX_TOP_HPHL_COMP_RD_LSB:    1310         case WCD939X_RX_TOP_HPHL_COMP_RD_LSB:
1311         case WCD939X_RX_TOP_HPHL_COMP_RD_MSB:    1311         case WCD939X_RX_TOP_HPHL_COMP_RD_MSB:
1312         case WCD939X_RX_TOP_HPHR_COMP_RD_LSB:    1312         case WCD939X_RX_TOP_HPHR_COMP_RD_LSB:
1313         case WCD939X_RX_TOP_HPHR_COMP_RD_MSB:    1313         case WCD939X_RX_TOP_HPHR_COMP_RD_MSB:
1314         case WCD939X_RX_TOP_DSD0_DEBUG_CFG5:     1314         case WCD939X_RX_TOP_DSD0_DEBUG_CFG5:
1315         case WCD939X_RX_TOP_DSD0_DEBUG_CFG6:     1315         case WCD939X_RX_TOP_DSD0_DEBUG_CFG6:
1316         case WCD939X_RX_TOP_DSD1_DEBUG_CFG5:     1316         case WCD939X_RX_TOP_DSD1_DEBUG_CFG5:
1317         case WCD939X_RX_TOP_DSD1_DEBUG_CFG6:     1317         case WCD939X_RX_TOP_DSD1_DEBUG_CFG6:
1318         case WCD939X_COMPANDER_HPHL_CTL6:        1318         case WCD939X_COMPANDER_HPHL_CTL6:
1319         case WCD939X_R_CTL6:                     1319         case WCD939X_R_CTL6:
1320                 return true;                     1320                 return true;
1321         }                                        1321         }
1322                                                  1322 
1323         return wcd939x_rdwr_register(dev, reg    1323         return wcd939x_rdwr_register(dev, reg);
1324 }                                                1324 }
1325                                                  1325 
1326 static bool wcd939x_volatile_register(struct     1326 static bool wcd939x_volatile_register(struct device *dev, unsigned int reg)
1327 {                                                1327 {
1328         switch (reg) {                           1328         switch (reg) {
1329         case WCD939X_ANA_MBHC_RESULT_1:          1329         case WCD939X_ANA_MBHC_RESULT_1:
1330         case WCD939X_ANA_MBHC_RESULT_2:          1330         case WCD939X_ANA_MBHC_RESULT_2:
1331         case WCD939X_ANA_MBHC_RESULT_3:          1331         case WCD939X_ANA_MBHC_RESULT_3:
1332         case WCD939X_MBHC_MOISTURE_DET_FSM_ST    1332         case WCD939X_MBHC_MOISTURE_DET_FSM_STATUS:
1333         case WCD939X_TX_1_2_SAR2_ERR:            1333         case WCD939X_TX_1_2_SAR2_ERR:
1334         case WCD939X_TX_1_2_SAR1_ERR:            1334         case WCD939X_TX_1_2_SAR1_ERR:
1335         case WCD939X_TX_3_4_SAR4_ERR:            1335         case WCD939X_TX_3_4_SAR4_ERR:
1336         case WCD939X_TX_3_4_SAR3_ERR:            1336         case WCD939X_TX_3_4_SAR3_ERR:
1337         case WCD939X_HPH_L_STATUS:               1337         case WCD939X_HPH_L_STATUS:
1338         case WCD939X_HPH_R_STATUS:               1338         case WCD939X_HPH_R_STATUS:
1339         case WCD939X_HPH_SURGE_STATUS:           1339         case WCD939X_HPH_SURGE_STATUS:
1340         case WCD939X_EAR_STATUS_REG_1:           1340         case WCD939X_EAR_STATUS_REG_1:
1341         case WCD939X_EAR_STATUS_REG_2:           1341         case WCD939X_EAR_STATUS_REG_2:
1342         case WCD939X_MBHC_NEW_FSM_STATUS:        1342         case WCD939X_MBHC_NEW_FSM_STATUS:
1343         case WCD939X_MBHC_NEW_ADC_RESULT:        1343         case WCD939X_MBHC_NEW_ADC_RESULT:
1344         case WCD939X_DIE_CRACK_DET_OUT:          1344         case WCD939X_DIE_CRACK_DET_OUT:
1345         case WCD939X_DIGITAL_INTR_STATUS_0:      1345         case WCD939X_DIGITAL_INTR_STATUS_0:
1346         case WCD939X_DIGITAL_INTR_STATUS_1:      1346         case WCD939X_DIGITAL_INTR_STATUS_1:
1347         case WCD939X_DIGITAL_INTR_STATUS_2:      1347         case WCD939X_DIGITAL_INTR_STATUS_2:
1348         case WCD939X_DIGITAL_SWR_HM_TEST_0:      1348         case WCD939X_DIGITAL_SWR_HM_TEST_0:
1349         case WCD939X_DIGITAL_SWR_HM_TEST_1:      1349         case WCD939X_DIGITAL_SWR_HM_TEST_1:
1350         case WCD939X_DIGITAL_PIN_STATUS_0:       1350         case WCD939X_DIGITAL_PIN_STATUS_0:
1351         case WCD939X_DIGITAL_PIN_STATUS_1:       1351         case WCD939X_DIGITAL_PIN_STATUS_1:
1352         case WCD939X_DIGITAL_MODE_STATUS_0:      1352         case WCD939X_DIGITAL_MODE_STATUS_0:
1353         case WCD939X_DIGITAL_MODE_STATUS_1:      1353         case WCD939X_DIGITAL_MODE_STATUS_1:
1354         case WCD939X_RX_TOP_HPHL_COMP_RD_LSB:    1354         case WCD939X_RX_TOP_HPHL_COMP_RD_LSB:
1355         case WCD939X_RX_TOP_HPHL_COMP_RD_MSB:    1355         case WCD939X_RX_TOP_HPHL_COMP_RD_MSB:
1356         case WCD939X_RX_TOP_HPHR_COMP_RD_LSB:    1356         case WCD939X_RX_TOP_HPHR_COMP_RD_LSB:
1357         case WCD939X_RX_TOP_HPHR_COMP_RD_MSB:    1357         case WCD939X_RX_TOP_HPHR_COMP_RD_MSB:
1358         case WCD939X_RX_TOP_DSD0_DEBUG_CFG5:     1358         case WCD939X_RX_TOP_DSD0_DEBUG_CFG5:
1359         case WCD939X_RX_TOP_DSD0_DEBUG_CFG6:     1359         case WCD939X_RX_TOP_DSD0_DEBUG_CFG6:
1360         case WCD939X_RX_TOP_DSD1_DEBUG_CFG5:     1360         case WCD939X_RX_TOP_DSD1_DEBUG_CFG5:
1361         case WCD939X_RX_TOP_DSD1_DEBUG_CFG6:     1361         case WCD939X_RX_TOP_DSD1_DEBUG_CFG6:
1362         case WCD939X_COMPANDER_HPHL_CTL6:        1362         case WCD939X_COMPANDER_HPHL_CTL6:
1363         case WCD939X_R_CTL6:                     1363         case WCD939X_R_CTL6:
1364                 return true;                     1364                 return true;
1365         }                                        1365         }
1366         return false;                            1366         return false;
1367 }                                                1367 }
1368                                                  1368 
1369 static bool wcd939x_writeable_register(struct    1369 static bool wcd939x_writeable_register(struct device *dev, unsigned int reg)
1370 {                                                1370 {
1371         return wcd939x_rdwr_register(dev, reg    1371         return wcd939x_rdwr_register(dev, reg);
1372 }                                                1372 }
1373                                                  1373 
1374 static const struct regmap_config wcd939x_reg    1374 static const struct regmap_config wcd939x_regmap_config = {
1375         .name = "wcd939x_csr",                   1375         .name = "wcd939x_csr",
1376         .reg_bits = 32,                          1376         .reg_bits = 32,
1377         .val_bits = 8,                           1377         .val_bits = 8,
1378         .cache_type = REGCACHE_MAPLE,            1378         .cache_type = REGCACHE_MAPLE,
1379         .reg_defaults = wcd939x_defaults,        1379         .reg_defaults = wcd939x_defaults,
1380         .num_reg_defaults = ARRAY_SIZE(wcd939    1380         .num_reg_defaults = ARRAY_SIZE(wcd939x_defaults),
1381         .max_register = WCD939X_MAX_REGISTER,    1381         .max_register = WCD939X_MAX_REGISTER,
1382         .readable_reg = wcd939x_readable_regi    1382         .readable_reg = wcd939x_readable_register,
1383         .writeable_reg = wcd939x_writeable_re    1383         .writeable_reg = wcd939x_writeable_register,
1384         .volatile_reg = wcd939x_volatile_regi    1384         .volatile_reg = wcd939x_volatile_register,
1385 };                                               1385 };
1386                                                  1386 
1387 static const struct sdw_slave_ops wcd9390_sla    1387 static const struct sdw_slave_ops wcd9390_slave_ops = {
1388         .update_status = wcd9390_update_statu    1388         .update_status = wcd9390_update_status,
1389         .interrupt_callback = wcd9390_interru    1389         .interrupt_callback = wcd9390_interrupt_callback,
1390         .bus_config = wcd9390_bus_config,        1390         .bus_config = wcd9390_bus_config,
1391 };                                               1391 };
1392                                                  1392 
1393 static int wcd939x_sdw_component_bind(struct     1393 static int wcd939x_sdw_component_bind(struct device *dev, struct device *master,
1394                                       void *d    1394                                       void *data)
1395 {                                                1395 {
1396         pm_runtime_set_autosuspend_delay(dev,    1396         pm_runtime_set_autosuspend_delay(dev, 3000);
1397         pm_runtime_use_autosuspend(dev);         1397         pm_runtime_use_autosuspend(dev);
1398         pm_runtime_mark_last_busy(dev);          1398         pm_runtime_mark_last_busy(dev);
1399         pm_runtime_set_active(dev);              1399         pm_runtime_set_active(dev);
1400         pm_runtime_enable(dev);                  1400         pm_runtime_enable(dev);
1401                                                  1401 
1402         return 0;                                1402         return 0;
1403 }                                                1403 }
1404                                                  1404 
1405 static void wcd939x_sdw_component_unbind(stru    1405 static void wcd939x_sdw_component_unbind(struct device *dev,
1406                                          stru    1406                                          struct device *master, void *data)
1407 {                                                1407 {
1408         pm_runtime_disable(dev);                 1408         pm_runtime_disable(dev);
1409         pm_runtime_set_suspended(dev);           1409         pm_runtime_set_suspended(dev);
1410         pm_runtime_dont_use_autosuspend(dev);    1410         pm_runtime_dont_use_autosuspend(dev);
1411 }                                                1411 }
1412                                                  1412 
1413 static const struct component_ops wcd939x_sdw    1413 static const struct component_ops wcd939x_sdw_component_ops = {
1414         .bind = wcd939x_sdw_component_bind,      1414         .bind = wcd939x_sdw_component_bind,
1415         .unbind = wcd939x_sdw_component_unbin    1415         .unbind = wcd939x_sdw_component_unbind,
1416 };                                               1416 };
1417                                                  1417 
1418 static int wcd9390_probe(struct sdw_slave *pd    1418 static int wcd9390_probe(struct sdw_slave *pdev, const struct sdw_device_id *id)
1419 {                                                1419 {
1420         struct device *dev = &pdev->dev;         1420         struct device *dev = &pdev->dev;
1421         struct wcd939x_sdw_priv *wcd;            1421         struct wcd939x_sdw_priv *wcd;
1422         int ret;                                 1422         int ret;
1423                                                  1423 
1424         wcd = devm_kzalloc(dev, sizeof(*wcd),    1424         wcd = devm_kzalloc(dev, sizeof(*wcd), GFP_KERNEL);
1425         if (!wcd)                                1425         if (!wcd)
1426                 return -ENOMEM;                  1426                 return -ENOMEM;
1427                                                  1427 
1428         /*                                       1428         /*
1429          * Port map index starts with 0, howe    1429          * Port map index starts with 0, however the data port for this codec
1430          * are from index 1                      1430          * are from index 1
1431          */                                      1431          */
1432         if (of_property_read_bool(dev->of_nod    1432         if (of_property_read_bool(dev->of_node, "qcom,tx-port-mapping")) {
1433                 wcd->is_tx = true;               1433                 wcd->is_tx = true;
1434                 ret = of_property_read_u32_ar    1434                 ret = of_property_read_u32_array(dev->of_node,
1435                                                  1435                                                  "qcom,tx-port-mapping",
1436                                                  1436                                                  &pdev->m_port_map[1],
1437                                                  1437                                                  WCD939X_MAX_TX_SWR_PORTS);
1438         } else {                                 1438         } else {
1439                 ret = of_property_read_u32_ar    1439                 ret = of_property_read_u32_array(dev->of_node,
1440                                                  1440                                                  "qcom,rx-port-mapping",
1441                                                  1441                                                  &pdev->m_port_map[1],
1442                                                  1442                                                  WCD939X_MAX_RX_SWR_PORTS);
1443         }                                        1443         }
1444                                                  1444 
1445         if (ret < 0)                             1445         if (ret < 0)
1446                 dev_info(dev, "Static Port ma    1446                 dev_info(dev, "Static Port mapping not specified\n");
1447                                                  1447 
1448         wcd->sdev = pdev;                        1448         wcd->sdev = pdev;
1449         dev_set_drvdata(dev, wcd);               1449         dev_set_drvdata(dev, wcd);
1450                                                  1450 
1451         pdev->prop.scp_int1_mask = SDW_SCP_IN    1451         pdev->prop.scp_int1_mask = SDW_SCP_INT1_IMPL_DEF |
1452                                    SDW_SCP_IN    1452                                    SDW_SCP_INT1_BUS_CLASH | SDW_SCP_INT1_PARITY;
1453         pdev->prop.lane_control_support = tru    1453         pdev->prop.lane_control_support = true;
1454         pdev->prop.simple_clk_stop_capable =     1454         pdev->prop.simple_clk_stop_capable = true;
1455         if (wcd->is_tx) {                        1455         if (wcd->is_tx) {
1456                 pdev->prop.source_ports = GEN    1456                 pdev->prop.source_ports = GENMASK(WCD939X_MAX_TX_SWR_PORTS - 1, 0);
1457                 pdev->prop.src_dpn_prop = wcd    1457                 pdev->prop.src_dpn_prop = wcd939x_tx_dpn_prop;
1458                 wcd->ch_info = &wcd939x_sdw_t    1458                 wcd->ch_info = &wcd939x_sdw_tx_ch_info[0];
1459                 pdev->prop.wake_capable = tru    1459                 pdev->prop.wake_capable = true;
1460         } else {                                 1460         } else {
1461                 pdev->prop.sink_ports = GENMA    1461                 pdev->prop.sink_ports = GENMASK(WCD939X_MAX_RX_SWR_PORTS - 1, 0);
1462                 pdev->prop.sink_dpn_prop = wc    1462                 pdev->prop.sink_dpn_prop = wcd939x_rx_dpn_prop;
1463                 wcd->ch_info = &wcd939x_sdw_r    1463                 wcd->ch_info = &wcd939x_sdw_rx_ch_info[0];
1464         }                                        1464         }
1465                                                  1465 
1466         if (wcd->is_tx) {                        1466         if (wcd->is_tx) {
1467                 /*                               1467                 /*
1468                  * Do not use devres here sin    1468                  * Do not use devres here since devres_release_group() could
1469                  * be called by component_unb    1469                  * be called by component_unbind() id the aggregate device
1470                  * fails to bind.                1470                  * fails to bind.
1471                  */                              1471                  */
1472                 wcd->regmap = regmap_init_sdw    1472                 wcd->regmap = regmap_init_sdw(pdev, &wcd939x_regmap_config);
1473                 if (IS_ERR(wcd->regmap))         1473                 if (IS_ERR(wcd->regmap))
1474                         return dev_err_probe(    1474                         return dev_err_probe(dev, PTR_ERR(wcd->regmap),
1475                                                  1475                                              "Regmap init failed\n");
1476                                                  1476 
1477                 /* Start in cache-only until     1477                 /* Start in cache-only until device is enumerated */
1478                 regcache_cache_only(wcd->regm    1478                 regcache_cache_only(wcd->regmap, true);
1479         }                                        1479         }
1480                                                  1480 
1481         ret = component_add(dev, &wcd939x_sdw    1481         ret = component_add(dev, &wcd939x_sdw_component_ops);
1482         if (ret)                                 1482         if (ret)
1483                 return ret;                      1483                 return ret;
1484                                                  1484 
1485         /* Set suspended until aggregate devi    1485         /* Set suspended until aggregate device is bind */
1486         pm_runtime_set_suspended(dev);           1486         pm_runtime_set_suspended(dev);
1487                                                  1487 
1488         return 0;                                1488         return 0;
1489 }                                                1489 }
1490                                                  1490 
1491 static int wcd9390_remove(struct sdw_slave *p    1491 static int wcd9390_remove(struct sdw_slave *pdev)
1492 {                                                1492 {
1493         struct device *dev = &pdev->dev;         1493         struct device *dev = &pdev->dev;
1494         struct wcd939x_sdw_priv *wcd = dev_ge    1494         struct wcd939x_sdw_priv *wcd = dev_get_drvdata(dev);
1495                                                  1495 
1496         component_del(dev, &wcd939x_sdw_compo    1496         component_del(dev, &wcd939x_sdw_component_ops);
1497                                                  1497 
1498         if (wcd->regmap)                         1498         if (wcd->regmap)
1499                 regmap_exit(wcd->regmap);        1499                 regmap_exit(wcd->regmap);
1500                                                  1500 
1501         return 0;                                1501         return 0;
1502 }                                                1502 }
1503                                                  1503 
1504 static const struct sdw_device_id wcd9390_sla    1504 static const struct sdw_device_id wcd9390_slave_id[] = {
1505         SDW_SLAVE_ENTRY(0x0217, 0x10e, 0), /*    1505         SDW_SLAVE_ENTRY(0x0217, 0x10e, 0), /* WCD9390 & WCD9390 RX/TX Device ID */
1506         {},                                      1506         {},
1507 };                                               1507 };
1508 MODULE_DEVICE_TABLE(sdw, wcd9390_slave_id);      1508 MODULE_DEVICE_TABLE(sdw, wcd9390_slave_id);
1509                                                  1509 
1510 static int __maybe_unused wcd939x_sdw_runtime    1510 static int __maybe_unused wcd939x_sdw_runtime_suspend(struct device *dev)
1511 {                                                1511 {
1512         struct wcd939x_sdw_priv *wcd = dev_ge    1512         struct wcd939x_sdw_priv *wcd = dev_get_drvdata(dev);
1513                                                  1513 
1514         if (wcd->regmap) {                       1514         if (wcd->regmap) {
1515                 regcache_cache_only(wcd->regm    1515                 regcache_cache_only(wcd->regmap, true);
1516                 regcache_mark_dirty(wcd->regm    1516                 regcache_mark_dirty(wcd->regmap);
1517         }                                        1517         }
1518                                                  1518 
1519         return 0;                                1519         return 0;
1520 }                                                1520 }
1521                                                  1521 
1522 static int __maybe_unused wcd939x_sdw_runtime    1522 static int __maybe_unused wcd939x_sdw_runtime_resume(struct device *dev)
1523 {                                                1523 {
1524         struct wcd939x_sdw_priv *wcd = dev_ge    1524         struct wcd939x_sdw_priv *wcd = dev_get_drvdata(dev);
1525                                                  1525 
1526         if (wcd->regmap) {                       1526         if (wcd->regmap) {
1527                 regcache_cache_only(wcd->regm    1527                 regcache_cache_only(wcd->regmap, false);
1528                 regcache_sync(wcd->regmap);      1528                 regcache_sync(wcd->regmap);
1529         }                                        1529         }
1530                                                  1530 
1531         return 0;                                1531         return 0;
1532 }                                                1532 }
1533                                                  1533 
1534 static const struct dev_pm_ops wcd939x_sdw_pm    1534 static const struct dev_pm_ops wcd939x_sdw_pm_ops = {
1535         SET_RUNTIME_PM_OPS(wcd939x_sdw_runtim    1535         SET_RUNTIME_PM_OPS(wcd939x_sdw_runtime_suspend, wcd939x_sdw_runtime_resume, NULL)
1536 };                                               1536 };
1537                                                  1537 
1538 static struct sdw_driver wcd9390_codec_driver    1538 static struct sdw_driver wcd9390_codec_driver = {
1539         .probe = wcd9390_probe,                  1539         .probe = wcd9390_probe,
1540         .remove = wcd9390_remove,                1540         .remove = wcd9390_remove,
1541         .ops = &wcd9390_slave_ops,               1541         .ops = &wcd9390_slave_ops,
1542         .id_table = wcd9390_slave_id,            1542         .id_table = wcd9390_slave_id,
1543         .driver = {                              1543         .driver = {
1544                 .name = "wcd9390-codec",         1544                 .name = "wcd9390-codec",
1545                 .pm = &wcd939x_sdw_pm_ops,       1545                 .pm = &wcd939x_sdw_pm_ops,
1546         }                                        1546         }
1547 };                                               1547 };
1548 module_sdw_driver(wcd9390_codec_driver);         1548 module_sdw_driver(wcd9390_codec_driver);
1549                                                  1549 
1550 MODULE_DESCRIPTION("WCD939X SDW codec driver"    1550 MODULE_DESCRIPTION("WCD939X SDW codec driver");
1551 MODULE_LICENSE("GPL");                           1551 MODULE_LICENSE("GPL");
1552                                                  1552 

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

kernel.org | git.kernel.org | LWN.net | Project Home | 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.

sflogo.php