Lines Matching refs:max98090

346 static int max98090_reset(struct max98090_priv *max98090)  in max98090_reset()  argument
351 ret = regmap_write(max98090->regmap, M98090_REG_SOFTWARE_RESET, in max98090_reset()
354 dev_err(max98090->codec->dev, in max98090_reset()
431 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_get_enab_tlv() local
440 select = &(max98090->pa1en); in max98090_get_enab_tlv()
443 select = &(max98090->pa2en); in max98090_get_enab_tlv()
446 select = &(max98090->sidetone); in max98090_get_enab_tlv()
471 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_put_enab_tlv() local
481 select = &(max98090->pa1en); in max98090_put_enab_tlv()
484 select = &(max98090->pa2en); in max98090_put_enab_tlv()
487 select = &(max98090->sidetone); in max98090_put_enab_tlv()
810 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_micinput_event() local
821 max98090->pa1en = val - 1; /* Update for volatile */ in max98090_micinput_event()
823 max98090->pa2en = val - 1; /* Update for volatile */ in max98090_micinput_event()
831 val = max98090->pa1en + 1; in max98090_micinput_event()
833 val = max98090->pa2en + 1; in max98090_micinput_event()
1502 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_add_widgets() local
1508 if (max98090->devtype == MAX98091) { in max98090_add_widgets()
1519 if (max98090->devtype == MAX98091) { in max98090_add_widgets()
1558 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_configure_bclk() local
1562 if (!max98090->sysclk) { in max98090_configure_bclk()
1567 if (!max98090->bclk || !max98090->lrclk) { in max98090_configure_bclk()
1580 if ((pclk_rates[i] == max98090->sysclk) && in max98090_configure_bclk()
1581 (lrclk_rates[i] == max98090->lrclk)) { in max98090_configure_bclk()
1597 if ((user_pclk_rates[i] == max98090->sysclk) && in max98090_configure_bclk()
1598 (user_lrclk_rates[i] == max98090->lrclk)) { in max98090_configure_bclk()
1636 ni = 65536ULL * (max98090->lrclk < 50000 ? 96ULL : 48ULL) in max98090_configure_bclk()
1637 * (unsigned long long int)max98090->lrclk; in max98090_configure_bclk()
1638 do_div(ni, (unsigned long long int)max98090->sysclk); in max98090_configure_bclk()
1650 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_dai_set_fmt() local
1654 max98090->dai_fmt = fmt; in max98090_dai_set_fmt()
1655 cdata = &max98090->dai[0]; in max98090_dai_set_fmt()
1670 max98090->master = false; in max98090_dai_set_fmt()
1674 if (max98090->tdm_slots == 4) { in max98090_dai_set_fmt()
1678 } else if (max98090->tdm_slots == 3) { in max98090_dai_set_fmt()
1687 max98090->master = true; in max98090_dai_set_fmt()
1737 if (max98090->tdm_slots > 1) in max98090_dai_set_fmt()
1751 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_set_tdm_slot() local
1753 cdata = &max98090->dai[0]; in max98090_set_tdm_slot()
1758 max98090->tdm_slots = slots; in max98090_set_tdm_slot()
1759 max98090->tdm_width = slot_width; in max98090_set_tdm_slot()
1761 if (max98090->tdm_slots > 1) { in max98090_set_tdm_slot()
1778 max98090_dai_set_fmt(codec_dai, max98090->dai_fmt); in max98090_set_tdm_slot()
1786 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_set_bias_level() local
1801 if (!IS_ERR(max98090->mclk)) { in max98090_set_bias_level()
1803 clk_disable_unprepare(max98090->mclk); in max98090_set_bias_level()
1805 clk_prepare_enable(max98090->mclk); in max98090_set_bias_level()
1811 ret = regcache_sync(max98090->regmap); in max98090_set_bias_level()
1824 regcache_mark_dirty(max98090->regmap); in max98090_set_bias_level()
1945 static int max98090_configure_dmic(struct max98090_priv *max98090, in max98090_configure_dmic() argument
1968 regmap_update_bits(max98090->regmap, M98090_REG_DIGITAL_MIC_ENABLE, in max98090_configure_dmic()
1972 regmap_update_bits(max98090->regmap, M98090_REG_DIGITAL_MIC_CONFIG, in max98090_configure_dmic()
1985 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_dai_hw_params() local
1988 cdata = &max98090->dai[0]; in max98090_dai_hw_params()
1989 max98090->bclk = snd_soc_params_to_bclk(params); in max98090_dai_hw_params()
1991 max98090->bclk *= 2; in max98090_dai_hw_params()
1993 max98090->lrclk = params_rate(params); in max98090_dai_hw_params()
2004 if (max98090->master) in max98090_dai_hw_params()
2007 cdata->rate = max98090->lrclk; in max98090_dai_hw_params()
2010 if (max98090->lrclk < 24000) in max98090_dai_hw_params()
2018 if (max98090->lrclk < 50000) in max98090_dai_hw_params()
2025 max98090_configure_dmic(max98090, max98090->dmic_freq, max98090->pclk, in max98090_dai_hw_params()
2026 max98090->lrclk); in max98090_dai_hw_params()
2038 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_dai_set_sysclk() local
2041 if (freq == max98090->sysclk) in max98090_dai_set_sysclk()
2044 if (!IS_ERR(max98090->mclk)) { in max98090_dai_set_sysclk()
2045 freq = clk_round_rate(max98090->mclk, freq); in max98090_dai_set_sysclk()
2046 clk_set_rate(max98090->mclk, freq); in max98090_dai_set_sysclk()
2057 max98090->pclk = freq; in max98090_dai_set_sysclk()
2061 max98090->pclk = freq >> 1; in max98090_dai_set_sysclk()
2065 max98090->pclk = freq >> 2; in max98090_dai_set_sysclk()
2071 max98090->sysclk = freq; in max98090_dai_set_sysclk()
2092 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_dai_trigger() local
2098 if (!max98090->master && dai->active == 1) in max98090_dai_trigger()
2100 &max98090->pll_det_enable_work, in max98090_dai_trigger()
2106 if (!max98090->master && dai->active == 1) in max98090_dai_trigger()
2107 schedule_work(&max98090->pll_det_disable_work); in max98090_dai_trigger()
2118 struct max98090_priv *max98090 = in max98090_pll_det_enable_work() local
2121 struct snd_soc_codec *codec = max98090->codec; in max98090_pll_det_enable_work()
2130 regmap_read(max98090->regmap, M98090_REG_DEVICE_STATUS, &status); in max98090_pll_det_enable_work()
2136 regmap_read(max98090->regmap, M98090_REG_INTERRUPT_S, &mask); in max98090_pll_det_enable_work()
2140 &max98090->jack_work, in max98090_pll_det_enable_work()
2151 struct max98090_priv *max98090 = in max98090_pll_det_disable_work() local
2153 struct snd_soc_codec *codec = max98090->codec; in max98090_pll_det_disable_work()
2155 cancel_delayed_work_sync(&max98090->pll_det_enable_work); in max98090_pll_det_disable_work()
2164 struct max98090_priv *max98090 = in max98090_pll_work() local
2166 struct snd_soc_codec *codec = max98090->codec; in max98090_pll_work()
2186 struct max98090_priv *max98090 = container_of(work, in max98090_jack_work() local
2189 struct snd_soc_codec *codec = max98090->codec; in max98090_jack_work()
2195 if (max98090->jack_state == M98090_JACK_STATE_NO_HEADSET) { in max98090_jack_work()
2218 max98090->jack_state = M98090_JACK_STATE_NO_HEADSET; in max98090_jack_work()
2225 if (max98090->jack_state == in max98090_jack_work()
2247 max98090->jack_state = M98090_JACK_STATE_HEADPHONE; in max98090_jack_work()
2256 max98090->jack_state = M98090_JACK_STATE_HEADSET; in max98090_jack_work()
2267 snd_soc_jack_report(max98090->jack, status, in max98090_jack_work()
2275 struct max98090_priv *max98090 = data; in max98090_interrupt() local
2276 struct snd_soc_codec *codec = max98090->codec; in max98090_interrupt()
2287 ret = regmap_read(max98090->regmap, M98090_REG_INTERRUPT_S, &mask); in max98090_interrupt()
2296 ret = regmap_read(max98090->regmap, M98090_REG_DEVICE_STATUS, &active); in max98090_interrupt()
2321 schedule_work(&max98090->pll_work); in max98090_interrupt()
2330 &max98090->jack_work, in max98090_interrupt()
2359 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_mic_detect() local
2363 max98090->jack = jack; in max98090_mic_detect()
2375 snd_soc_jack_report(max98090->jack, 0, in max98090_mic_detect()
2379 &max98090->jack_work, in max98090_mic_detect()
2421 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_probe() local
2428 max98090->mclk = devm_clk_get(codec->dev, "mclk"); in max98090_probe()
2429 if (PTR_ERR(max98090->mclk) == -EPROBE_DEFER) in max98090_probe()
2432 max98090->codec = codec; in max98090_probe()
2435 max98090_reset(max98090); in max98090_probe()
2439 max98090->sysclk = (unsigned)-1; in max98090_probe()
2440 max98090->pclk = (unsigned)-1; in max98090_probe()
2441 max98090->master = false; in max98090_probe()
2443 cdata = &max98090->dai[0]; in max98090_probe()
2447 max98090->lin_state = 0; in max98090_probe()
2448 max98090->pa1en = 0; in max98090_probe()
2449 max98090->pa2en = 0; in max98090_probe()
2469 if (max98090->devtype != devtype) { in max98090_probe()
2471 max98090->devtype = devtype; in max98090_probe()
2474 max98090->jack_state = M98090_JACK_STATE_NO_HEADSET; in max98090_probe()
2476 INIT_DELAYED_WORK(&max98090->jack_work, max98090_jack_work); in max98090_probe()
2477 INIT_DELAYED_WORK(&max98090->pll_det_enable_work, in max98090_probe()
2479 INIT_WORK(&max98090->pll_det_disable_work, in max98090_probe()
2481 INIT_WORK(&max98090->pll_work, max98090_pll_work); in max98090_probe()
2520 struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec); in max98090_remove() local
2522 cancel_delayed_work_sync(&max98090->jack_work); in max98090_remove()
2523 cancel_delayed_work_sync(&max98090->pll_det_enable_work); in max98090_remove()
2524 cancel_work_sync(&max98090->pll_det_disable_work); in max98090_remove()
2525 cancel_work_sync(&max98090->pll_work); in max98090_remove()
2526 max98090->codec = NULL; in max98090_remove()
2552 struct max98090_priv *max98090; in max98090_i2c_probe() local
2559 max98090 = devm_kzalloc(&i2c->dev, sizeof(struct max98090_priv), in max98090_i2c_probe()
2561 if (max98090 == NULL) in max98090_i2c_probe()
2576 max98090->devtype = driver_data; in max98090_i2c_probe()
2577 i2c_set_clientdata(i2c, max98090); in max98090_i2c_probe()
2578 max98090->pdata = i2c->dev.platform_data; in max98090_i2c_probe()
2581 &max98090->dmic_freq); in max98090_i2c_probe()
2583 max98090->dmic_freq = MAX98090_DEFAULT_DMIC_FREQ; in max98090_i2c_probe()
2585 max98090->regmap = devm_regmap_init_i2c(i2c, &max98090_regmap); in max98090_i2c_probe()
2586 if (IS_ERR(max98090->regmap)) { in max98090_i2c_probe()
2587 ret = PTR_ERR(max98090->regmap); in max98090_i2c_probe()
2594 "max98090_interrupt", max98090); in max98090_i2c_probe()
2610 struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev); in max98090_i2c_shutdown() local
2616 regmap_write(max98090->regmap, in max98090_i2c_shutdown()
2618 regmap_write(max98090->regmap, in max98090_i2c_shutdown()
2633 struct max98090_priv *max98090 = dev_get_drvdata(dev); in max98090_runtime_resume() local
2635 regcache_cache_only(max98090->regmap, false); in max98090_runtime_resume()
2637 max98090_reset(max98090); in max98090_runtime_resume()
2639 regcache_sync(max98090->regmap); in max98090_runtime_resume()
2646 struct max98090_priv *max98090 = dev_get_drvdata(dev); in max98090_runtime_suspend() local
2648 regcache_cache_only(max98090->regmap, true); in max98090_runtime_suspend()
2657 struct max98090_priv *max98090 = dev_get_drvdata(dev); in max98090_resume() local
2660 regcache_mark_dirty(max98090->regmap); in max98090_resume()
2662 max98090_reset(max98090); in max98090_resume()
2665 regmap_read(max98090->regmap, M98090_REG_DEVICE_STATUS, &status); in max98090_resume()
2667 regcache_sync(max98090->regmap); in max98090_resume()