Lines Matching defs:adcx140

634 static int adcx140_reset(struct adcx140_priv *adcx140)
638 if (adcx140->gpio_reset) {
639 gpiod_direction_output(adcx140->gpio_reset, 0);
642 gpiod_direction_output(adcx140->gpio_reset, 1);
644 ret = regmap_write(adcx140->regmap, ADCX140_SW_RESET,
654 static void adcx140_pwr_ctrl(struct adcx140_priv *adcx140, bool power_state)
661 if (adcx140->micbias_vg && power_state)
664 regmap_update_bits(adcx140->regmap, ADCX140_PWR_CFG,
673 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
695 adcx140_pwr_ctrl(adcx140, false);
700 adcx140_pwr_ctrl(adcx140, true);
709 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
768 adcx140->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
770 adcx140_pwr_ctrl(adcx140, false);
784 adcx140_pwr_ctrl(adcx140, true);
794 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
815 adcx140->tdm_delay = lsb;
816 adcx140->slot_width = slot_width;
827 static int adcx140_configure_gpo(struct adcx140_priv *adcx140)
835 ret = device_property_read_u32_array(adcx140->dev,
843 dev_err(adcx140->dev, "GPO%d config out of range\n", i + 1);
848 dev_err(adcx140->dev, "GPO%d drive out of range\n", i + 1);
854 ret = regmap_write(adcx140->regmap, ADCX140_GPO_CFG0 + i,
864 static int adcx140_configure_gpio(struct adcx140_priv *adcx140)
871 gpio_count = device_property_count_u32(adcx140->dev,
879 ret = device_property_read_u32_array(adcx140->dev, "ti,gpio-config",
885 dev_err(adcx140->dev, "GPIO config out of range\n");
890 dev_err(adcx140->dev, "GPIO drive out of range\n");
897 return regmap_write(adcx140->regmap, ADCX140_GPIO_CFG0, gpio_output_val);
902 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
917 ret = device_property_read_u32(adcx140->dev, "ti,mic-bias-source",
921 adcx140->micbias_vg = false;
923 adcx140->micbias_vg = true;
926 ret = device_property_read_u32(adcx140->dev, "ti,vref-source",
932 dev_err(adcx140->dev, "Mic Bias source value is invalid\n");
938 ret = adcx140_reset(adcx140);
942 if (adcx140->supply_areg == NULL)
945 ret = regmap_write(adcx140->regmap, ADCX140_SLEEP_CFG, sleep_cfg_val);
947 dev_err(adcx140->dev, "setting sleep config failed %d\n", ret);
954 pdm_count = device_property_count_u32(adcx140->dev,
957 ret = device_property_read_u32_array(adcx140->dev,
966 ret = regmap_write(adcx140->regmap, ADCX140_PDM_CFG,
972 gpi_count = device_property_count_u32(adcx140->dev, "ti,gpi-config");
974 ret = device_property_read_u32_array(adcx140->dev,
983 ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG0,
991 ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG1,
997 ret = adcx140_configure_gpio(adcx140);
1001 ret = adcx140_configure_gpo(adcx140);
1005 ret = regmap_update_bits(adcx140->regmap, ADCX140_BIAS_CFG,
1009 dev_err(adcx140->dev, "setting MIC bias failed %d\n", ret);
1011 tx_high_z = device_property_read_bool(adcx140->dev, "ti,asi-tx-drive");
1013 ret = regmap_update_bits(adcx140->regmap, ADCX140_ASI_CFG0,
1016 dev_err(adcx140->dev, "Setting Tx drive failed %d\n", ret);
1021 adcx140_pwr_ctrl(adcx140, true);
1029 struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
1035 adcx140_pwr_ctrl(adcx140, true);
1038 adcx140_pwr_ctrl(adcx140, false);
1087 struct adcx140_priv *adcx140;
1090 adcx140 = devm_kzalloc(&i2c->dev, sizeof(*adcx140), GFP_KERNEL);
1091 if (!adcx140)
1094 adcx140->dev = &i2c->dev;
1096 adcx140->gpio_reset = devm_gpiod_get_optional(adcx140->dev,
1098 if (IS_ERR(adcx140->gpio_reset))
1101 adcx140->supply_areg = devm_regulator_get_optional(adcx140->dev,
1103 if (IS_ERR(adcx140->supply_areg)) {
1104 if (PTR_ERR(adcx140->supply_areg) == -EPROBE_DEFER)
1107 adcx140->supply_areg = NULL;
1109 ret = regulator_enable(adcx140->supply_areg);
1111 dev_err(adcx140->dev, "Failed to enable areg\n");
1116 adcx140->regmap = devm_regmap_init_i2c(i2c, &adcx140_i2c_regmap);
1117 if (IS_ERR(adcx140->regmap)) {
1118 ret = PTR_ERR(adcx140->regmap);
1124 i2c_set_clientdata(i2c, adcx140);