Lines Matching refs:aic3x
70 struct aic3x_priv *aic3x; member
202 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in mic_bias_event() local
209 aic3x->micbias_vg << MICBIAS_LEVEL_SHIFT); in mic_bias_event()
981 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_add_widgets() local
984 switch (aic3x->model) { in aic3x_add_widgets()
1022 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_hw_params() local
1051 if (aic3x->sysclk / (128 * pll_q) == fsref) { in aic3x_hw_params()
1096 codec_clk = (2048 * fsref) / (aic3x->sysclk / 1000); in aic3x_hw_params()
1131 d = ((2048 * p * fsref) - j * aic3x->sysclk) in aic3x_hw_params()
1132 * 100 / (aic3x->sysclk/100); in aic3x_hw_params()
1170 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_prepare() local
1174 if (aic3x->dai_fmt == SND_SOC_DAIFMT_DSP_A) in aic3x_prepare()
1175 delay += (aic3x->tdm_delay + 1); in aic3x_prepare()
1176 else if (aic3x->dai_fmt == SND_SOC_DAIFMT_DSP_B) in aic3x_prepare()
1177 delay += aic3x->tdm_delay; in aic3x_prepare()
1206 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_sysclk() local
1214 aic3x->sysclk = freq; in aic3x_set_dai_sysclk()
1222 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_fmt() local
1231 aic3x->master = 1; in aic3x_set_dai_fmt()
1235 aic3x->master = 0; in aic3x_set_dai_fmt()
1264 aic3x->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in aic3x_set_dai_fmt()
1278 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_tdm_slot() local
1298 aic3x->tdm_delay = lsb * slot_width; in aic3x_set_dai_tdm_slot()
1312 struct aic3x_priv *aic3x = disable_nb->aic3x; in aic3x_regulator_event() local
1319 if (gpio_is_valid(aic3x->gpio_reset)) in aic3x_regulator_event()
1320 gpio_set_value(aic3x->gpio_reset, 0); in aic3x_regulator_event()
1321 regcache_mark_dirty(aic3x->regmap); in aic3x_regulator_event()
1329 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_power() local
1334 ret = regulator_bulk_enable(ARRAY_SIZE(aic3x->supplies), in aic3x_set_power()
1335 aic3x->supplies); in aic3x_set_power()
1338 aic3x->power = 1; in aic3x_set_power()
1340 if (gpio_is_valid(aic3x->gpio_reset)) { in aic3x_set_power()
1342 gpio_set_value(aic3x->gpio_reset, 1); in aic3x_set_power()
1346 regcache_cache_only(aic3x->regmap, false); in aic3x_set_power()
1347 regcache_sync(aic3x->regmap); in aic3x_set_power()
1367 regcache_mark_dirty(aic3x->regmap); in aic3x_set_power()
1368 aic3x->power = 0; in aic3x_set_power()
1370 regcache_cache_only(aic3x->regmap, true); in aic3x_set_power()
1371 ret = regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies), in aic3x_set_power()
1372 aic3x->supplies); in aic3x_set_power()
1381 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_bias_level() local
1388 aic3x->master) { in aic3x_set_bias_level()
1395 if (!aic3x->power) in aic3x_set_bias_level()
1398 aic3x->master) { in aic3x_set_bias_level()
1405 if (aic3x->power) in aic3x_set_bias_level()
1470 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_init() local
1521 switch (aic3x->model) { in aic3x_init()
1534 static bool aic3x_is_shared_reset(struct aic3x_priv *aic3x) in aic3x_is_shared_reset() argument
1539 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_is_shared_reset()
1540 aic3x->gpio_reset == a->gpio_reset) in aic3x_is_shared_reset()
1549 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_probe() local
1552 INIT_LIST_HEAD(&aic3x->list); in aic3x_probe()
1553 aic3x->codec = codec; in aic3x_probe()
1555 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) { in aic3x_probe()
1556 aic3x->disable_nb[i].nb.notifier_call = aic3x_regulator_event; in aic3x_probe()
1557 aic3x->disable_nb[i].aic3x = aic3x; in aic3x_probe()
1558 ret = regulator_register_notifier(aic3x->supplies[i].consumer, in aic3x_probe()
1559 &aic3x->disable_nb[i].nb); in aic3x_probe()
1568 regcache_mark_dirty(aic3x->regmap); in aic3x_probe()
1571 if (aic3x->setup) { in aic3x_probe()
1572 if (aic3x->model != AIC3X_MODEL_3104) { in aic3x_probe()
1575 (aic3x->setup->gpio_func[0] & 0xf) << 4); in aic3x_probe()
1577 (aic3x->setup->gpio_func[1] & 0xf) << 4); in aic3x_probe()
1583 switch (aic3x->model) { in aic3x_probe()
1602 switch (aic3x->micbias_vg) { in aic3x_probe()
1608 (aic3x->micbias_vg) << MICBIAS_LEVEL_SHIFT); in aic3x_probe()
1625 regulator_unregister_notifier(aic3x->supplies[i].consumer, in aic3x_probe()
1626 &aic3x->disable_nb[i].nb); in aic3x_probe()
1632 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_remove() local
1635 list_del(&aic3x->list); in aic3x_remove()
1636 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) in aic3x_remove()
1637 regulator_unregister_notifier(aic3x->supplies[i].consumer, in aic3x_remove()
1638 &aic3x->disable_nb[i].nb); in aic3x_remove()
1689 struct aic3x_priv *aic3x; in aic3x_i2c_probe() local
1695 aic3x = devm_kzalloc(&i2c->dev, sizeof(struct aic3x_priv), GFP_KERNEL); in aic3x_i2c_probe()
1696 if (!aic3x) in aic3x_i2c_probe()
1699 aic3x->regmap = devm_regmap_init_i2c(i2c, &aic3x_regmap); in aic3x_i2c_probe()
1700 if (IS_ERR(aic3x->regmap)) { in aic3x_i2c_probe()
1701 ret = PTR_ERR(aic3x->regmap); in aic3x_i2c_probe()
1705 regcache_cache_only(aic3x->regmap, true); in aic3x_i2c_probe()
1707 i2c_set_clientdata(i2c, aic3x); in aic3x_i2c_probe()
1709 aic3x->gpio_reset = pdata->gpio_reset; in aic3x_i2c_probe()
1710 aic3x->setup = pdata->setup; in aic3x_i2c_probe()
1711 aic3x->micbias_vg = pdata->micbias_vg; in aic3x_i2c_probe()
1720 aic3x->gpio_reset = ret; in aic3x_i2c_probe()
1722 aic3x->gpio_reset = -1; in aic3x_i2c_probe()
1726 aic3x->setup = ai3x_setup; in aic3x_i2c_probe()
1732 aic3x->micbias_vg = AIC3X_MICBIAS_2_0V; in aic3x_i2c_probe()
1735 aic3x->micbias_vg = AIC3X_MICBIAS_2_5V; in aic3x_i2c_probe()
1738 aic3x->micbias_vg = AIC3X_MICBIAS_AVDDV; in aic3x_i2c_probe()
1741 aic3x->micbias_vg = AIC3X_MICBIAS_OFF; in aic3x_i2c_probe()
1746 aic3x->micbias_vg = AIC3X_MICBIAS_OFF; in aic3x_i2c_probe()
1750 aic3x->gpio_reset = -1; in aic3x_i2c_probe()
1753 aic3x->model = id->driver_data; in aic3x_i2c_probe()
1755 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_probe()
1756 !aic3x_is_shared_reset(aic3x)) { in aic3x_i2c_probe()
1757 ret = gpio_request(aic3x->gpio_reset, "tlv320aic3x reset"); in aic3x_i2c_probe()
1760 gpio_direction_output(aic3x->gpio_reset, 0); in aic3x_i2c_probe()
1763 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) in aic3x_i2c_probe()
1764 aic3x->supplies[i].supply = aic3x_supply_names[i]; in aic3x_i2c_probe()
1766 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(aic3x->supplies), in aic3x_i2c_probe()
1767 aic3x->supplies); in aic3x_i2c_probe()
1773 if (aic3x->model == AIC3X_MODEL_3007) { in aic3x_i2c_probe()
1774 ret = regmap_register_patch(aic3x->regmap, aic3007_class_d, in aic3x_i2c_probe()
1787 list_add(&aic3x->list, &reset_list); in aic3x_i2c_probe()
1792 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_probe()
1793 !aic3x_is_shared_reset(aic3x)) in aic3x_i2c_probe()
1794 gpio_free(aic3x->gpio_reset); in aic3x_i2c_probe()
1801 struct aic3x_priv *aic3x = i2c_get_clientdata(client); in aic3x_i2c_remove() local
1804 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_remove()
1805 !aic3x_is_shared_reset(aic3x)) { in aic3x_i2c_remove()
1806 gpio_set_value(aic3x->gpio_reset, 0); in aic3x_i2c_remove()
1807 gpio_free(aic3x->gpio_reset); in aic3x_i2c_remove()