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 <thar...@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.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to