From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikita Kiryanov Date: Wed, 09 Apr 2014 17:56:25 +0300 Subject: [U-Boot] [PATCH 09/11] IMX: add additional function for pinmux using an array In-Reply-To: <1396504871-1454-10-git-send-email-tharvey@gateworks.com> References: <1396504871-1454-1-git-send-email-tharvey@gateworks.com> <1396504871-1454-10-git-send-email-tharvey@gateworks.com> Message-ID: <53455F99.6080504@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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.