mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
ASoC: fsl-asoc-card: use integer type for fll_id and pll_id
As the pll_id and pll_id can be zero (WM8960_SYSCLK_AUTO)
with the commit 2bbc2df46e
("ASoC: wm8960: Make automatic the
default clocking mode")
Then the machine driver will skip to call set_sysclk() and set_pll()
for codec, when the sysclk rate is different with what wm8960 read
at probe, the output sound frequency is wrong.
So change the fll_id and pll_id initial value, still keep machine
driver's behavior same as before.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1695202992-24864-1-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
197c53c8ec
commit
2b21207afd
@ -52,8 +52,8 @@ struct codec_priv {
|
||||
unsigned long mclk_freq;
|
||||
unsigned long free_freq;
|
||||
u32 mclk_id;
|
||||
u32 fll_id;
|
||||
u32 pll_id;
|
||||
int fll_id;
|
||||
int pll_id;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -206,7 +206,7 @@ static int fsl_asoc_card_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
|
||||
/* Specific configuration for PLL */
|
||||
if (codec_priv->pll_id && codec_priv->fll_id) {
|
||||
if (codec_priv->pll_id >= 0 && codec_priv->fll_id >= 0) {
|
||||
if (priv->sample_format == SNDRV_PCM_FORMAT_S24_LE)
|
||||
pll_out = priv->sample_rate * 384;
|
||||
else
|
||||
@ -248,7 +248,7 @@ static int fsl_asoc_card_hw_free(struct snd_pcm_substream *substream)
|
||||
|
||||
priv->streams &= ~BIT(substream->stream);
|
||||
|
||||
if (!priv->streams && codec_priv->pll_id && codec_priv->fll_id) {
|
||||
if (!priv->streams && codec_priv->pll_id >= 0 && codec_priv->fll_id >= 0) {
|
||||
/* Force freq to be free_freq to avoid error message in codec */
|
||||
ret = snd_soc_dai_set_sysclk(asoc_rtd_to_codec(rtd, 0),
|
||||
codec_priv->mclk_id,
|
||||
@ -621,6 +621,10 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
|
||||
priv->card.dapm_routes = audio_map;
|
||||
priv->card.num_dapm_routes = ARRAY_SIZE(audio_map);
|
||||
priv->card.driver_name = DRIVER_NAME;
|
||||
|
||||
priv->codec_priv.fll_id = -1;
|
||||
priv->codec_priv.pll_id = -1;
|
||||
|
||||
/* Diversify the card configurations */
|
||||
if (of_device_is_compatible(np, "fsl,imx-audio-cs42888")) {
|
||||
codec_dai_name = "cs42888";
|
||||
|
Loading…
Reference in New Issue
Block a user