Lines Matching +full:in +full:- +full:hiz +full:- +full:pin34

1 // SPDX-License-Identifier: GPL-2.0
28 "vdd-a",
29 "vdd-io",
112 struct regmap *regmap = cs530x->regmap;
130 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -1270, 50, 0);
133 "Min Phase Slow Roll-off",
134 "Min Phase Fast Roll-off",
135 "Linear Phase Slow Roll-off",
136 "Linear Phase Fast Roll-off",
154 SOC_ENUM("IN Sum Select", cs530x_in_sum_ch4_enum),
169 SOC_ENUM("IN Sum Select", cs530x_in_sum_ch8_enum),
192 SOC_ENUM("IN DEC Filter Select", cs530x_in_filter_enum),
229 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
231 struct regmap *regmap = cs530x->regmap;
235 cs530x->adc_pairs_count++;
239 (w->shift * 2), CS530X_IN_MUTE);
241 ((w->shift+1) * 2), CS530X_IN_MUTE);
243 cs530x->adc_pairs_count--;
244 if (!cs530x->adc_pairs_count) {
252 (w->shift * 2), CS530X_IN_MUTE);
254 ((w->shift+1) * 2), CS530X_IN_MUTE);
258 return -EINVAL;
294 SND_SOC_DAPM_SWITCH("IN HPF", CS530X_IN_FILTER, CS530X_IN_HPF_EN_SHIFT,
338 { "IN HPF", "Switch", "ADC1" },
339 { "IN HPF", "Switch", "ADC2" },
341 { "AIF Capture", NULL, "IN HPF" },
354 { "IN HPF", "Switch", "ADC3" },
355 { "IN HPF", "Switch", "ADC4" },
371 { "IN HPF", "Switch", "ADC5" },
372 { "IN HPF", "Switch", "ADC6" },
381 { "IN HPF", "Switch", "ADC7" },
382 { "IN HPF", "Switch", "ADC8" },
421 struct regmap *regmap = cs530x->regmap;
442 dev_err(component->dev, "Invalid BCLK frequency %d\n", freq);
443 return -EINVAL;
446 dev_dbg(component->dev, "BCLK frequency is %d\n", freq);
456 struct regmap *regmap = priv->regmap;
477 dev_err(component->dev, "Invalid PLL refclk %d\n", freq);
478 return -EINVAL;
489 struct snd_soc_component *component = dai->component;
491 struct regmap *regmap = cs530x->regmap;
521 dev_err(component->dev, "Invalid sample rate %d\n", fs);
522 return -EINVAL;
525 cs530x->fs = fs;
532 dev_dbg(component->dev, "Configuring for %d %d bit TDM slots\n",
533 cs530x->tdm_slots, cs530x->tdm_width);
535 cs530x->tdm_width,
536 cs530x->tdm_slots,
554 struct snd_soc_component *component = dai->component;
556 struct regmap *regmap = priv->regmap;
566 return -EINVAL;
580 return -EINVAL;
590 return -EINVAL;
611 dev_err(component->dev, "Invalid MCLK %d\n", freq);
619 struct snd_soc_component *component = dai->component;
621 struct regmap *regmap = cs530x->regmap;
656 dev_err(component->dev, "Invalid TX slot(s) 0x%x\n", tx_mask);
657 return -EINVAL;
660 cs530x->tdm_width = slot_width;
661 cs530x->tdm_slots = slots;
675 .name = "cs530x-dai",
693 struct regmap *regmap = cs530x->regmap;
706 return -EINVAL;
716 dev_err(component->dev, "Invalid PLL source %d\n", source);
717 return -EINVAL;
733 switch (cs530x->devtype) {
769 dev_err(component->dev, "Invalid device type %d\n",
770 cs530x->devtype);
771 return -EINVAL;
781 struct regmap *regmap = cs530x->regmap;
786 dev_err(component->dev, "Invalid MCLK source rate %d\n",
788 return -EINVAL;
791 cs530x->mclk_rate = freq;
796 dev_err(component->dev, "Invalid clock id %d\n", clk_id);
797 return -EINVAL;
828 struct device *dev = cs530x->dev;
832 ret = regmap_read(cs530x->regmap, CS530X_DEVID, &dev_id);
836 ret = regmap_read(cs530x->regmap, CS530X_REVID, &rev);
844 cs530x->num_adcs = 2;
847 cs530x->num_adcs = 4;
850 cs530x->num_adcs = 8;
853 return dev_err_probe(dev, -EINVAL, "Invalid device ID 0x%x\n",
862 struct regmap *regmap = cs530x->regmap;
863 struct device *dev = cs530x->dev;
866 switch (cs530x->num_adcs) {
868 if (device_property_read_bool(dev, "cirrus,in-hiz-pin78"))
871 if (device_property_read_bool(dev, "cirrus,in-hiz-pin56"))
876 if (device_property_read_bool(dev, "cirrus,in-hiz-pin34"))
881 if (device_property_read_bool(dev, "cirrus,in-hiz-pin12"))
886 return dev_err_probe(dev, -EINVAL,
888 cs530x->num_adcs);
894 struct device *dev = cs530x->dev;
897 cs530x->dev_dai = devm_kmemdup(dev, &cs530x_dai,
898 sizeof(*(cs530x->dev_dai)),
900 if (!cs530x->dev_dai)
901 return -ENOMEM;
903 for (i = 0; i < ARRAY_SIZE(cs530x->supplies); i++)
904 cs530x->supplies[i].supply = cs530x_supply_names[i];
906 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(cs530x->supplies),
907 cs530x->supplies);
911 ret = regulator_bulk_enable(ARRAY_SIZE(cs530x->supplies),
912 cs530x->supplies);
916 cs530x->reset_gpio = devm_gpiod_get_optional(dev, "reset",
918 if (IS_ERR(cs530x->reset_gpio)) {
919 ret = dev_err_probe(dev, PTR_ERR(cs530x->reset_gpio),
924 if (cs530x->reset_gpio) {
926 gpiod_set_value_cansleep(cs530x->reset_gpio, 0);
934 if (!cs530x->reset_gpio) {
935 ret = regmap_write(cs530x->regmap, CS530X_SW_RESET,
947 cs530x->dev_dai->capture.channels_max = cs530x->num_adcs;
950 &soc_component_dev_cs530x, cs530x->dev_dai, 1);
959 gpiod_set_value_cansleep(cs530x->reset_gpio, 1);
962 regulator_bulk_disable(ARRAY_SIZE(cs530x->supplies),
963 cs530x->supplies);