[U-Boot] [PATCH 09/11] IMX: add additional function for pinmux using an array

Nikita Kiryanov nikita at compulab.co.il
Wed Apr 9 16:56:25 CEST 2014


Hi Tim,

On 04/03/2014 09:01 AM, Tim Harvey wrote:
> Add new function that can take an array of iomux configs, an index, and
> a stride to allow a multi-dimentional array of pinmux values to be used
> to define pinmux values per cpu-type.
>
> This takes a different approach to previously proposed solutions which used
> multiple arrays of pad lists. The goal is to eliminate having these multiple
> arrays such as 'mx6q_uart1_pads' and 'mx6dl_uart1_pads' which are almost
> identical copies of each other except for the MX6Q/MX6DL prefix on the PAD.

I like this approach, but I think you should also define the IOMUX,
SETUP_PAD, and SETUP_PADS macros from patch 10 in this file, as they
(macros and function) are clearly meant to be used together.

>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>   arch/arm/imx-common/iomux-v3.c             | 19 +++++++++++++++----
>   arch/arm/include/asm/imx-common/iomux-v3.h |  5 ++++-
>   2 files changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/imx-common/iomux-v3.c b/arch/arm/imx-common/iomux-v3.c
> index b59b802..d3e1e30 100644
> --- a/arch/arm/imx-common/iomux-v3.c
> +++ b/arch/arm/imx-common/iomux-v3.c
> @@ -46,12 +46,23 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
>   #endif
>   }
>
> -void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
> -				      unsigned count)
> +/* configures a list of pads within an array of lists */
> +void imx_iomux_v3_setup_multiple_pads_array(iomux_v3_cfg_t const *pad_list,
> +					    unsigned count, unsigned list,
> +					    unsigned stride)
>   {
>   	iomux_v3_cfg_t const *p = pad_list;
>   	int i;
>
> -	for (i = 0; i < count; i++)
> -		imx_iomux_v3_setup_pad(*p++);
> +	p += list;
> +	for (i = 0; i < count; i++) {
> +		imx_iomux_v3_setup_pad(*p);
> +		p += stride;
> +	}
> +}
> +
> +void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
> +				      unsigned count)
> +{
> +	imx_iomux_v3_setup_multiple_pads_array(pad_list, count, 0, 1);
>   }
> diff --git a/arch/arm/include/asm/imx-common/iomux-v3.h b/arch/arm/include/asm/imx-common/iomux-v3.h
> index dec11a1..c8cc45b 100644
> --- a/arch/arm/include/asm/imx-common/iomux-v3.h
> +++ b/arch/arm/include/asm/imx-common/iomux-v3.h
> @@ -167,7 +167,10 @@ typedef u64 iomux_v3_cfg_t;
>   #define GPIO_PORTF		(5 << GPIO_PORT_SHIFT)
>
>   void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
> +void imx_iomux_v3_setup_multiple_pads_array(iomux_v3_cfg_t const *pad_list,
> +					    unsigned count, unsigned list,
> +					    unsigned stride);
>   void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
> -				     unsigned count);
> +				      unsigned count);

The above change is a cleanup and should not be in this patch.

>
>   #endif	/* __MACH_IOMUX_V3_H__*/
>


-- 
Regards,
Nikita.


More information about the U-Boot mailing list