ASoC: Fixes for v6.14

A few fixes I and James Calligero picked out of the Asahi tree.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAme4cPgACgkQJNaLcl1U
 h9CiOAf+Oq8aRfPtDxu95ww7qo+pzg4fGIceIR2ixylkYiZbQ5IbR2KTNsaNCDSy
 IVUYh2nQQ8mV2iShkhBpTWtpIXlgI+TNSjefOpl25MC6NWJoXngbA9TG9d89zkun
 LLwuDVuXQA0+rcL+wstnNg8KrsYa1A/Xl+ku7FVLCXWxZMNZIH3BJuhW0sDwEb63
 ljovDRy7w6C6Jay74u+obygP3nkwbGQfEy3HUeqBzhRIt/d0sdSqFghF/mFUmFmC
 DjE0JcOEtdn+H4NohfRrpk2ERmVnHYUJHmxZF4Qbu2rgHqCuW/aJigjcPtoLHM+J
 bNJCtXAU2J+5TyeN8CzYtJmMTv1gvg==
 =mFba
 -----END PGP SIGNATURE-----

Merge tag 'asoc-fix-v6.14-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.14

A few fixes I and James Calligero picked out of the Asahi tree.
This commit is contained in:
Takashi Iwai 2025-02-21 14:35:09 +01:00
commit c9ca8a4f89
3 changed files with 17 additions and 3 deletions

View File

@ -365,7 +365,7 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
struct snd_soc_component *component = dai->component;
struct tas2764_priv *tas2764 = snd_soc_component_get_drvdata(component);
u8 tdm_rx_start_slot = 0, asi_cfg_0 = 0, asi_cfg_1 = 0;
u8 tdm_rx_start_slot = 0, asi_cfg_0 = 0, asi_cfg_1 = 0, asi_cfg_4 = 0;
int ret;
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
@ -374,12 +374,14 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
fallthrough;
case SND_SOC_DAIFMT_NB_NF:
asi_cfg_1 = TAS2764_TDM_CFG1_RX_RISING;
asi_cfg_4 = TAS2764_TDM_CFG4_TX_FALLING;
break;
case SND_SOC_DAIFMT_IB_IF:
asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START;
fallthrough;
case SND_SOC_DAIFMT_IB_NF:
asi_cfg_1 = TAS2764_TDM_CFG1_RX_FALLING;
asi_cfg_4 = TAS2764_TDM_CFG4_TX_RISING;
break;
}
@ -389,6 +391,12 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
if (ret < 0)
return ret;
ret = snd_soc_component_update_bits(component, TAS2764_TDM_CFG4,
TAS2764_TDM_CFG4_TX_MASK,
asi_cfg_4);
if (ret < 0)
return ret;
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START;

View File

@ -25,7 +25,7 @@
/* Power Control */
#define TAS2764_PWR_CTRL TAS2764_REG(0X0, 0x02)
#define TAS2764_PWR_CTRL_MASK GENMASK(1, 0)
#define TAS2764_PWR_CTRL_MASK GENMASK(2, 0)
#define TAS2764_PWR_CTRL_ACTIVE 0x0
#define TAS2764_PWR_CTRL_MUTE BIT(0)
#define TAS2764_PWR_CTRL_SHUTDOWN BIT(1)
@ -79,6 +79,12 @@
#define TAS2764_TDM_CFG3_RXS_SHIFT 0x4
#define TAS2764_TDM_CFG3_MASK GENMASK(3, 0)
/* TDM Configuration Reg4 */
#define TAS2764_TDM_CFG4 TAS2764_REG(0X0, 0x0d)
#define TAS2764_TDM_CFG4_TX_MASK BIT(0)
#define TAS2764_TDM_CFG4_TX_RISING 0x0
#define TAS2764_TDM_CFG4_TX_FALLING BIT(0)
/* TDM Configuration Reg5 */
#define TAS2764_TDM_CFG5 TAS2764_REG(0X0, 0x0e)
#define TAS2764_TDM_CFG5_VSNS_MASK BIT(6)

View File

@ -506,7 +506,7 @@ static int tas2770_codec_probe(struct snd_soc_component *component)
}
static DECLARE_TLV_DB_SCALE(tas2770_digital_tlv, 1100, 50, 0);
static DECLARE_TLV_DB_SCALE(tas2770_playback_volume, -12750, 50, 0);
static DECLARE_TLV_DB_SCALE(tas2770_playback_volume, -10050, 50, 0);
static const struct snd_kcontrol_new tas2770_snd_controls[] = {
SOC_SINGLE_TLV("Speaker Playback Volume", TAS2770_PLAY_CFG_REG2,