On Fri, Feb 06, 2026 at 09:48:04AM +0800, Shengjiu Wang wrote:
> Add a compatible string, clock mapping table and enable the option
> 'start_before_dma' to support ASRC on the i.MX952 platform.
>
> The clock mapping table is to map the clock sources on i.MX952 to the
> clock ids in the driver, the clock ids are for all the clock sources on
> all supported platforms.
>
> Signed-off-by: Shengjiu Wang <[email protected]>
> Reviewed-by: Daniel Baluta <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>  sound/soc/fsl/fsl_asrc.c | 16 ++++++++++++++++
>  sound/soc/fsl/fsl_asrc.h | 14 ++++++++++++++
>  2 files changed, 30 insertions(+)
>
> diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c
> index 2fe25667c888..5fda9b647c70 100644
> --- a/sound/soc/fsl/fsl_asrc.c
> +++ b/sound/soc/fsl/fsl_asrc.c
> @@ -106,6 +106,12 @@ static unsigned char 
> clk_map_imx8qxp[2][ASRC_CLK_MAP_LEN] = {
>       },
>  };
>
> +static unsigned char clk_map_imx952[ASRC_CLK_MAP_LEN] = {
> +     0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 
> 0xf, 0x0,
> +     0x0, 0x1, 0x2, 0x3, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x4, 0x5, 0x6, 0x8, 
> 0xf, 0xf,
> +     0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x7, 0x9, 0xa, 0xb, 0xc, 0xd, 0xf, 0xf, 
> 0xf, 0xf,
> +};
> +
>  /*
>   * According to RM, the divider range is 1 ~ 8,
>   * prescaler is power of 2 from 1 ~ 128.
> @@ -1337,6 +1343,9 @@ static int fsl_asrc_probe(struct platform_device *pdev)
>                       asrc_priv->clk_map[IN] = clk_map_imx8qxp[map_idx];
>                       asrc_priv->clk_map[OUT] = clk_map_imx8qxp[map_idx];
>               }
> +     } else if (of_device_is_compatible(np, "fsl,imx952-asrc")) {
> +             asrc_priv->clk_map[IN] = clk_map_imx952;
> +             asrc_priv->clk_map[OUT] = clk_map_imx952;
>       }
>
>       asrc->channel_avail = 10;
> @@ -1575,11 +1584,18 @@ static const struct fsl_asrc_soc_data 
> fsl_asrc_imx8qxp_data = {
>       .channel_bits = 4,
>  };
>
> +static const struct fsl_asrc_soc_data fsl_asrc_imx952_data = {
> +     .use_edma = true,
> +     .channel_bits = 4,
> +     .start_before_dma = true,
> +};
> +
>  static const struct of_device_id fsl_asrc_ids[] = {
>       { .compatible = "fsl,imx35-asrc", .data = &fsl_asrc_imx35_data },
>       { .compatible = "fsl,imx53-asrc", .data = &fsl_asrc_imx53_data },
>       { .compatible = "fsl,imx8qm-asrc", .data = &fsl_asrc_imx8qm_data },
>       { .compatible = "fsl,imx8qxp-asrc", .data = &fsl_asrc_imx8qxp_data },
> +     { .compatible = "fsl,imx952-asrc", .data = &fsl_asrc_imx952_data },
>       {}
>  };
>  MODULE_DEVICE_TABLE(of, fsl_asrc_ids);
> diff --git a/sound/soc/fsl/fsl_asrc.h b/sound/soc/fsl/fsl_asrc.h
> index 60b6865ca952..7a81366a0ee4 100644
> --- a/sound/soc/fsl/fsl_asrc.h
> +++ b/sound/soc/fsl/fsl_asrc.h
> @@ -326,6 +326,13 @@ enum asrc_inclk {
>       INCLK_SAI6_TX_BCLK     = 0x22,
>       INCLK_HDMI_RX_SAI0_RX_BCLK     = 0x24,
>       INCLK_HDMI_TX_SAI0_TX_BCLK     = 0x25,
> +
> +     INCLK_SAI2_TX_BCLK      = 0x26,
> +     INCLK_SAI3_TX_BCLK      = 0x27,
> +     INCLK_SAI4_RX_BCLK      = 0x28,
> +     INCLK_SAI4_TX_BCLK      = 0x29,
> +     INCLK_SAI5_RX_BCLK      = 0x2a,
> +     INCLK_SAI5_TX_BCLK      = 0x2b,
>  };
>
>  enum asrc_outclk {
> @@ -366,6 +373,13 @@ enum asrc_outclk {
>       OUTCLK_SAI6_TX_BCLK     = 0x22,
>       OUTCLK_HDMI_RX_SAI0_RX_BCLK     = 0x24,
>       OUTCLK_HDMI_TX_SAI0_TX_BCLK     = 0x25,
> +
> +     OUTCLK_SAI2_TX_BCLK     = 0x26,
> +     OUTCLK_SAI3_TX_BCLK     = 0x27,
> +     OUTCLK_SAI4_RX_BCLK     = 0x28,
> +     OUTCLK_SAI4_TX_BCLK     = 0x29,
> +     OUTCLK_SAI5_RX_BCLK     = 0x2a,
> +     OUTCLK_SAI5_TX_BCLK     = 0x2b,
>  };
>
>  #define ASRC_CLK_MAX_NUM     16
> --
> 2.34.1
>

Reply via email to