Skip to content

Commit

Permalink
ASoC: tas2770: Factor out set_ivsense_slots
Browse files Browse the repository at this point in the history
Add a new explicit function for the setting of I/V sense TDM slots.

Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
Link: https://patch.msgid.link/20250227-apple-codec-changes-v3-5-cbb130030acf@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Martin Povišer authored and Mark Brown committed Mar 13, 2025
1 parent f8d5f28 commit 6553ee0
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions sound/soc/codecs/tas2770.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,31 @@ static int tas2770_mute(struct snd_soc_dai *dai, int mute, int direction)
return tas2770_update_pwr_ctrl(tas2770);
}

static int tas2770_set_ivsense_transmit(struct tas2770_priv *tas2770,
int i_slot, int v_slot)
{
struct snd_soc_component *component = tas2770->component;
int ret;

ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG5,
TAS2770_TDM_CFG_REG5_VSNS_MASK |
TAS2770_TDM_CFG_REG5_50_MASK,
TAS2770_TDM_CFG_REG5_VSNS_ENABLE |
v_slot);
if (ret < 0)
return ret;

ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG6,
TAS2770_TDM_CFG_REG6_ISNS_MASK |
TAS2770_TDM_CFG_REG6_50_MASK,
TAS2770_TDM_CFG_REG6_ISNS_ENABLE |
i_slot);
if (ret < 0)
return ret;

return 0;
}

static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth)
{
int ret;
Expand Down Expand Up @@ -221,19 +246,8 @@ static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth)
if (ret < 0)
return ret;

ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG5,
TAS2770_TDM_CFG_REG5_VSNS_MASK |
TAS2770_TDM_CFG_REG5_50_MASK,
TAS2770_TDM_CFG_REG5_VSNS_ENABLE |
tas2770->v_sense_slot);
if (ret < 0)
return ret;

ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG6,
TAS2770_TDM_CFG_REG6_ISNS_MASK |
TAS2770_TDM_CFG_REG6_50_MASK,
TAS2770_TDM_CFG_REG6_ISNS_ENABLE |
tas2770->i_sense_slot);
ret = tas2770_set_ivsense_transmit(tas2770, tas2770->i_sense_slot,
tas2770->v_sense_slot);
if (ret < 0)
return ret;

Expand Down

0 comments on commit 6553ee0

Please sign in to comment.