From 8ccaa7eb76742579864ddf834a8ea9c036c2cc5a Mon Sep 17 00:00:00 2001 From: Richard Fitzgerald Date: Wed, 17 Aug 2022 13:23:43 +0100 Subject: [PATCH 1/5] ASoC: cs42l42: Don't include kernel.h kernel.h includes a lot of other headers that we don't need. Replace with an include of types.h. Signed-off-by: Richard Fitzgerald Link: https://lore.kernel.org/r/20220817122347.1356773-2-rf@opensource.cirrus.com Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l42.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index d545a593a251..c212112cf87e 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include From b48d1da00fc8f32f7f75b8a34eb484f08b39ffaa Mon Sep 17 00:00:00 2001 From: Richard Fitzgerald Date: Wed, 17 Aug 2022 13:23:44 +0100 Subject: [PATCH 2/5] ASoC: cs42l42: Add include dependencies to cs42l42.h Make cs42l42.h include the other headers it depends on instead of assuming that the .c file already included them. Signed-off-by: Richard Fitzgerald Link: https://lore.kernel.org/r/20220817122347.1356773-3-rf@opensource.cirrus.com Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l42.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sound/soc/codecs/cs42l42.h b/sound/soc/codecs/cs42l42.h index 5f50970375d4..1d53e0e050ee 100644 --- a/sound/soc/codecs/cs42l42.h +++ b/sound/soc/codecs/cs42l42.h @@ -12,7 +12,12 @@ #ifndef __CS42L42_H__ #define __CS42L42_H__ +#include +#include +#include #include +#include +#include #include #include From dbd231732c99e336c2ece4a70896139e7f5a51a7 Mon Sep 17 00:00:00 2001 From: Richard Fitzgerald Date: Wed, 17 Aug 2022 13:23:45 +0100 Subject: [PATCH 3/5] ASoC: cs42l42: Move cs42l42_supply_names to .c file The array of supply name strings doesn't need to be in the header file. Move it to the .c file. Signed-off-by: Richard Fitzgerald Link: https://lore.kernel.org/r/20220817122347.1356773-4-rf@opensource.cirrus.com Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l42.c | 9 +++++++++ sound/soc/codecs/cs42l42.h | 8 -------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index c212112cf87e..abe3f91274fb 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -37,6 +37,14 @@ #include "cs42l42.h" #include "cirrus_legacy.h" +static const char * const cs42l42_supply_names[] = { + "VA", + "VP", + "VCP", + "VD_FILT", + "VL", +}; + static const struct reg_default cs42l42_reg_defaults[] = { { CS42L42_FRZ_CTL, 0x00 }, { CS42L42_SRC_CTL, 0x10 }, @@ -2214,6 +2222,7 @@ static int cs42l42_i2c_probe(struct i2c_client *i2c_client) return ret; } + BUILD_BUG_ON(ARRAY_SIZE(cs42l42_supply_names) != ARRAY_SIZE(cs42l42->supplies)); for (i = 0; i < ARRAY_SIZE(cs42l42->supplies); i++) cs42l42->supplies[i].supply = cs42l42_supply_names[i]; diff --git a/sound/soc/codecs/cs42l42.h b/sound/soc/codecs/cs42l42.h index 1d53e0e050ee..50299c9f283a 100644 --- a/sound/soc/codecs/cs42l42.h +++ b/sound/soc/codecs/cs42l42.h @@ -21,14 +21,6 @@ #include #include -static const char *const cs42l42_supply_names[CS42L42_NUM_SUPPLIES] = { - "VA", - "VP", - "VCP", - "VD_FILT", - "VL", -}; - struct cs42l42_private { struct regmap *regmap; struct device *dev; From db568aab37c1af80057c12c97e6af049495c3e4a Mon Sep 17 00:00:00 2001 From: Richard Fitzgerald Date: Wed, 17 Aug 2022 13:23:46 +0100 Subject: [PATCH 4/5] ASoC: cs42l42: Fix comment typo in cs42l42_slow_start_put() Fix "much change together" to "must change together". It's probably obvious what was meant but it's nice to fix it. Signed-off-by: Richard Fitzgerald Link: https://lore.kernel.org/r/20220817122347.1356773-5-rf@opensource.cirrus.com Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l42.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index abe3f91274fb..40d5a2d98f2f 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -403,7 +403,7 @@ static int cs42l42_slow_start_put(struct snd_kcontrol *kcontrol, struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); u8 val; - /* all bits of SLOW_START_EN much change together */ + /* all bits of SLOW_START_EN must change together */ switch (ucontrol->value.integer.value[0]) { case 0: val = 0; From c2683ecfd1850cc99829691b2e1d90f1a6d75b8b Mon Sep 17 00:00:00 2001 From: Richard Fitzgerald Date: Wed, 17 Aug 2022 13:23:47 +0100 Subject: [PATCH 5/5] ASoC: cs42l42: Use snd_soc_tdm_params_to_bclk() Use the new snd_soc_tdm_params_to_bclk() helper function to calculate the bclk. This function handles most of the previous manipulation and makes the code tidier. Signed-off-by: Richard Fitzgerald Link: https://lore.kernel.org/r/20220817122347.1356773-6-rf@opensource.cirrus.com Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l42.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index 40d5a2d98f2f..de1e276bdf7d 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -893,22 +893,21 @@ static int cs42l42_pcm_hw_params(struct snd_pcm_substream *substream, struct cs42l42_private *cs42l42 = snd_soc_component_get_drvdata(component); unsigned int channels = params_channels(params); unsigned int width = (params_width(params) / 8) - 1; + unsigned int slot_width = 0; unsigned int val = 0; int ret; cs42l42->srate = params_rate(params); - cs42l42->bclk = snd_soc_params_to_bclk(params); - - /* I2S frame always has 2 channels even for mono audio */ - if (channels == 1) - cs42l42->bclk *= 2; /* * Assume 24-bit samples are in 32-bit slots, to prevent SCLK being * more than assumed (which would result in overclocking). */ if (params_width(params) == 24) - cs42l42->bclk = (cs42l42->bclk / 3) * 4; + slot_width = 32; + + /* I2S frame always has multiple of 2 channels */ + cs42l42->bclk = snd_soc_tdm_params_to_bclk(params, slot_width, 0, 2); switch (substream->stream) { case SNDRV_PCM_STREAM_CAPTURE: