Lines Matching refs:aic3x
70 struct aic3x_priv *aic3x; member
204 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in mic_bias_event() local
211 aic3x->micbias_vg << MICBIAS_LEVEL_SHIFT); in mic_bias_event()
983 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_add_widgets() local
986 switch (aic3x->model) { in aic3x_add_widgets()
1024 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_hw_params() local
1029 int width = aic3x->slot_width; in aic3x_hw_params()
1057 if (aic3x->sysclk / (128 * pll_q) == fsref) { in aic3x_hw_params()
1102 codec_clk = (2048 * fsref) / (aic3x->sysclk / 1000); in aic3x_hw_params()
1137 d = ((2048 * p * fsref) - j * aic3x->sysclk) in aic3x_hw_params()
1138 * 100 / (aic3x->sysclk/100); in aic3x_hw_params()
1176 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_prepare() local
1178 int width = aic3x->slot_width; in aic3x_prepare()
1184 if (aic3x->dai_fmt == SND_SOC_DAIFMT_DSP_A) in aic3x_prepare()
1185 delay += (aic3x->tdm_delay*width + 1); in aic3x_prepare()
1186 else if (aic3x->dai_fmt == SND_SOC_DAIFMT_DSP_B) in aic3x_prepare()
1187 delay += aic3x->tdm_delay*width; in aic3x_prepare()
1216 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_sysclk() local
1224 aic3x->sysclk = freq; in aic3x_set_dai_sysclk()
1232 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_fmt() local
1241 aic3x->master = 1; in aic3x_set_dai_fmt()
1245 aic3x->master = 0; in aic3x_set_dai_fmt()
1274 aic3x->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in aic3x_set_dai_fmt()
1288 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_dai_tdm_slot() local
1320 aic3x->tdm_delay = lsb; in aic3x_set_dai_tdm_slot()
1321 aic3x->slot_width = slot_width; in aic3x_set_dai_tdm_slot()
1335 struct aic3x_priv *aic3x = disable_nb->aic3x; in aic3x_regulator_event() local
1342 if (gpio_is_valid(aic3x->gpio_reset)) in aic3x_regulator_event()
1343 gpio_set_value(aic3x->gpio_reset, 0); in aic3x_regulator_event()
1344 regcache_mark_dirty(aic3x->regmap); in aic3x_regulator_event()
1352 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_power() local
1357 ret = regulator_bulk_enable(ARRAY_SIZE(aic3x->supplies), in aic3x_set_power()
1358 aic3x->supplies); in aic3x_set_power()
1361 aic3x->power = 1; in aic3x_set_power()
1363 if (gpio_is_valid(aic3x->gpio_reset)) { in aic3x_set_power()
1365 gpio_set_value(aic3x->gpio_reset, 1); in aic3x_set_power()
1369 regcache_cache_only(aic3x->regmap, false); in aic3x_set_power()
1370 regcache_sync(aic3x->regmap); in aic3x_set_power()
1390 regcache_mark_dirty(aic3x->regmap); in aic3x_set_power()
1391 aic3x->power = 0; in aic3x_set_power()
1393 regcache_cache_only(aic3x->regmap, true); in aic3x_set_power()
1394 ret = regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies), in aic3x_set_power()
1395 aic3x->supplies); in aic3x_set_power()
1404 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_set_bias_level() local
1411 aic3x->master) { in aic3x_set_bias_level()
1418 if (!aic3x->power) in aic3x_set_bias_level()
1421 aic3x->master) { in aic3x_set_bias_level()
1428 if (aic3x->power) in aic3x_set_bias_level()
1492 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_init() local
1535 if (aic3x->model != AIC3X_MODEL_3104) { in aic3x_init()
1546 switch (aic3x->model) { in aic3x_init()
1559 static bool aic3x_is_shared_reset(struct aic3x_priv *aic3x) in aic3x_is_shared_reset() argument
1564 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_is_shared_reset()
1565 aic3x->gpio_reset == a->gpio_reset) in aic3x_is_shared_reset()
1574 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_probe() local
1577 INIT_LIST_HEAD(&aic3x->list); in aic3x_probe()
1578 aic3x->codec = codec; in aic3x_probe()
1580 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) { in aic3x_probe()
1581 aic3x->disable_nb[i].nb.notifier_call = aic3x_regulator_event; in aic3x_probe()
1582 aic3x->disable_nb[i].aic3x = aic3x; in aic3x_probe()
1583 ret = regulator_register_notifier(aic3x->supplies[i].consumer, in aic3x_probe()
1584 &aic3x->disable_nb[i].nb); in aic3x_probe()
1593 regcache_mark_dirty(aic3x->regmap); in aic3x_probe()
1596 if (aic3x->setup) { in aic3x_probe()
1597 if (aic3x->model != AIC3X_MODEL_3104) { in aic3x_probe()
1600 (aic3x->setup->gpio_func[0] & 0xf) << 4); in aic3x_probe()
1602 (aic3x->setup->gpio_func[1] & 0xf) << 4); in aic3x_probe()
1608 switch (aic3x->model) { in aic3x_probe()
1627 switch (aic3x->micbias_vg) { in aic3x_probe()
1633 (aic3x->micbias_vg) << MICBIAS_LEVEL_SHIFT); in aic3x_probe()
1650 regulator_unregister_notifier(aic3x->supplies[i].consumer, in aic3x_probe()
1651 &aic3x->disable_nb[i].nb); in aic3x_probe()
1657 struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); in aic3x_remove() local
1660 list_del(&aic3x->list); in aic3x_remove()
1661 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) in aic3x_remove()
1662 regulator_unregister_notifier(aic3x->supplies[i].consumer, in aic3x_remove()
1663 &aic3x->disable_nb[i].nb); in aic3x_remove()
1714 struct aic3x_priv *aic3x; in aic3x_i2c_probe() local
1720 aic3x = devm_kzalloc(&i2c->dev, sizeof(struct aic3x_priv), GFP_KERNEL); in aic3x_i2c_probe()
1721 if (!aic3x) in aic3x_i2c_probe()
1724 aic3x->regmap = devm_regmap_init_i2c(i2c, &aic3x_regmap); in aic3x_i2c_probe()
1725 if (IS_ERR(aic3x->regmap)) { in aic3x_i2c_probe()
1726 ret = PTR_ERR(aic3x->regmap); in aic3x_i2c_probe()
1730 regcache_cache_only(aic3x->regmap, true); in aic3x_i2c_probe()
1732 i2c_set_clientdata(i2c, aic3x); in aic3x_i2c_probe()
1734 aic3x->gpio_reset = pdata->gpio_reset; in aic3x_i2c_probe()
1735 aic3x->setup = pdata->setup; in aic3x_i2c_probe()
1736 aic3x->micbias_vg = pdata->micbias_vg; in aic3x_i2c_probe()
1745 aic3x->gpio_reset = ret; in aic3x_i2c_probe()
1747 aic3x->gpio_reset = -1; in aic3x_i2c_probe()
1751 aic3x->setup = ai3x_setup; in aic3x_i2c_probe()
1757 aic3x->micbias_vg = AIC3X_MICBIAS_2_0V; in aic3x_i2c_probe()
1760 aic3x->micbias_vg = AIC3X_MICBIAS_2_5V; in aic3x_i2c_probe()
1763 aic3x->micbias_vg = AIC3X_MICBIAS_AVDDV; in aic3x_i2c_probe()
1766 aic3x->micbias_vg = AIC3X_MICBIAS_OFF; in aic3x_i2c_probe()
1771 aic3x->micbias_vg = AIC3X_MICBIAS_OFF; in aic3x_i2c_probe()
1775 aic3x->gpio_reset = -1; in aic3x_i2c_probe()
1778 aic3x->model = id->driver_data; in aic3x_i2c_probe()
1780 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_probe()
1781 !aic3x_is_shared_reset(aic3x)) { in aic3x_i2c_probe()
1782 ret = gpio_request(aic3x->gpio_reset, "tlv320aic3x reset"); in aic3x_i2c_probe()
1785 gpio_direction_output(aic3x->gpio_reset, 0); in aic3x_i2c_probe()
1788 for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) in aic3x_i2c_probe()
1789 aic3x->supplies[i].supply = aic3x_supply_names[i]; in aic3x_i2c_probe()
1791 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(aic3x->supplies), in aic3x_i2c_probe()
1792 aic3x->supplies); in aic3x_i2c_probe()
1798 if (aic3x->model == AIC3X_MODEL_3007) { in aic3x_i2c_probe()
1799 ret = regmap_register_patch(aic3x->regmap, aic3007_class_d, in aic3x_i2c_probe()
1812 list_add(&aic3x->list, &reset_list); in aic3x_i2c_probe()
1817 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_probe()
1818 !aic3x_is_shared_reset(aic3x)) in aic3x_i2c_probe()
1819 gpio_free(aic3x->gpio_reset); in aic3x_i2c_probe()
1826 struct aic3x_priv *aic3x = i2c_get_clientdata(client); in aic3x_i2c_remove() local
1829 if (gpio_is_valid(aic3x->gpio_reset) && in aic3x_i2c_remove()
1830 !aic3x_is_shared_reset(aic3x)) { in aic3x_i2c_remove()
1831 gpio_set_value(aic3x->gpio_reset, 0); in aic3x_i2c_remove()
1832 gpio_free(aic3x->gpio_reset); in aic3x_i2c_remove()