mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
ASoC: cs35l56: ASP1 DOUT must default to Hi-Z when not transmitting
The ASP1 DOUT line must be defaulted to be high-impedance when
it is not actually transmitting data for an active channel.
In non-SoundWire modes ASP1 will usually be shared by multiple
amps so each amp must only drive the line during the slot for
an enabled TX channel.
In SoundWire mode a custom firmware can use ASP1 as a secondary
chip-to-chip audio link or as GPIO. It should be defaulted to
high-impedance since by default the purpose of this pin is not
known.
Backport note:
On kernel versions before 6.6 the cs35l56->base.regmap argument
to regmap_set_bits() must be changed to cs35l56->regmap.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Fixes: e496112529 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
Link: https://lore.kernel.org/r/20231009153412.30380-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
cc660a4a8e
commit
1bba0badff
|
|
@ -1186,6 +1186,12 @@ int cs35l56_init(struct cs35l56_private *cs35l56)
|
|||
/* Registers could be dirty after soft reset or SoundWire enumeration */
|
||||
regcache_sync(cs35l56->base.regmap);
|
||||
|
||||
/* Set ASP1 DOUT to high-impedance when it is not transmitting audio data. */
|
||||
ret = regmap_set_bits(cs35l56->base.regmap, CS35L56_ASP1_CONTROL3,
|
||||
CS35L56_ASP1_DOUT_HIZ_CTRL_MASK);
|
||||
if (ret)
|
||||
return dev_err_probe(cs35l56->base.dev, ret, "Failed to write ASP1_CONTROL3\n");
|
||||
|
||||
cs35l56->base.init_done = true;
|
||||
complete(&cs35l56->init_completion);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user