Lines Matching refs:wm8994

111 	struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);  in wm8958_micd_set_rate()  local
112 struct wm8994 *control = wm8994->wm8994; in wm8958_micd_set_rate()
118 idle = !wm8994->jack_mic; in wm8958_micd_set_rate()
122 sysclk = wm8994->aifclk[1]; in wm8958_micd_set_rate()
124 sysclk = wm8994->aifclk[0]; in wm8958_micd_set_rate()
129 } else if (wm8994->jackdet) { in wm8958_micd_set_rate()
162 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in configure_aif_clock() local
172 switch (wm8994->sysclk[aif]) { in configure_aif_clock()
174 rate = wm8994->mclk[0]; in configure_aif_clock()
179 rate = wm8994->mclk[1]; in configure_aif_clock()
184 rate = wm8994->fll[0].out; in configure_aif_clock()
189 rate = wm8994->fll[1].out; in configure_aif_clock()
204 wm8994->aifclk[aif] = rate; in configure_aif_clock()
215 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in configure_clock() local
229 if (wm8994->aifclk[0] == wm8994->aifclk[1]) { in configure_clock()
234 if (wm8994->aifclk[0] < wm8994->aifclk[1]) in configure_clock()
323 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_drc() local
324 struct wm8994 *control = wm8994->wm8994; in wm8994_set_drc()
327 int cfg = wm8994->drc_cfg[drc]; in wm8994_set_drc()
360 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_put_drc_enum() local
361 struct wm8994 *control = wm8994->wm8994; in wm8994_put_drc_enum()
372 wm8994->drc_cfg[drc] = value; in wm8994_put_drc_enum()
383 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_get_drc_enum() local
388 ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc]; in wm8994_get_drc_enum()
395 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_retune_mobile() local
396 struct wm8994 *control = wm8994->wm8994; in wm8994_set_retune_mobile()
401 if (!pdata || !wm8994->num_retune_mobile_texts) in wm8994_set_retune_mobile()
418 cfg = wm8994->retune_mobile_cfg[block]; in wm8994_set_retune_mobile()
423 wm8994->retune_mobile_texts[cfg]) == 0 && in wm8994_set_retune_mobile()
425 - wm8994->dac_rates[iface]) < best_val) { in wm8994_set_retune_mobile()
428 - wm8994->dac_rates[iface]); in wm8994_set_retune_mobile()
436 wm8994->dac_rates[iface]); in wm8994_set_retune_mobile()
467 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_put_retune_mobile_enum() local
468 struct wm8994 *control = wm8994->wm8994; in wm8994_put_retune_mobile_enum()
479 wm8994->retune_mobile_cfg[block] = value; in wm8994_put_retune_mobile_enum()
490 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_get_retune_mobile_enum() local
496 ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block]; in wm8994_get_retune_mobile_enum()
744 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm1811_jackdet_set_mode() local
746 if (!wm8994->jackdet || !wm8994->micdet[0].jack) in wm1811_jackdet_set_mode()
749 if (wm8994->active_refcount) in wm1811_jackdet_set_mode()
752 if (mode == wm8994->jackdet_mode) in wm1811_jackdet_set_mode()
755 wm8994->jackdet_mode = mode; in wm1811_jackdet_set_mode()
767 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in active_reference() local
769 mutex_lock(&wm8994->accdet_lock); in active_reference()
771 wm8994->active_refcount++; in active_reference()
774 wm8994->active_refcount); in active_reference()
779 mutex_unlock(&wm8994->accdet_lock); in active_reference()
784 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in active_dereference() local
787 mutex_lock(&wm8994->accdet_lock); in active_dereference()
789 wm8994->active_refcount--; in active_dereference()
792 wm8994->active_refcount); in active_dereference()
794 if (wm8994->active_refcount == 0) { in active_dereference()
796 if (wm8994->jack_mic || wm8994->mic_detecting) in active_dereference()
804 mutex_unlock(&wm8994->accdet_lock); in active_dereference()
811 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in clk_sys_event() local
825 if (wm8994->jackdet && !wm8994->clk_has_run) { in clk_sys_event()
827 &wm8994->jackdet_bootstrap, in clk_sys_event()
829 wm8994->clk_has_run = true; in clk_sys_event()
843 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in vmid_reference() local
847 wm8994->vmid_refcount++; in vmid_reference()
850 wm8994->vmid_refcount); in vmid_reference()
852 if (wm8994->vmid_refcount == 1) { in vmid_reference()
859 switch (wm8994->vmid_mode) { in vmid_reference()
921 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in vmid_dereference() local
923 wm8994->vmid_refcount--; in vmid_dereference()
926 wm8994->vmid_refcount); in vmid_dereference()
928 if (wm8994->vmid_refcount == 0) { in vmid_dereference()
929 if (wm8994->hubs.lineout1_se) in vmid_dereference()
936 if (wm8994->hubs.lineout2_se) in vmid_dereference()
1042 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif1clk_ev() local
1043 struct wm8994 *control = wm8994->wm8994; in aif1clk_ev()
1062 if (wm8994->channels[0] <= 2) in aif1clk_ev()
1225 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif1clk_late_ev() local
1229 wm8994->aif1clk_enable = 1; in aif1clk_late_ev()
1232 wm8994->aif1clk_disable = 1; in aif1clk_late_ev()
1243 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif2clk_late_ev() local
1247 wm8994->aif2clk_enable = 1; in aif2clk_late_ev()
1250 wm8994->aif2clk_disable = 1; in aif2clk_late_ev()
1261 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in late_enable_ev() local
1265 if (wm8994->aif1clk_enable) { in late_enable_ev()
1271 wm8994->aif1clk_enable = 0; in late_enable_ev()
1273 if (wm8994->aif2clk_enable) { in late_enable_ev()
1279 wm8994->aif2clk_enable = 0; in late_enable_ev()
1294 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in late_disable_ev() local
1298 if (wm8994->aif1clk_disable) { in late_disable_ev()
1303 wm8994->aif1clk_disable = 0; in late_disable_ev()
1305 if (wm8994->aif2clk_disable) { in late_disable_ev()
1310 wm8994->aif2clk_disable = 0; in late_disable_ev()
2046 static int wm8994_get_fll_config(struct wm8994 *control, struct fll_div *fll, in wm8994_get_fll_config()
2132 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in _wm8994_set_fll() local
2133 struct wm8994 *control = wm8994->wm8994; in _wm8994_set_fll()
2163 src = wm8994->fll[id].src; in _wm8994_set_fll()
2179 if (wm8994->fll[id].src == src && in _wm8994_set_fll()
2180 wm8994->fll[id].in == freq_in && wm8994->fll[id].out == freq_out) in _wm8994_set_fll()
2190 ret = wm8994_get_fll_config(control, &fll, wm8994->fll[id].in, in _wm8994_set_fll()
2191 wm8994->fll[id].out); in _wm8994_set_fll()
2214 if (wm8994->fll_byp && src == WM8994_FLL_SRC_BCLK && in _wm8994_set_fll()
2256 try_wait_for_completion(&wm8994->fll_locked[id]); in _wm8994_set_fll()
2288 if (wm8994->fll_locked_irq) { in _wm8994_set_fll()
2289 timeout = wait_for_completion_timeout(&wm8994->fll_locked[id], in _wm8994_set_fll()
2316 wm8994->fll[id].in = freq_in; in _wm8994_set_fll()
2317 wm8994->fll[id].out = freq_out; in _wm8994_set_fll()
2318 wm8994->fll[id].src = src; in _wm8994_set_fll()
2326 if (max(wm8994->aifclk[0], wm8994->aifclk[1]) < 50000) { in _wm8994_set_fll()
2329 wm8994->aifdiv[0] = snd_soc_read(codec, WM8994_AIF1_RATE) in _wm8994_set_fll()
2331 wm8994->aifdiv[1] = snd_soc_read(codec, WM8994_AIF2_RATE) in _wm8994_set_fll()
2338 } else if (wm8994->aifdiv[0]) { in _wm8994_set_fll()
2341 wm8994->aifdiv[0]); in _wm8994_set_fll()
2344 wm8994->aifdiv[1]); in _wm8994_set_fll()
2346 wm8994->aifdiv[0] = 0; in _wm8994_set_fll()
2347 wm8994->aifdiv[1] = 0; in _wm8994_set_fll()
2374 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_dai_sysclk() local
2389 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK1; in wm8994_set_dai_sysclk()
2390 wm8994->mclk[0] = freq; in wm8994_set_dai_sysclk()
2397 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK2; in wm8994_set_dai_sysclk()
2398 wm8994->mclk[1] = freq; in wm8994_set_dai_sysclk()
2404 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL1; in wm8994_set_dai_sysclk()
2409 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL2; in wm8994_set_dai_sysclk()
2442 if (max(wm8994->aifclk[0], wm8994->aifclk[1]) < 50000) { in wm8994_set_dai_sysclk()
2445 wm8994->aifdiv[0] = snd_soc_read(codec, WM8994_AIF1_RATE) in wm8994_set_dai_sysclk()
2447 wm8994->aifdiv[1] = snd_soc_read(codec, WM8994_AIF2_RATE) in wm8994_set_dai_sysclk()
2454 } else if (wm8994->aifdiv[0]) { in wm8994_set_dai_sysclk()
2457 wm8994->aifdiv[0]); in wm8994_set_dai_sysclk()
2460 wm8994->aifdiv[1]); in wm8994_set_dai_sysclk()
2462 wm8994->aifdiv[0] = 0; in wm8994_set_dai_sysclk()
2463 wm8994->aifdiv[1] = 0; in wm8994_set_dai_sysclk()
2472 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_bias_level() local
2473 struct wm8994 *control = wm8994->wm8994; in wm8994_set_bias_level()
2545 wm8994->cur_fw = NULL; in wm8994_set_bias_level()
2556 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_vmid_mode() local
2563 if (wm8994->hubs.lineout1_se) { in wm8994_vmid_mode()
2569 if (wm8994->hubs.lineout2_se) { in wm8994_vmid_mode()
2578 wm8994->vmid_mode = mode; in wm8994_vmid_mode()
2586 if (wm8994->hubs.lineout1_se) { in wm8994_vmid_mode()
2592 if (wm8994->hubs.lineout2_se) { in wm8994_vmid_mode()
2599 wm8994->vmid_mode = mode; in wm8994_vmid_mode()
2615 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_dai_fmt() local
2616 struct wm8994 *control = wm8994->wm8994; in wm8994_set_dai_fmt()
2770 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_hw_params() local
2771 struct wm8994 *control = wm8994->wm8994; in wm8994_hw_params()
2794 wm8994->lrclk_shared[0]) { in wm8994_hw_params()
2807 wm8994->lrclk_shared[1]) { in wm8994_hw_params()
2839 wm8994->channels[id] = params_channels(params); in wm8994_hw_params()
2841 wm8994->channels[id] > pdata->max_channels_clocked[id]) { in wm8994_hw_params()
2843 pdata->max_channels_clocked[id], wm8994->channels[id]); in wm8994_hw_params()
2844 wm8994->channels[id] = pdata->max_channels_clocked[id]; in wm8994_hw_params()
2847 switch (wm8994->channels[id]) { in wm8994_hw_params()
2867 dai->id, wm8994->aifclk[id], bclk_rate); in wm8994_hw_params()
2869 if (wm8994->channels[id] == 1 && in wm8994_hw_params()
2873 if (wm8994->aifclk[id] == 0) { in wm8994_hw_params()
2881 - wm8994->aifclk[id]); in wm8994_hw_params()
2884 - wm8994->aifclk[id]); in wm8994_hw_params()
2901 cur_val = (wm8994->aifclk[id] * 10 / bclk_divs[i]) - bclk_rate; in wm8994_hw_params()
2906 bclk_rate = wm8994->aifclk[id] * 10 / bclk_divs[best]; in wm8994_hw_params()
2931 wm8994->dac_rates[0] = params_rate(params); in wm8994_hw_params()
2936 wm8994->dac_rates[1] = params_rate(params); in wm8994_hw_params()
2950 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_aif3_hw_params() local
2951 struct wm8994 *control = wm8994->wm8994; in wm8994_aif3_hw_params()
3154 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_suspend() local
3157 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) { in wm8994_codec_suspend()
3158 memcpy(&wm8994->fll_suspend[i], &wm8994->fll[i], in wm8994_codec_suspend()
3173 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_resume() local
3176 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) { in wm8994_codec_resume()
3177 if (!wm8994->fll_suspend[i].out) in wm8994_codec_resume()
3181 wm8994->fll_suspend[i].src, in wm8994_codec_resume()
3182 wm8994->fll_suspend[i].in, in wm8994_codec_resume()
3183 wm8994->fll_suspend[i].out); in wm8994_codec_resume()
3196 static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994) in wm8994_handle_retune_mobile_pdata() argument
3198 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8994_handle_retune_mobile_pdata()
3199 struct wm8994 *control = wm8994->wm8994; in wm8994_handle_retune_mobile_pdata()
3203 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3207 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3211 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3222 wm8994->num_retune_mobile_texts = 0; in wm8994_handle_retune_mobile_pdata()
3223 wm8994->retune_mobile_texts = NULL; in wm8994_handle_retune_mobile_pdata()
3225 for (j = 0; j < wm8994->num_retune_mobile_texts; j++) { in wm8994_handle_retune_mobile_pdata()
3227 wm8994->retune_mobile_texts[j]) == 0) in wm8994_handle_retune_mobile_pdata()
3231 if (j != wm8994->num_retune_mobile_texts) in wm8994_handle_retune_mobile_pdata()
3235 t = krealloc(wm8994->retune_mobile_texts, in wm8994_handle_retune_mobile_pdata()
3237 (wm8994->num_retune_mobile_texts + 1), in wm8994_handle_retune_mobile_pdata()
3243 t[wm8994->num_retune_mobile_texts] = in wm8994_handle_retune_mobile_pdata()
3247 wm8994->num_retune_mobile_texts++; in wm8994_handle_retune_mobile_pdata()
3248 wm8994->retune_mobile_texts = t; in wm8994_handle_retune_mobile_pdata()
3252 wm8994->num_retune_mobile_texts); in wm8994_handle_retune_mobile_pdata()
3254 wm8994->retune_mobile_enum.items = wm8994->num_retune_mobile_texts; in wm8994_handle_retune_mobile_pdata()
3255 wm8994->retune_mobile_enum.texts = wm8994->retune_mobile_texts; in wm8994_handle_retune_mobile_pdata()
3257 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, controls, in wm8994_handle_retune_mobile_pdata()
3260 dev_err(wm8994->hubs.codec->dev, in wm8994_handle_retune_mobile_pdata()
3264 static void wm8994_handle_pdata(struct wm8994_priv *wm8994) in wm8994_handle_pdata() argument
3266 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8994_handle_pdata()
3267 struct wm8994 *control = wm8994->wm8994; in wm8994_handle_pdata()
3289 SOC_ENUM_EXT("AIF1DRC1 Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3291 SOC_ENUM_EXT("AIF1DRC2 Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3293 SOC_ENUM_EXT("AIF2DRC Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3298 wm8994->drc_texts = devm_kzalloc(wm8994->hubs.codec->dev, in wm8994_handle_pdata()
3300 if (!wm8994->drc_texts) in wm8994_handle_pdata()
3304 wm8994->drc_texts[i] = pdata->drc_cfgs[i].name; in wm8994_handle_pdata()
3306 wm8994->drc_enum.items = pdata->num_drc_cfgs; in wm8994_handle_pdata()
3307 wm8994->drc_enum.texts = wm8994->drc_texts; in wm8994_handle_pdata()
3309 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, controls, in wm8994_handle_pdata()
3314 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8994_handle_pdata()
3320 dev_err(wm8994->hubs.codec->dev, in wm8994_handle_pdata()
3328 wm8994_handle_retune_mobile_pdata(wm8994); in wm8994_handle_pdata()
3330 snd_soc_add_codec_controls(wm8994->hubs.codec, wm8994_eq_controls, in wm8994_handle_pdata()
3359 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_mic_detect() local
3361 struct wm8994 *control = wm8994->wm8994; in wm8994_mic_detect()
3371 micdet = &wm8994->micdet[0]; in wm8994_mic_detect()
3380 micdet = &wm8994->micdet[1]; in wm8994_mic_detect()
3405 if (wm8994->micdet[0].jack || wm8994->micdet[1].jack) in wm8994_mic_detect()
3429 struct regmap *regmap = priv->wm8994->regmap; in wm8994_mic_work()
3430 struct device *dev = priv->wm8994->dev; in wm8994_mic_work()
3508 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm1811_micd_stop() local
3510 if (!wm8994->jackdet) in wm1811_micd_stop()
3517 if (wm8994->wm8994->pdata.jd_ext_cap) in wm1811_micd_stop()
3524 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_button_det() local
3546 snd_soc_jack_report(wm8994->micdet[0].jack, report, in wm8958_button_det()
3547 wm8994->btn_mask); in wm8958_button_det()
3552 struct wm8994_priv *wm8994 = container_of(work, in wm8958_open_circuit_work() local
3555 struct device *dev = wm8994->wm8994->dev; in wm8958_open_circuit_work()
3557 mutex_lock(&wm8994->accdet_lock); in wm8958_open_circuit_work()
3559 wm1811_micd_stop(wm8994->hubs.codec); in wm8958_open_circuit_work()
3563 wm8994->jack_mic = false; in wm8958_open_circuit_work()
3564 wm8994->mic_detecting = true; in wm8958_open_circuit_work()
3566 wm8958_micd_set_rate(wm8994->hubs.codec); in wm8958_open_circuit_work()
3568 snd_soc_jack_report(wm8994->micdet[0].jack, 0, in wm8958_open_circuit_work()
3569 wm8994->btn_mask | in wm8958_open_circuit_work()
3572 mutex_unlock(&wm8994->accdet_lock); in wm8958_open_circuit_work()
3578 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mic_id() local
3586 &wm8994->open_circuit_work, in wm8958_mic_id()
3597 wm8994->mic_detecting = false; in wm8958_mic_id()
3598 wm8994->jack_mic = true; in wm8958_mic_id()
3602 snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, in wm8958_mic_id()
3609 wm8994->mic_detecting = false; in wm8958_mic_id()
3616 snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, in wm8958_mic_id()
3624 struct wm8994_priv *wm8994 = container_of(work, struct wm8994_priv, in wm1811_mic_work() local
3626 struct wm8994 *control = wm8994->wm8994; in wm1811_mic_work()
3627 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm1811_mic_work()
3638 mutex_lock(&wm8994->accdet_lock); in wm1811_mic_work()
3643 if (wm8994->micd_cb) { in wm1811_mic_work()
3644 wm8994->micd_cb(wm8994->micd_cb_data); in wm1811_mic_work()
3650 wm8994->mic_detecting = true; in wm1811_mic_work()
3657 mutex_unlock(&wm8994->accdet_lock); in wm1811_mic_work()
3664 struct wm8994_priv *wm8994 = data; in wm1811_jackdet_irq() local
3665 struct wm8994 *control = wm8994->wm8994; in wm1811_jackdet_irq()
3666 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm1811_jackdet_irq()
3672 cancel_delayed_work_sync(&wm8994->mic_complete_work); in wm1811_jackdet_irq()
3674 mutex_lock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3679 mutex_unlock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3702 &wm8994->mic_work, in wm1811_jackdet_irq()
3707 cancel_delayed_work_sync(&wm8994->mic_work); in wm1811_jackdet_irq()
3716 wm8994->mic_detecting = false; in wm1811_jackdet_irq()
3717 wm8994->jack_mic = false; in wm1811_jackdet_irq()
3723 mutex_unlock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3730 snd_soc_jack_report(wm8994->micdet[0].jack, in wm1811_jackdet_irq()
3733 snd_soc_jack_report(wm8994->micdet[0].jack, 0, in wm1811_jackdet_irq()
3735 wm8994->btn_mask); in wm1811_jackdet_irq()
3739 snd_soc_jack_report(wm8994->micdet[0].jack, 0, 0); in wm1811_jackdet_irq()
3747 struct wm8994_priv *wm8994 = container_of(work, in wm1811_jackdet_bootstrap() local
3750 wm1811_jackdet_irq(0, wm8994); in wm1811_jackdet_bootstrap()
3773 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mic_detect() local
3774 struct wm8994 *control = wm8994->wm8994; in wm8958_mic_detect()
3789 wm8994->micdet[0].jack = jack; in wm8958_mic_detect()
3792 wm8994->micd_cb = det_cb; in wm8958_mic_detect()
3793 wm8994->micd_cb_data = det_cb_data; in wm8958_mic_detect()
3795 wm8994->mic_detecting = true; in wm8958_mic_detect()
3796 wm8994->jack_mic = false; in wm8958_mic_detect()
3800 wm8994->mic_id_cb = id_cb; in wm8958_mic_detect()
3801 wm8994->mic_id_cb_data = id_cb_data; in wm8958_mic_detect()
3803 wm8994->mic_id_cb = wm8958_mic_id; in wm8958_mic_detect()
3804 wm8994->mic_id_cb_data = codec; in wm8958_mic_detect()
3815 wm8994->btn_mask = SND_JACK_BTN_0 | SND_JACK_BTN_1 | in wm8958_mic_detect()
3828 if (wm8994->jackdet) { in wm8958_mic_detect()
3859 struct wm8994_priv *wm8994 = container_of(work, in wm8958_mic_work() local
3862 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8958_mic_work()
3866 mutex_lock(&wm8994->accdet_lock); in wm8958_mic_work()
3868 wm8994->mic_id_cb(wm8994->mic_id_cb_data, wm8994->mic_status); in wm8958_mic_work()
3870 mutex_unlock(&wm8994->accdet_lock); in wm8958_mic_work()
3877 struct wm8994_priv *wm8994 = data; in wm8958_mic_irq() local
3878 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8958_mic_irq()
3889 cancel_delayed_work_sync(&wm8994->mic_complete_work); in wm8958_mic_irq()
3890 cancel_delayed_work_sync(&wm8994->open_circuit_work); in wm8958_mic_irq()
3927 if (wm8994->jackdet) { in wm8958_mic_irq()
3937 snd_soc_jack_report(wm8994->micdet[0].jack, 0, in wm8958_mic_irq()
3939 wm8994->btn_mask); in wm8958_mic_irq()
3940 wm8994->mic_detecting = true; in wm8958_mic_irq()
3944 wm8994->mic_status = reg; in wm8958_mic_irq()
3945 id_delay = wm8994->wm8994->pdata.mic_id_delay; in wm8958_mic_irq()
3947 if (wm8994->mic_detecting) in wm8958_mic_irq()
3949 &wm8994->mic_complete_work, in wm8958_mic_irq()
3988 struct wm8994 *control = dev_get_drvdata(codec->dev->parent); in wm8994_codec_probe()
3989 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_probe() local
3994 wm8994->hubs.codec = codec; in wm8994_codec_probe()
3996 mutex_init(&wm8994->accdet_lock); in wm8994_codec_probe()
3997 INIT_DELAYED_WORK(&wm8994->jackdet_bootstrap, in wm8994_codec_probe()
3999 INIT_DELAYED_WORK(&wm8994->open_circuit_work, in wm8994_codec_probe()
4004 INIT_DELAYED_WORK(&wm8994->mic_work, wm8994_mic_work); in wm8994_codec_probe()
4007 INIT_DELAYED_WORK(&wm8994->mic_work, wm1811_mic_work); in wm8994_codec_probe()
4013 INIT_DELAYED_WORK(&wm8994->mic_complete_work, wm8958_mic_work); in wm8994_codec_probe()
4015 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) in wm8994_codec_probe()
4016 init_completion(&wm8994->fll_locked[i]); in wm8994_codec_probe()
4018 wm8994->micdet_irq = control->pdata.micdet_irq; in wm8994_codec_probe()
4034 wm8994->hubs.dcs_codes_l = -5; in wm8994_codec_probe()
4035 wm8994->hubs.dcs_codes_r = -5; in wm8994_codec_probe()
4036 wm8994->hubs.hp_startup_mode = 1; in wm8994_codec_probe()
4037 wm8994->hubs.dcs_readback_mode = 1; in wm8994_codec_probe()
4038 wm8994->hubs.series_startup = 1; in wm8994_codec_probe()
4041 wm8994->hubs.dcs_readback_mode = 2; in wm8994_codec_probe()
4047 wm8994->hubs.dcs_readback_mode = 1; in wm8994_codec_probe()
4048 wm8994->hubs.hp_startup_mode = 1; in wm8994_codec_probe()
4054 wm8994->fll_byp = true; in wm8994_codec_probe()
4060 wm8994->hubs.dcs_readback_mode = 2; in wm8994_codec_probe()
4061 wm8994->hubs.no_series_update = 1; in wm8994_codec_probe()
4062 wm8994->hubs.hp_startup_mode = 1; in wm8994_codec_probe()
4063 wm8994->hubs.no_cache_dac_hp_direct = true; in wm8994_codec_probe()
4064 wm8994->fll_byp = true; in wm8994_codec_probe()
4066 wm8994->hubs.dcs_codes_l = -9; in wm8994_codec_probe()
4067 wm8994->hubs.dcs_codes_r = -7; in wm8994_codec_probe()
4077 wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_FIFOS_ERR, in wm8994_codec_probe()
4079 wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_TEMP_WARN, in wm8994_codec_probe()
4081 wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_TEMP_SHUT, in wm8994_codec_probe()
4086 if (wm8994->micdet_irq) in wm8994_codec_probe()
4087 ret = request_threaded_irq(wm8994->micdet_irq, NULL, in wm8994_codec_probe()
4091 wm8994); in wm8994_codec_probe()
4093 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4096 wm8994); in wm8994_codec_probe()
4104 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4107 wm8994); in wm8994_codec_probe()
4113 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4116 wm8994); in wm8994_codec_probe()
4122 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4125 wm8994); in wm8994_codec_probe()
4134 if (wm8994->micdet_irq) { in wm8994_codec_probe()
4135 ret = request_threaded_irq(wm8994->micdet_irq, NULL, in wm8994_codec_probe()
4139 wm8994); in wm8994_codec_probe()
4145 wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, in wm8994_codec_probe()
4147 wm8994); in wm8994_codec_probe()
4154 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4157 wm8994); in wm8994_codec_probe()
4159 wm8994->jackdet = true; in wm8994_codec_probe()
4166 wm8994->fll_locked_irq = true; in wm8994_codec_probe()
4167 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) { in wm8994_codec_probe()
4168 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4171 &wm8994->fll_locked[i]); in wm8994_codec_probe()
4173 wm8994->fll_locked_irq = false; in wm8994_codec_probe()
4189 wm8994->lrclk_shared[0] = 1; in wm8994_codec_probe()
4192 wm8994->lrclk_shared[0] = 0; in wm8994_codec_probe()
4201 wm8994->lrclk_shared[1] = 1; in wm8994_codec_probe()
4204 wm8994->lrclk_shared[1] = 0; in wm8994_codec_probe()
4252 wm8994->hubs.check_class_w_digital = wm8994_check_class_w_digital; in wm8994_codec_probe()
4255 wm8994_handle_pdata(wm8994); in wm8994_codec_probe()
4320 ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_probe()
4322 &wm8994->hubs); in wm8994_codec_probe()
4324 wm8994->hubs.dcs_done_irq = true; in wm8994_codec_probe()
4370 if (wm8994->jackdet) in wm8994_codec_probe()
4371 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_GPIO(6), wm8994); in wm8994_codec_probe()
4372 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_SHRT, wm8994); in wm8994_codec_probe()
4373 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_DET, wm8994); in wm8994_codec_probe()
4374 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, wm8994); in wm8994_codec_probe()
4375 if (wm8994->micdet_irq) in wm8994_codec_probe()
4376 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_probe()
4377 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) in wm8994_codec_probe()
4378 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FLL1_LOCK + i, in wm8994_codec_probe()
4379 &wm8994->fll_locked[i]); in wm8994_codec_probe()
4380 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_probe()
4381 &wm8994->hubs); in wm8994_codec_probe()
4382 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FIFOS_ERR, codec); in wm8994_codec_probe()
4383 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_SHUT, codec); in wm8994_codec_probe()
4384 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_WARN, codec); in wm8994_codec_probe()
4391 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_remove() local
4392 struct wm8994 *control = wm8994->wm8994; in wm8994_codec_remove()
4395 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) in wm8994_codec_remove()
4396 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FLL1_LOCK + i, in wm8994_codec_remove()
4397 &wm8994->fll_locked[i]); in wm8994_codec_remove()
4399 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_remove()
4400 &wm8994->hubs); in wm8994_codec_remove()
4401 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FIFOS_ERR, codec); in wm8994_codec_remove()
4402 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_SHUT, codec); in wm8994_codec_remove()
4403 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_WARN, codec); in wm8994_codec_remove()
4405 if (wm8994->jackdet) in wm8994_codec_remove()
4406 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_GPIO(6), wm8994); in wm8994_codec_remove()
4410 if (wm8994->micdet_irq) in wm8994_codec_remove()
4411 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_remove()
4412 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_DET, in wm8994_codec_remove()
4413 wm8994); in wm8994_codec_remove()
4414 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, in wm8994_codec_remove()
4415 wm8994); in wm8994_codec_remove()
4416 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, in wm8994_codec_remove()
4417 wm8994); in wm8994_codec_remove()
4422 if (wm8994->micdet_irq) in wm8994_codec_remove()
4423 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_remove()
4426 release_firmware(wm8994->mbc); in wm8994_codec_remove()
4427 release_firmware(wm8994->mbc_vss); in wm8994_codec_remove()
4428 release_firmware(wm8994->enh_eq); in wm8994_codec_remove()
4429 kfree(wm8994->retune_mobile_texts); in wm8994_codec_remove()
4435 struct wm8994 *control = dev_get_drvdata(dev->parent); in wm8994_get_regmap()
4451 struct wm8994_priv *wm8994; in wm8994_probe() local
4453 wm8994 = devm_kzalloc(&pdev->dev, sizeof(struct wm8994_priv), in wm8994_probe()
4455 if (wm8994 == NULL) in wm8994_probe()
4457 platform_set_drvdata(pdev, wm8994); in wm8994_probe()
4459 mutex_init(&wm8994->fw_lock); in wm8994_probe()
4461 wm8994->wm8994 = dev_get_drvdata(pdev->dev.parent); in wm8994_probe()
4481 struct wm8994_priv *wm8994 = dev_get_drvdata(dev); in wm8994_suspend() local
4484 if (wm8994->jackdet && !wm8994->active_refcount) in wm8994_suspend()
4485 regmap_update_bits(wm8994->wm8994->regmap, WM8994_ANTIPOP_2, in wm8994_suspend()
4487 wm8994->jackdet_mode); in wm8994_suspend()
4494 struct wm8994_priv *wm8994 = dev_get_drvdata(dev); in wm8994_resume() local
4496 if (wm8994->jackdet && wm8994->jackdet_mode) in wm8994_resume()
4497 regmap_update_bits(wm8994->wm8994->regmap, WM8994_ANTIPOP_2, in wm8994_resume()