#include "devices-imx25.h"
 
-static struct pad_desc eukrea_mbimxsd_pads[] = {
+static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = {
        /* LCD */
        MX25_PAD_LD0__LD0,
        MX25_PAD_LD1__LD1,
 
        .flags = IMXUART_HAVE_RTSCTS,
 };
 
-static struct pad_desc eukrea_cpuimx25_pads[] = {
+static iomux_v3_cfg_t eukrea_cpuimx25_pads[] = {
        /* FEC - RMII */
        MX25_PAD_FEC_MDC__FEC_MDC,
        MX25_PAD_FEC_MDIO__FEC_MDIO,
 
        .flags = IMXUART_HAVE_RTSCTS,
 };
 
-static struct pad_desc mx25pdk_pads[] = {
+static iomux_v3_cfg_t mx25pdk_pads[] = {
        MX25_PAD_FEC_MDC__FEC_MDC,
        MX25_PAD_FEC_MDIO__FEC_MDIO,
        MX25_PAD_FEC_TDATA0__FEC_TDATA0,
 
        .num_modes      = ARRAY_SIZE(fb_modedb),
 };
 
-static struct pad_desc eukrea_mbimxsd_pads[] = {
+static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = {
        /* LCD */
        MX35_PAD_LD0__IPU_DISPB_DAT_0,
        MX35_PAD_LD1__IPU_DISPB_DAT_1,
 
        },
 };
 
-static struct pad_desc eukrea_cpuimx35_pads[] = {
+static iomux_v3_cfg_t eukrea_cpuimx35_pads[] = {
        /* UART1 */
        MX35_PAD_CTS1__UART1_CTS,
        MX35_PAD_RTS1__UART1_RTS,
 
        &mx35pdk_flash,
 };
 
-static struct pad_desc mx35pdk_pads[] = {
+static iomux_v3_cfg_t mx35pdk_pads[] = {
        /* UART1 */
        MX35_PAD_CTS1__UART1_CTS,
        MX35_PAD_RTS1__UART1_RTS,
 
        &pcm043_flash,
 };
 
-static struct pad_desc pcm043_pads[] = {
+static iomux_v3_cfg_t pcm043_pads[] = {
        /* UART1 */
        MX35_PAD_CTS1__UART1_CTS,
        MX35_PAD_RTS1__UART1_RTS,
 
 static void pcm043_ac97_warm_reset(struct snd_ac97 *ac97)
 {
-       struct pad_desc txfs_gpio = MX35_PAD_STXFS4__GPIO2_31;
-       struct pad_desc txfs = MX35_PAD_STXFS4__AUDMUX_AUD4_TXFS;
+       iomux_v3_cfg_t txfs_gpio = MX35_PAD_STXFS4__GPIO2_31;
+       iomux_v3_cfg_t txfs = MX35_PAD_STXFS4__AUDMUX_AUD4_TXFS;
        int ret;
 
        ret = gpio_request(AC97_GPIO_TXFS, "SSI");
 
 static void pcm043_ac97_cold_reset(struct snd_ac97 *ac97)
 {
-       struct pad_desc txfs_gpio = MX35_PAD_STXFS4__GPIO2_31;
-       struct pad_desc txfs = MX35_PAD_STXFS4__AUDMUX_AUD4_TXFS;
-       struct pad_desc txd_gpio = MX35_PAD_STXD4__GPIO2_28;
-       struct pad_desc txd = MX35_PAD_STXD4__AUDMUX_AUD4_TXD;
-       struct pad_desc reset_gpio = MX35_PAD_SD2_CMD__GPIO2_0;
+       iomux_v3_cfg_t txfs_gpio = MX35_PAD_STXFS4__GPIO2_31;
+       iomux_v3_cfg_t txfs = MX35_PAD_STXFS4__AUDMUX_AUD4_TXFS;
+       iomux_v3_cfg_t txd_gpio = MX35_PAD_STXD4__GPIO2_28;
+       iomux_v3_cfg_t txd = MX35_PAD_STXD4__AUDMUX_AUD4_TXD;
+       iomux_v3_cfg_t reset_gpio = MX35_PAD_SD2_CMD__GPIO2_0;
        int ret;
 
        ret = gpio_request(AC97_GPIO_TXFS, "SSI");
 
 #endif
 };
 
-static struct pad_desc eukrea_cpuimx51_pads[] = {
+static iomux_v3_cfg_t eukrea_cpuimx51_pads[] = {
        /* UART1 */
        MX51_PAD_UART1_RXD__UART1_RXD,
        MX51_PAD_UART1_TXD__UART1_TXD,
 
 #define CPUIMX51SD_GPIO_3_12 IOMUX_PAD(0x57C, 0x194, 3, 0x0, 0, \
                                MX51_PAD_CTRL_1 | PAD_CTL_PUS_22K_UP)
 
-static struct pad_desc eukrea_cpuimx51sd_pads[] = {
+static iomux_v3_cfg_t eukrea_cpuimx51sd_pads[] = {
        /* UART1 */
        MX51_PAD_UART1_RXD__UART1_RXD,
        MX51_PAD_UART1_TXD__UART1_TXD,
 
 #define EXPIO_PARENT_INT       (MXC_INTERNAL_IRQS + GPIO_PORTA + 6)
 #define MX51_3DS_ECSPI2_CS     (GPIO_PORTC + 28)
 
-static struct pad_desc mx51_3ds_pads[] = {
+static iomux_v3_cfg_t mx51_3ds_pads[] = {
        /* UART1 */
        MX51_PAD_UART1_RXD__UART1_RXD,
        MX51_PAD_UART1_TXD__UART1_TXD,
 
        .nbuttons       = ARRAY_SIZE(babbage_buttons),
 };
 
-static struct pad_desc mx51babbage_pads[] = {
+static iomux_v3_cfg_t mx51babbage_pads[] = {
        /* UART1 */
        MX51_PAD_UART1_RXD__UART1_RXD,
        MX51_PAD_UART1_TXD__UART1_TXD,
 
 static int gpio_usbh1_active(void)
 {
-       struct pad_desc usbh1stp_gpio = MX51_PAD_USBH1_STP__GPIO_1_27;
-       struct pad_desc phyreset_gpio = MX51_PAD_EIM_D21__GPIO_2_5;
+       iomux_v3_cfg_t usbh1stp_gpio = MX51_PAD_USBH1_STP__GPIO_1_27;
+       iomux_v3_cfg_t phyreset_gpio = MX51_PAD_EIM_D21__GPIO_2_5;
        int ret;
 
        /* Set USBH1_STP to GPIO and toggle it */
  */
 static void __init mxc_board_init(void)
 {
-       struct pad_desc usbh1stp = MX51_PAD_USBH1_STP__USBH1_STP;
-       struct pad_desc power_key = MX51_PAD_EIM_A27__GPIO_2_21;
+       iomux_v3_cfg_t usbh1stp = MX51_PAD_USBH1_STP__USBH1_STP;
+       iomux_v3_cfg_t power_key = MX51_PAD_EIM_A27__GPIO_2_21;
 
 #if defined(CONFIG_CPU_FREQ_IMX)
        get_cpu_op = mx51_get_cpu_op;
 
 
 #define        MX51_USB_PLL_DIV_24_MHZ 0x01
 
-static struct pad_desc mx51efikamx_pads[] = {
+static iomux_v3_cfg_t mx51efikamx_pads[] = {
        /* UART1 */
        MX51_PAD_UART1_RXD__UART1_RXD,
        MX51_PAD_UART1_TXD__UART1_TXD,
 
        &mbimx51_leds_gpio,
 };
 
-static struct pad_desc mbimx51_pads[] = {
+static iomux_v3_cfg_t mbimx51_pads[] = {
        /* UART2 */
        MX51_PAD_UART2_RXD__UART2_RXD,
        MX51_PAD_UART2_TXD__UART2_TXD,
 
 #define MBIMXSD_GPIO_3_31 IOMUX_PAD(0x554, 0x16C, 3, 0x0, 0, \
                                MX51_PAD_CTRL_1 | PAD_CTL_PUS_22K_UP)
 
-static struct pad_desc eukrea_mbimxsd_pads[] = {
+static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = {
        /* LED */
        MX51_PAD_NANDF_D10__GPIO_3_30,
        /* SWITCH */
 
  *
  */
 
-struct pad_desc {
+typedef struct deprecated_pad_desc {
        unsigned mux_ctrl_ofs:12; /* IOMUXC_SW_MUX_CTL_PAD offset */
        unsigned mux_mode:8;
        unsigned pad_ctrl_ofs:12; /* IOMUXC_SW_PAD_CTRL offset */
        unsigned pad_ctrl:17;
        unsigned select_input_ofs:12; /* IOMUXC_SELECT_INPUT offset */
        unsigned select_input:3;
-};
+} iomux_v3_cfg_t;
+
+static inline unsigned int MUX_CTRL_OFS(iomux_v3_cfg_t *pad)
+{
+       return pad->mux_ctrl_ofs;
+}
+
+static inline unsigned int MUX_MODE(iomux_v3_cfg_t *pad)
+{
+       return pad->mux_mode;
+}
+
+static inline unsigned int MUX_SELECT_INPUT_OFS(iomux_v3_cfg_t *pad)
+{
+       return pad->select_input_ofs;
+}
+
+static inline unsigned int MUX_SELECT_INPUT(iomux_v3_cfg_t *pad)
+{
+       return pad->select_input;
+}
+
+static inline unsigned int MUX_PAD_CTRL_OFS(iomux_v3_cfg_t *pad)
+{
+       return pad->pad_ctrl_ofs;
+}
+
+static inline unsigned int MUX_PAD_CTRL(iomux_v3_cfg_t *pad)
+{
+       return pad->pad_ctrl;
+}
 
 #define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _select_input_ofs, \
                _select_input, _pad_ctrl)                               \
 /*
  * setups a single pad in the iomuxer
  */
-int mxc_iomux_v3_setup_pad(struct pad_desc *pad);
+int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t *pad);
 
 /*
  * setups mutliple pads
  * convenient way to call the above function with tables
  */
-int mxc_iomux_v3_setup_multiple_pads(struct pad_desc *pad_list, unsigned count);
+int mxc_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count);
 
 /*
  * Initialise the iomux controller
 
 static void __iomem *base;
 
 /*
- * setups a single pad in the iomuxer
+ * configures a single pad in the iomuxer
  */
-int mxc_iomux_v3_setup_pad(struct pad_desc *pad)
+int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t *pad)
 {
-       if (pad->mux_ctrl_ofs)
-               __raw_writel(pad->mux_mode, base + pad->mux_ctrl_ofs);
+       if (MUX_CTRL_OFS(pad))
+               __raw_writel(MUX_MODE(pad), base + MUX_CTRL_OFS(pad));
 
-       if (pad->select_input_ofs)
-               __raw_writel(pad->select_input,
-                               base + pad->select_input_ofs);
+       if (MUX_SELECT_INPUT_OFS(pad))
+               __raw_writel(MUX_SELECT_INPUT(pad),
+                       base + MUX_SELECT_INPUT(pad));
 
-       if (!(pad->pad_ctrl & NO_PAD_CTRL) && pad->pad_ctrl_ofs)
-               __raw_writel(pad->pad_ctrl, base + pad->pad_ctrl_ofs);
+       if (!(MUX_PAD_CTRL(pad) & NO_PAD_CTRL) && MUX_PAD_CTRL_OFS(pad))
+               __raw_writel(MUX_PAD_CTRL(pad), base + MUX_PAD_CTRL_OFS(pad));
        return 0;
 }
 EXPORT_SYMBOL(mxc_iomux_v3_setup_pad);
 
-int mxc_iomux_v3_setup_multiple_pads(struct pad_desc *pad_list, unsigned count)
+int mxc_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count)
 {
-       struct pad_desc *p = pad_list;
+       iomux_v3_cfg_t *p = pad_list;
        int i;
        int ret;