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()
216 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in configure_clock() local
230 if (wm8994->aifclk[0] == wm8994->aifclk[1]) { in configure_clock()
235 if (wm8994->aifclk[0] < wm8994->aifclk[1]) in configure_clock()
324 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_drc() local
325 struct wm8994 *control = wm8994->wm8994; in wm8994_set_drc()
328 int cfg = wm8994->drc_cfg[drc]; in wm8994_set_drc()
361 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_put_drc_enum() local
362 struct wm8994 *control = wm8994->wm8994; in wm8994_put_drc_enum()
373 wm8994->drc_cfg[drc] = value; in wm8994_put_drc_enum()
384 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_get_drc_enum() local
389 ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc]; in wm8994_get_drc_enum()
396 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_retune_mobile() local
397 struct wm8994 *control = wm8994->wm8994; in wm8994_set_retune_mobile()
402 if (!pdata || !wm8994->num_retune_mobile_texts) in wm8994_set_retune_mobile()
419 cfg = wm8994->retune_mobile_cfg[block]; in wm8994_set_retune_mobile()
424 wm8994->retune_mobile_texts[cfg]) == 0 && in wm8994_set_retune_mobile()
426 - wm8994->dac_rates[iface]) < best_val) { in wm8994_set_retune_mobile()
429 - wm8994->dac_rates[iface]); in wm8994_set_retune_mobile()
437 wm8994->dac_rates[iface]); in wm8994_set_retune_mobile()
468 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_put_retune_mobile_enum() local
469 struct wm8994 *control = wm8994->wm8994; in wm8994_put_retune_mobile_enum()
480 wm8994->retune_mobile_cfg[block] = value; in wm8994_put_retune_mobile_enum()
491 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_get_retune_mobile_enum() local
497 ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block]; in wm8994_get_retune_mobile_enum()
745 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm1811_jackdet_set_mode() local
747 if (!wm8994->jackdet || !wm8994->micdet[0].jack) in wm1811_jackdet_set_mode()
750 if (wm8994->active_refcount) in wm1811_jackdet_set_mode()
753 if (mode == wm8994->jackdet_mode) in wm1811_jackdet_set_mode()
756 wm8994->jackdet_mode = mode; in wm1811_jackdet_set_mode()
768 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in active_reference() local
770 mutex_lock(&wm8994->accdet_lock); in active_reference()
772 wm8994->active_refcount++; in active_reference()
775 wm8994->active_refcount); in active_reference()
780 mutex_unlock(&wm8994->accdet_lock); in active_reference()
785 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in active_dereference() local
788 mutex_lock(&wm8994->accdet_lock); in active_dereference()
790 wm8994->active_refcount--; in active_dereference()
793 wm8994->active_refcount); in active_dereference()
795 if (wm8994->active_refcount == 0) { in active_dereference()
797 if (wm8994->jack_mic || wm8994->mic_detecting) in active_dereference()
805 mutex_unlock(&wm8994->accdet_lock); in active_dereference()
812 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in clk_sys_event() local
826 if (wm8994->jackdet && !wm8994->clk_has_run) { in clk_sys_event()
828 &wm8994->jackdet_bootstrap, in clk_sys_event()
830 wm8994->clk_has_run = true; in clk_sys_event()
844 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in vmid_reference() local
848 wm8994->vmid_refcount++; in vmid_reference()
851 wm8994->vmid_refcount); in vmid_reference()
853 if (wm8994->vmid_refcount == 1) { in vmid_reference()
860 switch (wm8994->vmid_mode) { in vmid_reference()
922 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in vmid_dereference() local
924 wm8994->vmid_refcount--; in vmid_dereference()
927 wm8994->vmid_refcount); in vmid_dereference()
929 if (wm8994->vmid_refcount == 0) { in vmid_dereference()
930 if (wm8994->hubs.lineout1_se) in vmid_dereference()
937 if (wm8994->hubs.lineout2_se) in vmid_dereference()
1043 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif1clk_ev() local
1044 struct wm8994 *control = wm8994->wm8994; in aif1clk_ev()
1063 if (wm8994->channels[0] <= 2) in aif1clk_ev()
1226 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif1clk_late_ev() local
1230 wm8994->aif1clk_enable = 1; in aif1clk_late_ev()
1233 wm8994->aif1clk_disable = 1; in aif1clk_late_ev()
1244 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in aif2clk_late_ev() local
1248 wm8994->aif2clk_enable = 1; in aif2clk_late_ev()
1251 wm8994->aif2clk_disable = 1; in aif2clk_late_ev()
1262 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in late_enable_ev() local
1266 if (wm8994->aif1clk_enable) { in late_enable_ev()
1272 wm8994->aif1clk_enable = 0; in late_enable_ev()
1274 if (wm8994->aif2clk_enable) { in late_enable_ev()
1280 wm8994->aif2clk_enable = 0; in late_enable_ev()
1295 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in late_disable_ev() local
1299 if (wm8994->aif1clk_disable) { in late_disable_ev()
1304 wm8994->aif1clk_disable = 0; in late_disable_ev()
1306 if (wm8994->aif2clk_disable) { in late_disable_ev()
1311 wm8994->aif2clk_disable = 0; in late_disable_ev()
2049 static int wm8994_get_fll_config(struct wm8994 *control, struct fll_div *fll, in wm8994_get_fll_config()
2135 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in _wm8994_set_fll() local
2136 struct wm8994 *control = wm8994->wm8994; in _wm8994_set_fll()
2166 src = wm8994->fll[id].src; in _wm8994_set_fll()
2182 if (wm8994->fll[id].src == src && in _wm8994_set_fll()
2183 wm8994->fll[id].in == freq_in && wm8994->fll[id].out == freq_out) in _wm8994_set_fll()
2193 ret = wm8994_get_fll_config(control, &fll, wm8994->fll[id].in, in _wm8994_set_fll()
2194 wm8994->fll[id].out); in _wm8994_set_fll()
2217 if (wm8994->fll_byp && src == WM8994_FLL_SRC_BCLK && in _wm8994_set_fll()
2259 try_wait_for_completion(&wm8994->fll_locked[id]); in _wm8994_set_fll()
2291 if (wm8994->fll_locked_irq) { in _wm8994_set_fll()
2292 timeout = wait_for_completion_timeout(&wm8994->fll_locked[id], in _wm8994_set_fll()
2319 wm8994->fll[id].in = freq_in; in _wm8994_set_fll()
2320 wm8994->fll[id].out = freq_out; in _wm8994_set_fll()
2321 wm8994->fll[id].src = src; in _wm8994_set_fll()
2329 if (max(wm8994->aifclk[0], wm8994->aifclk[1]) < 50000) { in _wm8994_set_fll()
2332 wm8994->aifdiv[0] = snd_soc_read(codec, WM8994_AIF1_RATE) in _wm8994_set_fll()
2334 wm8994->aifdiv[1] = snd_soc_read(codec, WM8994_AIF2_RATE) in _wm8994_set_fll()
2341 } else if (wm8994->aifdiv[0]) { in _wm8994_set_fll()
2344 wm8994->aifdiv[0]); in _wm8994_set_fll()
2347 wm8994->aifdiv[1]); in _wm8994_set_fll()
2349 wm8994->aifdiv[0] = 0; in _wm8994_set_fll()
2350 wm8994->aifdiv[1] = 0; in _wm8994_set_fll()
2377 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_dai_sysclk() local
2392 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK1; in wm8994_set_dai_sysclk()
2393 wm8994->mclk[0] = freq; in wm8994_set_dai_sysclk()
2400 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK2; in wm8994_set_dai_sysclk()
2401 wm8994->mclk[1] = freq; in wm8994_set_dai_sysclk()
2407 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL1; in wm8994_set_dai_sysclk()
2412 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL2; in wm8994_set_dai_sysclk()
2445 if (max(wm8994->aifclk[0], wm8994->aifclk[1]) < 50000) { in wm8994_set_dai_sysclk()
2448 wm8994->aifdiv[0] = snd_soc_read(codec, WM8994_AIF1_RATE) in wm8994_set_dai_sysclk()
2450 wm8994->aifdiv[1] = snd_soc_read(codec, WM8994_AIF2_RATE) in wm8994_set_dai_sysclk()
2457 } else if (wm8994->aifdiv[0]) { in wm8994_set_dai_sysclk()
2460 wm8994->aifdiv[0]); in wm8994_set_dai_sysclk()
2463 wm8994->aifdiv[1]); in wm8994_set_dai_sysclk()
2465 wm8994->aifdiv[0] = 0; in wm8994_set_dai_sysclk()
2466 wm8994->aifdiv[1] = 0; in wm8994_set_dai_sysclk()
2475 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_bias_level() local
2476 struct wm8994 *control = wm8994->wm8994; in wm8994_set_bias_level()
2548 wm8994->cur_fw = NULL; in wm8994_set_bias_level()
2557 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_vmid_mode() local
2564 if (wm8994->hubs.lineout1_se) { in wm8994_vmid_mode()
2570 if (wm8994->hubs.lineout2_se) { in wm8994_vmid_mode()
2579 wm8994->vmid_mode = mode; in wm8994_vmid_mode()
2587 if (wm8994->hubs.lineout1_se) { in wm8994_vmid_mode()
2593 if (wm8994->hubs.lineout2_se) { in wm8994_vmid_mode()
2600 wm8994->vmid_mode = mode; in wm8994_vmid_mode()
2616 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_set_dai_fmt() local
2617 struct wm8994 *control = wm8994->wm8994; in wm8994_set_dai_fmt()
2771 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_hw_params() local
2772 struct wm8994 *control = wm8994->wm8994; in wm8994_hw_params()
2795 wm8994->lrclk_shared[0]) { in wm8994_hw_params()
2808 wm8994->lrclk_shared[1]) { in wm8994_hw_params()
2840 wm8994->channels[id] = params_channels(params); in wm8994_hw_params()
2842 wm8994->channels[id] > pdata->max_channels_clocked[id]) { in wm8994_hw_params()
2844 pdata->max_channels_clocked[id], wm8994->channels[id]); in wm8994_hw_params()
2845 wm8994->channels[id] = pdata->max_channels_clocked[id]; in wm8994_hw_params()
2848 switch (wm8994->channels[id]) { in wm8994_hw_params()
2868 dai->id, wm8994->aifclk[id], bclk_rate); in wm8994_hw_params()
2870 if (wm8994->channels[id] == 1 && in wm8994_hw_params()
2874 if (wm8994->aifclk[id] == 0) { in wm8994_hw_params()
2882 - wm8994->aifclk[id]); in wm8994_hw_params()
2885 - wm8994->aifclk[id]); in wm8994_hw_params()
2902 cur_val = (wm8994->aifclk[id] * 10 / bclk_divs[i]) - bclk_rate; in wm8994_hw_params()
2907 bclk_rate = wm8994->aifclk[id] * 10 / bclk_divs[best]; in wm8994_hw_params()
2932 wm8994->dac_rates[0] = params_rate(params); in wm8994_hw_params()
2937 wm8994->dac_rates[1] = params_rate(params); in wm8994_hw_params()
2951 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_aif3_hw_params() local
2952 struct wm8994 *control = wm8994->wm8994; in wm8994_aif3_hw_params()
3155 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_suspend() local
3158 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) { in wm8994_codec_suspend()
3159 memcpy(&wm8994->fll_suspend[i], &wm8994->fll[i], in wm8994_codec_suspend()
3174 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_resume() local
3177 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) { in wm8994_codec_resume()
3178 if (!wm8994->fll_suspend[i].out) in wm8994_codec_resume()
3182 wm8994->fll_suspend[i].src, in wm8994_codec_resume()
3183 wm8994->fll_suspend[i].in, in wm8994_codec_resume()
3184 wm8994->fll_suspend[i].out); in wm8994_codec_resume()
3197 static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994) in wm8994_handle_retune_mobile_pdata() argument
3199 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8994_handle_retune_mobile_pdata()
3200 struct wm8994 *control = wm8994->wm8994; in wm8994_handle_retune_mobile_pdata()
3204 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3208 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3212 wm8994->retune_mobile_enum, in wm8994_handle_retune_mobile_pdata()
3223 wm8994->num_retune_mobile_texts = 0; in wm8994_handle_retune_mobile_pdata()
3224 wm8994->retune_mobile_texts = NULL; in wm8994_handle_retune_mobile_pdata()
3226 for (j = 0; j < wm8994->num_retune_mobile_texts; j++) { in wm8994_handle_retune_mobile_pdata()
3228 wm8994->retune_mobile_texts[j]) == 0) in wm8994_handle_retune_mobile_pdata()
3232 if (j != wm8994->num_retune_mobile_texts) in wm8994_handle_retune_mobile_pdata()
3236 t = krealloc(wm8994->retune_mobile_texts, in wm8994_handle_retune_mobile_pdata()
3238 (wm8994->num_retune_mobile_texts + 1), in wm8994_handle_retune_mobile_pdata()
3244 t[wm8994->num_retune_mobile_texts] = in wm8994_handle_retune_mobile_pdata()
3248 wm8994->num_retune_mobile_texts++; in wm8994_handle_retune_mobile_pdata()
3249 wm8994->retune_mobile_texts = t; in wm8994_handle_retune_mobile_pdata()
3253 wm8994->num_retune_mobile_texts); in wm8994_handle_retune_mobile_pdata()
3255 wm8994->retune_mobile_enum.items = wm8994->num_retune_mobile_texts; in wm8994_handle_retune_mobile_pdata()
3256 wm8994->retune_mobile_enum.texts = wm8994->retune_mobile_texts; in wm8994_handle_retune_mobile_pdata()
3258 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, controls, in wm8994_handle_retune_mobile_pdata()
3261 dev_err(wm8994->hubs.codec->dev, in wm8994_handle_retune_mobile_pdata()
3265 static void wm8994_handle_pdata(struct wm8994_priv *wm8994) in wm8994_handle_pdata() argument
3267 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm8994_handle_pdata()
3268 struct wm8994 *control = wm8994->wm8994; in wm8994_handle_pdata()
3290 SOC_ENUM_EXT("AIF1DRC1 Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3292 SOC_ENUM_EXT("AIF1DRC2 Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3294 SOC_ENUM_EXT("AIF2DRC Mode", wm8994->drc_enum, in wm8994_handle_pdata()
3299 wm8994->drc_texts = devm_kzalloc(wm8994->hubs.codec->dev, in wm8994_handle_pdata()
3301 if (!wm8994->drc_texts) in wm8994_handle_pdata()
3305 wm8994->drc_texts[i] = pdata->drc_cfgs[i].name; in wm8994_handle_pdata()
3307 wm8994->drc_enum.items = pdata->num_drc_cfgs; in wm8994_handle_pdata()
3308 wm8994->drc_enum.texts = wm8994->drc_texts; in wm8994_handle_pdata()
3310 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, controls, in wm8994_handle_pdata()
3315 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8994_handle_pdata()
3321 dev_err(wm8994->hubs.codec->dev, in wm8994_handle_pdata()
3329 wm8994_handle_retune_mobile_pdata(wm8994); in wm8994_handle_pdata()
3331 snd_soc_add_codec_controls(wm8994->hubs.codec, wm8994_eq_controls, in wm8994_handle_pdata()
3361 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_mic_detect() local
3363 struct wm8994 *control = wm8994->wm8994; in wm8994_mic_detect()
3373 micdet = &wm8994->micdet[0]; in wm8994_mic_detect()
3380 micdet = &wm8994->micdet[1]; in wm8994_mic_detect()
3403 if (wm8994->micdet[0].jack || wm8994->micdet[1].jack) in wm8994_mic_detect()
3427 struct regmap *regmap = priv->wm8994->regmap; in wm8994_mic_work()
3428 struct device *dev = priv->wm8994->dev; in wm8994_mic_work()
3507 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm1811_micd_stop() local
3509 if (!wm8994->jackdet) in wm1811_micd_stop()
3516 if (wm8994->wm8994->pdata.jd_ext_cap) in wm1811_micd_stop()
3522 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_button_det() local
3544 snd_soc_jack_report(wm8994->micdet[0].jack, report, in wm8958_button_det()
3545 wm8994->btn_mask); in wm8958_button_det()
3550 struct wm8994_priv *wm8994 = container_of(work, in wm8958_open_circuit_work() local
3553 struct device *dev = wm8994->wm8994->dev; in wm8958_open_circuit_work()
3555 mutex_lock(&wm8994->accdet_lock); in wm8958_open_circuit_work()
3557 wm1811_micd_stop(wm8994->hubs.codec); in wm8958_open_circuit_work()
3561 wm8994->jack_mic = false; in wm8958_open_circuit_work()
3562 wm8994->mic_detecting = true; in wm8958_open_circuit_work()
3564 wm8958_micd_set_rate(wm8994->hubs.codec); in wm8958_open_circuit_work()
3566 snd_soc_jack_report(wm8994->micdet[0].jack, 0, in wm8958_open_circuit_work()
3567 wm8994->btn_mask | in wm8958_open_circuit_work()
3570 mutex_unlock(&wm8994->accdet_lock); in wm8958_open_circuit_work()
3576 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mic_id() local
3584 &wm8994->open_circuit_work, in wm8958_mic_id()
3595 wm8994->mic_detecting = false; in wm8958_mic_id()
3596 wm8994->jack_mic = true; in wm8958_mic_id()
3600 snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADSET, in wm8958_mic_id()
3607 wm8994->mic_detecting = false; in wm8958_mic_id()
3614 snd_soc_jack_report(wm8994->micdet[0].jack, SND_JACK_HEADPHONE, in wm8958_mic_id()
3622 struct wm8994_priv *wm8994 = container_of(work, struct wm8994_priv, in wm1811_mic_work() local
3624 struct wm8994 *control = wm8994->wm8994; in wm1811_mic_work()
3625 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm1811_mic_work()
3636 mutex_lock(&wm8994->accdet_lock); in wm1811_mic_work()
3641 if (wm8994->micd_cb) { in wm1811_mic_work()
3642 wm8994->micd_cb(wm8994->micd_cb_data); in wm1811_mic_work()
3648 wm8994->mic_detecting = true; in wm1811_mic_work()
3655 mutex_unlock(&wm8994->accdet_lock); in wm1811_mic_work()
3662 struct wm8994_priv *wm8994 = data; in wm1811_jackdet_irq() local
3663 struct wm8994 *control = wm8994->wm8994; in wm1811_jackdet_irq()
3664 struct snd_soc_codec *codec = wm8994->hubs.codec; in wm1811_jackdet_irq()
3671 cancel_delayed_work_sync(&wm8994->mic_complete_work); in wm1811_jackdet_irq()
3673 mutex_lock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3678 mutex_unlock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3701 &wm8994->mic_work, in wm1811_jackdet_irq()
3706 cancel_delayed_work_sync(&wm8994->mic_work); in wm1811_jackdet_irq()
3715 wm8994->mic_detecting = false; in wm1811_jackdet_irq()
3716 wm8994->jack_mic = false; in wm1811_jackdet_irq()
3722 mutex_unlock(&wm8994->accdet_lock); in wm1811_jackdet_irq()
3729 snd_soc_jack_report(wm8994->micdet[0].jack, in wm1811_jackdet_irq()
3732 snd_soc_jack_report(wm8994->micdet[0].jack, 0, in wm1811_jackdet_irq()
3734 wm8994->btn_mask); in wm1811_jackdet_irq()
3738 snd_soc_jack_report(wm8994->micdet[0].jack, 0, 0); in wm1811_jackdet_irq()
3746 struct wm8994_priv *wm8994 = container_of(work, in wm1811_jackdet_bootstrap() local
3749 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()
3989 struct wm8994 *control = dev_get_drvdata(codec->dev->parent); in wm8994_codec_probe()
3990 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()
4092 wm8994); in wm8994_codec_probe()
4094 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4097 wm8994); in wm8994_codec_probe()
4105 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4108 wm8994); in wm8994_codec_probe()
4114 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4117 wm8994); in wm8994_codec_probe()
4123 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4126 wm8994); in wm8994_codec_probe()
4135 if (wm8994->micdet_irq) { in wm8994_codec_probe()
4136 ret = request_threaded_irq(wm8994->micdet_irq, NULL, in wm8994_codec_probe()
4141 wm8994); in wm8994_codec_probe()
4147 wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, in wm8994_codec_probe()
4149 wm8994); in wm8994_codec_probe()
4156 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4159 wm8994); in wm8994_codec_probe()
4161 wm8994->jackdet = true; in wm8994_codec_probe()
4168 wm8994->fll_locked_irq = true; in wm8994_codec_probe()
4169 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) { in wm8994_codec_probe()
4170 ret = wm8994_request_irq(wm8994->wm8994, in wm8994_codec_probe()
4173 &wm8994->fll_locked[i]); in wm8994_codec_probe()
4175 wm8994->fll_locked_irq = false; in wm8994_codec_probe()
4191 wm8994->lrclk_shared[0] = 1; in wm8994_codec_probe()
4194 wm8994->lrclk_shared[0] = 0; in wm8994_codec_probe()
4203 wm8994->lrclk_shared[1] = 1; in wm8994_codec_probe()
4206 wm8994->lrclk_shared[1] = 0; in wm8994_codec_probe()
4254 wm8994->hubs.check_class_w_digital = wm8994_check_class_w_digital; in wm8994_codec_probe()
4257 wm8994_handle_pdata(wm8994); in wm8994_codec_probe()
4322 ret = wm8994_request_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_probe()
4324 &wm8994->hubs); in wm8994_codec_probe()
4326 wm8994->hubs.dcs_done_irq = true; in wm8994_codec_probe()
4372 if (wm8994->jackdet) in wm8994_codec_probe()
4373 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_GPIO(6), wm8994); in wm8994_codec_probe()
4374 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_SHRT, wm8994); in wm8994_codec_probe()
4375 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_DET, wm8994); in wm8994_codec_probe()
4376 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, wm8994); in wm8994_codec_probe()
4377 if (wm8994->micdet_irq) in wm8994_codec_probe()
4378 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_probe()
4379 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) in wm8994_codec_probe()
4380 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FLL1_LOCK + i, in wm8994_codec_probe()
4381 &wm8994->fll_locked[i]); in wm8994_codec_probe()
4382 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_probe()
4383 &wm8994->hubs); in wm8994_codec_probe()
4384 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FIFOS_ERR, codec); in wm8994_codec_probe()
4385 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_SHUT, codec); in wm8994_codec_probe()
4386 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_WARN, codec); in wm8994_codec_probe()
4393 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8994_codec_remove() local
4394 struct wm8994 *control = wm8994->wm8994; in wm8994_codec_remove()
4397 for (i = 0; i < ARRAY_SIZE(wm8994->fll_locked); i++) in wm8994_codec_remove()
4398 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FLL1_LOCK + i, in wm8994_codec_remove()
4399 &wm8994->fll_locked[i]); in wm8994_codec_remove()
4401 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_DCS_DONE, in wm8994_codec_remove()
4402 &wm8994->hubs); in wm8994_codec_remove()
4403 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_FIFOS_ERR, codec); in wm8994_codec_remove()
4404 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_SHUT, codec); in wm8994_codec_remove()
4405 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_TEMP_WARN, codec); in wm8994_codec_remove()
4407 if (wm8994->jackdet) in wm8994_codec_remove()
4408 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_GPIO(6), wm8994); in wm8994_codec_remove()
4412 if (wm8994->micdet_irq) in wm8994_codec_remove()
4413 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_remove()
4414 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC2_DET, in wm8994_codec_remove()
4415 wm8994); in wm8994_codec_remove()
4416 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_SHRT, in wm8994_codec_remove()
4417 wm8994); in wm8994_codec_remove()
4418 wm8994_free_irq(wm8994->wm8994, WM8994_IRQ_MIC1_DET, in wm8994_codec_remove()
4419 wm8994); in wm8994_codec_remove()
4424 if (wm8994->micdet_irq) in wm8994_codec_remove()
4425 free_irq(wm8994->micdet_irq, wm8994); in wm8994_codec_remove()
4428 release_firmware(wm8994->mbc); in wm8994_codec_remove()
4429 release_firmware(wm8994->mbc_vss); in wm8994_codec_remove()
4430 release_firmware(wm8994->enh_eq); in wm8994_codec_remove()
4431 kfree(wm8994->retune_mobile_texts); in wm8994_codec_remove()
4437 struct wm8994 *control = dev_get_drvdata(dev->parent); in wm8994_get_regmap()
4453 struct wm8994_priv *wm8994; in wm8994_probe() local
4455 wm8994 = devm_kzalloc(&pdev->dev, sizeof(struct wm8994_priv), in wm8994_probe()
4457 if (wm8994 == NULL) in wm8994_probe()
4459 platform_set_drvdata(pdev, wm8994); in wm8994_probe()
4461 mutex_init(&wm8994->fw_lock); in wm8994_probe()
4463 wm8994->wm8994 = dev_get_drvdata(pdev->dev.parent); in wm8994_probe()
4483 struct wm8994_priv *wm8994 = dev_get_drvdata(dev); in wm8994_suspend() local
4486 if (wm8994->jackdet && !wm8994->active_refcount) in wm8994_suspend()
4487 regmap_update_bits(wm8994->wm8994->regmap, WM8994_ANTIPOP_2, in wm8994_suspend()
4489 wm8994->jackdet_mode); in wm8994_suspend()
4496 struct wm8994_priv *wm8994 = dev_get_drvdata(dev); in wm8994_resume() local
4498 if (wm8994->jackdet && wm8994->jackdet_mode) in wm8994_resume()
4499 regmap_update_bits(wm8994->wm8994->regmap, WM8994_ANTIPOP_2, in wm8994_resume()