Skip to content

Commit e3de798

Browse files
bravlbroonie
authored andcommitted
ASoC: tas571x: add separate tas5733 controls
The controls between the tas5717 and tas5733 should not be shared since the biquad and register setup is not identical. For example, writing to 0x5c on the tas5717 modifies ch2_bq[10] while on the tas5733 this is ch1_cross_bq[3]. see https://www.ti.com/lit/ds/symlink/tas5733l.pdf and https://www.ti.com/lit/ds/symlink/tas5717.pdf for more details on the register maps. Signed-off-by: Bram Vlerick <[email protected]> Link: https://patch.msgid.link/20250527-tas5733-biquad-fix-v1-1-0d3d941700bb@openpixelsystems.org Signed-off-by: Mark Brown <[email protected]>
1 parent 16719d4 commit e3de798

File tree

2 files changed

+98
-1
lines changed

2 files changed

+98
-1
lines changed

sound/soc/codecs/tas571x.c

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,69 @@ static const struct regmap_config tas5721_regmap_config = {
718718
.volatile_table = &tas571x_volatile_regs,
719719
};
720720

721+
static const struct snd_kcontrol_new tas5733_controls[] = {
722+
/* MVOL LSB is ignored - see comments in tas571x_i2c_probe() */
723+
SOC_SINGLE_TLV("Master Volume",
724+
TAS571X_MVOL_REG, 1, 0x1ff, 1,
725+
tas5717_volume_tlv),
726+
SOC_DOUBLE_R_TLV("Speaker Volume",
727+
TAS571X_CH1_VOL_REG, TAS571X_CH2_VOL_REG,
728+
1, 0x1ff, 1, tas5717_volume_tlv),
729+
SOC_DOUBLE("Speaker Switch",
730+
TAS571X_SOFT_MUTE_REG,
731+
TAS571X_SOFT_MUTE_CH1_SHIFT, TAS571X_SOFT_MUTE_CH2_SHIFT,
732+
1, 1),
733+
734+
SOC_DOUBLE_R_RANGE("CH1 Mixer Volume",
735+
TAS5717_CH1_LEFT_CH_MIX_REG,
736+
TAS5717_CH1_RIGHT_CH_MIX_REG,
737+
16, 0, 0x80, 0),
738+
739+
SOC_DOUBLE_R_RANGE("CH2 Mixer Volume",
740+
TAS5717_CH2_LEFT_CH_MIX_REG,
741+
TAS5717_CH2_RIGHT_CH_MIX_REG,
742+
16, 0, 0x80, 0),
743+
744+
/*
745+
* The biquads are named according to the register names.
746+
* Please note that TI's TAS57xx Graphical Development Environment
747+
* tool names them different.
748+
*/
749+
BIQUAD_COEFS("CH1 - Biquad 0", TAS5733_CH1_BQ0_REG),
750+
BIQUAD_COEFS("CH1 - Biquad 1", TAS5733_CH1_BQ1_REG),
751+
BIQUAD_COEFS("CH1 - Biquad 2", TAS5733_CH1_BQ2_REG),
752+
BIQUAD_COEFS("CH1 - Biquad 3", TAS5733_CH1_BQ3_REG),
753+
BIQUAD_COEFS("CH1 - Biquad 4", TAS5733_CH1_BQ4_REG),
754+
BIQUAD_COEFS("CH1 - Biquad 5", TAS5733_CH1_BQ5_REG),
755+
BIQUAD_COEFS("CH1 - Biquad 6", TAS5733_CH1_BQ6_REG),
756+
BIQUAD_COEFS("CH1 - Biquad 7", TAS5733_CH1_BQ7_REG),
757+
BIQUAD_COEFS("CH1 - Biquad 8", TAS5733_CH1_BQ8_REG),
758+
BIQUAD_COEFS("CH1 - Biquad 9", TAS5733_CH1_BQ9_REG),
759+
BIQUAD_COEFS("CH1 - Biquad 10", TAS5733_CH1_BQ10_REG),
760+
761+
BIQUAD_COEFS("CH2 - Biquad 0", TAS5733_CH2_BQ0_REG),
762+
BIQUAD_COEFS("CH2 - Biquad 1", TAS5733_CH2_BQ1_REG),
763+
BIQUAD_COEFS("CH2 - Biquad 2", TAS5733_CH2_BQ2_REG),
764+
BIQUAD_COEFS("CH2 - Biquad 3", TAS5733_CH2_BQ3_REG),
765+
BIQUAD_COEFS("CH2 - Biquad 4", TAS5733_CH2_BQ4_REG),
766+
BIQUAD_COEFS("CH2 - Biquad 5", TAS5733_CH2_BQ5_REG),
767+
BIQUAD_COEFS("CH2 - Biquad 6", TAS5733_CH2_BQ6_REG),
768+
BIQUAD_COEFS("CH2 - Biquad 7", TAS5733_CH2_BQ7_REG),
769+
BIQUAD_COEFS("CH2 - Biquad 8", TAS5733_CH2_BQ8_REG),
770+
BIQUAD_COEFS("CH2 - Biquad 9", TAS5733_CH2_BQ9_REG),
771+
BIQUAD_COEFS("CH2 - Biquad 10", TAS5733_CH2_BQ10_REG),
772+
773+
BIQUAD_COEFS("CH1 - Cross Biquad 0", TAS5733_CH1_CBQ0_REG),
774+
BIQUAD_COEFS("CH1 - Cross Biquad 1", TAS5733_CH1_CBQ1_REG),
775+
BIQUAD_COEFS("CH1 - Cross Biquad 2", TAS5733_CH1_CBQ2_REG),
776+
BIQUAD_COEFS("CH1 - Cross Biquad 3", TAS5733_CH1_CBQ3_REG),
777+
778+
BIQUAD_COEFS("CH2 - Cross Biquad 0", TAS5733_CH2_CBQ0_REG),
779+
BIQUAD_COEFS("CH2 - Cross Biquad 1", TAS5733_CH2_CBQ1_REG),
780+
BIQUAD_COEFS("CH2 - Cross Biquad 2", TAS5733_CH2_CBQ2_REG),
781+
BIQUAD_COEFS("CH2 - Cross Biquad 3", TAS5733_CH2_CBQ3_REG),
782+
};
783+
721784
static const char *const tas5733_supply_names[] = {
722785
"AVDD",
723786
"DVDD",
@@ -770,7 +833,7 @@ static const struct regmap_config tas5733_regmap_config = {
770833
static const struct tas571x_chip tas5733_chip = {
771834
.supply_names = tas5733_supply_names,
772835
.num_supply_names = ARRAY_SIZE(tas5733_supply_names),
773-
.controls = tas5717_controls,
836+
.controls = tas5733_controls,
774837
.num_controls = ARRAY_SIZE(tas5717_controls),
775838
.regmap_config = &tas5733_regmap_config,
776839
.vol_reg_size = 2,

sound/soc/codecs/tas571x.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,38 @@
104104
#define TAS5717_CH2_LEFT_CH_MIX_REG 0x76
105105
#define TAS5717_CH2_RIGHT_CH_MIX_REG 0x77
106106

107+
#define TAS5733_CH1_BQ0_REG 0x26
108+
#define TAS5733_CH1_BQ1_REG 0x27
109+
#define TAS5733_CH1_BQ2_REG 0x28
110+
#define TAS5733_CH1_BQ3_REG 0x29
111+
#define TAS5733_CH1_BQ4_REG 0x2a
112+
#define TAS5733_CH1_BQ5_REG 0x2b
113+
#define TAS5733_CH1_BQ6_REG 0x2c
114+
#define TAS5733_CH1_BQ7_REG 0x2d
115+
#define TAS5733_CH1_BQ8_REG 0x2e
116+
#define TAS5733_CH1_BQ9_REG 0x2f
117+
118+
#define TAS5733_CH2_BQ0_REG 0x30
119+
#define TAS5733_CH2_BQ1_REG 0x31
120+
#define TAS5733_CH2_BQ2_REG 0x32
121+
#define TAS5733_CH2_BQ3_REG 0x33
122+
#define TAS5733_CH2_BQ4_REG 0x34
123+
#define TAS5733_CH2_BQ5_REG 0x35
124+
#define TAS5733_CH2_BQ6_REG 0x36
125+
#define TAS5733_CH2_BQ7_REG 0x37
126+
#define TAS5733_CH2_BQ8_REG 0x38
127+
#define TAS5733_CH2_BQ9_REG 0x39
128+
129+
#define TAS5733_CH1_BQ10_REG 0x58
130+
#define TAS5733_CH1_CBQ0_REG 0x59
131+
#define TAS5733_CH1_CBQ1_REG 0x5a
132+
#define TAS5733_CH1_CBQ2_REG 0x5b
133+
#define TAS5733_CH1_CBQ3_REG 0x5c
134+
135+
#define TAS5733_CH2_BQ10_REG 0x5d
136+
#define TAS5733_CH2_CBQ0_REG 0x5e
137+
#define TAS5733_CH2_CBQ1_REG 0x5f
138+
#define TAS5733_CH2_CBQ2_REG 0x60
139+
#define TAS5733_CH2_CBQ3_REG 0x61
140+
107141
#endif /* _TAS571X_H */

0 commit comments

Comments
 (0)