diff mbox series

[v3,14/20] ASoC: fsl_micfil: Drop get_pdm_clk()

Message ID 20220405075959.2744803-15-s.hauer@pengutronix.de (mailing list archive)
State Superseded
Headers show
Series ASoC: fsl_micfil: Driver updates | expand

Commit Message

Sascha Hauer April 5, 2022, 7:59 a.m. UTC
get_pdm_clk() calculates the PDM clock based on the quality setting,
but really the PDM clock is independent of the quality, it's always
rate * 4 * micfil->osr. Just drop the function and do the calculation
in the caller.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 sound/soc/fsl/fsl_micfil.c | 38 +-------------------------------------
 1 file changed, 1 insertion(+), 37 deletions(-)

Comments

Shengjiu Wang April 7, 2022, 3:41 a.m. UTC | #1
On Tue, Apr 5, 2022 at 4:00 PM Sascha Hauer <s.hauer@pengutronix.de> wrote:

> get_pdm_clk() calculates the PDM clock based on the quality setting,
> but really the PDM clock is independent of the quality, it's always
> rate * 4 * micfil->osr. Just drop the function and do the calculation
> in the caller.
>
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  sound/soc/fsl/fsl_micfil.c | 38 +-------------------------------------
>  1 file changed, 1 insertion(+), 37 deletions(-)
>
> diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
> index 4b4b7fbbf5c4f..8335646a84d17 100644
> --- a/sound/soc/fsl/fsl_micfil.c
> +++ b/sound/soc/fsl/fsl_micfil.c
> @@ -111,42 +111,6 @@ static const struct snd_kcontrol_new
> fsl_micfil_snd_controls[] = {
>                      snd_soc_get_enum_double, snd_soc_put_enum_double),
>  };
>
> -static inline int get_pdm_clk(struct fsl_micfil *micfil,
> -                             unsigned int rate)
> -{
> -       u32 ctrl2_reg;
> -       int qsel;
> -       int bclk;
> -       int osr = MICFIL_OSR_DEFAULT;
> -
> -       regmap_read(micfil->regmap, REG_MICFIL_CTRL2, &ctrl2_reg);
> -       qsel = FIELD_GET(MICFIL_CTRL2_QSEL, ctrl2_reg);
> -
> -       switch (qsel) {
> -       case MICFIL_QSEL_HIGH_QUALITY:
> -               bclk = rate * 8 * osr / 2; /* kfactor = 0.5 */
> -               break;
> -       case MICFIL_QSEL_MEDIUM_QUALITY:
> -       case MICFIL_QSEL_VLOW0_QUALITY:
> -               bclk = rate * 4 * osr * 1; /* kfactor = 1 */
> -               break;
> -       case MICFIL_QSEL_LOW_QUALITY:
> -       case MICFIL_QSEL_VLOW1_QUALITY:
> -               bclk = rate * 2 * osr * 2; /* kfactor = 2 */
> -               break;
> -       case MICFIL_QSEL_VLOW2_QUALITY:
> -               bclk = rate * osr * 4; /* kfactor = 4 */
> -               break;
> -       default:
> -               dev_err(&micfil->pdev->dev,
> -                       "Please make sure you select a valid quality.\n");
> -               bclk = -1;
> -               break;
> -       }
> -
> -       return bclk;
> -}
> -
>  static inline int get_clk_div(struct fsl_micfil *micfil,
>                               unsigned int rate)
>  {
> @@ -155,7 +119,7 @@ static inline int get_clk_div(struct fsl_micfil
> *micfil,
>
>         mclk_rate = clk_get_rate(micfil->mclk);
>
> -       clk_div = mclk_rate / (get_pdm_clk(micfil, rate) * 2);
> +       clk_div = mclk_rate / (rate * micfil->osr * 8);
>

Where is micfil->osr assigned a value?


>
>         return clk_div;
>  }
> --
> 2.30.2
>
>
Sascha Hauer April 7, 2022, 7:04 a.m. UTC | #2
On Thu, Apr 07, 2022 at 11:41:52AM +0800, Shengjiu Wang wrote:
>    On Tue, Apr 5, 2022 at 4:00 PM Sascha Hauer <[1]s.hauer@pengutronix.de>
>    wrote:
> 
>      get_pdm_clk() calculates the PDM clock based on the quality setting,
>      but really the PDM clock is independent of the quality, it's always
>      rate * 4 * micfil->osr. Just drop the function and do the calculation
>      in the caller.
> 
>      Signed-off-by: Sascha Hauer <[2]s.hauer@pengutronix.de>
>      ---
>       sound/soc/fsl/fsl_micfil.c | 38 +-------------------------------------
>       1 file changed, 1 insertion(+), 37 deletions(-)
> 
>      diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
>      index 4b4b7fbbf5c4f..8335646a84d17 100644
>      --- a/sound/soc/fsl/fsl_micfil.c
>      +++ b/sound/soc/fsl/fsl_micfil.c
>      @@ -111,42 +111,6 @@ static const struct snd_kcontrol_new
>      fsl_micfil_snd_controls[] = {
>                           snd_soc_get_enum_double, snd_soc_put_enum_double),
>       };
> 
>      -static inline int get_pdm_clk(struct fsl_micfil *micfil,
>      -                             unsigned int rate)
>      -{
>      -       u32 ctrl2_reg;
>      -       int qsel;
>      -       int bclk;
>      -       int osr = MICFIL_OSR_DEFAULT;
>      -
>      -       regmap_read(micfil->regmap, REG_MICFIL_CTRL2, &ctrl2_reg);
>      -       qsel = FIELD_GET(MICFIL_CTRL2_QSEL, ctrl2_reg);
>      -
>      -       switch (qsel) {
>      -       case MICFIL_QSEL_HIGH_QUALITY:
>      -               bclk = rate * 8 * osr / 2; /* kfactor = 0.5 */
>      -               break;
>      -       case MICFIL_QSEL_MEDIUM_QUALITY:
>      -       case MICFIL_QSEL_VLOW0_QUALITY:
>      -               bclk = rate * 4 * osr * 1; /* kfactor = 1 */
>      -               break;
>      -       case MICFIL_QSEL_LOW_QUALITY:
>      -       case MICFIL_QSEL_VLOW1_QUALITY:
>      -               bclk = rate * 2 * osr * 2; /* kfactor = 2 */
>      -               break;
>      -       case MICFIL_QSEL_VLOW2_QUALITY:
>      -               bclk = rate * osr * 4; /* kfactor = 4 */
>      -               break;
>      -       default:
>      -               dev_err(&micfil->pdev->dev,
>      -                       "Please make sure you select a valid
>      quality.\n");
>      -               bclk = -1;
>      -               break;
>      -       }
>      -
>      -       return bclk;
>      -}
>      -
>       static inline int get_clk_div(struct fsl_micfil *micfil,
>                                    unsigned int rate)
>       {
>      @@ -155,7 +119,7 @@ static inline int get_clk_div(struct fsl_micfil
>      *micfil,
> 
>              mclk_rate = clk_get_rate(micfil->mclk);
> 
>      -       clk_div = mclk_rate / (get_pdm_clk(micfil, rate) * 2);
>      +       clk_div = mclk_rate / (rate * micfil->osr * 8);
> 
>    Where is micfil->osr assigned a value?

Should be MICFIL_OSR_DEFAULT instead.

Sascha
diff mbox series

Patch

diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
index 4b4b7fbbf5c4f..8335646a84d17 100644
--- a/sound/soc/fsl/fsl_micfil.c
+++ b/sound/soc/fsl/fsl_micfil.c
@@ -111,42 +111,6 @@  static const struct snd_kcontrol_new fsl_micfil_snd_controls[] = {
 		     snd_soc_get_enum_double, snd_soc_put_enum_double),
 };
 
-static inline int get_pdm_clk(struct fsl_micfil *micfil,
-			      unsigned int rate)
-{
-	u32 ctrl2_reg;
-	int qsel;
-	int bclk;
-	int osr = MICFIL_OSR_DEFAULT;
-
-	regmap_read(micfil->regmap, REG_MICFIL_CTRL2, &ctrl2_reg);
-	qsel = FIELD_GET(MICFIL_CTRL2_QSEL, ctrl2_reg);
-
-	switch (qsel) {
-	case MICFIL_QSEL_HIGH_QUALITY:
-		bclk = rate * 8 * osr / 2; /* kfactor = 0.5 */
-		break;
-	case MICFIL_QSEL_MEDIUM_QUALITY:
-	case MICFIL_QSEL_VLOW0_QUALITY:
-		bclk = rate * 4 * osr * 1; /* kfactor = 1 */
-		break;
-	case MICFIL_QSEL_LOW_QUALITY:
-	case MICFIL_QSEL_VLOW1_QUALITY:
-		bclk = rate * 2 * osr * 2; /* kfactor = 2 */
-		break;
-	case MICFIL_QSEL_VLOW2_QUALITY:
-		bclk = rate * osr * 4; /* kfactor = 4 */
-		break;
-	default:
-		dev_err(&micfil->pdev->dev,
-			"Please make sure you select a valid quality.\n");
-		bclk = -1;
-		break;
-	}
-
-	return bclk;
-}
-
 static inline int get_clk_div(struct fsl_micfil *micfil,
 			      unsigned int rate)
 {
@@ -155,7 +119,7 @@  static inline int get_clk_div(struct fsl_micfil *micfil,
 
 	mclk_rate = clk_get_rate(micfil->mclk);
 
-	clk_div = mclk_rate / (get_pdm_clk(micfil, rate) * 2);
+	clk_div = mclk_rate / (rate * micfil->osr * 8);
 
 	return clk_div;
 }