mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 05:31:32 +00:00
imx: iomux: add macros to setup iomux for multiple SoC types
Allow imx_iomux_v3_setup_multiple_pads to take a multi-cpu pad_list and add macros for declaring the pad_list that take into account the SoC types supported using CONFIG_MX6QDL (supports both the MX6Q and MX6DL iomux). Cc: Stefan Roese <sr@denx.de> Cc: Otavio Salvador <otavio@ossystems.com.br> Cc: Andy Ng <andreas2025@gmail.com> Cc: Eric Nelson <eric.nelson@boundarydevices.com> Cc: Tapani Utriainen <tapani@technexion.com> Cc: Tom Rini <trini@ti.com> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
parent
fe0f7f7842
commit
5bf497e3fd
2 changed files with 39 additions and 2 deletions
|
@ -11,6 +11,7 @@
|
|||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/imx-common/iomux-v3.h>
|
||||
|
||||
static void *base = (void *)IOMUXC_BASE_ADDR;
|
||||
|
@ -54,12 +55,23 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
|
|||
#endif
|
||||
}
|
||||
|
||||
/* configures a list of pads within declared with IOMUX_PADS macro */
|
||||
void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
|
||||
unsigned count)
|
||||
{
|
||||
iomux_v3_cfg_t const *p = pad_list;
|
||||
int stride;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
imx_iomux_v3_setup_pad(*p++);
|
||||
#if defined(CONFIG_MX6QDL)
|
||||
stride = 2;
|
||||
if (!is_cpu_type(MXC_CPU_MX6Q) && !is_cpu_type(MXC_CPU_MX6D))
|
||||
p += 1;
|
||||
#else
|
||||
stride = 1;
|
||||
#endif
|
||||
for (i = 0; i < count; i++) {
|
||||
imx_iomux_v3_setup_pad(*p);
|
||||
p += stride;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,4 +175,29 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
|
|||
void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
|
||||
unsigned count);
|
||||
|
||||
/* macros for declaring and using pinmux array */
|
||||
#if defined(CONFIG_MX6QDL)
|
||||
#define IOMUX_PADS(x) (MX6Q_##x), (MX6DL_##x)
|
||||
#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(x, ARRAY_SIZE(x)/2)
|
||||
#elif defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
|
||||
#define IOMUX_PADS(x) MX6Q_##x
|
||||
#define SETUP_IOMUX_PAD(def) \
|
||||
imx_iomux_v3_setup_pad(MX6Q_##def);
|
||||
#define SETUP_IOMUX_PADS(x) \
|
||||
imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
|
||||
#else
|
||||
#define IOMUX_PADS(x) MX6DL_##x
|
||||
#define SETUP_IOMUX_PAD(def) \
|
||||
imx_iomux_v3_setup_pad(MX6DL_##def);
|
||||
#define SETUP_IOMUX_PADS(x) \
|
||||
imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
|
||||
#endif
|
||||
|
||||
#endif /* __MACH_IOMUX_V3_H__*/
|
||||
|
|
Loading…
Add table
Reference in a new issue