Unverified Commit f5468bee authored by Hector Martin's avatar Hector Martin Committed by Mark Brown
Browse files

ASoC: tas2764: Set the SDOUT polarity correctly



TX launch polarity needs to be the opposite of RX capture polarity, to
generate the right bit slot alignment.

Reviewed-by: default avatarNeal Gompa <neal@gompa.dev>
Signed-off-by: default avatarHector Martin <marcan@marcan.st>
Signed-off-by: default avatarJames Calligeros <jcalligeros99@gmail.com>
Link: https://patch.msgid.link/20250218-apple-codec-changes-v2-28-932760fd7e07@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a3f17235
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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)