summaryrefslogtreecommitdiff
path: root/include/sound
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.cirrus.com>2024-01-29 16:27:32 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-10-17 15:24:07 +0200
commite905bc71e7ed093bbfe7cd15c6742afba7304c58 (patch)
tree903741ba00437000aeecb2e48f7488a16747c32f /include/sound
parent9790a7acc3527f5cd2dd3b273f6df8e02e432793 (diff)
downloadlinux-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.h1
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);