xref: /linux/include/sound/tas2781-comlib-i2c.h (revision a9e6060bb2a6cae6d43a98ec0794844ad01273d3)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 //
3 // ALSA SoC Texas Instruments TAS2563/TAS2781 Audio Smart Amplifier
4 //
5 // Copyright (C) 2025 Texas Instruments Incorporated
6 // https://www.ti.com
7 //
8 // The TAS2563/TAS2781 driver implements a flexible and configurable
9 // algo coefficient setting for one, two, or even multiple
10 // TAS2563/TAS2781 chips.
11 //
12 // Author: Shenghao Ding <shenghao-ding@ti.com>
13 //
14 
15 #ifndef __TAS2781_COMLIB_I2C_H__
16 #define __TAS2781_COMLIB_I2C_H__
17 
18 void tasdevice_reset(struct tasdevice_priv *tas_dev);
19 int tascodec_init(struct tasdevice_priv *tas_priv, void *codec,
20 	struct module *module,
21 	void (*cont)(const struct firmware *fw, void *context));
22 struct tasdevice_priv *tasdevice_kzalloc(struct i2c_client *i2c);
23 int tasdevice_init(struct tasdevice_priv *tas_priv);
24 int tasdev_chn_switch(struct tasdevice_priv *tas_priv,
25 	unsigned short chn);
26 int tasdevice_dev_update_bits(
27 	struct tasdevice_priv *tasdevice, unsigned short chn,
28 	unsigned int reg, unsigned int mask, unsigned int value);
29 int tasdevice_amp_putvol(struct tasdevice_priv *tas_priv,
30 	struct snd_ctl_elem_value *ucontrol, struct soc_mixer_control *mc);
31 int tasdevice_amp_getvol(struct tasdevice_priv *tas_priv,
32 	struct snd_ctl_elem_value *ucontrol, struct soc_mixer_control *mc);
33 int tasdevice_digital_getvol(struct tasdevice_priv *tas_priv,
34 	struct snd_ctl_elem_value *ucontrol, struct soc_mixer_control *mc);
35 int tasdevice_digital_putvol(struct tasdevice_priv *tas_priv,
36 	struct snd_ctl_elem_value *ucontrol, struct soc_mixer_control *mc);
37 #endif /* __TAS2781_COMLIB_I2C_H__ */
38