Lines Matching defs:aic31xx
158 struct aic31xx_priv *aic31xx;
383 static int aic31xx_wait_bits(struct aic31xx_priv *aic31xx, unsigned int reg,
389 int ret = regmap_read(aic31xx->regmap, reg, &bits);
393 ret = regmap_read(aic31xx->regmap, reg, &bits);
397 dev_err(aic31xx->dev,
412 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
452 return aic31xx_wait_bits(aic31xx, reg, mask, mask,
455 return aic31xx_wait_bits(aic31xx, reg, mask, 0,
515 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
522 aic31xx->micbias_vg <<
778 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
780 if (!(aic31xx->codec_type & DAC31XX_BIT))
787 if (aic31xx->codec_type & AIC31XX_STEREO_CLASS_D_BIT)
802 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
805 if (aic31xx->codec_type & DAC31XX_BIT) {
829 if (aic31xx->codec_type & AIC31XX_STEREO_CLASS_D_BIT) {
859 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
866 if (!aic31xx->sysclk || !aic31xx->p_div) {
870 mclk_p = aic31xx->sysclk / aic31xx->p_div;
914 (aic31xx->p_div << 4) | aic31xx_divs[i].pll_r);
943 aic31xx->rate_div_line = i;
949 aic31xx->p_div,
967 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1003 if (aic31xx->sysclk_id == AIC31XX_PLL_CLKIN_BCLK) {
1004 aic31xx->sysclk = params_rate(params) * params_width(params) *
1006 aic31xx->p_div = 1;
1033 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1038 aic31xx->master_dapm_route_applied) {
1045 if (!ret && !(aic31xx->codec_type & DAC31XX_BIT))
1053 aic31xx->master_dapm_route_applied = false;
1055 !aic31xx->master_dapm_route_applied) {
1062 if (!ret && !(aic31xx->codec_type & DAC31XX_BIT))
1070 aic31xx->master_dapm_route_applied = true;
1163 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1173 dev_err(aic31xx->dev, "%s: Too high mclk frequency %u\n",
1177 aic31xx->p_div = i;
1180 if (aic31xx_divs[i].mclk_p == freq / aic31xx->p_div)
1183 dev_err(aic31xx->dev, "%s: Unsupported frequency %d\n",
1192 aic31xx->sysclk_id = clk_id;
1193 aic31xx->sysclk = freq;
1203 struct aic31xx_priv *aic31xx = disable_nb->aic31xx;
1210 if (aic31xx->gpio_reset)
1211 gpiod_set_value(aic31xx->gpio_reset, 1);
1213 regcache_mark_dirty(aic31xx->regmap);
1214 dev_dbg(aic31xx->dev, "## %s: DISABLE received\n", __func__);
1220 static int aic31xx_reset(struct aic31xx_priv *aic31xx)
1224 if (aic31xx->gpio_reset) {
1225 gpiod_set_value(aic31xx->gpio_reset, 1);
1227 gpiod_set_value(aic31xx->gpio_reset, 0);
1229 ret = regmap_write(aic31xx->regmap, AIC31XX_RESET, 1);
1238 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1243 aic31xx_divs[aic31xx->rate_div_line].rate);
1248 if (aic31xx_divs[aic31xx->rate_div_line].nadc)
1250 if (aic31xx_divs[aic31xx->rate_div_line].madc)
1271 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1274 ret = regulator_bulk_enable(ARRAY_SIZE(aic31xx->supplies),
1275 aic31xx->supplies);
1279 regcache_cache_only(aic31xx->regmap, false);
1282 ret = aic31xx_reset(aic31xx);
1284 dev_err(aic31xx->dev, "Could not reset device: %d\n", ret);
1286 ret = regcache_sync(aic31xx->regmap);
1290 regcache_cache_only(aic31xx->regmap, true);
1291 regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies),
1292 aic31xx->supplies);
1301 aic31xx_set_jack(component, aic31xx->jack, NULL);
1308 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1310 regcache_cache_only(aic31xx->regmap, true);
1311 regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies),
1312 aic31xx->supplies);
1352 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1354 aic31xx->jack = jack;
1357 regmap_write(aic31xx->regmap, AIC31XX_HSDETECT,
1365 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component);
1368 dev_dbg(aic31xx->dev, "## %s\n", __func__);
1370 aic31xx->component = component;
1372 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) {
1373 aic31xx->disable_nb[i].nb.notifier_call =
1375 aic31xx->disable_nb[i].aic31xx = aic31xx;
1377 aic31xx->supplies[i].consumer,
1378 &aic31xx->disable_nb[i].nb);
1387 regcache_cache_only(aic31xx->regmap, true);
1388 regcache_mark_dirty(aic31xx->regmap);
1401 aic31xx->ocmv << AIC31XX_HPD_OCMV_SHIFT);
1492 struct aic31xx_priv *aic31xx = data;
1493 struct device *dev = aic31xx->dev;
1498 ret = regmap_read(aic31xx->regmap, AIC31XX_INTRDACFLAG, &value);
1517 ret = regmap_read(aic31xx->regmap, AIC31XX_INTRDACFLAG2,
1528 ret = regmap_read(aic31xx->regmap, AIC31XX_HSDETECT, &val);
1546 if (aic31xx->jack)
1547 snd_soc_jack_report(aic31xx->jack, status,
1557 ret = regmap_read(aic31xx->regmap, AIC31XX_OFFLAG, &value);
1644 struct aic31xx_priv *aic31xx;
1652 aic31xx = devm_kzalloc(&i2c->dev, sizeof(*aic31xx), GFP_KERNEL);
1653 if (!aic31xx)
1656 aic31xx->regmap = devm_regmap_init_i2c(i2c, &aic31xx_i2c_regmap);
1657 if (IS_ERR(aic31xx->regmap)) {
1658 ret = PTR_ERR(aic31xx->regmap);
1663 regcache_cache_only(aic31xx->regmap, true);
1665 aic31xx->dev = &i2c->dev;
1666 aic31xx->irq = i2c->irq;
1668 aic31xx->codec_type = id->driver_data;
1670 dev_set_drvdata(aic31xx->dev, aic31xx);
1672 fwnode_property_read_u32(aic31xx->dev->fwnode, "ai31xx-micbias-vg",
1678 aic31xx->micbias_vg = micbias_value;
1681 dev_err(aic31xx->dev, "Bad ai31xx-micbias-vg value %d\n",
1683 aic31xx->micbias_vg = MICBIAS_2_0V;
1686 if (dev_get_platdata(aic31xx->dev)) {
1687 memcpy(&aic31xx->pdata, dev_get_platdata(aic31xx->dev), sizeof(aic31xx->pdata));
1688 aic31xx->codec_type = aic31xx->pdata.codec_type;
1689 aic31xx->micbias_vg = aic31xx->pdata.micbias_vg;
1692 aic31xx->gpio_reset = devm_gpiod_get_optional(aic31xx->dev, "reset",
1694 if (IS_ERR(aic31xx->gpio_reset))
1695 return dev_err_probe(aic31xx->dev, PTR_ERR(aic31xx->gpio_reset),
1698 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++)
1699 aic31xx->supplies[i].supply = aic31xx_supply_names[i];
1701 ret = devm_regulator_bulk_get(aic31xx->dev,
1702 ARRAY_SIZE(aic31xx->supplies),
1703 aic31xx->supplies);
1705 return dev_err_probe(aic31xx->dev, ret, "Failed to request supplies\n");
1707 aic31xx_configure_ocmv(aic31xx);
1709 if (aic31xx->irq > 0) {
1710 regmap_update_bits(aic31xx->regmap, AIC31XX_GPIO1,
1715 regmap_write(aic31xx->regmap, AIC31XX_INT1CTRL,
1721 ret = devm_request_threaded_irq(aic31xx->dev, aic31xx->irq,
1723 IRQF_ONESHOT, "aic31xx-irq",
1724 aic31xx);
1726 dev_err(aic31xx->dev, "Unable to request IRQ\n");
1731 if (aic31xx->codec_type & DAC31XX_BIT)