Lines Matching refs:da7219
3 * da7219.c - DA7219 ALSA SoC Codec Driver
31 #include <sound/da7219.h>
32 #include "da7219.h"
33 #include "da7219-aad.h"
258 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
261 mutex_lock(&da7219->ctrl_lock);
263 mutex_unlock(&da7219->ctrl_lock);
272 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
275 mutex_lock(&da7219->ctrl_lock);
277 mutex_unlock(&da7219->ctrl_lock);
286 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
289 mutex_lock(&da7219->ctrl_lock);
291 mutex_unlock(&da7219->ctrl_lock);
300 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
303 mutex_lock(&da7219->ctrl_lock);
305 mutex_unlock(&da7219->ctrl_lock);
380 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
389 if ((ret == 1) && (da7219->alc_en))
399 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
403 if ((ucontrol->value.integer.value[0]) && (!da7219->alc_en)) {
405 da7219->alc_en = true;
407 da7219->alc_en = false;
418 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
425 mutex_lock(&da7219->ctrl_lock);
426 ret = regmap_raw_read(da7219->regmap, reg, &val, sizeof(val));
427 mutex_unlock(&da7219->ctrl_lock);
445 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
459 mutex_lock(&da7219->ctrl_lock);
460 ret = regmap_raw_read(da7219->regmap, reg, &val_old, sizeof(val_old));
462 ret = regmap_raw_write(da7219->regmap, reg,
464 mutex_unlock(&da7219->ctrl_lock);
777 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
781 if (da7219->micbias_on_event) {
786 da7219->micbias_on_event = false;
787 msleep(da7219->mic_pga_delay);
801 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
802 struct clk *bclk = da7219->dai_clks[DA7219_DAI_BCLK_IDX];
809 if (da7219->master) {
857 if (da7219->master) {
930 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
936 da7219->gain_ramp_ctrl =
945 da7219->gain_ramp_ctrl);
1167 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1170 if ((da7219->clk_src == clk_id) && (da7219->mclk_rate == freq))
1179 mutex_lock(&da7219->pll_lock);
1193 mutex_unlock(&da7219->pll_lock);
1197 da7219->clk_src = clk_id;
1199 if (da7219->mclk) {
1200 freq = clk_round_rate(da7219->mclk, freq);
1201 ret = clk_set_rate(da7219->mclk, freq);
1205 mutex_unlock(&da7219->pll_lock);
1210 da7219->mclk_rate = freq;
1212 mutex_unlock(&da7219->pll_lock);
1219 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1227 if (da7219->mclk_rate < 2000000) {
1229 da7219->mclk_rate);
1231 } else if (da7219->mclk_rate <= 4500000) {
1234 } else if (da7219->mclk_rate <= 9000000) {
1237 } else if (da7219->mclk_rate <= 18000000) {
1240 } else if (da7219->mclk_rate <= 36000000) {
1243 } else if (da7219->mclk_rate <= 54000000) {
1248 da7219->mclk_rate);
1251 freq_ref = (da7219->mclk_rate / indiv);
1295 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1298 mutex_lock(&da7219->pll_lock);
1300 mutex_unlock(&da7219->pll_lock);
1308 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1313 da7219->master = true;
1316 da7219->master = false;
1425 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1426 struct clk *wclk = da7219->dai_clks[DA7219_DAI_WCLK_IDX];
1427 struct clk *bclk = da7219->dai_clks[DA7219_DAI_BCLK_IDX];
1441 da7219->tdm_en = false;
1469 if (da7219->master) {
1494 regmap_bulk_write(da7219->regmap, DA7219_DAI_OFFSET_LOWER,
1503 da7219->tdm_en = true;
1561 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1562 struct clk *wclk = da7219->dai_clks[DA7219_DAI_WCLK_IDX];
1563 struct clk *bclk = da7219->dai_clks[DA7219_DAI_BCLK_IDX];
1597 if (da7219->master && wclk) {
1618 if (da7219->master && !da7219->tdm_en) {
1685 .name = "da7219-hifi",
1713 { .compatible = "dlg,da7219", },
1776 pdata->dai_clk_names[DA7219_DAI_WCLK_IDX] = "da7219-dai-wclk";
1777 pdata->dai_clk_names[DA7219_DAI_BCLK_IDX] = "da7219-dai-bclk";
1806 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1815 if (da7219->mclk) {
1816 ret = clk_prepare_enable(da7219->mclk);
1835 if (da7219->mclk)
1836 clk_disable_unprepare(da7219->mclk);
1841 if (!da7219->wakeup_source)
1860 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
1866 da7219->supplies[i].supply = da7219_supply_names[i];
1869 da7219->supplies);
1879 vddio = da7219->supplies[DA7219_SUPPLY_VDDIO].consumer;
1887 ret = regulator_bulk_enable(DA7219_NUM_SUPPLIES, da7219->supplies);
1890 regulator_bulk_free(DA7219_NUM_SUPPLIES, da7219->supplies);
1900 struct da7219_priv *da7219 =
1903 struct snd_soc_component *component = da7219->component;
1905 if (!da7219->master)
1917 struct da7219_priv *da7219 =
1920 struct snd_soc_component *component = da7219->component;
1922 if (!da7219->master)
1931 struct da7219_priv *da7219 =
1934 struct snd_soc_component *component = da7219->component;
1937 if (!da7219->master)
1948 struct da7219_priv *da7219 =
1951 struct snd_soc_component *component = da7219->component;
1985 struct da7219_priv *da7219 =
1989 if (!da7219->master)
2019 struct da7219_priv *da7219 =
2022 struct snd_soc_component *component = da7219->component;
2024 if (!da7219->master)
2033 struct da7219_priv *da7219 =
2036 struct snd_soc_component *component = da7219->component;
2073 struct da7219_priv *da7219 =
2078 if (!*parent_rate || !da7219->master)
2096 struct da7219_priv *da7219 =
2099 struct snd_soc_component *component = da7219->component;
2102 if (!da7219->master)
2130 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2131 struct da7219_pdata *pdata = da7219->pdata;
2144 da7219->clk_hw_data = clk_data;
2150 struct clk_hw *dai_clk_hw = &da7219->dai_clks_hw[i];
2158 if (da7219->mclk) {
2159 parent_name = __clk_get_name(da7219->mclk);
2169 parent_name = __clk_get_name(da7219->dai_clks[DA7219_DAI_WCLK_IDX]);
2190 da7219->dai_clks[i] = dai_clk_hw->clk;
2194 da7219->clk_hw_data->hws[i] = dai_clk_hw;
2203 da7219->dai_clks_lookup[i] = dai_clk_lookup;
2211 da7219->clk_hw_data);
2222 if (da7219->dai_clks_lookup[i])
2223 clkdev_drop(da7219->dai_clks_lookup[i]);
2225 clk_hw_unregister(&da7219->dai_clks_hw[i]);
2229 kfree(da7219->clk_hw_data);
2236 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2244 if (da7219->dai_clks_lookup[i])
2245 clkdev_drop(da7219->dai_clks_lookup[i]);
2247 clk_hw_unregister(&da7219->dai_clks_hw[i]);
2251 kfree(da7219->clk_hw_data);
2264 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2265 struct da7219_pdata *pdata = da7219->pdata;
2270 da7219->wakeup_source = pdata->wakeup_source;
2291 da7219->mic_pga_delay = DA7219_MIC_PGA_BASE_DELAY +
2449 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2454 da7219->component = component;
2455 mutex_init(&da7219->ctrl_lock);
2456 mutex_init(&da7219->pll_lock);
2463 regcache_cache_bypass(da7219->regmap, true);
2466 regmap_read(da7219->regmap, DA7219_SYSTEM_ACTIVE, &system_active);
2468 regmap_write(da7219->regmap, DA7219_GAIN_RAMP_CTRL,
2470 regmap_write(da7219->regmap, DA7219_SYSTEM_MODES_INPUT, 0x00);
2471 regmap_write(da7219->regmap, DA7219_SYSTEM_MODES_OUTPUT, 0x01);
2474 regmap_read(da7219->regmap, DA7219_SYSTEM_STATUS,
2484 regmap_write_bits(da7219->regmap, DA7219_ACCDET_CONFIG_1,
2486 regmap_write_bits(da7219->regmap, DA7219_CIF_CTRL,
2489 regmap_write_bits(da7219->regmap, DA7219_SYSTEM_ACTIVE,
2491 regmap_write_bits(da7219->regmap, DA7219_SYSTEM_ACTIVE,
2494 regcache_cache_bypass(da7219->regmap, false);
2495 regmap_reinit_cache(da7219->regmap, &da7219_regmap_config);
2500 ret = regmap_read(da7219->regmap, DA7219_CHIP_REVISION, &rev);
2508 ret = regmap_register_patch(da7219->regmap, da7219_rev_aa_patch,
2524 da7219->mclk = clk_get(component->dev, "mclk");
2525 if (IS_ERR(da7219->mclk)) {
2526 if (PTR_ERR(da7219->mclk) != -ENOENT) {
2527 ret = PTR_ERR(da7219->mclk);
2530 da7219->mclk = NULL;
2582 clk_put(da7219->mclk);
2585 regulator_bulk_disable(DA7219_NUM_SUPPLIES, da7219->supplies);
2586 regulator_bulk_free(DA7219_NUM_SUPPLIES, da7219->supplies);
2593 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2598 clk_put(da7219->mclk);
2601 regulator_bulk_disable(DA7219_NUM_SUPPLIES, da7219->supplies);
2602 regulator_bulk_free(DA7219_NUM_SUPPLIES, da7219->supplies);
2608 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2611 if (!da7219->wakeup_source)
2621 struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
2626 if (!da7219->wakeup_source)
2670 struct da7219_priv *da7219;
2673 da7219 = devm_kzalloc(dev, sizeof(struct da7219_priv),
2675 if (!da7219)
2678 i2c_set_clientdata(i2c, da7219);
2680 da7219->regmap = devm_regmap_init_i2c(i2c, &da7219_regmap_config);
2681 if (IS_ERR(da7219->regmap)) {
2682 ret = PTR_ERR(da7219->regmap);
2688 da7219->pdata = dev_get_platdata(dev);
2689 if (!da7219->pdata)
2690 da7219->pdata = da7219_fw_to_pdata(dev);
2700 dev_err(dev, "Failed to register da7219 component: %d\n", ret);
2706 { "da7219", },
2713 .name = "da7219",