[alsa-devel] [PATCH] ASOC: imx: audmux: add a integrated configuration function

Shawn Guo shawn.guo at linaro.org
Thu Jan 31 15:22:45 CET 2013


On Thu, Jan 31, 2013 at 02:42:46PM +0800, Gary Zhang wrote:
> based on imx_audmux_v2_configure_port(), add a integrated
> interface to configure audmux port conveniently
> 
> Signed-off-by: Gary Zhang <b13634 at freescale.com>
> ---
>  sound/soc/fsl/imx-audmux.c |   43 ++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 42 insertions(+), 1 deletions(-)
> 
> diff --git a/sound/soc/fsl/imx-audmux.c b/sound/soc/fsl/imx-audmux.c
> index 251f4d9..ebd38a0 100644
> --- a/sound/soc/fsl/imx-audmux.c
> +++ b/sound/soc/fsl/imx-audmux.c
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright 2012 Freescale Semiconductor, Inc.
> + * Copyright 2012-2013 Freescale Semiconductor, Inc.
>   * Copyright 2012 Linaro Ltd.
>   * Copyright 2009 Pengutronix, Sascha Hauer <s.hauer at pengutronix.de>
>   *
> @@ -244,6 +244,47 @@ int imx_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
>  }
>  EXPORT_SYMBOL_GPL(imx_audmux_v2_configure_port);
>  
> +int imx_audmux_configure_port(unsigned int int_port, unsigned int ext_port)

We have imx_audmux_v1_configure_port and imx_audmux_v2_configure_port,
but you name a imx_audmux_v2_configure_port only helper as
imx_audmux_configure_port which is not good.

> +{
> +	int ret;
> +
> +	if ((int_port > 7) || (ext_port > 7))
> +		return -EINVAL;

This check is not really scalable, as we may have different ports
on different SoCs.

> +
> +	if (audmux_type != IMX31_AUDMUX)
> +		return -EINVAL;
> +
> +	if (!audmux_base)
> +		return -ENOSYS;

These checks will be done imx_audmux_v2_configure_port() again then.
So all in all, this consolidation does not really fit well.

Mark,

I just found there are much more code between imx_sgtl5000_probe
and imx_wm8962_probe than just above audmux setup.  I'm thinking
about consolidate them at a higher level.  But can you give it a
go on Gary's patch, and then I can start the consolidation from
there?  I promise I will send a follow-up patch to do it.

Shawn

> +
> +	if (audmux_clk)
> +		clk_prepare_enable(audmux_clk);
> +
> +	int_port--;
> +	ext_port--;
> +	ret = imx_audmux_v2_configure_port(int_port,
> +			IMX_AUDMUX_V2_PTCR_SYN |
> +			IMX_AUDMUX_V2_PTCR_TFSEL(ext_port) |
> +			IMX_AUDMUX_V2_PTCR_TCSEL(ext_port) |
> +			IMX_AUDMUX_V2_PTCR_TFSDIR |
> +			IMX_AUDMUX_V2_PTCR_TCLKDIR,
> +			IMX_AUDMUX_V2_PDCR_RXDSEL(ext_port));
> +	if (ret) {
> +		pr_err("audmux internal port setup failed\n");
> +		return ret;
> +	}
> +	imx_audmux_v2_configure_port(ext_port,
> +			IMX_AUDMUX_V2_PTCR_SYN,
> +			IMX_AUDMUX_V2_PDCR_RXDSEL(int_port));
> +	if (ret) {
> +		pr_err("audmux external port setup failed\n");
> +		return ret;
> +	}
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_GPL(imx_audmux_configure_port);



More information about the Alsa-devel mailing list