All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Nelson <eric.nelson@boundarydevices.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 09/12] IMX: add additional function for pinmux using an array
Date: Tue, 29 Apr 2014 08:22:42 -0700	[thread overview]
Message-ID: <535FC3C2.1020103@boundarydevices.com> (raw)
In-Reply-To: <1398716258-8420-10-git-send-email-tharvey@gateworks.com>

Hi Tim,

On 04/28/2014 01:17 PM, 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 don't think a blind reference to the previously proposed solution
helps in understanding this patch, and an example would be more helpful.

> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
> v2:
>   - moved macros for declaring and using structs for array variant
>   - removed non-related whitespace cleanup
> ---
>   arch/arm/imx-common/iomux-v3.c             | 19 +++++++++++++++----
>   arch/arm/include/asm/imx-common/iomux-v3.h | 15 +++++++++++++++
>   2 files changed, 30 insertions(+), 4 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
>   }
>

It's odd that git generated removal and re-insertion of this bit:

> -void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
> -				      unsigned count)

I think 'start_offs' would be clearer than 'list'.

The function name ..._array() also doesn't really capture what's
going on here. Naming is hard though, and I'm not coming up
with something else.

Perhaps 'sparse', 'skip', or alternate?

> +/* 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..2f7a1cb 100644
> --- a/arch/arm/include/asm/imx-common/iomux-v3.h
> +++ b/arch/arm/include/asm/imx-common/iomux-v3.h
> @@ -167,7 +167,22 @@ 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);

Ditto about function and parameter naming.

>   void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
>   				     unsigned count);
>

It doesn't get any simpler than this:

> +/* macros for declaring and using pinmux array */
> +#define IOMUX_PADS(x) (MX6Q_##x), (MX6DL_##x)

In a similar vein to my comment about Patch 8, I do wonder if a
minor extension of this will allow use with a single-variant
board though.

We have some custom designs that really only function with
one variant (usually i.MX6DQ) and it seems wrong to have
the other variant included.

> +#define SETUP_IOMUX_PAD(def)					\
> +if (is_cpu_type(MXC_CPU_MX6Q)) {				\
> +	imx_iomux_v3_setup_pad(MX6Q_##def);			\
> +} else {							\
> +	imx_iomux_v3_setup_pad(MX6DL_##def);			\
> +}
> +#define SETUP_IOMUX_PADS(x)					\
> +	imx_iomux_v3_setup_multiple_pads_array(x,		\
> +	ARRAY_SIZE(x)/2, is_cpu_type(MXC_CPU_MX6Q) ? 0 : 1, 2)
> +
>   #endif	/* __MACH_IOMUX_V3_H__*/
>

Please don't mis-interpret my comments as any form of Nack.

This patch moves the ball forward, and the approach of building
two lists into one prevents duplication of tables quite nicely.

Regards,


Eric

  reply	other threads:[~2014-04-29 15:22 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-28 20:17 [U-Boot] [PATCH 00/12] MX6: SPL NAND support Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 01/12] SPL: NAND: remove CONFIG_SYS_NAND_PAGE_SIZE Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 02/12] SPL: NAND: add support for mxs nand Tim Harvey
2014-05-02 20:56   ` Scott Wood
2014-05-06  4:08     ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 03/12] MX6: add common SPL configuration Tim Harvey
2014-04-29  4:14   ` Eric Nelson
2014-04-29  6:37     ` Igor Grinberg
2014-04-29 11:55       ` Tim Harvey
2014-05-05  9:05   ` Stefano Babic
2014-05-07 17:01   ` Nikita Kiryanov
2014-04-28 20:17 ` [U-Boot] [PATCH 04/12] spl: consolidate arch/arm/include/asm/arch-*/spl.h Tim Harvey
2014-04-30  5:39   ` Masahiro Yamada
2014-05-05  9:08     ` Stefano Babic
2014-04-28 20:17 ` [U-Boot] [PATCH 05/12] MX6: add boot device support for SPL Tim Harvey
2014-04-29  4:28   ` Eric Nelson
2014-05-05  9:14   ` Stefano Babic
2014-05-05 15:46     ` Tim Harvey
2014-05-05 18:30       ` Stefano Babic
2014-05-06  6:36       ` Tapani Utriainen
2014-05-06  7:55         ` Stefano Babic
2014-05-06 15:42           ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 06/12] IMX: add comments and remove unused struct fields Tim Harvey
2014-05-05 10:28   ` Stefano Babic
2014-04-28 20:17 ` [U-Boot] [PATCH 07/12] MX6: add structs for mmdc and ddr iomux registers Tim Harvey
2014-04-29 14:20   ` Eric Nelson
2014-05-05 10:34   ` Stefano Babic
2014-05-05 15:52     ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 08/12] MX6: add mmdc configuration for MX6Q/MX6DL Tim Harvey
2014-04-29 15:15   ` Eric Nelson
2014-04-29 18:19     ` Tim Harvey
2014-04-29 18:26       ` Eric Nelson
2014-04-29 18:35     ` Otavio Salvador
2014-04-28 20:17 ` [U-Boot] [PATCH 09/12] IMX: add additional function for pinmux using an array Tim Harvey
2014-04-29 15:22   ` Eric Nelson [this message]
2014-05-06  4:35     ` Tim Harvey
2014-05-07 16:59       ` Nikita Kiryanov
2014-05-08  4:11         ` Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 10/12] imx: ventana: split read_eeprom into standalone file Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 11/12] imx: ventana: auto-configure for IMX6Q vs IMX6DL Tim Harvey
2014-04-28 20:17 ` [U-Boot] [PATCH 12/12] imx: ventana: switch to SPL Tim Harvey
2014-05-06 18:18   ` Tim Harvey
2014-05-06 18:45     ` York Sun
2014-05-06 19:11     ` Jeroen Hofstee
2014-05-06 23:35       ` Tim Harvey
2014-05-07 16:14         ` York Sun
2014-05-07 18:43           ` Jeroen Hofstee
2014-05-07 20:27           ` Tim Harvey
2014-05-07 20:29             ` York Sun
2014-05-07 20:35               ` Tim Harvey
2014-05-07 20:36                 ` York Sun
2014-05-07  9:29     ` Stefano Babic
2014-05-14  4:58       ` Tim Harvey
2014-05-14  5:03         ` Tim Harvey
2014-05-14 22:32           ` Tim Harvey
2014-05-15  9:20             ` Stefano Babic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=535FC3C2.1020103@boundarydevices.com \
    --to=eric.nelson@boundarydevices.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.