diff options
| author | Richard Fitzgerald <rf@opensource.cirrus.com> | 2024-01-29 16:27:32 +0000 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-10-17 15:24:07 +0200 |
| commit | e905bc71e7ed093bbfe7cd15c6742afba7304c58 (patch) | |
| tree | 903741ba00437000aeecb2e48f7488a16747c32f /include/sound | |
| parent | 9790a7acc3527f5cd2dd3b273f6df8e02e432793 (diff) | |
| download | linux-e905bc71e7ed093bbfe7cd15c6742afba7304c58.tar.gz linux-e905bc71e7ed093bbfe7cd15c6742afba7304c58.tar.bz2 linux-e905bc71e7ed093bbfe7cd15c6742afba7304c58.zip | |
ASoC: cs35l56: Load tunings for the correct speaker models
[ Upstream commit 245eeff18d7a37693815250ae15979ce98c3d190 ]
If the "spk-id-gpios" property is present it points to GPIOs whose
value must be used to select the correct bin file to match the
speakers.
Some manufacturers use multiple sources of speakers, which need
different tunings for best performance. On these models the type of
speaker fitted is indicated by the values of one or more GPIOs. The
number formed by the GPIOs identifies the tuning required.
The speaker ID must be used in combination with the subsystem ID
(either from PCI SSID or cirrus,firmware-uid property), because the
GPIOs can only indicate variants of a specific model.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Fixes: 1a1c3d794ef6 ("ASoC: cs35l56: Use PCI SSID as the firmware UID")
Link: https://msgid.link/r/20240129162737.497-14-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'include/sound')
| -rw-r--r-- | include/sound/cs35l56.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sound/cs35l56.h b/include/sound/cs35l56.h index 4e5f35dc042a..c0f2135968fe 100644 --- a/include/sound/cs35l56.h +++ b/include/sound/cs35l56.h @@ -287,6 +287,7 @@ int cs35l56_runtime_suspend_common(struct cs35l56_base *cs35l56_base); int cs35l56_runtime_resume_common(struct cs35l56_base *cs35l56_base, bool is_soundwire); void cs35l56_init_cs_dsp(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp); int cs35l56_hw_init(struct cs35l56_base *cs35l56_base); +int cs35l56_get_speaker_id(struct cs35l56_base *cs35l56_base); int cs35l56_get_bclk_freq_id(unsigned int freq); void cs35l56_fill_supply_names(struct regulator_bulk_data *data); |
