Lines Matching +full:vd +full:- +full:supply

1 // SPDX-License-Identifier: GPL-2.0-or-later
9 * The data format accepted is I2S or left-justified.
130 * Default CS4271 power-up configuration
131 * Array contains non-existing in hw register at address 0
151 "vd", "vl", "va"
159 /* Current sample rate for de-emphasis control */
173 SND_SOC_DAPM_OUTPUT("AOUTA-"),
175 SND_SOC_DAPM_OUTPUT("AOUTB-"),
183 { "AOUTA-", NULL, "Playback" },
185 { "AOUTB-", NULL, "Playback" },
196 struct snd_soc_component *component = codec_dai->component;
199 cs4271->mclk = freq;
206 struct snd_soc_component *component = codec_dai->component;
213 cs4271->master = false;
216 cs4271->master = true;
220 dev_err(component->dev, "Invalid DAI format\n");
221 return -EINVAL;
227 ret = regmap_update_bits(cs4271->regmap, CS4271_ADCCTL,
234 ret = regmap_update_bits(cs4271->regmap, CS4271_ADCCTL,
240 dev_err(component->dev, "Invalid DAI format\n");
241 return -EINVAL;
244 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE1,
259 if (cs4271->deemph) {
260 /* Find closest de-emphasis freq */
263 if (abs(cs4271_deemph[i] - cs4271->rate) <
264 abs(cs4271_deemph[val] - cs4271->rate))
269 ret = regmap_update_bits(cs4271->regmap, CS4271_DACCTL,
282 ucontrol->value.integer.value[0] = cs4271->deemph;
292 cs4271->deemph = ucontrol->value.integer.value[0];
339 struct snd_soc_component *component = dai->component;
344 if (cs4271->enable_soft_reset) {
354 if ((substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
356 (substream->stream == SNDRV_PCM_STREAM_CAPTURE &&
358 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
364 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
371 cs4271->rate = params_rate(params);
374 if (cs4271->rate < 50000)
376 else if (cs4271->rate < 100000)
381 ratio = cs4271->mclk / cs4271->rate;
383 if ((cs4271_clk_tab[i].master == cs4271->master) &&
389 dev_err(component->dev, "Invalid sample rate\n");
390 return -EINVAL;
395 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE1,
405 struct snd_soc_component *component = dai->component;
419 ret = regmap_update_bits(cs4271->regmap, CS4271_VOLA,
424 ret = regmap_update_bits(cs4271->regmap, CS4271_VOLB,
433 static DECLARE_TLV_DB_SCALE(cs4271_dac_tlv, -12700, 100, 0);
441 SOC_SINGLE_BOOL_EXT("De-emphasis Switch", 0,
443 SOC_SINGLE("Auto-Mute Switch", CS4271_DACCTL, 7, 1, 0),
445 SOC_SINGLE("Soft Volume Ramp-Up Switch", CS4271_DACCTL, 3, 1, 0),
446 SOC_SINGLE("Soft Ramp-Down Switch", CS4271_DACCTL, 2, 1, 0),
450 SOC_SINGLE("Dither 16-Bit Data Switch", CS4271_ADCCTL, 5, 1, 0),
464 .name = "cs4271-hifi",
487 gpiod_direction_output(cs4271->reset, 1);
489 gpiod_set_value(cs4271->reset, 0);
501 /* Set power-down bit */
502 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
507 regcache_mark_dirty(cs4271->regmap);
508 regulator_bulk_disable(ARRAY_SIZE(cs4271->supplies), cs4271->supplies);
518 ret = regulator_bulk_enable(ARRAY_SIZE(cs4271->supplies),
519 cs4271->supplies);
521 dev_err(component->dev, "Failed to enable regulators: %d\n", ret);
529 ret = regcache_sync(cs4271->regmap);
533 /* then disable the power-down bit */
534 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
558 struct cs4271_platform_data *cs4271plat = component->dev->platform_data;
562 amutec_eq_bmutec = of_property_read_bool(component->dev->of_node,
563 "cirrus,amutec-eq-bmutec");
564 cs4271->enable_soft_reset = of_property_read_bool(component->dev->of_node,
565 "cirrus,enable-soft-reset");
567 ret = regulator_bulk_enable(ARRAY_SIZE(cs4271->supplies),
568 cs4271->supplies);
570 dev_err(component->dev, "Failed to enable regulators: %d\n", ret);
575 amutec_eq_bmutec = cs4271plat->amutec_eq_bmutec;
576 cs4271->enable_soft_reset = cs4271plat->enable_soft_reset;
582 ret = regcache_sync(cs4271->regmap);
586 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
591 ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
595 /* Power-up sequence requires 85 uS */
599 regmap_update_bits(cs4271->regmap, CS4271_MODE2,
611 gpiod_set_value(cs4271->reset, 1);
613 regcache_mark_dirty(cs4271->regmap);
614 regulator_bulk_disable(ARRAY_SIZE(cs4271->supplies), cs4271->supplies);
641 return -ENOMEM;
643 cs4271->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_ASIS);
644 if (IS_ERR(cs4271->reset))
645 return dev_err_probe(dev, PTR_ERR(cs4271->reset),
647 gpiod_set_consumer_name(cs4271->reset, "CS4271 Reset");
650 cs4271->supplies[i].supply = supply_names[i];
652 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(cs4271->supplies),
653 cs4271->supplies);
688 cs4271->regmap = regmap;