adau1373
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
struct adau1373_dai *adau1373_dai = &adau1373->dais[dai->id];
regmap_update_bits(adau1373->regmap, ADAU1373_BCLKDIV(dai->id),
return regmap_update_bits(adau1373->regmap, ADAU1373_DAI(dai->id),
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
struct adau1373_dai *adau1373_dai = &adau1373->dais[dai->id];
regmap_update_bits(adau1373->regmap, ADAU1373_DAI(dai->id),
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(dai->component);
struct adau1373_dai *adau1373_dai = &adau1373->dais[dai->id];
regmap_update_bits(adau1373->regmap, ADAU1373_BCLKDIV(dai->id),
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
regmap_update_bits(adau1373->regmap, ADAU1373_PLL_CTRL6(pll_id),
regmap_update_bits(adau1373->regmap, ADAU1373_PLL_CTRL6(pll_id),
regmap_write(adau1373->regmap, ADAU1373_DPLL_CTRL(pll_id),
regmap_write(adau1373->regmap, ADAU1373_PLL_CTRL1(pll_id), pll_regs[0]);
regmap_write(adau1373->regmap, ADAU1373_PLL_CTRL2(pll_id), pll_regs[1]);
regmap_write(adau1373->regmap, ADAU1373_PLL_CTRL3(pll_id), pll_regs[2]);
regmap_write(adau1373->regmap, ADAU1373_PLL_CTRL4(pll_id), pll_regs[3]);
regmap_write(adau1373->regmap, ADAU1373_PLL_CTRL5(pll_id), pll_regs[4]);
regmap_update_bits(adau1373->regmap, ADAU1373_CLK_SRC_DIV(pll_id), 0x3f, 0x09);
static void adau1373_load_drc_settings(struct adau1373 *adau1373,
regmap_write(adau1373->regmap, ADAU1373_DRC(nr) + i, drc[i]);
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
for (i = 0; i < adau1373->num_drc; ++i) {
adau1373_load_drc_settings(adau1373, i,
adau1373->drc_setting[i]);
adau1373->num_drc);
for (i = 0; i < ARRAY_SIZE(adau1373->input_differential); ++i) {
if (adau1373->input_differential[i])
regmap_write(adau1373->regmap, ADAU1373_INPUT_MODE, val);
if (adau1373->lineout_differential)
if (adau1373->lineout_ground_sense)
regmap_write(adau1373->regmap, ADAU1373_OUTPUT_CTRL, val);
regmap_write(adau1373->regmap, ADAU1373_EP_CTRL,
(adau1373->micbias1 << ADAU1373_EP_CTRL_MICBIAS1_OFFSET) |
(adau1373->micbias2 << ADAU1373_EP_CTRL_MICBIAS2_OFFSET));
if (!adau1373->lineout_differential) {
regmap_write(adau1373->regmap, ADAU1373_ADC_CTRL,
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
regmap_update_bits(adau1373->regmap, ADAU1373_PWDN_CTRL3,
regmap_update_bits(adau1373->regmap, ADAU1373_PWDN_CTRL3,
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
regcache_sync(adau1373->regmap);
static int adau1373_parse_fw(struct device *dev, struct adau1373 *adau1373)
adau1373->input_differential[0] = true;
adau1373->input_differential[1] = true;
adau1373->input_differential[2] = true;
adau1373->input_differential[3] = true;
adau1373->lineout_differential = true;
adau1373->lineout_ground_sense = true;
ret = adau1373_get_micbias(val, &adau1373->micbias1);
ret = adau1373_get_micbias(val, &adau1373->micbias2);
adau1373->num_drc = drc_count / ADAU1373_DRC_SIZE;
if (adau1373->num_drc > ARRAY_SIZE(adau1373->drc_setting))
adau1373->num_drc);
(u8 *)&adau1373->drc_setting[0],
struct adau1373 *adau1373;
adau1373 = devm_kzalloc(&client->dev, sizeof(*adau1373), GFP_KERNEL);
if (!adau1373)
adau1373->regmap = devm_regmap_init_i2c(client,
if (IS_ERR(adau1373->regmap))
return PTR_ERR(adau1373->regmap);
regmap_write(adau1373->regmap, ADAU1373_SOFT_RESET, 0x00);
dev_set_drvdata(&client->dev, adau1373);
ret = adau1373_parse_fw(&client->dev, adau1373);
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
regmap_update_bits(adau1373->regmap, ADAU1373_PLL_CTRL6(pll_id),
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
if (!adau1373->dais[dai].clock_provider)
if (adau1373->dais[dai].clk_src == ADAU1373_CLK_SRC_PLL1)
struct adau1373 *adau1373 = snd_soc_component_get_drvdata(component);
return adau1373->dais[dai].enable_src;