Lines Matching defs:adcx140

618 	struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(codec);
620 value->value.integer.value[0] = adcx140->phase_calib_on ? 1 : 0;
631 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(codec);
635 if (adcx140->phase_calib_on != v) {
636 adcx140->phase_calib_on = v;
681 static int adcx140_reset(struct adcx140_priv *adcx140)
685 if (adcx140->gpio_reset) {
686 gpiod_direction_output(adcx140->gpio_reset, 0);
689 gpiod_direction_output(adcx140->gpio_reset, 1);
691 ret = regmap_write(adcx140->regmap, ADCX140_SW_RESET,
701 static void adcx140_pwr_ctrl(struct adcx140_priv *adcx140, bool power_state)
705 struct snd_soc_component *component = adcx140->component;
710 if (adcx140->micbias_vg && power_state)
714 ret = regmap_write(adcx140->regmap, ADCX140_PHASE_CALIB,
715 adcx140->phase_calib_on ? 0x00 : 0x40);
721 regmap_update_bits(adcx140->regmap, ADCX140_PWR_CFG,
730 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
752 adcx140_pwr_ctrl(adcx140, false);
757 adcx140_pwr_ctrl(adcx140, true);
766 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
823 adcx140->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
825 adcx140_pwr_ctrl(adcx140, false);
839 adcx140_pwr_ctrl(adcx140, true);
849 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
871 adcx140->slot_width = slot_width;
882 static int adcx140_configure_gpo(struct adcx140_priv *adcx140)
890 ret = device_property_read_u32_array(adcx140->dev,
898 dev_err(adcx140->dev, "GPO%d config out of range\n", i + 1);
903 dev_err(adcx140->dev, "GPO%d drive out of range\n", i + 1);
909 ret = regmap_write(adcx140->regmap, ADCX140_GPO_CFG0 + i,
919 static int adcx140_configure_gpio(struct adcx140_priv *adcx140)
926 gpio_count = device_property_count_u32(adcx140->dev,
934 ret = device_property_read_u32_array(adcx140->dev, "ti,gpio-config",
940 dev_err(adcx140->dev, "GPIO config out of range\n");
945 dev_err(adcx140->dev, "GPIO drive out of range\n");
952 return regmap_write(adcx140->regmap, ADCX140_GPIO_CFG0, gpio_output_val);
957 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
972 ret = device_property_read_u32(adcx140->dev, "ti,mic-bias-source",
976 adcx140->micbias_vg = false;
978 adcx140->micbias_vg = true;
981 ret = device_property_read_u32(adcx140->dev, "ti,vref-source",
987 dev_err(adcx140->dev, "Mic Bias source value is invalid\n");
993 ret = adcx140_reset(adcx140);
997 if (adcx140->supply_areg == NULL)
1000 ret = regmap_write(adcx140->regmap, ADCX140_SLEEP_CFG, sleep_cfg_val);
1002 dev_err(adcx140->dev, "setting sleep config failed %d\n", ret);
1009 pdm_count = device_property_count_u32(adcx140->dev,
1012 ret = device_property_read_u32_array(adcx140->dev,
1021 ret = regmap_write(adcx140->regmap, ADCX140_PDM_CFG,
1027 gpi_count = device_property_count_u32(adcx140->dev, "ti,gpi-config");
1029 ret = device_property_read_u32_array(adcx140->dev,
1038 ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG0,
1046 ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG1,
1052 ret = adcx140_configure_gpio(adcx140);
1056 ret = adcx140_configure_gpo(adcx140);
1060 ret = regmap_update_bits(adcx140->regmap, ADCX140_BIAS_CFG,
1064 dev_err(adcx140->dev, "setting MIC bias failed %d\n", ret);
1066 tx_high_z = device_property_read_bool(adcx140->dev, "ti,asi-tx-drive");
1068 ret = regmap_update_bits(adcx140->regmap, ADCX140_ASI_CFG0,
1071 dev_err(adcx140->dev, "Setting Tx drive failed %d\n", ret);
1076 adcx140_pwr_ctrl(adcx140, true);
1084 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
1090 adcx140_pwr_ctrl(adcx140, true);
1093 adcx140_pwr_ctrl(adcx140, false);
1142 struct adcx140_priv *adcx140 = arg;
1144 regulator_disable(adcx140->supply_areg);
1149 struct adcx140_priv *adcx140;
1152 adcx140 = devm_kzalloc(&i2c->dev, sizeof(*adcx140), GFP_KERNEL);
1153 if (!adcx140)
1156 adcx140->phase_calib_on = false;
1157 adcx140->dev = &i2c->dev;
1159 adcx140->gpio_reset = devm_gpiod_get_optional(adcx140->dev,
1161 if (IS_ERR(adcx140->gpio_reset))
1164 adcx140->supply_areg = devm_regulator_get_optional(adcx140->dev,
1166 if (IS_ERR(adcx140->supply_areg)) {
1167 if (PTR_ERR(adcx140->supply_areg) == -EPROBE_DEFER)
1170 adcx140->supply_areg = NULL;
1172 ret = regulator_enable(adcx140->supply_areg);
1174 dev_err(adcx140->dev, "Failed to enable areg\n");
1178 ret = devm_add_action_or_reset(&i2c->dev, adcx140_disable_regulator, adcx140);
1183 adcx140->regmap = devm_regmap_init_i2c(i2c, &adcx140_i2c_regmap);
1184 if (IS_ERR(adcx140->regmap)) {
1185 ret = PTR_ERR(adcx140->regmap);
1191 i2c_set_clientdata(i2c, adcx140);