Lines Matching refs:aic31xx

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