adc3xxx
return regmap_update_bits(adc3xxx->regmap,
struct adc3xxx *adc3xxx = gpiochip_get_data(chip);
ret = regmap_read(adc3xxx->regmap, ADC3XXX_MICBIAS_CTRL, ®val);
ret = regmap_read(adc3xxx->regmap, adc3xxx_gpio_ctrl_reg[offset], ®val);
static void adc3xxx_free_gpio(struct adc3xxx *adc3xxx)
gpiochip_remove(&adc3xxx->gpio_chip);
static void adc3xxx_init_gpio(struct adc3xxx *adc3xxx)
adc3xxx->gpio_chip = adc3xxx_gpio_chip;
adc3xxx->gpio_chip.ngpio = ADC3XXX_GPIOS_MAX;
adc3xxx->gpio_chip.parent = adc3xxx->dev;
adc3xxx->gpio_chip.base = -1;
ret = gpiochip_add_data(&adc3xxx->gpio_chip, adc3xxx);
dev_err(adc3xxx->dev, "Failed to add gpios: %d\n", ret);
unsigned int cfg = adc3xxx->gpio_cfg[gpio];
regmap_update_bits(adc3xxx->regmap,
if (adc3xxx->micbias_gpo[micbias])
vg = adc3xxx->micbias_vg[micbias];
regmap_update_bits(adc3xxx->regmap,
static int adc3xxx_parse_dt_gpio(struct adc3xxx *adc3xxx,
struct device *dev = adc3xxx->dev;
static int adc3xxx_parse_dt_micbias_gpo(struct adc3xxx *adc3xxx,
struct device *dev = adc3xxx->dev;
static int adc3xxx_parse_dt_micbias_vg(struct adc3xxx *adc3xxx,
struct device *dev = adc3xxx->dev;
struct adc3xxx *adc3xxx = snd_soc_component_get_drvdata(component);
i = adc3xxx_get_divs(component->dev, adc3xxx->sysclk,
params_rate(params), adc3xxx->pll_mode);
if (!adc3xxx->use_pll) {
adc3xxx->use_pll = 1;
if (adc3xxx->use_pll) {
adc3xxx->use_pll = 0;
struct adc3xxx *adc3xxx = snd_soc_component_get_drvdata(component);
ret = adc3xxx_parse_pll_mode(clk_id, &adc3xxx->pll_mode);
adc3xxx->sysclk = freq;
freq, adc3xxx_pll_mode_text(adc3xxx->pll_mode));
struct adc3xxx *adc3xxx = snd_soc_component_get_drvdata(component);
if (master && !adc3xxx->master)
else if (!master && adc3xxx->master)
adc3xxx->master = master;
struct adc3xxx *adc3xxx = NULL;
adc3xxx = devm_kzalloc(dev, sizeof(struct adc3xxx), GFP_KERNEL);
if (!adc3xxx)
adc3xxx->dev = dev;
adc3xxx->rst_pin = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(adc3xxx->rst_pin)) {
return dev_err_probe(dev, PTR_ERR(adc3xxx->rst_pin),
adc3xxx->mclk = devm_clk_get(dev, NULL);
if (IS_ERR(adc3xxx->mclk)) {
return dev_err_probe(dev, PTR_ERR(adc3xxx->mclk),
} else if (adc3xxx->mclk) {
ret = clk_prepare_enable(adc3xxx->mclk);
dev_dbg(dev, "Enabled MCLK, freq %lu Hz\n", clk_get_rate(adc3xxx->mclk));
ret = adc3xxx_parse_dt_gpio(adc3xxx, "ti,dmdin-gpio1", &adc3xxx->gpio_cfg[0]);
ret = adc3xxx_parse_dt_gpio(adc3xxx, "ti,dmclk-gpio2", &adc3xxx->gpio_cfg[1]);
ret = adc3xxx_parse_dt_micbias_gpo(adc3xxx, "ti,micbias1-gpo", &adc3xxx->micbias_gpo[0]);
ret = adc3xxx_parse_dt_micbias_gpo(adc3xxx, "ti,micbias2-gpo", &adc3xxx->micbias_gpo[1]);
ret = adc3xxx_parse_dt_micbias_vg(adc3xxx, "ti,micbias1-vg", &adc3xxx->micbias_vg[0]);
ret = adc3xxx_parse_dt_micbias_vg(adc3xxx, "ti,micbias2-vg", &adc3xxx->micbias_vg[1]);
adc3xxx->regmap = devm_regmap_init_i2c(i2c, &adc3xxx_regmap);
if (IS_ERR(adc3xxx->regmap)) {
ret = PTR_ERR(adc3xxx->regmap);
i2c_set_clientdata(i2c, adc3xxx);
adc3xxx->type = (uintptr_t)i2c_get_match_data(i2c);
gpiod_set_value_cansleep(adc3xxx->rst_pin, 1);
gpiod_set_value_cansleep(adc3xxx->rst_pin, 0);
adc3xxx_init_gpio(adc3xxx);
clk_disable_unprepare(adc3xxx->mclk);
struct adc3xxx *adc3xxx = i2c_get_clientdata(client);
clk_disable_unprepare(adc3xxx->mclk);
adc3xxx_free_gpio(adc3xxx);
struct adc3xxx *adc3xxx = gpiochip_get_data(chip);
if (adc3xxx->gpio_cfg[offset] != 0 &&
adc3xxx->gpio_cfg[offset] != ADC3XXX_GPIO_GPO + 1)
if (!adc3xxx->micbias_gpo[offset - ADC3XXX_GPIO_PINS])
struct adc3xxx *adc3xxx = gpiochip_get_data(chip);
vg = adc3xxx->micbias_vg[micbias];
return regmap_update_bits(adc3xxx->regmap,