Lines Matching refs:aic31xx
157 struct aic31xx_priv *aic31xx; member
360 static int aic31xx_wait_bits(struct aic31xx_priv *aic31xx, unsigned int reg, in aic31xx_wait_bits() argument
366 int ret = regmap_read(aic31xx->regmap, reg, &bits); in aic31xx_wait_bits()
370 ret = regmap_read(aic31xx->regmap, reg, &bits); in aic31xx_wait_bits()
374 dev_err(aic31xx->dev, in aic31xx_wait_bits()
389 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_dapm_power_event() local
429 return aic31xx_wait_bits(aic31xx, reg, mask, mask, in aic31xx_dapm_power_event()
432 return aic31xx_wait_bits(aic31xx, reg, mask, 0, in aic31xx_dapm_power_event()
492 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in mic_bias_event() local
499 aic31xx->micbias_vg << in mic_bias_event()
755 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_add_controls() local
757 if (!(aic31xx->codec_type & DAC31XX_BIT)) in aic31xx_add_controls()
764 if (aic31xx->codec_type & AIC31XX_STEREO_CLASS_D_BIT) in aic31xx_add_controls()
779 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_add_widgets() local
782 if (aic31xx->codec_type & DAC31XX_BIT) { in aic31xx_add_widgets()
806 if (aic31xx->codec_type & AIC31XX_STEREO_CLASS_D_BIT) { in aic31xx_add_widgets()
836 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_setup_pll() local
843 if (!aic31xx->sysclk || !aic31xx->p_div) { in aic31xx_setup_pll()
847 mclk_p = aic31xx->sysclk / aic31xx->p_div; in aic31xx_setup_pll()
891 (aic31xx->p_div << 4) | 0x01); in aic31xx_setup_pll()
920 aic31xx->rate_div_line = i; in aic31xx_setup_pll()
926 aic31xx->p_div, in aic31xx_setup_pll()
999 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_clock_master_routes() local
1004 aic31xx->master_dapm_route_applied) { in aic31xx_clock_master_routes()
1011 if (!ret && !(aic31xx->codec_type & DAC31XX_BIT)) in aic31xx_clock_master_routes()
1019 aic31xx->master_dapm_route_applied = false; in aic31xx_clock_master_routes()
1021 !aic31xx->master_dapm_route_applied) { in aic31xx_clock_master_routes()
1028 if (!ret && !(aic31xx->codec_type & DAC31XX_BIT)) in aic31xx_clock_master_routes()
1036 aic31xx->master_dapm_route_applied = true; in aic31xx_clock_master_routes()
1130 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_set_dai_sysclk() local
1140 dev_err(aic31xx->dev, "%s: Too high mclk frequency %u\n", in aic31xx_set_dai_sysclk()
1144 aic31xx->p_div = i; in aic31xx_set_dai_sysclk()
1147 if (aic31xx_divs[i].mclk_p == freq / aic31xx->p_div) in aic31xx_set_dai_sysclk()
1150 dev_err(aic31xx->dev, "%s: Unsupported frequency %d\n", in aic31xx_set_dai_sysclk()
1159 aic31xx->sysclk = freq; in aic31xx_set_dai_sysclk()
1169 struct aic31xx_priv *aic31xx = disable_nb->aic31xx; in aic31xx_regulator_event() local
1176 if (aic31xx->gpio_reset) in aic31xx_regulator_event()
1177 gpiod_set_value(aic31xx->gpio_reset, 1); in aic31xx_regulator_event()
1179 regcache_mark_dirty(aic31xx->regmap); in aic31xx_regulator_event()
1180 dev_dbg(aic31xx->dev, "## %s: DISABLE received\n", __func__); in aic31xx_regulator_event()
1186 static int aic31xx_reset(struct aic31xx_priv *aic31xx) in aic31xx_reset() argument
1190 if (aic31xx->gpio_reset) { in aic31xx_reset()
1191 gpiod_set_value(aic31xx->gpio_reset, 1); in aic31xx_reset()
1193 gpiod_set_value(aic31xx->gpio_reset, 0); in aic31xx_reset()
1195 ret = regmap_write(aic31xx->regmap, AIC31XX_RESET, 1); in aic31xx_reset()
1204 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_clk_on() local
1209 aic31xx_divs[aic31xx->rate_div_line].rate); in aic31xx_clk_on()
1214 if (aic31xx_divs[aic31xx->rate_div_line].nadc) in aic31xx_clk_on()
1216 if (aic31xx_divs[aic31xx->rate_div_line].madc) in aic31xx_clk_on()
1237 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_power_on() local
1240 ret = regulator_bulk_enable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_on()
1241 aic31xx->supplies); in aic31xx_power_on()
1245 regcache_cache_only(aic31xx->regmap, false); in aic31xx_power_on()
1248 ret = aic31xx_reset(aic31xx); in aic31xx_power_on()
1250 dev_err(aic31xx->dev, "Could not reset device: %d\n", ret); in aic31xx_power_on()
1252 ret = regcache_sync(aic31xx->regmap); in aic31xx_power_on()
1256 regcache_cache_only(aic31xx->regmap, true); in aic31xx_power_on()
1257 regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_on()
1258 aic31xx->supplies); in aic31xx_power_on()
1267 aic31xx_set_jack(component, aic31xx->jack, NULL); in aic31xx_power_on()
1274 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_power_off() local
1276 regcache_cache_only(aic31xx->regmap, true); in aic31xx_power_off()
1277 regulator_bulk_disable(ARRAY_SIZE(aic31xx->supplies), in aic31xx_power_off()
1278 aic31xx->supplies); in aic31xx_power_off()
1318 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_set_jack() local
1320 aic31xx->jack = jack; in aic31xx_set_jack()
1323 regmap_write(aic31xx->regmap, AIC31XX_HSDETECT, in aic31xx_set_jack()
1331 struct aic31xx_priv *aic31xx = snd_soc_component_get_drvdata(component); in aic31xx_codec_probe() local
1334 dev_dbg(aic31xx->dev, "## %s\n", __func__); in aic31xx_codec_probe()
1336 aic31xx->component = component; in aic31xx_codec_probe()
1338 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) { in aic31xx_codec_probe()
1339 aic31xx->disable_nb[i].nb.notifier_call = in aic31xx_codec_probe()
1341 aic31xx->disable_nb[i].aic31xx = aic31xx; in aic31xx_codec_probe()
1343 aic31xx->supplies[i].consumer, in aic31xx_codec_probe()
1344 &aic31xx->disable_nb[i].nb); in aic31xx_codec_probe()
1353 regcache_cache_only(aic31xx->regmap, true); in aic31xx_codec_probe()
1354 regcache_mark_dirty(aic31xx->regmap); in aic31xx_codec_probe()
1367 aic31xx->ocmv << AIC31XX_HPD_OCMV_SHIFT); in aic31xx_codec_probe()
1459 struct aic31xx_priv *aic31xx = data; in aic31xx_irq() local
1460 struct device *dev = aic31xx->dev; in aic31xx_irq()
1465 ret = regmap_read(aic31xx->regmap, AIC31XX_INTRDACFLAG, &value); in aic31xx_irq()
1484 ret = regmap_read(aic31xx->regmap, AIC31XX_INTRDACFLAG2, in aic31xx_irq()
1495 ret = regmap_read(aic31xx->regmap, AIC31XX_HSDETECT, &val); in aic31xx_irq()
1513 if (aic31xx->jack) in aic31xx_irq()
1514 snd_soc_jack_report(aic31xx->jack, status, in aic31xx_irq()
1524 ret = regmap_read(aic31xx->regmap, AIC31XX_OFFLAG, &value); in aic31xx_irq()
1599 struct aic31xx_priv *aic31xx; in aic31xx_i2c_probe() local
1606 aic31xx = devm_kzalloc(&i2c->dev, sizeof(*aic31xx), GFP_KERNEL); in aic31xx_i2c_probe()
1607 if (!aic31xx) in aic31xx_i2c_probe()
1610 aic31xx->regmap = devm_regmap_init_i2c(i2c, &aic31xx_i2c_regmap); in aic31xx_i2c_probe()
1611 if (IS_ERR(aic31xx->regmap)) { in aic31xx_i2c_probe()
1612 ret = PTR_ERR(aic31xx->regmap); in aic31xx_i2c_probe()
1617 aic31xx->dev = &i2c->dev; in aic31xx_i2c_probe()
1618 aic31xx->irq = i2c->irq; in aic31xx_i2c_probe()
1620 aic31xx->codec_type = id->driver_data; in aic31xx_i2c_probe()
1622 dev_set_drvdata(aic31xx->dev, aic31xx); in aic31xx_i2c_probe()
1624 fwnode_property_read_u32(aic31xx->dev->fwnode, "ai31xx-micbias-vg", in aic31xx_i2c_probe()
1630 aic31xx->micbias_vg = micbias_value; in aic31xx_i2c_probe()
1633 dev_err(aic31xx->dev, "Bad ai31xx-micbias-vg value %d\n", in aic31xx_i2c_probe()
1635 aic31xx->micbias_vg = MICBIAS_2_0V; in aic31xx_i2c_probe()
1638 if (dev_get_platdata(aic31xx->dev)) { in aic31xx_i2c_probe()
1639 memcpy(&aic31xx->pdata, dev_get_platdata(aic31xx->dev), sizeof(aic31xx->pdata)); in aic31xx_i2c_probe()
1640 aic31xx->codec_type = aic31xx->pdata.codec_type; in aic31xx_i2c_probe()
1641 aic31xx->micbias_vg = aic31xx->pdata.micbias_vg; in aic31xx_i2c_probe()
1644 aic31xx->gpio_reset = devm_gpiod_get_optional(aic31xx->dev, "reset", in aic31xx_i2c_probe()
1646 if (IS_ERR(aic31xx->gpio_reset)) { in aic31xx_i2c_probe()
1647 if (PTR_ERR(aic31xx->gpio_reset) != -EPROBE_DEFER) in aic31xx_i2c_probe()
1648 dev_err(aic31xx->dev, "not able to acquire gpio\n"); in aic31xx_i2c_probe()
1649 return PTR_ERR(aic31xx->gpio_reset); in aic31xx_i2c_probe()
1652 for (i = 0; i < ARRAY_SIZE(aic31xx->supplies); i++) in aic31xx_i2c_probe()
1653 aic31xx->supplies[i].supply = aic31xx_supply_names[i]; in aic31xx_i2c_probe()
1655 ret = devm_regulator_bulk_get(aic31xx->dev, in aic31xx_i2c_probe()
1656 ARRAY_SIZE(aic31xx->supplies), in aic31xx_i2c_probe()
1657 aic31xx->supplies); in aic31xx_i2c_probe()
1660 dev_err(aic31xx->dev, in aic31xx_i2c_probe()
1665 aic31xx_configure_ocmv(aic31xx); in aic31xx_i2c_probe()
1667 if (aic31xx->irq > 0) { in aic31xx_i2c_probe()
1668 regmap_update_bits(aic31xx->regmap, AIC31XX_GPIO1, in aic31xx_i2c_probe()
1673 regmap_write(aic31xx->regmap, AIC31XX_INT1CTRL, in aic31xx_i2c_probe()
1679 ret = devm_request_threaded_irq(aic31xx->dev, aic31xx->irq, in aic31xx_i2c_probe()
1682 aic31xx); in aic31xx_i2c_probe()
1684 dev_err(aic31xx->dev, "Unable to request IRQ\n"); in aic31xx_i2c_probe()
1689 if (aic31xx->codec_type & DAC31XX_BIT) in aic31xx_i2c_probe()