tscs42xx
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->audio_params_lock);
tscs42xx->bclk_ratio = ratio;
mutex_unlock(&tscs42xx->audio_params_lock);
static int part_is_valid(struct tscs42xx *tscs42xx)
ret = regmap_read(tscs42xx->regmap, R_DEVIDH, ®);
ret = regmap_read(tscs42xx->regmap, R_DEVIDL, ®);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
switch (tscs42xx->sysclk_src_id) {
freq = clk_get_rate(tscs42xx->sysclk);
static inline void init_coeff_ram_cache(struct tscs42xx *tscs42xx)
u8 *coeff_ram = tscs42xx->coeff_ram;
struct tscs42xx *tscs42xx;
tscs42xx = devm_kzalloc(&i2c->dev, sizeof(*tscs42xx), GFP_KERNEL);
if (!tscs42xx) {
i2c_set_clientdata(i2c, tscs42xx);
tscs42xx->sysclk = devm_clk_get(&i2c->dev, src_names[src]);
if (!IS_ERR(tscs42xx->sysclk)) {
} else if (PTR_ERR(tscs42xx->sysclk) != -ENOENT) {
ret = PTR_ERR(tscs42xx->sysclk);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
tscs42xx->sysclk_src_id = src;
tscs42xx->regmap = devm_regmap_init_i2c(i2c, &tscs42xx_regmap);
if (IS_ERR(tscs42xx->regmap)) {
ret = PTR_ERR(tscs42xx->regmap);
init_coeff_ram_cache(tscs42xx);
ret = part_is_valid(tscs42xx);
ret = regmap_write(tscs42xx->regmap, R_RESET, RV_RESET_ENABLE);
ret = regmap_register_patch(tscs42xx->regmap, tscs42xx_patch,
mutex_init(&tscs42xx->audio_params_lock);
mutex_init(&tscs42xx->coeff_ram_lock);
mutex_init(&tscs42xx->pll_lock);
ret = regmap_write(tscs42xx->regmap, R_DACCRADDR, addr);
ret = regmap_bulk_write(tscs42xx->regmap, R_DACCRWRL,
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
freq_out = sample_rate_to_pll_freq_out(tscs42xx->samplerate);
mutex_lock(&tscs42xx->pll_lock);
mutex_unlock(&tscs42xx->pll_lock);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->pll_lock);
mutex_unlock(&tscs42xx->pll_lock);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->coeff_ram_lock);
&tscs42xx->coeff_ram[ctl->addr * COEFF_SIZE], params->max);
mutex_unlock(&tscs42xx->coeff_ram_lock);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->coeff_ram_lock);
tscs42xx->coeff_ram_synced = false;
memcpy(&tscs42xx->coeff_ram[ctl->addr * COEFF_SIZE],
mutex_lock(&tscs42xx->pll_lock);
ret = write_coeff_ram(component, tscs42xx->coeff_ram,
tscs42xx->coeff_ram_synced = true;
mutex_unlock(&tscs42xx->pll_lock);
mutex_unlock(&tscs42xx->coeff_ram_lock);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->coeff_ram_lock);
if (!tscs42xx->coeff_ram_synced) {
ret = write_coeff_ram(component, tscs42xx->coeff_ram, 0x00,
tscs42xx->coeff_ram_synced = true;
mutex_unlock(&tscs42xx->coeff_ram_lock);
struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component);
mutex_lock(&tscs42xx->audio_params_lock);
tscs42xx->samplerate = rate;
mutex_unlock(&tscs42xx->audio_params_lock);