On 11/09/2011 10:18 AM, Marek Vasut wrote: > Taken from Linux kernel with minor modifications: > > commit bf985969e27b507f734435a99df8bf745a3dbb2b > Author: Shawn Guo <shawn....@freescale.com> > Date: Mon Dec 20 22:57:43 2010 +0800 > > ARM: mxs: Add iomux support > > Signed-off-by: Marek Vasut <marek.va...@gmail.com> > Cc: Stefano Babic <sba...@denx.de> > Cc: Wolfgang Denk <w...@denx.de> > Cc: Detlev Zundel <d...@denx.de> > --- > arch/arm/cpu/arm926ejs/mx28/Makefile | 2 +- > arch/arm/cpu/arm926ejs/mx28/iomux.c | 109 ++++++ > arch/arm/include/asm/arch-mx28/iomux-mx28.h | 537 > +++++++++++++++++++++++++++ > arch/arm/include/asm/arch-mx28/iomux.h | 168 +++++++++ > 4 files changed, 815 insertions(+), 1 deletions(-) > create mode 100644 arch/arm/cpu/arm926ejs/mx28/iomux.c > create mode 100644 arch/arm/include/asm/arch-mx28/iomux-mx28.h > create mode 100644 arch/arm/include/asm/arch-mx28/iomux.h > > diff --git a/arch/arm/cpu/arm926ejs/mx28/Makefile > b/arch/arm/cpu/arm926ejs/mx28/Makefile > index 98504f9..7845310 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/Makefile > +++ b/arch/arm/cpu/arm926ejs/mx28/Makefile > @@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk > > LIB = $(obj)lib$(SOC).o > > -COBJS = clock.o mx28.o timer.o > +COBJS = clock.o mx28.o iomux.o timer.o > > SRCS := $(START:.o=.S) $(COBJS:.o=.c) > OBJS := $(addprefix $(obj),$(COBJS)) > diff --git a/arch/arm/cpu/arm926ejs/mx28/iomux.c > b/arch/arm/cpu/arm926ejs/mx28/iomux.c > new file mode 100644 > index 0000000..9ea411f > --- /dev/null > +++ b/arch/arm/cpu/arm926ejs/mx28/iomux.c > @@ -0,0 +1,109 @@ > +/* > + * Copyright 2004-2006,2010 Freescale Semiconductor, Inc. All Rights > Reserved. > + * Copyright (C) 2008 by Sascha Hauer <ker...@pengutronix.de> > + * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH, > + * <armli...@phytec.de> > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > + * MA 02110-1301, USA. > + */ > + > +#include <common.h> > +#include <asm/errno.h> > +#include <asm/io.h> > +#include <asm/arch/clock.h> > +#include <asm/arch/iomux.h> > +#include <asm/arch/imx-regs.h> > + > +#if defined(CONFIG_MX23) > +#define DRIVE_OFFSET 0x200 > +#define PULL_OFFSET 0x400 > +#elif defined(CONFIG_MX28) > +#define DRIVE_OFFSET 0x300 > +#define PULL_OFFSET 0x600 > +#else > +#error "Please select CONFIG_MX23 or CONFIG_MX28" > +#endif > + > +/* > + * configures a single pad in the iomuxer > + */ > +int mxs_iomux_setup_pad(iomux_cfg_t pad) > +{ > + u32 reg, ofs, bp, bm; > + void *iomux_base = (void *)MXS_PINCTRL_BASE; > + struct mx28_register *mxs_reg; > + > + /* muxsel */ > + ofs = 0x100; > + ofs += PAD_BANK(pad) * 0x20 + PAD_PIN(pad) / 16 * 0x10; > + bp = PAD_PIN(pad) % 16 * 2; > + bm = 0x3 << bp; > + reg = readl(iomux_base + ofs); > + reg &= ~bm; > + reg |= PAD_MUXSEL(pad) << bp; > + writel(reg, iomux_base + ofs); > + > + /* drive */ > + ofs = DRIVE_OFFSET; > + ofs += PAD_BANK(pad) * 0x40 + PAD_PIN(pad) / 8 * 0x10; > + /* mA */ > + if (PAD_MA_VALID(pad)) { > + bp = PAD_PIN(pad) % 8 * 4; > + bm = 0x3 << bp; > + reg = readl(iomux_base + ofs); > + reg &= ~bm; > + reg |= PAD_MA(pad) << bp; > + writel(reg, iomux_base + ofs); > + } > + /* vol */ > + if (PAD_VOL_VALID(pad)) { > + bp = PAD_PIN(pad) % 8 * 4 + 2; > + mxs_reg = (struct mx28_register *)(iomux_base + ofs); > + if (PAD_VOL(pad)) > + writel(1 << bp, &mxs_reg->reg_set); > + else > + writel(1 << bp, &mxs_reg->reg_clr); > + } > + > + /* pull */ > + if (PAD_PULL_VALID(pad)) { > + ofs = PULL_OFFSET; > + ofs += PAD_BANK(pad) * 0x10; > + bp = PAD_PIN(pad); > + mxs_reg = (struct mx28_register *)(iomux_base + ofs); > + if (PAD_PULL(pad)) > + writel(1 << bp, &mxs_reg->reg_set); > + else > + writel(1 << bp, &mxs_reg->reg_clr); > + } > + > + return 0; > +} > + > +int mxs_iomux_setup_multiple_pads(const iomux_cfg_t *pad_list, unsigned > count) > +{ > + const iomux_cfg_t *p = pad_list; > + int i; > + int ret; > + > + for (i = 0; i < count; i++) { > + ret = mxs_iomux_setup_pad(*p); > + if (ret) > + return ret; > + p++; > + } > + > + return 0; > +} > diff --git a/arch/arm/include/asm/arch-mx28/iomux-mx28.h > b/arch/arm/include/asm/arch-mx28/iomux-mx28.h > new file mode 100644 > index 0000000..b42820d > --- /dev/null > +++ b/arch/arm/include/asm/arch-mx28/iomux-mx28.h > @@ -0,0 +1,537 @@ > +/* > + * Copyright (C) 2009-2010 Amit Kucheria <amit.kuche...@canonical.com> > + * Copyright (C) 2010 Freescale Semiconductor, Inc. > + * > + * The code contained herein is licensed under the GNU General Public > + * License. You may obtain a copy of the GNU General Public License > + * Version 2 or later at the following locations: > + * > + * http://www.opensource.org/licenses/gpl-license.html > + * http://www.gnu.org/copyleft/gpl.html > + */ > + > +#ifndef __MACH_IOMUX_MX28_H__ > +#define __MACH_IOMUX_MX28_H__ > + > +#include <asm/arch/iomux.h> > + > +/* > + * The naming convention for the pad modes is MX28_PAD_<padname>__<padmode> > + * If <padname> or <padmode> refers to a GPIO, it is named GPIO_<unit>_<num> > + * See also iomux.h > + * > + * BANK > PIN MUX > + */ > +/* MUXSEL_0 */ > +#define MX28_PAD_GPMI_D00__GPMI_D0 MXS_IOMUX_PAD_NAKED(0, > 0, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D01__GPMI_D1 MXS_IOMUX_PAD_NAKED(0, > 1, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D02__GPMI_D2 MXS_IOMUX_PAD_NAKED(0, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D03__GPMI_D3 MXS_IOMUX_PAD_NAKED(0, > 3, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D04__GPMI_D4 MXS_IOMUX_PAD_NAKED(0, > 4, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D05__GPMI_D5 MXS_IOMUX_PAD_NAKED(0, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D06__GPMI_D6 MXS_IOMUX_PAD_NAKED(0, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_D07__GPMI_D7 MXS_IOMUX_PAD_NAKED(0, > 7, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_CE0N__GPMI_CE0N > MXS_IOMUX_PAD_NAKED(0, 16, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_CE1N__GPMI_CE1N > MXS_IOMUX_PAD_NAKED(0, 17, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_CE2N__GPMI_CE2N > MXS_IOMUX_PAD_NAKED(0, 18, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_CE3N__GPMI_CE3N > MXS_IOMUX_PAD_NAKED(0, 19, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RDY0__GPMI_READY0 > MXS_IOMUX_PAD_NAKED(0, 20, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RDY1__GPMI_READY1 > MXS_IOMUX_PAD_NAKED(0, 21, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RDY2__GPMI_READY2 > MXS_IOMUX_PAD_NAKED(0, 22, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RDY3__GPMI_READY3 > MXS_IOMUX_PAD_NAKED(0, 23, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RDN__GPMI_RDN MXS_IOMUX_PAD_NAKED(0, > 24, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_WRN__GPMI_WRN MXS_IOMUX_PAD_NAKED(0, > 25, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_ALE__GPMI_ALE MXS_IOMUX_PAD_NAKED(0, > 26, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_CLE__GPMI_CLE MXS_IOMUX_PAD_NAKED(0, > 27, PAD_MUXSEL_0) > +#define MX28_PAD_GPMI_RESETN__GPMI_RESETN MXS_IOMUX_PAD_NAKED(0, > 28, PAD_MUXSEL_0) > + > +#define MX28_PAD_LCD_D00__LCD_D0 MXS_IOMUX_PAD_NAKED(1, > 0, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D01__LCD_D1 MXS_IOMUX_PAD_NAKED(1, > 1, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D02__LCD_D2 MXS_IOMUX_PAD_NAKED(1, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D03__LCD_D3 MXS_IOMUX_PAD_NAKED(1, > 3, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D04__LCD_D4 MXS_IOMUX_PAD_NAKED(1, > 4, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D05__LCD_D5 MXS_IOMUX_PAD_NAKED(1, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D06__LCD_D6 MXS_IOMUX_PAD_NAKED(1, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D07__LCD_D7 MXS_IOMUX_PAD_NAKED(1, > 7, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D08__LCD_D8 MXS_IOMUX_PAD_NAKED(1, > 8, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D09__LCD_D9 MXS_IOMUX_PAD_NAKED(1, > 9, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D10__LCD_D10 MXS_IOMUX_PAD_NAKED(1, > 10, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D11__LCD_D11 MXS_IOMUX_PAD_NAKED(1, > 11, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D12__LCD_D12 MXS_IOMUX_PAD_NAKED(1, > 12, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D13__LCD_D13 MXS_IOMUX_PAD_NAKED(1, > 13, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D14__LCD_D14 MXS_IOMUX_PAD_NAKED(1, > 14, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D15__LCD_D15 MXS_IOMUX_PAD_NAKED(1, > 15, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D16__LCD_D16 MXS_IOMUX_PAD_NAKED(1, > 16, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D17__LCD_D17 MXS_IOMUX_PAD_NAKED(1, > 17, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D18__LCD_D18 MXS_IOMUX_PAD_NAKED(1, > 18, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D19__LCD_D19 MXS_IOMUX_PAD_NAKED(1, > 19, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D20__LCD_D20 MXS_IOMUX_PAD_NAKED(1, > 20, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D21__LCD_D21 MXS_IOMUX_PAD_NAKED(1, > 21, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D22__LCD_D22 MXS_IOMUX_PAD_NAKED(1, > 22, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_D23__LCD_D23 MXS_IOMUX_PAD_NAKED(1, > 23, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_RD_E__LCD_RD_E MXS_IOMUX_PAD_NAKED(1, > 24, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_WR_RWN__LCD_WR_RWN > MXS_IOMUX_PAD_NAKED(1, 25, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_RS__LCD_RS > MXS_IOMUX_PAD_NAKED(1, 26, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_CS__LCD_CS > MXS_IOMUX_PAD_NAKED(1, 27, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_VSYNC__LCD_VSYNC > MXS_IOMUX_PAD_NAKED(1, 28, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_HSYNC__LCD_HSYNC > MXS_IOMUX_PAD_NAKED(1, 29, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_DOTCLK__LCD_DOTCLK > MXS_IOMUX_PAD_NAKED(1, 30, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_ENABLE__LCD_ENABLE > MXS_IOMUX_PAD_NAKED(1, 31, PAD_MUXSEL_0) > + > +#define MX28_PAD_SSP0_DATA0__SSP0_D0 MXS_IOMUX_PAD_NAKED(2, > 0, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA1__SSP0_D1 MXS_IOMUX_PAD_NAKED(2, > 1, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA2__SSP0_D2 MXS_IOMUX_PAD_NAKED(2, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA3__SSP0_D3 MXS_IOMUX_PAD_NAKED(2, > 3, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA4__SSP0_D4 MXS_IOMUX_PAD_NAKED(2, > 4, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA5__SSP0_D5 MXS_IOMUX_PAD_NAKED(2, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA6__SSP0_D6 MXS_IOMUX_PAD_NAKED(2, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DATA7__SSP0_D7 MXS_IOMUX_PAD_NAKED(2, > 7, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_CMD__SSP0_CMD MXS_IOMUX_PAD_NAKED(2, > 8, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT > MXS_IOMUX_PAD_NAKED(2, 9, PAD_MUXSEL_0) > +#define MX28_PAD_SSP0_SCK__SSP0_SCK MXS_IOMUX_PAD_NAKED(2, > 10, PAD_MUXSEL_0) > +#define MX28_PAD_SSP1_SCK__SSP1_SCK MXS_IOMUX_PAD_NAKED(2, > 12, PAD_MUXSEL_0) > +#define MX28_PAD_SSP1_CMD__SSP1_CMD MXS_IOMUX_PAD_NAKED(2, > 13, PAD_MUXSEL_0) > +#define MX28_PAD_SSP1_DATA0__SSP1_D0 MXS_IOMUX_PAD_NAKED(2, > 14, PAD_MUXSEL_0) > +#define MX28_PAD_SSP1_DATA3__SSP1_D3 MXS_IOMUX_PAD_NAKED(2, > 15, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_SCK__SSP2_SCK MXS_IOMUX_PAD_NAKED(2, > 16, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_MOSI__SSP2_CMD MXS_IOMUX_PAD_NAKED(2, > 17, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_MISO__SSP2_D0 MXS_IOMUX_PAD_NAKED(2, > 18, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_SS0__SSP2_D3 MXS_IOMUX_PAD_NAKED(2, > 19, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_SS1__SSP2_D4 MXS_IOMUX_PAD_NAKED(2, > 20, PAD_MUXSEL_0) > +#define MX28_PAD_SSP2_SS2__SSP2_D5 MXS_IOMUX_PAD_NAKED(2, > 21, PAD_MUXSEL_0) > +#define MX28_PAD_SSP3_SCK__SSP3_SCK MXS_IOMUX_PAD_NAKED(2, > 24, PAD_MUXSEL_0) > +#define MX28_PAD_SSP3_MOSI__SSP3_CMD MXS_IOMUX_PAD_NAKED(2, > 25, PAD_MUXSEL_0) > +#define MX28_PAD_SSP3_MISO__SSP3_D0 MXS_IOMUX_PAD_NAKED(2, > 26, PAD_MUXSEL_0) > +#define MX28_PAD_SSP3_SS0__SSP3_D3 MXS_IOMUX_PAD_NAKED(2, > 27, PAD_MUXSEL_0) > + > +#define MX28_PAD_AUART0_RX__AUART0_RX > MXS_IOMUX_PAD_NAKED(3, 0, PAD_MUXSEL_0) > +#define MX28_PAD_AUART0_TX__AUART0_TX > MXS_IOMUX_PAD_NAKED(3, 1, PAD_MUXSEL_0) > +#define MX28_PAD_AUART0_CTS__AUART0_CTS > MXS_IOMUX_PAD_NAKED(3, 2, PAD_MUXSEL_0) > +#define MX28_PAD_AUART0_RTS__AUART0_RTS > MXS_IOMUX_PAD_NAKED(3, 3, PAD_MUXSEL_0) > +#define MX28_PAD_AUART1_RX__AUART1_RX > MXS_IOMUX_PAD_NAKED(3, 4, PAD_MUXSEL_0) > +#define MX28_PAD_AUART1_TX__AUART1_TX > MXS_IOMUX_PAD_NAKED(3, 5, PAD_MUXSEL_0) > +#define MX28_PAD_AUART1_CTS__AUART1_CTS > MXS_IOMUX_PAD_NAKED(3, 6, PAD_MUXSEL_0) > +#define MX28_PAD_AUART1_RTS__AUART1_RTS > MXS_IOMUX_PAD_NAKED(3, 7, PAD_MUXSEL_0) > +#define MX28_PAD_AUART2_RX__AUART2_RX > MXS_IOMUX_PAD_NAKED(3, 8, PAD_MUXSEL_0) > +#define MX28_PAD_AUART2_TX__AUART2_TX > MXS_IOMUX_PAD_NAKED(3, 9, PAD_MUXSEL_0) > +#define MX28_PAD_AUART2_CTS__AUART2_CTS > MXS_IOMUX_PAD_NAKED(3, 10, PAD_MUXSEL_0) > +#define MX28_PAD_AUART2_RTS__AUART2_RTS > MXS_IOMUX_PAD_NAKED(3, 11, PAD_MUXSEL_0) > +#define MX28_PAD_AUART3_RX__AUART3_RX > MXS_IOMUX_PAD_NAKED(3, 12, PAD_MUXSEL_0) > +#define MX28_PAD_AUART3_TX__AUART3_TX > MXS_IOMUX_PAD_NAKED(3, 13, PAD_MUXSEL_0) > +#define MX28_PAD_AUART3_CTS__AUART3_CTS > MXS_IOMUX_PAD_NAKED(3, 14, PAD_MUXSEL_0) > +#define MX28_PAD_AUART3_RTS__AUART3_RTS > MXS_IOMUX_PAD_NAKED(3, 15, PAD_MUXSEL_0) > +#define MX28_PAD_PWM0__PWM_0 MXS_IOMUX_PAD_NAKED(3, > 16, PAD_MUXSEL_0) > +#define MX28_PAD_PWM1__PWM_1 MXS_IOMUX_PAD_NAKED(3, > 17, PAD_MUXSEL_0) > +#define MX28_PAD_PWM2__PWM_2 MXS_IOMUX_PAD_NAKED(3, > 18, PAD_MUXSEL_0) > +#define MX28_PAD_SAIF0_MCLK__SAIF0_MCLK > MXS_IOMUX_PAD_NAKED(3, 20, PAD_MUXSEL_0) > +#define MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK MXS_IOMUX_PAD_NAKED(3, > 21, PAD_MUXSEL_0) > +#define MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK MXS_IOMUX_PAD_NAKED(3, > 22, PAD_MUXSEL_0) > +#define MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 MXS_IOMUX_PAD_NAKED(3, > 23, PAD_MUXSEL_0) > +#define MX28_PAD_I2C0_SCL__I2C0_SCL MXS_IOMUX_PAD_NAKED(3, > 24, PAD_MUXSEL_0) > +#define MX28_PAD_I2C0_SDA__I2C0_SDA MXS_IOMUX_PAD_NAKED(3, > 25, PAD_MUXSEL_0) > +#define MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 MXS_IOMUX_PAD_NAKED(3, > 26, PAD_MUXSEL_0) > +#define MX28_PAD_SPDIF__SPDIF_TX MXS_IOMUX_PAD_NAKED(3, > 27, PAD_MUXSEL_0) > +#define MX28_PAD_PWM3__PWM_3 MXS_IOMUX_PAD_NAKED(3, > 28, PAD_MUXSEL_0) > +#define MX28_PAD_PWM4__PWM_4 MXS_IOMUX_PAD_NAKED(3, > 29, PAD_MUXSEL_0) > +#define MX28_PAD_LCD_RESET__LCD_RESET > MXS_IOMUX_PAD_NAKED(3, 30, PAD_MUXSEL_0) > + > +#define MX28_PAD_ENET0_MDC__ENET0_MDC > MXS_IOMUX_PAD_NAKED(4, 0, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_MDIO__ENET0_MDIO > MXS_IOMUX_PAD_NAKED(4, 1, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RX_EN__ENET0_RX_EN MXS_IOMUX_PAD_NAKED(4, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RXD0__ENET0_RXD0 > MXS_IOMUX_PAD_NAKED(4, 3, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RXD1__ENET0_RXD1 > MXS_IOMUX_PAD_NAKED(4, 4, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK MXS_IOMUX_PAD_NAKED(4, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TX_EN__ENET0_TX_EN MXS_IOMUX_PAD_NAKED(4, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TXD0__ENET0_TXD0 > MXS_IOMUX_PAD_NAKED(4, 7, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TXD1__ENET0_TXD1 > MXS_IOMUX_PAD_NAKED(4, 8, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RXD2__ENET0_RXD2 > MXS_IOMUX_PAD_NAKED(4, 9, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RXD3__ENET0_RXD3 > MXS_IOMUX_PAD_NAKED(4, 10, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TXD2__ENET0_TXD2 > MXS_IOMUX_PAD_NAKED(4, 11, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_TXD3__ENET0_TXD3 > MXS_IOMUX_PAD_NAKED(4, 12, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK MXS_IOMUX_PAD_NAKED(4, > 13, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_COL__ENET0_COL > MXS_IOMUX_PAD_NAKED(4, 14, PAD_MUXSEL_0) > +#define MX28_PAD_ENET0_CRS__ENET0_CRS > MXS_IOMUX_PAD_NAKED(4, 15, PAD_MUXSEL_0) > +#define MX28_PAD_ENET_CLK__CLKCTRL_ENET > MXS_IOMUX_PAD_NAKED(4, 16, PAD_MUXSEL_0) > +#define MX28_PAD_JTAG_RTCK__JTAG_RTCK > MXS_IOMUX_PAD_NAKED(4, 20, PAD_MUXSEL_0) > + > +#define MX28_PAD_EMI_D00__EMI_DATA0 MXS_IOMUX_PAD_NAKED(5, > 0, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D01__EMI_DATA1 MXS_IOMUX_PAD_NAKED(5, > 1, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D02__EMI_DATA2 MXS_IOMUX_PAD_NAKED(5, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D03__EMI_DATA3 MXS_IOMUX_PAD_NAKED(5, > 3, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D04__EMI_DATA4 MXS_IOMUX_PAD_NAKED(5, > 4, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D05__EMI_DATA5 MXS_IOMUX_PAD_NAKED(5, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D06__EMI_DATA6 MXS_IOMUX_PAD_NAKED(5, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D07__EMI_DATA7 MXS_IOMUX_PAD_NAKED(5, > 7, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D08__EMI_DATA8 MXS_IOMUX_PAD_NAKED(5, > 8, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D09__EMI_DATA9 MXS_IOMUX_PAD_NAKED(5, > 9, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D10__EMI_DATA10 MXS_IOMUX_PAD_NAKED(5, > 10, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D11__EMI_DATA11 MXS_IOMUX_PAD_NAKED(5, > 11, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D12__EMI_DATA12 MXS_IOMUX_PAD_NAKED(5, > 12, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D13__EMI_DATA13 MXS_IOMUX_PAD_NAKED(5, > 13, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D14__EMI_DATA14 MXS_IOMUX_PAD_NAKED(5, > 14, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_D15__EMI_DATA15 MXS_IOMUX_PAD_NAKED(5, > 15, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_ODT0__EMI_ODT0 MXS_IOMUX_PAD_NAKED(5, > 16, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DQM0__EMI_DQM0 MXS_IOMUX_PAD_NAKED(5, > 17, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_ODT1__EMI_ODT1 MXS_IOMUX_PAD_NAKED(5, > 18, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DQM1__EMI_DQM1 MXS_IOMUX_PAD_NAKED(5, > 19, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK > MXS_IOMUX_PAD_NAKED(5, 20, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_CLK__EMI_CLK MXS_IOMUX_PAD_NAKED(5, > 21, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DQS0__EMI_DQS0 MXS_IOMUX_PAD_NAKED(5, > 22, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DQS1__EMI_DQS1 MXS_IOMUX_PAD_NAKED(5, > 23, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN MXS_IOMUX_PAD_NAKED(5, > 26, PAD_MUXSEL_0) > + > +#define MX28_PAD_EMI_A00__EMI_ADDR0 MXS_IOMUX_PAD_NAKED(6, > 0, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A01__EMI_ADDR1 MXS_IOMUX_PAD_NAKED(6, > 1, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A02__EMI_ADDR2 MXS_IOMUX_PAD_NAKED(6, > 2, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A03__EMI_ADDR3 MXS_IOMUX_PAD_NAKED(6, > 3, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A04__EMI_ADDR4 MXS_IOMUX_PAD_NAKED(6, > 4, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A05__EMI_ADDR5 MXS_IOMUX_PAD_NAKED(6, > 5, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A06__EMI_ADDR6 MXS_IOMUX_PAD_NAKED(6, > 6, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A07__EMI_ADDR7 MXS_IOMUX_PAD_NAKED(6, > 7, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A08__EMI_ADDR8 MXS_IOMUX_PAD_NAKED(6, > 8, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A09__EMI_ADDR9 MXS_IOMUX_PAD_NAKED(6, > 9, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A10__EMI_ADDR10 MXS_IOMUX_PAD_NAKED(6, > 10, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A11__EMI_ADDR11 MXS_IOMUX_PAD_NAKED(6, > 11, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A12__EMI_ADDR12 MXS_IOMUX_PAD_NAKED(6, > 12, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A13__EMI_ADDR13 MXS_IOMUX_PAD_NAKED(6, > 13, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_A14__EMI_ADDR14 MXS_IOMUX_PAD_NAKED(6, > 14, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_BA0__EMI_BA0 MXS_IOMUX_PAD_NAKED(6, > 16, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_BA1__EMI_BA1 MXS_IOMUX_PAD_NAKED(6, > 17, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_BA2__EMI_BA2 MXS_IOMUX_PAD_NAKED(6, > 18, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_CASN__EMI_CASN MXS_IOMUX_PAD_NAKED(6, > 19, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_RASN__EMI_RASN MXS_IOMUX_PAD_NAKED(6, > 20, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_WEN__EMI_WEN MXS_IOMUX_PAD_NAKED(6, > 21, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_CE0N__EMI_CE0N MXS_IOMUX_PAD_NAKED(6, > 22, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_CE1N__EMI_CE1N MXS_IOMUX_PAD_NAKED(6, > 23, PAD_MUXSEL_0) > +#define MX28_PAD_EMI_CKE__EMI_CKE MXS_IOMUX_PAD_NAKED(6, > 24, PAD_MUXSEL_0) > + > +/* MUXSEL_1 */ > +#define MX28_PAD_GPMI_D00__SSP1_D0 MXS_IOMUX_PAD_NAKED(0, > 0, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D01__SSP1_D1 MXS_IOMUX_PAD_NAKED(0, > 1, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D02__SSP1_D2 MXS_IOMUX_PAD_NAKED(0, > 2, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D03__SSP1_D3 MXS_IOMUX_PAD_NAKED(0, > 3, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D04__SSP1_D4 MXS_IOMUX_PAD_NAKED(0, > 4, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D05__SSP1_D5 MXS_IOMUX_PAD_NAKED(0, > 5, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D06__SSP1_D6 MXS_IOMUX_PAD_NAKED(0, > 6, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_D07__SSP1_D7 MXS_IOMUX_PAD_NAKED(0, > 7, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_CE0N__SSP3_D0 MXS_IOMUX_PAD_NAKED(0, > 16, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_CE1N__SSP3_D3 MXS_IOMUX_PAD_NAKED(0, > 17, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_CE2N__CAN1_TX MXS_IOMUX_PAD_NAKED(0, > 18, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_CE3N__CAN1_RX MXS_IOMUX_PAD_NAKED(0, > 19, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT MXS_IOMUX_PAD_NAKED(0, > 20, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RDY1__SSP1_CMD MXS_IOMUX_PAD_NAKED(0, > 21, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RDY2__CAN0_TX MXS_IOMUX_PAD_NAKED(0, > 22, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RDY3__CAN0_RX MXS_IOMUX_PAD_NAKED(0, > 23, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RDN__SSP3_SCK MXS_IOMUX_PAD_NAKED(0, > 24, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_WRN__SSP1_SCK MXS_IOMUX_PAD_NAKED(0, > 25, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_ALE__SSP3_D1 MXS_IOMUX_PAD_NAKED(0, > 26, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_CLE__SSP3_D2 MXS_IOMUX_PAD_NAKED(0, > 27, PAD_MUXSEL_1) > +#define MX28_PAD_GPMI_RESETN__SSP3_CMD > MXS_IOMUX_PAD_NAKED(0, 28, PAD_MUXSEL_1) > + > +#define MX28_PAD_LCD_D03__ETM_DA8 MXS_IOMUX_PAD_NAKED(1, > 3, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D04__ETM_DA9 MXS_IOMUX_PAD_NAKED(1, > 4, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D08__ETM_DA3 MXS_IOMUX_PAD_NAKED(1, > 8, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D09__ETM_DA4 MXS_IOMUX_PAD_NAKED(1, > 9, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT > MXS_IOMUX_PAD_NAKED(1, 20, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN > MXS_IOMUX_PAD_NAKED(1, 21, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT > MXS_IOMUX_PAD_NAKED(1, 22, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN > MXS_IOMUX_PAD_NAKED(1, 23, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_RD_E__LCD_VSYNC MXS_IOMUX_PAD_NAKED(1, > 24, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_WR_RWN__LCD_HSYNC > MXS_IOMUX_PAD_NAKED(1, 25, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_RS__LCD_DOTCLK MXS_IOMUX_PAD_NAKED(1, > 26, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_CS__LCD_ENABLE MXS_IOMUX_PAD_NAKED(1, > 27, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_VSYNC__SAIF1_SDATA0 MXS_IOMUX_PAD_NAKED(1, > 28, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_HSYNC__SAIF1_SDATA1 MXS_IOMUX_PAD_NAKED(1, > 29, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_DOTCLK__SAIF1_MCLK > MXS_IOMUX_PAD_NAKED(1, 30, PAD_MUXSEL_1) > + > +#define MX28_PAD_SSP0_DATA4__SSP2_D0 MXS_IOMUX_PAD_NAKED(2, > 4, PAD_MUXSEL_1) > +#define MX28_PAD_SSP0_DATA5__SSP2_D3 MXS_IOMUX_PAD_NAKED(2, > 5, PAD_MUXSEL_1) > +#define MX28_PAD_SSP0_DATA6__SSP2_CMD > MXS_IOMUX_PAD_NAKED(2, 6, PAD_MUXSEL_1) > +#define MX28_PAD_SSP0_DATA7__SSP2_SCK > MXS_IOMUX_PAD_NAKED(2, 7, PAD_MUXSEL_1) > +#define MX28_PAD_SSP1_SCK__SSP2_D1 MXS_IOMUX_PAD_NAKED(2, > 12, PAD_MUXSEL_1) > +#define MX28_PAD_SSP1_CMD__SSP2_D2 MXS_IOMUX_PAD_NAKED(2, > 13, PAD_MUXSEL_1) > +#define MX28_PAD_SSP1_DATA0__SSP2_D6 MXS_IOMUX_PAD_NAKED(2, > 14, PAD_MUXSEL_1) > +#define MX28_PAD_SSP1_DATA3__SSP2_D7 MXS_IOMUX_PAD_NAKED(2, > 15, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_SCK__AUART2_RX MXS_IOMUX_PAD_NAKED(2, > 16, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_MOSI__AUART2_TX > MXS_IOMUX_PAD_NAKED(2, 17, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_MISO__AUART3_RX > MXS_IOMUX_PAD_NAKED(2, 18, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_SS0__AUART3_TX MXS_IOMUX_PAD_NAKED(2, > 19, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_SS1__SSP2_D1 MXS_IOMUX_PAD_NAKED(2, > 20, PAD_MUXSEL_1) > +#define MX28_PAD_SSP2_SS2__SSP2_D2 MXS_IOMUX_PAD_NAKED(2, > 21, PAD_MUXSEL_1) > +#define MX28_PAD_SSP3_SCK__AUART4_TX MXS_IOMUX_PAD_NAKED(2, > 24, PAD_MUXSEL_1) > +#define MX28_PAD_SSP3_MOSI__AUART4_RX > MXS_IOMUX_PAD_NAKED(2, 25, PAD_MUXSEL_1) > +#define MX28_PAD_SSP3_MISO__AUART4_RTS > MXS_IOMUX_PAD_NAKED(2, 26, PAD_MUXSEL_1) > +#define MX28_PAD_SSP3_SS0__AUART4_CTS > MXS_IOMUX_PAD_NAKED(2, 27, PAD_MUXSEL_1) > + > +#define MX28_PAD_AUART0_RX__I2C0_SCL MXS_IOMUX_PAD_NAKED(3, > 0, PAD_MUXSEL_1) > +#define MX28_PAD_AUART0_TX__I2C0_SDA MXS_IOMUX_PAD_NAKED(3, > 1, PAD_MUXSEL_1) > +#define MX28_PAD_AUART0_CTS__AUART4_RX > MXS_IOMUX_PAD_NAKED(3, 2, PAD_MUXSEL_1) > +#define MX28_PAD_AUART0_RTS__AUART4_TX > MXS_IOMUX_PAD_NAKED(3, 3, PAD_MUXSEL_1) > +#define MX28_PAD_AUART1_RX__SSP2_CARD_DETECT MXS_IOMUX_PAD_NAKED(3, > 4, PAD_MUXSEL_1) > +#define MX28_PAD_AUART1_TX__SSP3_CARD_DETECT MXS_IOMUX_PAD_NAKED(3, > 5, PAD_MUXSEL_1) > +#define MX28_PAD_AUART1_CTS__USB0_OVERCURRENT > MXS_IOMUX_PAD_NAKED(3, 6, PAD_MUXSEL_1) > +#define MX28_PAD_AUART1_RTS__USB0_ID MXS_IOMUX_PAD_NAKED(3, > 7, PAD_MUXSEL_1) > +#define MX28_PAD_AUART2_RX__SSP3_D1 MXS_IOMUX_PAD_NAKED(3, > 8, PAD_MUXSEL_1) > +#define MX28_PAD_AUART2_TX__SSP3_D2 MXS_IOMUX_PAD_NAKED(3, > 9, PAD_MUXSEL_1) > +#define MX28_PAD_AUART2_CTS__I2C1_SCL > MXS_IOMUX_PAD_NAKED(3, 10, PAD_MUXSEL_1) > +#define MX28_PAD_AUART2_RTS__I2C1_SDA > MXS_IOMUX_PAD_NAKED(3, 11, PAD_MUXSEL_1) > +#define MX28_PAD_AUART3_RX__CAN0_TX MXS_IOMUX_PAD_NAKED(3, > 12, PAD_MUXSEL_1) > +#define MX28_PAD_AUART3_TX__CAN0_RX MXS_IOMUX_PAD_NAKED(3, > 13, PAD_MUXSEL_1) > +#define MX28_PAD_AUART3_CTS__CAN1_TX MXS_IOMUX_PAD_NAKED(3, > 14, PAD_MUXSEL_1) > +#define MX28_PAD_AUART3_RTS__CAN1_RX MXS_IOMUX_PAD_NAKED(3, > 15, PAD_MUXSEL_1) > +#define MX28_PAD_PWM0__I2C1_SCL > MXS_IOMUX_PAD_NAKED(3, 16, PAD_MUXSEL_1) > +#define MX28_PAD_PWM1__I2C1_SDA > MXS_IOMUX_PAD_NAKED(3, 17, PAD_MUXSEL_1) > +#define MX28_PAD_PWM2__USB0_ID > MXS_IOMUX_PAD_NAKED(3, 18, PAD_MUXSEL_1) > +#define MX28_PAD_SAIF0_MCLK__PWM_3 MXS_IOMUX_PAD_NAKED(3, > 20, PAD_MUXSEL_1) > +#define MX28_PAD_SAIF0_LRCLK__PWM_4 MXS_IOMUX_PAD_NAKED(3, > 21, PAD_MUXSEL_1) > +#define MX28_PAD_SAIF0_BITCLK__PWM_5 MXS_IOMUX_PAD_NAKED(3, > 22, PAD_MUXSEL_1) > +#define MX28_PAD_SAIF0_SDATA0__PWM_6 MXS_IOMUX_PAD_NAKED(3, > 23, PAD_MUXSEL_1) > +#define MX28_PAD_I2C0_SCL__TIMROT_ROTARYA MXS_IOMUX_PAD_NAKED(3, > 24, PAD_MUXSEL_1) > +#define MX28_PAD_I2C0_SDA__TIMROT_ROTARYB MXS_IOMUX_PAD_NAKED(3, > 25, PAD_MUXSEL_1) > +#define MX28_PAD_SAIF1_SDATA0__PWM_7 MXS_IOMUX_PAD_NAKED(3, > 26, PAD_MUXSEL_1) > +#define MX28_PAD_LCD_RESET__LCD_VSYNC > MXS_IOMUX_PAD_NAKED(3, 30, PAD_MUXSEL_1) > + > +#define MX28_PAD_ENET0_MDC__GPMI_CE4N > MXS_IOMUX_PAD_NAKED(4, 0, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_MDIO__GPMI_CE5N > MXS_IOMUX_PAD_NAKED(4, 1, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RX_EN__GPMI_CE6N > MXS_IOMUX_PAD_NAKED(4, 2, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RXD0__GPMI_CE7N > MXS_IOMUX_PAD_NAKED(4, 3, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RXD1__GPMI_READY4 MXS_IOMUX_PAD_NAKED(4, > 4, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER MXS_IOMUX_PAD_NAKED(4, > 5, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TX_EN__GPMI_READY5 MXS_IOMUX_PAD_NAKED(4, > 6, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TXD0__GPMI_READY6 MXS_IOMUX_PAD_NAKED(4, > 7, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TXD1__GPMI_READY7 MXS_IOMUX_PAD_NAKED(4, > 8, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RXD2__ENET1_RXD0 > MXS_IOMUX_PAD_NAKED(4, 9, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RXD3__ENET1_RXD1 > MXS_IOMUX_PAD_NAKED(4, 10, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TXD2__ENET1_TXD0 > MXS_IOMUX_PAD_NAKED(4, 11, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_TXD3__ENET1_TXD1 > MXS_IOMUX_PAD_NAKED(4, 12, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER MXS_IOMUX_PAD_NAKED(4, > 13, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_COL__ENET1_TX_EN > MXS_IOMUX_PAD_NAKED(4, 14, PAD_MUXSEL_1) > +#define MX28_PAD_ENET0_CRS__ENET1_RX_EN > MXS_IOMUX_PAD_NAKED(4, 15, PAD_MUXSEL_1) > + > +/* MUXSEL_2 */ > +#define MX28_PAD_GPMI_CE2N__ENET0_RX_ER > MXS_IOMUX_PAD_NAKED(0, 18, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_CE3N__SAIF1_MCLK > MXS_IOMUX_PAD_NAKED(0, 19, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_RDY0__USB0_ID MXS_IOMUX_PAD_NAKED(0, > 20, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_RDY2__ENET0_TX_ER > MXS_IOMUX_PAD_NAKED(0, 22, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_RDY3__HSADC_TRIGGER MXS_IOMUX_PAD_NAKED(0, > 23, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_ALE__SSP3_D4 MXS_IOMUX_PAD_NAKED(0, > 26, PAD_MUXSEL_2) > +#define MX28_PAD_GPMI_CLE__SSP3_D5 MXS_IOMUX_PAD_NAKED(0, > 27, PAD_MUXSEL_2) > + > +#define MX28_PAD_LCD_D00__ETM_DA0 MXS_IOMUX_PAD_NAKED(1, > 0, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D01__ETM_DA1 MXS_IOMUX_PAD_NAKED(1, > 1, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D02__ETM_DA2 MXS_IOMUX_PAD_NAKED(1, > 2, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D03__ETM_DA3 MXS_IOMUX_PAD_NAKED(1, > 3, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D04__ETM_DA4 MXS_IOMUX_PAD_NAKED(1, > 4, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D05__ETM_DA5 MXS_IOMUX_PAD_NAKED(1, > 5, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D06__ETM_DA6 MXS_IOMUX_PAD_NAKED(1, > 6, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D07__ETM_DA7 MXS_IOMUX_PAD_NAKED(1, > 7, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D08__ETM_DA8 MXS_IOMUX_PAD_NAKED(1, > 8, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D09__ETM_DA9 MXS_IOMUX_PAD_NAKED(1, > 9, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D10__ETM_DA10 MXS_IOMUX_PAD_NAKED(1, > 10, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D11__ETM_DA11 MXS_IOMUX_PAD_NAKED(1, > 11, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D12__ETM_DA12 MXS_IOMUX_PAD_NAKED(1, > 12, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D13__ETM_DA13 MXS_IOMUX_PAD_NAKED(1, > 13, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D14__ETM_DA14 MXS_IOMUX_PAD_NAKED(1, > 14, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D15__ETM_DA15 MXS_IOMUX_PAD_NAKED(1, > 15, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D16__ETM_DA7 MXS_IOMUX_PAD_NAKED(1, > 16, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D17__ETM_DA6 MXS_IOMUX_PAD_NAKED(1, > 17, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D18__ETM_DA5 MXS_IOMUX_PAD_NAKED(1, > 18, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D19__ETM_DA4 MXS_IOMUX_PAD_NAKED(1, > 19, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D20__ETM_DA3 MXS_IOMUX_PAD_NAKED(1, > 20, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D21__ETM_DA2 MXS_IOMUX_PAD_NAKED(1, > 21, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D22__ETM_DA1 MXS_IOMUX_PAD_NAKED(1, > 22, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_D23__ETM_DA0 MXS_IOMUX_PAD_NAKED(1, > 23, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_RD_E__ETM_TCTL MXS_IOMUX_PAD_NAKED(1, > 24, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_WR_RWN__ETM_TCLK > MXS_IOMUX_PAD_NAKED(1, 25, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_HSYNC__ETM_TCTL MXS_IOMUX_PAD_NAKED(1, > 29, PAD_MUXSEL_2) > +#define MX28_PAD_LCD_DOTCLK__ETM_TCLK > MXS_IOMUX_PAD_NAKED(1, 30, PAD_MUXSEL_2) > + > +#define MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT MXS_IOMUX_PAD_NAKED(2, > 12, PAD_MUXSEL_2) > +#define MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN > MXS_IOMUX_PAD_NAKED(2, 13, PAD_MUXSEL_2) > +#define MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT MXS_IOMUX_PAD_NAKED(2, > 14, PAD_MUXSEL_2) > +#define MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN MXS_IOMUX_PAD_NAKED(2, > 15, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_SCK__SAIF0_SDATA1 > MXS_IOMUX_PAD_NAKED(2, 16, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_MOSI__SAIF0_SDATA2 MXS_IOMUX_PAD_NAKED(2, > 17, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_MISO__SAIF1_SDATA1 MXS_IOMUX_PAD_NAKED(2, > 18, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_SS0__SAIF1_SDATA2 > MXS_IOMUX_PAD_NAKED(2, 19, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_SS1__USB1_OVERCURRENT MXS_IOMUX_PAD_NAKED(2, > 20, PAD_MUXSEL_2) > +#define MX28_PAD_SSP2_SS2__USB0_OVERCURRENT MXS_IOMUX_PAD_NAKED(2, > 21, PAD_MUXSEL_2) > +#define MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT MXS_IOMUX_PAD_NAKED(2, > 24, PAD_MUXSEL_2) > +#define MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN MXS_IOMUX_PAD_NAKED(2, > 25, PAD_MUXSEL_2) > +#define MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT MXS_IOMUX_PAD_NAKED(2, > 26, PAD_MUXSEL_2) > +#define MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN > MXS_IOMUX_PAD_NAKED(2, 27, PAD_MUXSEL_2) > + > +#define MX28_PAD_AUART0_RX__DUART_CTS > MXS_IOMUX_PAD_NAKED(3, 0, PAD_MUXSEL_2) > +#define MX28_PAD_AUART0_TX__DUART_RTS > MXS_IOMUX_PAD_NAKED(3, 1, PAD_MUXSEL_2) > +#define MX28_PAD_AUART0_CTS__DUART_RX > MXS_IOMUX_PAD_NAKED(3, 2, PAD_MUXSEL_2) > +#define MX28_PAD_AUART0_RTS__DUART_TX > MXS_IOMUX_PAD_NAKED(3, 3, PAD_MUXSEL_2) > +#define MX28_PAD_AUART1_RX__PWM_0 MXS_IOMUX_PAD_NAKED(3, > 4, PAD_MUXSEL_2) > +#define MX28_PAD_AUART1_TX__PWM_1 MXS_IOMUX_PAD_NAKED(3, > 5, PAD_MUXSEL_2) > +#define MX28_PAD_AUART1_CTS__TIMROT_ROTARYA MXS_IOMUX_PAD_NAKED(3, > 6, PAD_MUXSEL_2) > +#define MX28_PAD_AUART1_RTS__TIMROT_ROTARYB MXS_IOMUX_PAD_NAKED(3, > 7, PAD_MUXSEL_2) > +#define MX28_PAD_AUART2_RX__SSP3_D4 MXS_IOMUX_PAD_NAKED(3, > 8, PAD_MUXSEL_2) > +#define MX28_PAD_AUART2_TX__SSP3_D5 MXS_IOMUX_PAD_NAKED(3, > 9, PAD_MUXSEL_2) > +#define MX28_PAD_AUART2_CTS__SAIF1_BITCLK MXS_IOMUX_PAD_NAKED(3, > 10, PAD_MUXSEL_2) > +#define MX28_PAD_AUART2_RTS__SAIF1_LRCLK MXS_IOMUX_PAD_NAKED(3, > 11, PAD_MUXSEL_2) > +#define MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT MXS_IOMUX_PAD_NAKED(3, > 12, PAD_MUXSEL_2) > +#define MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN MXS_IOMUX_PAD_NAKED(3, > 13, PAD_MUXSEL_2) > +#define MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT MXS_IOMUX_PAD_NAKED(3, > 14, PAD_MUXSEL_2) > +#define MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN MXS_IOMUX_PAD_NAKED(3, > 15, PAD_MUXSEL_2) > +#define MX28_PAD_PWM0__DUART_RX > MXS_IOMUX_PAD_NAKED(3, 16, PAD_MUXSEL_2) > +#define MX28_PAD_PWM1__DUART_TX > MXS_IOMUX_PAD_NAKED(3, 17, PAD_MUXSEL_2) > +#define MX28_PAD_PWM2__USB1_OVERCURRENT > MXS_IOMUX_PAD_NAKED(3, 18, PAD_MUXSEL_2) > +#define MX28_PAD_SAIF0_MCLK__AUART4_CTS > MXS_IOMUX_PAD_NAKED(3, 20, PAD_MUXSEL_2) > +#define MX28_PAD_SAIF0_LRCLK__AUART4_RTS MXS_IOMUX_PAD_NAKED(3, > 21, PAD_MUXSEL_2) > +#define MX28_PAD_SAIF0_BITCLK__AUART4_RX MXS_IOMUX_PAD_NAKED(3, > 22, PAD_MUXSEL_2) > +#define MX28_PAD_SAIF0_SDATA0__AUART4_TX MXS_IOMUX_PAD_NAKED(3, > 23, PAD_MUXSEL_2) > +#define MX28_PAD_I2C0_SCL__DUART_RX MXS_IOMUX_PAD_NAKED(3, > 24, PAD_MUXSEL_2) > +#define MX28_PAD_I2C0_SDA__DUART_TX MXS_IOMUX_PAD_NAKED(3, > 25, PAD_MUXSEL_2) > +#define MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1 MXS_IOMUX_PAD_NAKED(3, > 26, PAD_MUXSEL_2) > +#define MX28_PAD_SPDIF__ENET1_RX_ER MXS_IOMUX_PAD_NAKED(3, > 27, PAD_MUXSEL_2) > + > +#define MX28_PAD_ENET0_MDC__SAIF0_SDATA1 MXS_IOMUX_PAD_NAKED(4, > 0, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_MDIO__SAIF0_SDATA2 MXS_IOMUX_PAD_NAKED(4, > 1, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1 MXS_IOMUX_PAD_NAKED(4, > 2, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_RXD0__SAIF1_SDATA2 MXS_IOMUX_PAD_NAKED(4, > 3, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT MXS_IOMUX_PAD_NAKED(4, > 5, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT MXS_IOMUX_PAD_NAKED(4, > 9, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN MXS_IOMUX_PAD_NAKED(4, > 10, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT MXS_IOMUX_PAD_NAKED(4, > 11, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN MXS_IOMUX_PAD_NAKED(4, > 12, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN MXS_IOMUX_PAD_NAKED(4, > 13, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT MXS_IOMUX_PAD_NAKED(4, > 14, PAD_MUXSEL_2) > +#define MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN MXS_IOMUX_PAD_NAKED(4, > 15, PAD_MUXSEL_2) > + > +/* MUXSEL_GPIO */ > +#define MX28_PAD_GPMI_D00__GPIO_0_0 MXS_IOMUX_PAD_NAKED(0, > 0, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D01__GPIO_0_1 MXS_IOMUX_PAD_NAKED(0, > 1, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D02__GPIO_0_2 MXS_IOMUX_PAD_NAKED(0, > 2, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D03__GPIO_0_3 MXS_IOMUX_PAD_NAKED(0, > 3, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D04__GPIO_0_4 MXS_IOMUX_PAD_NAKED(0, > 4, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D05__GPIO_0_5 MXS_IOMUX_PAD_NAKED(0, > 5, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D06__GPIO_0_6 MXS_IOMUX_PAD_NAKED(0, > 6, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_D07__GPIO_0_7 MXS_IOMUX_PAD_NAKED(0, > 7, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_CE0N__GPIO_0_16 > MXS_IOMUX_PAD_NAKED(0, 16, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_CE1N__GPIO_0_17 > MXS_IOMUX_PAD_NAKED(0, 17, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_CE2N__GPIO_0_18 > MXS_IOMUX_PAD_NAKED(0, 18, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_CE3N__GPIO_0_19 > MXS_IOMUX_PAD_NAKED(0, 19, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RDY0__GPIO_0_20 > MXS_IOMUX_PAD_NAKED(0, 20, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RDY1__GPIO_0_21 > MXS_IOMUX_PAD_NAKED(0, 21, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RDY2__GPIO_0_22 > MXS_IOMUX_PAD_NAKED(0, 22, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RDY3__GPIO_0_23 > MXS_IOMUX_PAD_NAKED(0, 23, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RDN__GPIO_0_24 MXS_IOMUX_PAD_NAKED(0, > 24, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_WRN__GPIO_0_25 MXS_IOMUX_PAD_NAKED(0, > 25, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_ALE__GPIO_0_26 MXS_IOMUX_PAD_NAKED(0, > 26, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_CLE__GPIO_0_27 MXS_IOMUX_PAD_NAKED(0, > 27, PAD_MUXSEL_GPIO) > +#define MX28_PAD_GPMI_RESETN__GPIO_0_28 > MXS_IOMUX_PAD_NAKED(0, 28, PAD_MUXSEL_GPIO) > + > +#define MX28_PAD_LCD_D00__GPIO_1_0 MXS_IOMUX_PAD_NAKED(1, > 0, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D01__GPIO_1_1 MXS_IOMUX_PAD_NAKED(1, > 1, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D02__GPIO_1_2 MXS_IOMUX_PAD_NAKED(1, > 2, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D03__GPIO_1_3 MXS_IOMUX_PAD_NAKED(1, > 3, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D04__GPIO_1_4 MXS_IOMUX_PAD_NAKED(1, > 4, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D05__GPIO_1_5 MXS_IOMUX_PAD_NAKED(1, > 5, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D06__GPIO_1_6 MXS_IOMUX_PAD_NAKED(1, > 6, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D07__GPIO_1_7 MXS_IOMUX_PAD_NAKED(1, > 7, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D08__GPIO_1_8 MXS_IOMUX_PAD_NAKED(1, > 8, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D09__GPIO_1_9 MXS_IOMUX_PAD_NAKED(1, > 9, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D10__GPIO_1_10 MXS_IOMUX_PAD_NAKED(1, > 10, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D11__GPIO_1_11 MXS_IOMUX_PAD_NAKED(1, > 11, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D12__GPIO_1_12 MXS_IOMUX_PAD_NAKED(1, > 12, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D13__GPIO_1_13 MXS_IOMUX_PAD_NAKED(1, > 13, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D14__GPIO_1_14 MXS_IOMUX_PAD_NAKED(1, > 14, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D15__GPIO_1_15 MXS_IOMUX_PAD_NAKED(1, > 15, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D16__GPIO_1_16 MXS_IOMUX_PAD_NAKED(1, > 16, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D17__GPIO_1_17 MXS_IOMUX_PAD_NAKED(1, > 17, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D18__GPIO_1_18 MXS_IOMUX_PAD_NAKED(1, > 18, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D19__GPIO_1_19 MXS_IOMUX_PAD_NAKED(1, > 19, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D20__GPIO_1_20 MXS_IOMUX_PAD_NAKED(1, > 20, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D21__GPIO_1_21 MXS_IOMUX_PAD_NAKED(1, > 21, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D22__GPIO_1_22 MXS_IOMUX_PAD_NAKED(1, > 22, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_D23__GPIO_1_23 MXS_IOMUX_PAD_NAKED(1, > 23, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_RD_E__GPIO_1_24 MXS_IOMUX_PAD_NAKED(1, > 24, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_WR_RWN__GPIO_1_25 > MXS_IOMUX_PAD_NAKED(1, 25, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_RS__GPIO_1_26 MXS_IOMUX_PAD_NAKED(1, > 26, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_CS__GPIO_1_27 MXS_IOMUX_PAD_NAKED(1, > 27, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_VSYNC__GPIO_1_28 > MXS_IOMUX_PAD_NAKED(1, 28, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_HSYNC__GPIO_1_29 > MXS_IOMUX_PAD_NAKED(1, 29, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_DOTCLK__GPIO_1_30 > MXS_IOMUX_PAD_NAKED(1, 30, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_ENABLE__GPIO_1_31 > MXS_IOMUX_PAD_NAKED(1, 31, PAD_MUXSEL_GPIO) > + > +#define MX28_PAD_SSP0_DATA0__GPIO_2_0 > MXS_IOMUX_PAD_NAKED(2, 0, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA1__GPIO_2_1 > MXS_IOMUX_PAD_NAKED(2, 1, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA2__GPIO_2_2 > MXS_IOMUX_PAD_NAKED(2, 2, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA3__GPIO_2_3 > MXS_IOMUX_PAD_NAKED(2, 3, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA4__GPIO_2_4 > MXS_IOMUX_PAD_NAKED(2, 4, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA5__GPIO_2_5 > MXS_IOMUX_PAD_NAKED(2, 5, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA6__GPIO_2_6 > MXS_IOMUX_PAD_NAKED(2, 6, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DATA7__GPIO_2_7 > MXS_IOMUX_PAD_NAKED(2, 7, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_CMD__GPIO_2_8 MXS_IOMUX_PAD_NAKED(2, > 8, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_DETECT__GPIO_2_9 > MXS_IOMUX_PAD_NAKED(2, 9, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP0_SCK__GPIO_2_10 MXS_IOMUX_PAD_NAKED(2, > 10, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP1_SCK__GPIO_2_12 MXS_IOMUX_PAD_NAKED(2, > 12, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP1_CMD__GPIO_2_13 MXS_IOMUX_PAD_NAKED(2, > 13, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP1_DATA0__GPIO_2_14 > MXS_IOMUX_PAD_NAKED(2, 14, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP1_DATA3__GPIO_2_15 > MXS_IOMUX_PAD_NAKED(2, 15, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_SCK__GPIO_2_16 MXS_IOMUX_PAD_NAKED(2, > 16, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_MOSI__GPIO_2_17 > MXS_IOMUX_PAD_NAKED(2, 17, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_MISO__GPIO_2_18 > MXS_IOMUX_PAD_NAKED(2, 18, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_SS0__GPIO_2_19 MXS_IOMUX_PAD_NAKED(2, > 19, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_SS1__GPIO_2_20 MXS_IOMUX_PAD_NAKED(2, > 20, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP2_SS2__GPIO_2_21 MXS_IOMUX_PAD_NAKED(2, > 21, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP3_SCK__GPIO_2_24 MXS_IOMUX_PAD_NAKED(2, > 24, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP3_MOSI__GPIO_2_25 > MXS_IOMUX_PAD_NAKED(2, 25, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP3_MISO__GPIO_2_26 > MXS_IOMUX_PAD_NAKED(2, 26, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SSP3_SS0__GPIO_2_27 MXS_IOMUX_PAD_NAKED(2, > 27, PAD_MUXSEL_GPIO) > + > +#define MX28_PAD_AUART0_RX__GPIO_3_0 MXS_IOMUX_PAD_NAKED(3, > 0, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART0_TX__GPIO_3_1 MXS_IOMUX_PAD_NAKED(3, > 1, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART0_CTS__GPIO_3_2 > MXS_IOMUX_PAD_NAKED(3, 2, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART0_RTS__GPIO_3_3 > MXS_IOMUX_PAD_NAKED(3, 3, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART1_RX__GPIO_3_4 MXS_IOMUX_PAD_NAKED(3, > 4, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART1_TX__GPIO_3_5 MXS_IOMUX_PAD_NAKED(3, > 5, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART1_CTS__GPIO_3_6 > MXS_IOMUX_PAD_NAKED(3, 6, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART1_RTS__GPIO_3_7 > MXS_IOMUX_PAD_NAKED(3, 7, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART2_RX__GPIO_3_8 MXS_IOMUX_PAD_NAKED(3, > 8, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART2_TX__GPIO_3_9 MXS_IOMUX_PAD_NAKED(3, > 9, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART2_CTS__GPIO_3_10 > MXS_IOMUX_PAD_NAKED(3, 10, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART2_RTS__GPIO_3_11 > MXS_IOMUX_PAD_NAKED(3, 11, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART3_RX__GPIO_3_12 > MXS_IOMUX_PAD_NAKED(3, 12, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART3_TX__GPIO_3_13 > MXS_IOMUX_PAD_NAKED(3, 13, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART3_CTS__GPIO_3_14 > MXS_IOMUX_PAD_NAKED(3, 14, PAD_MUXSEL_GPIO) > +#define MX28_PAD_AUART3_RTS__GPIO_3_15 > MXS_IOMUX_PAD_NAKED(3, 15, PAD_MUXSEL_GPIO) > +#define MX28_PAD_PWM0__GPIO_3_16 MXS_IOMUX_PAD_NAKED(3, > 16, PAD_MUXSEL_GPIO) > +#define MX28_PAD_PWM1__GPIO_3_17 MXS_IOMUX_PAD_NAKED(3, > 17, PAD_MUXSEL_GPIO) > +#define MX28_PAD_PWM2__GPIO_3_18 MXS_IOMUX_PAD_NAKED(3, > 18, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SAIF0_MCLK__GPIO_3_20 > MXS_IOMUX_PAD_NAKED(3, 20, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SAIF0_LRCLK__GPIO_3_21 > MXS_IOMUX_PAD_NAKED(3, 21, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SAIF0_BITCLK__GPIO_3_22 MXS_IOMUX_PAD_NAKED(3, > 22, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SAIF0_SDATA0__GPIO_3_23 MXS_IOMUX_PAD_NAKED(3, > 23, PAD_MUXSEL_GPIO) > +#define MX28_PAD_I2C0_SCL__GPIO_3_24 MXS_IOMUX_PAD_NAKED(3, > 24, PAD_MUXSEL_GPIO) > +#define MX28_PAD_I2C0_SDA__GPIO_3_25 MXS_IOMUX_PAD_NAKED(3, > 25, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SAIF1_SDATA0__GPIO_3_26 MXS_IOMUX_PAD_NAKED(3, > 26, PAD_MUXSEL_GPIO) > +#define MX28_PAD_SPDIF__GPIO_3_27 MXS_IOMUX_PAD_NAKED(3, > 27, PAD_MUXSEL_GPIO) > +#define MX28_PAD_PWM3__GPIO_3_28 MXS_IOMUX_PAD_NAKED(3, > 28, PAD_MUXSEL_GPIO) > +#define MX28_PAD_PWM4__GPIO_3_29 MXS_IOMUX_PAD_NAKED(3, > 29, PAD_MUXSEL_GPIO) > +#define MX28_PAD_LCD_RESET__GPIO_3_30 > MXS_IOMUX_PAD_NAKED(3, 30, PAD_MUXSEL_GPIO) > + > +#define MX28_PAD_ENET0_MDC__GPIO_4_0 MXS_IOMUX_PAD_NAKED(4, > 0, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_MDIO__GPIO_4_1 > MXS_IOMUX_PAD_NAKED(4, 1, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RX_EN__GPIO_4_2 > MXS_IOMUX_PAD_NAKED(4, 2, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RXD0__GPIO_4_3 > MXS_IOMUX_PAD_NAKED(4, 3, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RXD1__GPIO_4_4 > MXS_IOMUX_PAD_NAKED(4, 4, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TX_CLK__GPIO_4_5 > MXS_IOMUX_PAD_NAKED(4, 5, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TX_EN__GPIO_4_6 > MXS_IOMUX_PAD_NAKED(4, 6, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TXD0__GPIO_4_7 > MXS_IOMUX_PAD_NAKED(4, 7, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TXD1__GPIO_4_8 > MXS_IOMUX_PAD_NAKED(4, 8, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RXD2__GPIO_4_9 > MXS_IOMUX_PAD_NAKED(4, 9, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RXD3__GPIO_4_10 > MXS_IOMUX_PAD_NAKED(4, 10, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TXD2__GPIO_4_11 > MXS_IOMUX_PAD_NAKED(4, 11, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_TXD3__GPIO_4_12 > MXS_IOMUX_PAD_NAKED(4, 12, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_RX_CLK__GPIO_4_13 MXS_IOMUX_PAD_NAKED(4, > 13, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_COL__GPIO_4_14 > MXS_IOMUX_PAD_NAKED(4, 14, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET0_CRS__GPIO_4_15 > MXS_IOMUX_PAD_NAKED(4, 15, PAD_MUXSEL_GPIO) > +#define MX28_PAD_ENET_CLK__GPIO_4_16 MXS_IOMUX_PAD_NAKED(4, > 16, PAD_MUXSEL_GPIO) > +#define MX28_PAD_JTAG_RTCK__GPIO_4_20 > MXS_IOMUX_PAD_NAKED(4, 20, PAD_MUXSEL_GPIO) > + > +#endif /* __MACH_IOMUX_MX28_H__ */ > diff --git a/arch/arm/include/asm/arch-mx28/iomux.h > b/arch/arm/include/asm/arch-mx28/iomux.h > new file mode 100644 > index 0000000..7abdf58 > --- /dev/null > +++ b/arch/arm/include/asm/arch-mx28/iomux.h > @@ -0,0 +1,168 @@ > +/* > + * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH, > + * <armli...@phytec.de> > + * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > + * MA 02110-1301, USA. > + */ > + > +#ifndef __MACH_MXS_IOMUX_H__ > +#define __MACH_MXS_IOMUX_H__ > + > +/* > + * IOMUX/PAD Bit field definitions > + * > + * PAD_BANK: 0..2 (3) > + * PAD_PIN: 3..7 (5) > + * PAD_MUXSEL: 8..9 (2) > + * PAD_MA: 10..11 (2) > + * PAD_MA_VALID: 12 (1) > + * PAD_VOL: 13 (1) > + * PAD_VOL_VALID: 14 (1) > + * PAD_PULL: 15 (1) > + * PAD_PULL_VALID: 16 (1) > + * RESERVED: 17..31 (15) > + */ > +typedef u32 iomux_cfg_t; > + > +#define MXS_PAD_BANK_SHIFT 0 > +#define MXS_PAD_BANK_MASK ((iomux_cfg_t)0x7 << MXS_PAD_BANK_SHIFT) > +#define MXS_PAD_PIN_SHIFT 3 > +#define MXS_PAD_PIN_MASK ((iomux_cfg_t)0x1f << MXS_PAD_PIN_SHIFT) > +#define MXS_PAD_MUXSEL_SHIFT 8 > +#define MXS_PAD_MUXSEL_MASK ((iomux_cfg_t)0x3 << MXS_PAD_MUXSEL_SHIFT) > +#define MXS_PAD_MA_SHIFT 10 > +#define MXS_PAD_MA_MASK ((iomux_cfg_t)0x3 << MXS_PAD_MA_SHIFT) > +#define MXS_PAD_MA_VALID_SHIFT 12 > +#define MXS_PAD_MA_VALID_MASK ((iomux_cfg_t)0x1 << > MXS_PAD_MA_VALID_SHIFT) > +#define MXS_PAD_VOL_SHIFT 13 > +#define MXS_PAD_VOL_MASK ((iomux_cfg_t)0x1 << MXS_PAD_VOL_SHIFT) > +#define MXS_PAD_VOL_VALID_SHIFT 14 > +#define MXS_PAD_VOL_VALID_MASK ((iomux_cfg_t)0x1 << > MXS_PAD_VOL_VALID_SHIFT) > +#define MXS_PAD_PULL_SHIFT 15 > +#define MXS_PAD_PULL_MASK ((iomux_cfg_t)0x1 << MXS_PAD_PULL_SHIFT) > +#define MXS_PAD_PULL_VALID_SHIFT 16 > +#define MXS_PAD_PULL_VALID_MASK ((iomux_cfg_t)0x1 << > MXS_PAD_PULL_VALID_SHIFT) > + > +#define PAD_MUXSEL_0 0 > +#define PAD_MUXSEL_1 1 > +#define PAD_MUXSEL_2 2 > +#define PAD_MUXSEL_GPIO 3 > + > +#define PAD_4MA 0 > +#define PAD_8MA 1 > +#define PAD_12MA 2 > +#define PAD_16MA 3 > + > +#define PAD_1V8 0 > +#define PAD_3V3 1 > + > +#define PAD_NOPULL 0 > +#define PAD_PULLUP 1 > + > +#define MXS_PAD_4MA ((PAD_4MA << MXS_PAD_MA_SHIFT) | \ > + MXS_PAD_MA_VALID_MASK) > +#define MXS_PAD_8MA ((PAD_8MA << MXS_PAD_MA_SHIFT) | \ > + MXS_PAD_MA_VALID_MASK) > +#define MXS_PAD_12MA ((PAD_12MA << MXS_PAD_MA_SHIFT) | \ > + MXS_PAD_MA_VALID_MASK) > +#define MXS_PAD_16MA ((PAD_16MA << MXS_PAD_MA_SHIFT) | \ > + MXS_PAD_MA_VALID_MASK) > + > +#define MXS_PAD_1V8 ((PAD_1V8 << MXS_PAD_VOL_SHIFT) | \ > + MXS_PAD_VOL_VALID_MASK) > +#define MXS_PAD_3V3 ((PAD_3V3 << MXS_PAD_VOL_SHIFT) | \ > + MXS_PAD_VOL_VALID_MASK) > + > +#define MXS_PAD_NOPULL ((PAD_NOPULL << MXS_PAD_PULL_SHIFT) | \ > + MXS_PAD_PULL_VALID_MASK) > +#define MXS_PAD_PULLUP ((PAD_PULLUP << MXS_PAD_PULL_SHIFT) | \ > + MXS_PAD_PULL_VALID_MASK) > + > +/* generic pad control used in most cases */ > +#define MXS_PAD_CTRL (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL) > + > +#define MXS_IOMUX_PAD(_bank, _pin, _muxsel, _ma, _vol, _pull) > \ > + (((iomux_cfg_t)(_bank) << MXS_PAD_BANK_SHIFT) | \ > + ((iomux_cfg_t)(_pin) << MXS_PAD_PIN_SHIFT) | \ > + ((iomux_cfg_t)(_muxsel) << MXS_PAD_MUXSEL_SHIFT) | \ > + ((iomux_cfg_t)(_ma) << MXS_PAD_MA_SHIFT) | \ > + ((iomux_cfg_t)(_vol) << MXS_PAD_VOL_SHIFT) | \ > + ((iomux_cfg_t)(_pull) << MXS_PAD_PULL_SHIFT)) > + > +/* > + * A pad becomes naked, when none of mA, vol or pull > + * validity bits is set. > + */ > +#define MXS_IOMUX_PAD_NAKED(_bank, _pin, _muxsel) \ > + MXS_IOMUX_PAD(_bank, _pin, _muxsel, 0, 0, 0) > + > +static inline unsigned int PAD_BANK(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_BANK_MASK) >> MXS_PAD_BANK_SHIFT; > +} > + > +static inline unsigned int PAD_PIN(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_PIN_MASK) >> MXS_PAD_PIN_SHIFT; > +} > + > +static inline unsigned int PAD_MUXSEL(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_MUXSEL_MASK) >> MXS_PAD_MUXSEL_SHIFT; > +} > + > +static inline unsigned int PAD_MA(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_MA_MASK) >> MXS_PAD_MA_SHIFT; > +} > + > +static inline unsigned int PAD_MA_VALID(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_MA_VALID_MASK) >> MXS_PAD_MA_VALID_SHIFT; > +} > + > +static inline unsigned int PAD_VOL(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_VOL_MASK) >> MXS_PAD_VOL_SHIFT; > +} > + > +static inline unsigned int PAD_VOL_VALID(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_VOL_VALID_MASK) >> MXS_PAD_VOL_VALID_SHIFT; > +} > + > +static inline unsigned int PAD_PULL(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_PULL_MASK) >> MXS_PAD_PULL_SHIFT; > +} > + > +static inline unsigned int PAD_PULL_VALID(iomux_cfg_t pad) > +{ > + return (pad & MXS_PAD_PULL_VALID_MASK) >> MXS_PAD_PULL_VALID_SHIFT; > +} > + > +/* > + * configures a single pad in the iomuxer > + */ > +int mxs_iomux_setup_pad(iomux_cfg_t pad); > + > +/* > + * configures multiple pads > + * convenient way to call the above function with tables > + */ > +int mxs_iomux_setup_multiple_pads(const iomux_cfg_t *pad_list, unsigned > count); > + > +#endif /* __MACH_MXS_IOMUX_H__*/
Applied to u-boot-imx, thanks. Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot