blob: 567c39bbfa148b1ee4e2b4abfb4f76c9cc70a91b [file] [log] [blame]
/*
* Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
* Copyright 2020, HENSOLDT Cyber GmbH
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <stdint.h>
#include "mux.h"
#include <utils/util.h>
#include <platsupport/gpio.h>
#include <platsupport/plat/gpio.h>
#include <platsupport/plat/mux.h>
#include "../../services.h"
#define IMX6_IOMUXC_PADDR 0x020E0000
#if defined(CONFIG_PLAT_IMX6DQ)
#define IMX6_IOMUXC_SIZE 0x4000
#elif defined(CONFIG_PLAT_IMX6SX)
#define IMX6_IOMUXC_SIZE 0x1000
#define IMX6_IOMUXC_GPR_PADDR 0x020E4000
#define IMX6_IOMUXC_GPR_SIZE 0x1000
#else
#error "unknown i.MX6 SOC"
#endif
#define IOMUXC_MUXCTL_OFFSET 0x4C
#define IOMUXC_PADCTL_OFFSET 0x360
#define IOMUXC_MUXCTL_FORCE_INPUT BIT(4)
#define IOMUXC_MUXCTL_MODE(x) ((x) & 0x7)
#define IOMUXC_MUXCTL_MODE_MASK IOMUXC_MUXCTL_MODE(0x7)
/* NOTE: Daisy field is only 1 but for some registers */
#define IOMUXC_IS_DAISY(x) ((x) & 0x3)
#define IOMUXC_IS_DAISY_MASK IOMUXC_IS_DAISY(0x3)
struct imx6_iomuxc_regs {
#if defined(CONFIG_PLAT_IMX6DQ)
/*** GPR ***/
uint32_t gpr0; /* +0x000 */
uint32_t gpr1; /* +0x004 */
uint32_t gpr2; /* +0x008 */
uint32_t gpr3; /* +0x00C */
uint32_t gpr4; /* +0x010 */
uint32_t gpr5; /* +0x014 */
uint32_t gpr6; /* +0x018 */
uint32_t gpr7; /* +0x01C */
uint32_t gpr8; /* +0x020 */
uint32_t gpr9; /* +0x024 */
uint32_t gpr10; /* +0x028 */
uint32_t gpr11; /* +0x02C */
uint32_t gpr12; /* +0x030 */
uint32_t gpr13; /* +0x034 */
uint32_t res0[2];
/*** MUX control ***/
uint32_t res1[3];
uint32_t sw_mux_ctl_pad_sd2_data1; /* +0x04C */
uint32_t sw_mux_ctl_pad_sd2_data2; /* +0x050 */
uint32_t sw_mux_ctl_pad_sd2_data0; /* +0x054 */
uint32_t sw_mux_ctl_pad_rgmii_txc; /* +0x058 */
uint32_t sw_mux_ctl_pad_rgmii_td0; /* +0x05C */
uint32_t sw_mux_ctl_pad_rgmii_td1; /* +0x060 */
uint32_t sw_mux_ctl_pad_rgmii_td2; /* +0x064 */
uint32_t sw_mux_ctl_pad_rgmii_td3; /* +0x068 */
uint32_t sw_mux_ctl_pad_rgmii_rx_ctl; /* +0x06C */
uint32_t sw_mux_ctl_pad_rgmii_rd0; /* +0x070 */
uint32_t sw_mux_ctl_pad_rgmii_tx_ctl; /* +0x074 */
uint32_t sw_mux_ctl_pad_rgmii_rd1; /* +0x078 */
uint32_t sw_mux_ctl_pad_rgmii_rd2; /* +0x07C */
uint32_t sw_mux_ctl_pad_rgmii_rd3; /* +0x080 */
uint32_t sw_mux_ctl_pad_rgmii_rxc; /* +0x084 */
uint32_t sw_mux_ctl_pad_eim_addr25; /* +0x088 */
uint32_t sw_mux_ctl_pad_eim_eb2; /* +0x08C */
uint32_t sw_mux_ctl_pad_eim_data16; /* +0x090 */
uint32_t sw_mux_ctl_pad_eim_data17; /* +0x094 */
uint32_t sw_mux_ctl_pad_eim_data18; /* +0x098 */
uint32_t sw_mux_ctl_pad_eim_data19; /* +0x09C */
uint32_t sw_mux_ctl_pad_eim_data20; /* +0x0A0 */
uint32_t sw_mux_ctl_pad_eim_data21; /* +0x0A4 */
uint32_t sw_mux_ctl_pad_eim_data22; /* +0x0A8 */
uint32_t sw_mux_ctl_pad_eim_data23; /* +0x0AC */
uint32_t sw_mux_ctl_pad_eim_eb3; /* +0x0B0 */
uint32_t sw_mux_ctl_pad_eim_data24; /* +0x0B4 */
uint32_t sw_mux_ctl_pad_eim_data25; /* +0x0B8 */
uint32_t sw_mux_ctl_pad_eim_data26; /* +0x0BC */
uint32_t sw_mux_ctl_pad_eim_data27; /* +0x0C0 */
uint32_t sw_mux_ctl_pad_eim_data28; /* +0x0C4 */
uint32_t sw_mux_ctl_pad_eim_data29; /* +0x0C8 */
uint32_t sw_mux_ctl_pad_eim_data30; /* +0x0CC */
uint32_t sw_mux_ctl_pad_eim_data31; /* +0x0D0 */
uint32_t sw_mux_ctl_pad_eim_addr24; /* +0x0D4 */
uint32_t sw_mux_ctl_pad_eim_addr23; /* +0x0D8 */
uint32_t sw_mux_ctl_pad_eim_addr22; /* +0x0DC */
uint32_t sw_mux_ctl_pad_eim_addr21; /* +0x0E0 */
uint32_t sw_mux_ctl_pad_eim_addr20; /* +0x0E4 */
uint32_t sw_mux_ctl_pad_eim_addr19; /* +0x0E8 */
uint32_t sw_mux_ctl_pad_eim_addr18; /* +0x0EC */
uint32_t sw_mux_ctl_pad_eim_addr17; /* +0x0F0 */
uint32_t sw_mux_ctl_pad_eim_addr16; /* +0x0F4 */
uint32_t sw_mux_ctl_pad_eim_cs0; /* +0x0F8 */
uint32_t sw_mux_ctl_pad_eim_cs1; /* +0x0FC */
uint32_t sw_mux_ctl_pad_eim_oe; /* +0x100 */
uint32_t sw_mux_ctl_pad_eim_rw; /* +0x104 */
uint32_t sw_mux_ctl_pad_eim_lba; /* +0x108 */
uint32_t sw_mux_ctl_pad_eim_eb0; /* +0x10C */
uint32_t sw_mux_ctl_pad_eim_eb1; /* +0x110 */
uint32_t sw_mux_ctl_pad_eim_ad00; /* +0x114 */
uint32_t sw_mux_ctl_pad_eim_ad01; /* +0x118 */
uint32_t sw_mux_ctl_pad_eim_ad02; /* +0x11C */
uint32_t sw_mux_ctl_pad_eim_ad03; /* +0x120 */
uint32_t sw_mux_ctl_pad_eim_ad04; /* +0x124 */
uint32_t sw_mux_ctl_pad_eim_ad05; /* +0x128 */
uint32_t sw_mux_ctl_pad_eim_ad06; /* +0x12C */
uint32_t sw_mux_ctl_pad_eim_ad07; /* +0x130 */
uint32_t sw_mux_ctl_pad_eim_ad08; /* +0x134 */
uint32_t sw_mux_ctl_pad_eim_ad09; /* +0x138 */
uint32_t sw_mux_ctl_pad_eim_ad10; /* +0x13C */
uint32_t sw_mux_ctl_pad_eim_ad11; /* +0x140 */
uint32_t sw_mux_ctl_pad_eim_ad12; /* +0x144 */
uint32_t sw_mux_ctl_pad_eim_ad13; /* +0x148 */
uint32_t sw_mux_ctl_pad_eim_ad14; /* +0x14C */
uint32_t sw_mux_ctl_pad_eim_ad15; /* +0x150 */
uint32_t sw_mux_ctl_pad_eim_wait; /* +0x154 */
uint32_t sw_mux_ctl_pad_eim_bclk; /* +0x158 */
uint32_t sw_mux_ctl_pad_di0_disp_clk; /* +0x15C */
uint32_t sw_mux_ctl_pad_di0_pin15; /* +0x160 */
uint32_t sw_mux_ctl_pad_di0_pin02; /* +0x164 */
uint32_t sw_mux_ctl_pad_di0_pin03; /* +0x168 */
uint32_t sw_mux_ctl_pad_di0_pin04; /* +0x16C */
uint32_t sw_mux_ctl_pad_disp0_data00; /* +0x170 */
uint32_t sw_mux_ctl_pad_disp0_data01; /* +0x174 */
uint32_t sw_mux_ctl_pad_disp0_data02; /* +0x178 */
uint32_t sw_mux_ctl_pad_disp0_data03; /* +0x17C */
uint32_t sw_mux_ctl_pad_disp0_data04; /* +0x180 */
uint32_t sw_mux_ctl_pad_disp0_data05; /* +0x184 */
uint32_t sw_mux_ctl_pad_disp0_data06; /* +0x188 */
uint32_t sw_mux_ctl_pad_disp0_data07; /* +0x18C */
uint32_t sw_mux_ctl_pad_disp0_data08; /* +0x190 */
uint32_t sw_mux_ctl_pad_disp0_data09; /* +0x194 */
uint32_t sw_mux_ctl_pad_disp0_data10; /* +0x198 */
uint32_t sw_mux_ctl_pad_disp0_data11; /* +0x19C */
uint32_t sw_mux_ctl_pad_disp0_data12; /* +0x1A0 */
uint32_t sw_mux_ctl_pad_disp0_data13; /* +0x1A4 */
uint32_t sw_mux_ctl_pad_disp0_data14; /* +0x1A8 */
uint32_t sw_mux_ctl_pad_disp0_data15; /* +0x1AC */
uint32_t sw_mux_ctl_pad_disp0_data16; /* +0x1B0 */
uint32_t sw_mux_ctl_pad_disp0_data17; /* +0x1B4 */
uint32_t sw_mux_ctl_pad_disp0_data18; /* +0x1B8 */
uint32_t sw_mux_ctl_pad_disp0_data19; /* +0x1BC */
uint32_t sw_mux_ctl_pad_disp0_data20; /* +0x1C0 */
uint32_t sw_mux_ctl_pad_disp0_data21; /* +0x1C4 */
uint32_t sw_mux_ctl_pad_disp0_data22; /* +0x1C8 */
uint32_t sw_mux_ctl_pad_disp0_data23; /* +0x1CC */
uint32_t sw_mux_ctl_pad_enet_mdio; /* +0x1D0 */
uint32_t sw_mux_ctl_pad_enet_ref_clk; /* +0x1D4 */
uint32_t sw_mux_ctl_pad_enet_rx_er; /* +0x1D8 */
uint32_t sw_mux_ctl_pad_enet_crs_dv; /* +0x1DC */
uint32_t sw_mux_ctl_pad_enet_rx_data1; /* +0x1E0 */
uint32_t sw_mux_ctl_pad_enet_rx_data0; /* +0x1E4 */
uint32_t sw_mux_ctl_pad_enet_tx_en; /* +0x1E8 */
uint32_t sw_mux_ctl_pad_enet_tx_data1; /* +0x1EC */
uint32_t sw_mux_ctl_pad_enet_tx_data0; /* +0x1F0 */
uint32_t sw_mux_ctl_pad_enet_mdc; /* +0x1F4 */
uint32_t sw_mux_ctl_pad_key_col0; /* +0x1F8 */
uint32_t sw_mux_ctl_pad_key_row0; /* +0x1FC */
uint32_t sw_mux_ctl_pad_key_col1; /* +0x200 */
uint32_t sw_mux_ctl_pad_key_row1; /* +0x204 */
uint32_t sw_mux_ctl_pad_key_col2; /* +0x208 */
uint32_t sw_mux_ctl_pad_key_row2; /* +0x20C */
uint32_t sw_mux_ctl_pad_key_col3; /* +0x210 */
uint32_t sw_mux_ctl_pad_key_row3; /* +0x214 */
uint32_t sw_mux_ctl_pad_key_col4; /* +0x218 */
uint32_t sw_mux_ctl_pad_key_row4; /* +0x21C */
uint32_t sw_mux_ctl_pad_gpio00; /* +0x220 */
uint32_t sw_mux_ctl_pad_gpio01; /* +0x224 */
uint32_t sw_mux_ctl_pad_gpio09; /* +0x228 */
uint32_t sw_mux_ctl_pad_gpio03; /* +0x22C */
uint32_t sw_mux_ctl_pad_gpio06; /* +0x230 */
uint32_t sw_mux_ctl_pad_gpio02; /* +0x234 */
uint32_t sw_mux_ctl_pad_gpio04; /* +0x238 */
uint32_t sw_mux_ctl_pad_gpio05; /* +0x23C */
uint32_t sw_mux_ctl_pad_gpio07; /* +0x240 */
uint32_t sw_mux_ctl_pad_gpio08; /* +0x244 */
uint32_t sw_mux_ctl_pad_gpio16; /* +0x248 */
uint32_t sw_mux_ctl_pad_gpio17; /* +0x24C */
uint32_t sw_mux_ctl_pad_gpio18; /* +0x250 */
uint32_t sw_mux_ctl_pad_gpio19; /* +0x254 */
uint32_t sw_mux_ctl_pad_csi0_pixclk; /* +0x258 */
uint32_t sw_mux_ctl_pad_csi0_hsync; /* +0x25C */
uint32_t sw_mux_ctl_pad_csi0_data_en; /* +0x260 */
uint32_t sw_mux_ctl_pad_csi0_vsync; /* +0x264 */
uint32_t sw_mux_ctl_pad_csi0_data04; /* +0x268 */
uint32_t sw_mux_ctl_pad_csi0_data05; /* +0x26C */
uint32_t sw_mux_ctl_pad_csi0_data06; /* +0x270 */
uint32_t sw_mux_ctl_pad_csi0_data07; /* +0x274 */
uint32_t sw_mux_ctl_pad_csi0_data08; /* +0x278 */
uint32_t sw_mux_ctl_pad_csi0_data09; /* +0x27C */
uint32_t sw_mux_ctl_pad_csi0_data10; /* +0x280 */
uint32_t sw_mux_ctl_pad_csi0_data11; /* +0x284 */
uint32_t sw_mux_ctl_pad_csi0_data12; /* +0x288 */
uint32_t sw_mux_ctl_pad_csi0_data13; /* +0x28C */
uint32_t sw_mux_ctl_pad_csi0_data14; /* +0x290 */
uint32_t sw_mux_ctl_pad_csi0_data15; /* +0x294 */
uint32_t sw_mux_ctl_pad_csi0_data16; /* +0x298 */
uint32_t sw_mux_ctl_pad_csi0_data17; /* +0x29C */
uint32_t sw_mux_ctl_pad_csi0_data18; /* +0x2A0 */
uint32_t sw_mux_ctl_pad_csi0_data19; /* +0x2A4 */
uint32_t sw_mux_ctl_pad_sd3_data7; /* +0x2A8 */
uint32_t sw_mux_ctl_pad_sd3_data6; /* +0x2AC */
uint32_t sw_mux_ctl_pad_sd3_data5; /* +0x2B0 */
uint32_t sw_mux_ctl_pad_sd3_data4; /* +0x2B4 */
uint32_t sw_mux_ctl_pad_sd3_cmd; /* +0x2B8 */
uint32_t sw_mux_ctl_pad_sd3_clk; /* +0x2BC */
uint32_t sw_mux_ctl_pad_sd3_data0; /* +0x2C0 */
uint32_t sw_mux_ctl_pad_sd3_data1; /* +0x2C4 */
uint32_t sw_mux_ctl_pad_sd3_data2; /* +0x2C8 */
uint32_t sw_mux_ctl_pad_sd3_data3; /* +0x2CC */
uint32_t sw_mux_ctl_pad_sd3_reset; /* +0x2D0 */
uint32_t sw_mux_ctl_pad_nand_cle; /* +0x2D4 */
uint32_t sw_mux_ctl_pad_nand_ale; /* +0x2D8 */
uint32_t sw_mux_ctl_pad_nand_wp_b; /* +0x2DC */
uint32_t sw_mux_ctl_pad_nand_ready; /* +0x2E0 */
uint32_t sw_mux_ctl_pad_nand_cs0_b; /* +0x2E4 */
uint32_t sw_mux_ctl_pad_nand_cs1_b; /* +0x2E8 */
uint32_t sw_mux_ctl_pad_nand_cs2_b; /* +0x2EC */
uint32_t sw_mux_ctl_pad_nand_cs3_b; /* +0x2F0 */
uint32_t sw_mux_ctl_pad_sd4_cmd; /* +0x2F4 */
uint32_t sw_mux_ctl_pad_sd4_clk; /* +0x2F8 */
uint32_t sw_mux_ctl_pad_nand_data00; /* +0x2FC */
uint32_t sw_mux_ctl_pad_nand_data01; /* +0x300 */
uint32_t sw_mux_ctl_pad_nand_data02; /* +0x304 */
uint32_t sw_mux_ctl_pad_nand_data03; /* +0x308 */
uint32_t sw_mux_ctl_pad_nand_data04; /* +0x30C */
uint32_t sw_mux_ctl_pad_nand_data05; /* +0x310 */
uint32_t sw_mux_ctl_pad_nand_data06; /* +0x314 */
uint32_t sw_mux_ctl_pad_nand_data07; /* +0x318 */
uint32_t sw_mux_ctl_pad_sd4_data0; /* +0x31C */
uint32_t sw_mux_ctl_pad_sd4_data1; /* +0x320 */
uint32_t sw_mux_ctl_pad_sd4_data2; /* +0x324 */
uint32_t sw_mux_ctl_pad_sd4_data3; /* +0x328 */
uint32_t sw_mux_ctl_pad_sd4_data4; /* +0x32C */
uint32_t sw_mux_ctl_pad_sd4_data5; /* +0x330 */
uint32_t sw_mux_ctl_pad_sd4_data6; /* +0x334 */
uint32_t sw_mux_ctl_pad_sd4_data7; /* +0x338 */
uint32_t sw_mux_ctl_pad_sd1_data1; /* +0x33C */
uint32_t sw_mux_ctl_pad_sd1_data0; /* +0x340 */
uint32_t sw_mux_ctl_pad_sd1_data3; /* +0x344 */
uint32_t sw_mux_ctl_pad_sd1_cmd; /* +0x348 */
uint32_t sw_mux_ctl_pad_sd1_data2; /* +0x34C */
uint32_t sw_mux_ctl_pad_sd1_clk; /* +0x350 */
uint32_t sw_mux_ctl_pad_sd2_clk; /* +0x354 */
uint32_t sw_mux_ctl_pad_sd2_cmd; /* +0x358 */
uint32_t sw_mux_ctl_pad_sd2_data3; /* +0x35C */
/*** Pad Control ***/
uint32_t sw_pad_ctl_pad_sd2_data1; /* +0x360 */
uint32_t sw_pad_ctl_pad_sd2_data2; /* +0x364 */
uint32_t sw_pad_ctl_pad_sd2_data0; /* +0x368 */
uint32_t sw_pad_ctl_pad_rgmii_txc; /* +0x36C */
uint32_t sw_pad_ctl_pad_rgmii_td0; /* +0x370 */
uint32_t sw_pad_ctl_pad_rgmii_td1; /* +0x374 */
uint32_t sw_pad_ctl_pad_rgmii_td2; /* +0x378 */
uint32_t sw_pad_ctl_pad_rgmii_td3; /* +0x37C */
uint32_t sw_pad_ctl_pad_rgmii_rx_ctl; /* +0x380 */
uint32_t sw_pad_ctl_pad_rgmii_rd0; /* +0x384 */
uint32_t sw_pad_ctl_pad_rgmii_tx_ctl; /* +0x388 */
uint32_t sw_pad_ctl_pad_rgmii_rd1; /* +0x38C */
uint32_t sw_pad_ctl_pad_rgmii_rd2; /* +0x390 */
uint32_t sw_pad_ctl_pad_rgmii_rd3; /* +0x394 */
uint32_t sw_pad_ctl_pad_rgmii_rxc; /* +0x398 */
uint32_t sw_pad_ctl_pad_eim_addr25; /* +0x39C */
uint32_t sw_pad_ctl_pad_eim_eb2; /* +0x3A0 */
uint32_t sw_pad_ctl_pad_eim_data16; /* +0x3A4 */
uint32_t sw_pad_ctl_pad_eim_data17; /* +0x3A8 */
uint32_t sw_pad_ctl_pad_eim_data18; /* +0x3AC */
uint32_t sw_pad_ctl_pad_eim_data19; /* +0x3B0 */
uint32_t sw_pad_ctl_pad_eim_data20; /* +0x3B4 */
uint32_t sw_pad_ctl_pad_eim_data21; /* +0x3B8 */
uint32_t sw_pad_ctl_pad_eim_data22; /* +0x3BC */
uint32_t sw_pad_ctl_pad_eim_data23; /* +0x3C0 */
uint32_t sw_pad_ctl_pad_eim_eb3; /* +0x3C4 */
uint32_t sw_pad_ctl_pad_eim_data24; /* +0x3C8 */
uint32_t sw_pad_ctl_pad_eim_data25; /* +0x3CC */
uint32_t sw_pad_ctl_pad_eim_data26; /* +0x3D0 */
uint32_t sw_pad_ctl_pad_eim_data27; /* +0x3D4 */
uint32_t sw_pad_ctl_pad_eim_data28; /* +0x3D8 */
uint32_t sw_pad_ctl_pad_eim_data29; /* +0x3DC */
uint32_t sw_pad_ctl_pad_eim_data30; /* +0x3E0 */
uint32_t sw_pad_ctl_pad_eim_data31; /* +0x3E4 */
uint32_t sw_pad_ctl_pad_eim_addr24; /* +0x3E8 */
uint32_t sw_pad_ctl_pad_eim_addr23; /* +0x3EC */
uint32_t sw_pad_ctl_pad_eim_addr22; /* +0x3F0 */
uint32_t sw_pad_ctl_pad_eim_addr21; /* +0x3F4 */
uint32_t sw_pad_ctl_pad_eim_addr20; /* +0x3F8 */
uint32_t sw_pad_ctl_pad_eim_addr19; /* +0x3FC */
uint32_t sw_pad_ctl_pad_eim_addr18; /* +0x400 */
uint32_t sw_pad_ctl_pad_eim_addr17; /* +0x404 */
uint32_t sw_pad_ctl_pad_eim_addr16; /* +0x408 */
uint32_t sw_pad_ctl_pad_eim_cs0; /* +0x40C */
uint32_t sw_pad_ctl_pad_eim_cs1; /* +0x410 */
uint32_t sw_pad_ctl_pad_eim_oe; /* +0x414 */
uint32_t sw_pad_ctl_pad_eim_rw; /* +0x418 */
uint32_t sw_pad_ctl_pad_eim_lba; /* +0x41C */
uint32_t sw_pad_ctl_pad_eim_eb0; /* +0x420 */
uint32_t sw_pad_ctl_pad_eim_eb1; /* +0x424 */
uint32_t sw_pad_ctl_pad_eim_ad00; /* +0x428 */
uint32_t sw_pad_ctl_pad_eim_ad01; /* +0x42C */
uint32_t sw_pad_ctl_pad_eim_ad02; /* +0x430 */
uint32_t sw_pad_ctl_pad_eim_ad03; /* +0x434 */
uint32_t sw_pad_ctl_pad_eim_ad04; /* +0x438 */
uint32_t sw_pad_ctl_pad_eim_ad05; /* +0x43C */
uint32_t sw_pad_ctl_pad_eim_ad06; /* +0x440 */
uint32_t sw_pad_ctl_pad_eim_ad07; /* +0x444 */
uint32_t sw_pad_ctl_pad_eim_ad08; /* +0x448 */
uint32_t sw_pad_ctl_pad_eim_ad09; /* +0x44C */
uint32_t sw_pad_ctl_pad_eim_ad10; /* +0x450 */
uint32_t sw_pad_ctl_pad_eim_ad11; /* +0x454 */
uint32_t sw_pad_ctl_pad_eim_ad12; /* +0x458 */
uint32_t sw_pad_ctl_pad_eim_ad13; /* +0x45C */
uint32_t sw_pad_ctl_pad_eim_ad14; /* +0x460 */
uint32_t sw_pad_ctl_pad_eim_ad15; /* +0x464 */
uint32_t sw_pad_ctl_pad_eim_wait; /* +0x468 */
uint32_t sw_pad_ctl_pad_eim_bclk; /* +0x46C */
uint32_t sw_pad_ctl_pad_di0_disp_clk; /* +0x470 */
uint32_t sw_pad_ctl_pad_di0_pin15; /* +0x474 */
uint32_t sw_pad_ctl_pad_di0_pin02; /* +0x478 */
uint32_t sw_pad_ctl_pad_di0_pin03; /* +0x47C */
uint32_t sw_pad_ctl_pad_di0_pin04; /* +0x480 */
uint32_t sw_pad_ctl_pad_disp0_data00; /* +0x484 */
uint32_t sw_pad_ctl_pad_disp0_data01; /* +0x488 */
uint32_t sw_pad_ctl_pad_disp0_data02; /* +0x48C */
uint32_t sw_pad_ctl_pad_disp0_data03; /* +0x490 */
uint32_t sw_pad_ctl_pad_disp0_data04; /* +0x494 */
uint32_t sw_pad_ctl_pad_disp0_data05; /* +0x498 */
uint32_t sw_pad_ctl_pad_disp0_data06; /* +0x49C */
uint32_t sw_pad_ctl_pad_disp0_data07; /* +0x4A0 */
uint32_t sw_pad_ctl_pad_disp0_data08; /* +0x4A4 */
uint32_t sw_pad_ctl_pad_disp0_data09; /* +0x4A8 */
uint32_t sw_pad_ctl_pad_disp0_data10; /* +0x4AC */
uint32_t sw_pad_ctl_pad_disp0_data11; /* +0x4B0 */
uint32_t sw_pad_ctl_pad_disp0_data12; /* +0x4B4 */
uint32_t sw_pad_ctl_pad_disp0_data13; /* +0x4B8 */
uint32_t sw_pad_ctl_pad_disp0_data14; /* +0x4BC */
uint32_t sw_pad_ctl_pad_disp0_data15; /* +0x4C0 */
uint32_t sw_pad_ctl_pad_disp0_data16; /* +0x4C4 */
uint32_t sw_pad_ctl_pad_disp0_data17; /* +0x4C8 */
uint32_t sw_pad_ctl_pad_disp0_data18; /* +0x4CC */
uint32_t sw_pad_ctl_pad_disp0_data19; /* +0x4D0 */
uint32_t sw_pad_ctl_pad_disp0_data20; /* +0x4D4 */
uint32_t sw_pad_ctl_pad_disp0_data21; /* +0x4D8 */
uint32_t sw_pad_ctl_pad_disp0_data22; /* +0x4DC */
uint32_t sw_pad_ctl_pad_disp0_data23; /* +0x4E0 */
uint32_t sw_pad_ctl_pad_enet_mdio; /* +0x4E4 */
uint32_t sw_pad_ctl_pad_enet_ref_clk; /* +0x4E8 */
uint32_t sw_pad_ctl_pad_enet_rx_er; /* +0x4EC */
uint32_t sw_pad_ctl_pad_enet_crs_dv; /* +0x4F0 */
uint32_t sw_pad_ctl_pad_enet_rx_data1; /* +0x4F4 */
uint32_t sw_pad_ctl_pad_enet_rx_data0; /* +0x4F8 */
uint32_t sw_pad_ctl_pad_enet_tx_en; /* +0x4FC */
uint32_t sw_pad_ctl_pad_enet_tx_data1; /* +0x500 */
uint32_t sw_pad_ctl_pad_enet_tx_data0; /* +0x504 */
uint32_t sw_pad_ctl_pad_enet_mdc; /* +0x508 */
uint32_t sw_pad_ctl_pad_dram_sdqs5_p; /* +0x50C */
uint32_t sw_pad_ctl_pad_dram_dqm5; /* +0x510 */
uint32_t sw_pad_ctl_pad_dram_dqm4; /* +0x514 */
uint32_t sw_pad_ctl_pad_dram_sdqs4_p; /* +0x518 */
uint32_t sw_pad_ctl_pad_dram_sdqs3_p; /* +0x51C */
uint32_t sw_pad_ctl_pad_dram_dqm3; /* +0x520 */
uint32_t sw_pad_ctl_pad_dram_sdqs2_p; /* +0x524 */
uint32_t sw_pad_ctl_pad_dram_dqm2; /* +0x528 */
uint32_t sw_pad_ctl_pad_dram_addr00; /* +0x52C */
uint32_t sw_pad_ctl_pad_dram_addr01; /* +0x530 */
uint32_t sw_pad_ctl_pad_dram_addr02; /* +0x534 */
uint32_t sw_pad_ctl_pad_dram_addr03; /* +0x538 */
uint32_t sw_pad_ctl_pad_dram_addr04; /* +0x53C */
uint32_t sw_pad_ctl_pad_dram_addr05; /* +0x540 */
uint32_t sw_pad_ctl_pad_dram_addr06; /* +0x544 */
uint32_t sw_pad_ctl_pad_dram_addr07; /* +0x548 */
uint32_t sw_pad_ctl_pad_dram_addr08; /* +0x54C */
uint32_t sw_pad_ctl_pad_dram_addr09; /* +0x550 */
uint32_t sw_pad_ctl_pad_dram_addr10; /* +0x554 */
uint32_t sw_pad_ctl_pad_dram_addr11; /* +0x558 */
uint32_t sw_pad_ctl_pad_dram_addr12; /* +0x55C */
uint32_t sw_pad_ctl_pad_dram_addr13; /* +0x560 */
uint32_t sw_pad_ctl_pad_dram_addr14; /* +0x564 */
uint32_t sw_pad_ctl_pad_dram_addr15; /* +0x568 */
uint32_t sw_pad_ctl_pad_dram_cas; /* +0x56C */
uint32_t sw_pad_ctl_pad_dram_cs0; /* +0x570 */
uint32_t sw_pad_ctl_pad_dram_cs1; /* +0x574 */
uint32_t sw_pad_ctl_pad_dram_ras; /* +0x578 */
uint32_t sw_pad_ctl_pad_dram_reset; /* +0x57C */
uint32_t sw_pad_ctl_pad_dram_sdba0; /* +0x580 */
uint32_t sw_pad_ctl_pad_dram_sdba1; /* +0x584 */
uint32_t sw_pad_ctl_pad_dram_sdclk0_p; /* +0x588 */
uint32_t sw_pad_ctl_pad_dram_sdba2; /* +0x58C */
uint32_t sw_pad_ctl_pad_dram_sdcke0; /* +0x590 */
uint32_t sw_pad_ctl_pad_dram_sdclk1_p; /* +0x594 */
uint32_t sw_pad_ctl_pad_dram_sdcke1; /* +0x598 */
uint32_t sw_pad_ctl_pad_dram_odt0; /* +0x59C */
uint32_t sw_pad_ctl_pad_dram_odt1; /* +0x5A0 */
uint32_t sw_pad_ctl_pad_dram_sdwe; /* +0x5A4 */
uint32_t sw_pad_ctl_pad_dram_sdqs0_p; /* +0x5A8 */
uint32_t sw_pad_ctl_pad_dram_dqm0; /* +0x5AC */
uint32_t sw_pad_ctl_pad_dram_sdqs1_p; /* +0x5B0 */
uint32_t sw_pad_ctl_pad_dram_dqm1; /* +0x5B4 */
uint32_t sw_pad_ctl_pad_dram_sdqs6_p; /* +0x5B8 */
uint32_t sw_pad_ctl_pad_dram_dqm6; /* +0x5BC */
uint32_t sw_pad_ctl_pad_dram_sdqs7_p; /* +0x5C0 */
uint32_t sw_pad_ctl_pad_dram_dqm7; /* +0x5C4 */
uint32_t sw_pad_ctl_pad_key_col0; /* +0x5C8 */
uint32_t sw_pad_ctl_pad_key_row0; /* +0x5CC */
uint32_t sw_pad_ctl_pad_key_col1; /* +0x5D0 */
uint32_t sw_pad_ctl_pad_key_row1; /* +0x5D4 */
uint32_t sw_pad_ctl_pad_key_col2; /* +0x5D8 */
uint32_t sw_pad_ctl_pad_key_row2; /* +0x5DC */
uint32_t sw_pad_ctl_pad_key_col3; /* +0x5E0 */
uint32_t sw_pad_ctl_pad_key_row3; /* +0x5E4 */
uint32_t sw_pad_ctl_pad_key_col4; /* +0x5E8 */
uint32_t sw_pad_ctl_pad_key_row4; /* +0x5EC */
uint32_t sw_pad_ctl_pad_mux00; /* +0x5F0 */
uint32_t sw_pad_ctl_pad_mux01; /* +0x5F4 */
uint32_t sw_pad_ctl_pad_mux09; /* +0x5F8 */
uint32_t sw_pad_ctl_pad_mux03; /* +0x5FC */
uint32_t sw_pad_ctl_pad_mux06; /* +0x600 */
uint32_t sw_pad_ctl_pad_mux02; /* +0x604 */
uint32_t sw_pad_ctl_pad_mux04; /* +0x608 */
uint32_t sw_pad_ctl_pad_mux05; /* +0x60C */
uint32_t sw_pad_ctl_pad_mux07; /* +0x610 */
uint32_t sw_pad_ctl_pad_mux08; /* +0x614 */
uint32_t sw_pad_ctl_pad_mux16; /* +0x618 */
uint32_t sw_pad_ctl_pad_mux17; /* +0x61C */
uint32_t sw_pad_ctl_pad_mux18; /* +0x620 */
uint32_t sw_pad_ctl_pad_mux19; /* +0x624 */
uint32_t sw_pad_ctl_pad_csi0_pixclk; /* +0x628 */
uint32_t sw_pad_ctl_pad_csi0_hsync; /* +0x62C */
uint32_t sw_pad_ctl_pad_csi0_data_en; /* +0x630 */
uint32_t sw_pad_ctl_pad_csi0_vsync; /* +0x634 */
uint32_t sw_pad_ctl_pad_csi0_data04; /* +0x638 */
uint32_t sw_pad_ctl_pad_csi0_data05; /* +0x63C */
uint32_t sw_pad_ctl_pad_csi0_data06; /* +0x640 */
uint32_t sw_pad_ctl_pad_csi0_data07; /* +0x644 */
uint32_t sw_pad_ctl_pad_csi0_data08; /* +0x648 */
uint32_t sw_pad_ctl_pad_csi0_data09; /* +0x64C */
uint32_t sw_pad_ctl_pad_csi0_data10; /* +0x650 */
uint32_t sw_pad_ctl_pad_csi0_data11; /* +0x654 */
uint32_t sw_pad_ctl_pad_csi0_data12; /* +0x658 */
uint32_t sw_pad_ctl_pad_csi0_data13; /* +0x65C */
uint32_t sw_pad_ctl_pad_csi0_data14; /* +0x660 */
uint32_t sw_pad_ctl_pad_csi0_data15; /* +0x664 */
uint32_t sw_pad_ctl_pad_csi0_data16; /* +0x668 */
uint32_t sw_pad_ctl_pad_csi0_data17; /* +0x66C */
uint32_t sw_pad_ctl_pad_csi0_data18; /* +0x670 */
uint32_t sw_pad_ctl_pad_csi0_data19; /* +0x674 */
uint32_t sw_pad_ctl_pad_jtag_tms; /* +0x678 */
uint32_t sw_pad_ctl_pad_jtag_mod; /* +0x67C */
uint32_t sw_pad_ctl_pad_jtag_trstb; /* +0x680 */
uint32_t sw_pad_ctl_pad_jtag_tdi; /* +0x684 */
uint32_t sw_pad_ctl_pad_jtag_tck; /* +0x688 */
uint32_t sw_pad_ctl_pad_jtag_tdo; /* +0x68C */
uint32_t sw_pad_ctl_pad_sd3_data7; /* +0x690 */
uint32_t sw_pad_ctl_pad_sd3_data6; /* +0x694 */
uint32_t sw_pad_ctl_pad_sd3_data5; /* +0x698 */
uint32_t sw_pad_ctl_pad_sd3_data4; /* +0x69C */
uint32_t sw_pad_ctl_pad_sd3_cmd; /* +0x6A0 */
uint32_t sw_pad_ctl_pad_sd3_clk; /* +0x6A4 */
uint32_t sw_pad_ctl_pad_sd3_data0; /* +0x6A8 */
uint32_t sw_pad_ctl_pad_sd3_data1; /* +0x6AC */
uint32_t sw_pad_ctl_pad_sd3_data2; /* +0x6B0 */
uint32_t sw_pad_ctl_pad_sd3_data3; /* +0x6B4 */
uint32_t sw_pad_ctl_pad_sd3_reset; /* +0x6B8 */
uint32_t sw_pad_ctl_pad_nand_cle; /* +0x6BC */
uint32_t sw_pad_ctl_pad_nand_ale; /* +0x6C0 */
uint32_t sw_pad_ctl_pad_nand_wp_b; /* +0x6C4 */
uint32_t sw_pad_ctl_pad_nand_ready; /* +0x6C8 */
uint32_t sw_pad_ctl_pad_nand_cs0_b; /* +0x6CC */
uint32_t sw_pad_ctl_pad_nand_cs1_b; /* +0x6D0 */
uint32_t sw_pad_ctl_pad_nand_cs2_b; /* +0x6D4 */
uint32_t sw_pad_ctl_pad_nand_cs3_b; /* +0x6D8 */
uint32_t sw_pad_ctl_pad_sd4_cmd; /* +0x6DC */
uint32_t sw_pad_ctl_pad_sd4_clk; /* +0x6E0 */
uint32_t sw_pad_ctl_pad_nand_data00; /* +0x6E4 */
uint32_t sw_pad_ctl_pad_nand_data01; /* +0x6E8 */
uint32_t sw_pad_ctl_pad_nand_data02; /* +0x6EC */
uint32_t sw_pad_ctl_pad_nand_data03; /* +0x6F0 */
uint32_t sw_pad_ctl_pad_nand_data04; /* +0x6F4 */
uint32_t sw_pad_ctl_pad_nand_data05; /* +0x6F8 */
uint32_t sw_pad_ctl_pad_nand_data06; /* +0x6FC */
uint32_t sw_pad_ctl_pad_nand_data07; /* +0x700 */
uint32_t sw_pad_ctl_pad_sd4_data0; /* +0x704 */
uint32_t sw_pad_ctl_pad_sd4_data1; /* +0x708 */
uint32_t sw_pad_ctl_pad_sd4_data2; /* +0x70C */
uint32_t sw_pad_ctl_pad_sd4_data3; /* +0x710 */
uint32_t sw_pad_ctl_pad_sd4_data4; /* +0x714 */
uint32_t sw_pad_ctl_pad_sd4_data5; /* +0x718 */
uint32_t sw_pad_ctl_pad_sd4_data6; /* +0x71C */
uint32_t sw_pad_ctl_pad_sd4_data7; /* +0x720 */
uint32_t sw_pad_ctl_pad_sd1_data1; /* +0x724 */
uint32_t sw_pad_ctl_pad_sd1_data0; /* +0x728 */
uint32_t sw_pad_ctl_pad_sd1_data3; /* +0x72C */
uint32_t sw_pad_ctl_pad_sd1_cmd; /* +0x730 */
uint32_t sw_pad_ctl_pad_sd1_data2; /* +0x734 */
uint32_t sw_pad_ctl_pad_sd1_clk; /* +0x738 */
uint32_t sw_pad_ctl_pad_sd2_clk; /* +0x73C */
uint32_t sw_pad_ctl_pad_sd2_cmd; /* +0x740 */
uint32_t sw_pad_ctl_pad_sd2_data3; /* +0x744 */
/*** Group ***/
uint32_t sw_pad_ctl_grp_b7ds; /* +0x748 */
uint32_t sw_pad_ctl_grp_addds; /* +0x74C */
uint32_t sw_pad_ctl_grp_ddrmode_ctl; /* +0x750 */
uint32_t sw_pad_ctl_grp_term_ctl0; /* +0x754 */
uint32_t sw_pad_ctl_grp_ddrpke; /* +0x758 */
uint32_t sw_pad_ctl_grp_term_ctl1; /* +0x75C */
uint32_t sw_pad_ctl_grp_term_ctl2; /* +0x760 */
uint32_t sw_pad_ctl_grp_term_ctl3; /* +0x764 */
uint32_t sw_pad_ctl_grp_ddrpk; /* +0x768 */
uint32_t sw_pad_ctl_grp_term_ctl4; /* +0x76C */
uint32_t sw_pad_ctl_grp_ddrhys; /* +0x770 */
uint32_t sw_pad_ctl_grp_ddrmode; /* +0x774 */
uint32_t sw_pad_ctl_grp_term_ctl5; /* +0x778 */
uint32_t sw_pad_ctl_grp_term_ctl6; /* +0x77C */
uint32_t sw_pad_ctl_grp_term_ctl7; /* +0x780 */
uint32_t sw_pad_ctl_grp_b0ds; /* +0x784 */
uint32_t sw_pad_ctl_grp_b1ds; /* +0x788 */
uint32_t sw_pad_ctl_grp_ctlds; /* +0x78C */
uint32_t sw_pad_ctl_grp_ddr_type_rgmii; /* +0x790 */
uint32_t sw_pad_ctl_grp_b2ds; /* +0x794 */
uint32_t sw_pad_ctl_grp_ddr_type; /* +0x798 */
uint32_t sw_pad_ctl_grp_b3ds; /* +0x79C */
uint32_t sw_pad_ctl_grp_b4ds; /* +0x7A0 */
uint32_t sw_pad_ctl_grp_b5ds; /* +0x7A4 */
uint32_t sw_pad_ctl_grp_b6ds; /* +0x7A8 */
uint32_t sw_pad_ctl_grp_rgmii_term; /* +0x7AC */
/*** Select Input ***/
uint32_t asrc_asrck_clock_6_select_input; /* +0x7B0 */
uint32_t aud4_input_da_amx_select_input; /* +0x7B4 */
uint32_t aud4_input_db_amx_select_input; /* +0x7B8 */
uint32_t aud4_input_rxclk_amx_select_input; /* +0x7BC */
uint32_t aud4_input_rxfs_amx_select_input; /* +0x7C0 */
uint32_t aud4_input_txclk_amx_select_input; /* +0x7C4 */
uint32_t aud4_input_txfs_amx_select_input; /* +0x7C8 */
uint32_t aud5_input_da_amx_select_input; /* +0x7CC */
uint32_t aud5_input_db_amx_select_input; /* +0x7D0 */
uint32_t aud5_input_rxclk_amx_select_input; /* +0x7D4 */
uint32_t aud5_input_rxfs_amx_select_input; /* +0x7D8 */
uint32_t aud5_input_txclk_amx_select_input; /* +0x7DC */
uint32_t aud5_input_txfs_amx_select_input; /* +0x7E0 */
uint32_t flexcan1_rx_select_input; /* +0x7E4 */
uint32_t flexcan2_rx_select_input; /* +0x7E8 */
uint32_t res2;
uint32_t ccm_pmic_ready_select_input; /* +0x7F0 */
uint32_t ecspi1_cspi_clk_in_select_input; /* +0x7F4 */
uint32_t ecspi1_miso_select_input; /* +0x7F8 */
uint32_t ecspi1_mosi_select_input; /* +0x7FC */
uint32_t ecspi1_ss0_select_input; /* +0x800 */
uint32_t ecspi1_ss1_select_input; /* +0x804 */
uint32_t ecspi1_ss2_select_input; /* +0x808 */
uint32_t ecspi1_ss3_select_input; /* +0x80C */
uint32_t ecspi2_cspi_clk_in_select_input; /* +0x814 */
uint32_t ecspi2_miso_select_input; /* +0x810 */
uint32_t ecspi2_mosi_select_input; /* +0x818 */
uint32_t ecspi2_ss0_select_input; /* +0x81C */
uint32_t ecspi2_ss1_select_input; /* +0x820 */
uint32_t ecspi4_ss0_select_input; /* +0x824 */
uint32_t ecspi5_cspi_clk_in_select_input; /* +0x828 */
uint32_t ecspi5_miso_select_input; /* +0x82C */
uint32_t ecspi5_mosi_select_input; /* +0x830 */
uint32_t ecspi5_ss0_select_input; /* +0x834 */
uint32_t ecspi5_ss1_select_input; /* +0x838 */
uint32_t enet_ref_clk_select_input; /* +0x83C */
uint32_t enet_mac0_mdio_select_input; /* +0x840 */
uint32_t enet_mac0_rx_clk_select_input; /* +0x844 */
uint32_t enet_mac0_rx_data0_select_input; /* +0x848 */
uint32_t enet_mac0_rx_data1_select_input; /* +0x84C */
uint32_t enet_mac0_rx_data2_select_input; /* +0x850 */
uint32_t enet_mac0_rx_data3_select_input; /* +0x854 */
uint32_t enet_mac0_rx_en_select_input; /* +0x858 */
uint32_t esai_rx_fs_select_input; /* +0x85C */
uint32_t esai_tx_fs_select_input; /* +0x860 */
uint32_t esai_rx_hf_clk_select_input; /* +0x864 */
uint32_t esai_tx_hf_clk_select_input; /* +0x868 */
uint32_t esai_rx_clk_select_input; /* +0x86C */
uint32_t esai_tx_clk_select_input; /* +0x870 */
uint32_t esai_sdo0_select_input; /* +0x874 */
uint32_t esai_sdo1_select_input; /* +0x878 */
uint32_t esai_sdo2_sdi3_select_input; /* +0x87C */
uint32_t esai_sdo3_sdi2_select_input; /* +0x880 */
uint32_t esai_sdo4_sdi1_select_input; /* +0x884 */
uint32_t esai_sdo5_sdi0_select_input; /* +0x888 */
uint32_t hdmi_icecin_select_input; /* +0x88C */
uint32_t hdmi_ii2c_clkin_select_input; /* +0x890 */
uint32_t hdmi_ii2c_datain_select_input; /* +0x894 */
uint32_t i2c1_scl_in_select_input; /* +0x898 */
uint32_t i2c1_sda_in_select_input; /* +0x89C */
uint32_t i2c2_scl_in_select_input; /* +0x8A0 */
uint32_t i2c2_sda_in_select_input; /* +0x8A4 */
uint32_t i2c3_scl_in_select_input; /* +0x8A8 */
uint32_t i2c3_sda_in_select_input; /* +0x8AC */
uint32_t ipu2_sens1_data10_select_input; /* +0x8B0 */
uint32_t ipu2_sens1_data11_select_input; /* +0x8B4 */
uint32_t ipu2_sens1_data12_select_input; /* +0x8B8 */
uint32_t ipu2_sens1_data13_select_input; /* +0x8BC */
uint32_t ipu2_sens1_data14_select_input; /* +0x8C0 */
uint32_t ipu2_sens1_data15_select_input; /* +0x8C4 */
uint32_t ipu2_sens1_data16_select_input; /* +0x8C8 */
uint32_t ipu2_sens1_data17_select_input; /* +0x8CC */
uint32_t ipu2_sens1_data18_select_input; /* +0x8D0 */
uint32_t ipu2_sens1_data19_select_input; /* +0x8D4 */
uint32_t ipu2_sens1_data_en_select_input; /* +0x8D8 */
uint32_t ipu2_sens1_hsync_select_input; /* +0x8DC */
uint32_t ipu2_sens1_pix_clk_select_input; /* +0x8E0 */
uint32_t ipu2_sens1_vsync_select_input; /* +0x8E4 */
uint32_t key_col5_select_input; /* +0x8E8 */
uint32_t key_col6_select_input; /* +0x8EC */
uint32_t key_col7_select_input; /* +0x8F0 */
uint32_t key_row5_select_input; /* +0x8F4 */
uint32_t key_row6_select_input; /* +0x8F8 */
uint32_t key_row7_select_input; /* +0x8FC */
uint32_t mlb_mlb_clk_in_select_input; /* +0x900 */
uint32_t mlb_mlb_data_in_select_input; /* +0x904 */
uint32_t mlb_mlb_sig_in_select_input; /* +0x908 */
uint32_t sdma_events14_select_input; /* +0x90C */
uint32_t sdma_events15_select_input; /* +0x910 */
uint32_t spdif_spdif_in1_select_input; /* +0x914 */
uint32_t spdif_tx_clk2_select_input; /* +0x91C */
uint32_t uart1_uart_rts_b_select_input; /* +0x918 */
uint32_t uart1_uart_rx_data_select_input; /* +0x920 */
uint32_t uart2_uart_rts_b_select_input; /* +0x924 */
uint32_t uart2_uart_rx_data_select_input; /* +0x928 */
uint32_t uart3_uart_rts_b_select_input; /* +0x92C */
uint32_t uart3_uart_rx_data_select_input; /* +0x930 */
uint32_t uart4_uart_rts_b_select_input; /* +0x934 */
uint32_t uart4_uart_rx_data_select_input; /* +0x938 */
uint32_t uart5_uart_rts_b_select_input; /* +0x93C */
uint32_t uart5_uart_rx_data_select_input; /* +0x940 */
uint32_t usb_otg_oc_select_input; /* +0x944 */
uint32_t usb_h1_oc_select_input; /* +0x948 */
uint32_t usdhc1_wp_on_select_input; /* +0x94C */
#elif defined(CONFIG_PLAT_IMX6SX)
/*** MUX control ***/
uint32_t res0[2];
uint32_t res1[3];
uint32_t sw_mux_ctl_pad_gpio1_io00; /* +0x014 */
uint32_t sw_mux_ctl_pad_gpio1_io01; /* +0x018 */
uint32_t sw_mux_ctl_pad_gpio1_io02; /* +0x01C */
uint32_t sw_mux_ctl_pad_gpio1_io03; /* +0x020 */
uint32_t sw_mux_ctl_pad_gpio1_io04; /* +0x024 */
uint32_t sw_mux_ctl_pad_gpio1_io05; /* +0x028 */
uint32_t sw_mux_ctl_pad_gpio1_io06; /* +0x02C */
uint32_t sw_mux_ctl_pad_gpio1_io07; /* +0x030 */
uint32_t sw_mux_ctl_pad_gpio1_io08; /* +0x034 */
uint32_t sw_mux_ctl_pad_gpio1_io09; /* +0x038 */
uint32_t sw_mux_ctl_pad_gpio1_io10; /* +0x03C */
uint32_t sw_mux_ctl_pad_gpio1_io11; /* +0x040 */
uint32_t sw_mux_ctl_pad_gpio1_io12; /* +0x044 */
uint32_t sw_mux_ctl_pad_gpio1_io13; /* +0x048 */
uint32_t sw_mux_ctl_pad_csi_data00; /* +0x04C */
uint32_t sw_mux_ctl_pad_csi_data01; /* +0x050 */
uint32_t sw_mux_ctl_pad_csi_data02; /* +0x054 */
uint32_t sw_mux_ctl_pad_csi_data03; /* +0x058 */
uint32_t sw_mux_ctl_pad_csi_data04; /* +0x05C */
uint32_t sw_mux_ctl_pad_csi_data05; /* +0x060 */
uint32_t sw_mux_ctl_pad_csi_data06; /* +0x064 */
uint32_t sw_mux_ctl_pad_csi_data07; /* +0x068 */
uint32_t sw_mux_ctl_pad_csi_hsync; /* +0x06C */
uint32_t sw_mux_ctl_pad_csi_mclk; /* +0x070 */
uint32_t sw_mux_ctl_pad_csi_pixclk; /* +0x074 */
uint32_t sw_mux_ctl_pad_csi_vsync; /* +0x078 */
uint32_t sw_mux_ctl_pad_enet1_col; /* +0x07C */
uint32_t sw_mux_ctl_pad_enet1_crs; /* +0x080 */
uint32_t sw_mux_ctl_pad_enet1_mdc; /* +0x084 */
uint32_t sw_mux_ctl_pad_enet1_mdio; /* +0x088 */
uint32_t sw_mux_ctl_pad_enet1_rx_clk; /* +0x08C */
uint32_t sw_mux_ctl_pad_enet1_tx_clk; /* +0x090 */
uint32_t sw_mux_ctl_pad_enet2_col; /* +0x094 */
uint32_t sw_mux_ctl_pad_enet2_crs; /* +0x098 */
uint32_t sw_mux_ctl_pad_enet2_rx_clk; /* +0x09C */
uint32_t sw_mux_ctl_pad_enet2_tx_clk; /* +0x0A0 */
uint32_t sw_mux_ctl_pad_key_col0; /* +0x0A4 */
uint32_t sw_mux_ctl_pad_key_col1; /* +0x0A8 */
uint32_t sw_mux_ctl_pad_key_col2; /* +0x0AC */
uint32_t sw_mux_ctl_pad_key_col3; /* +0x0B0 */
uint32_t sw_mux_ctl_pad_key_col4; /* +0x0B4 */
uint32_t sw_mux_ctl_pad_key_row0; /* +0x0B8 */
uint32_t sw_mux_ctl_pad_key_row1; /* +0x0BC */
uint32_t sw_mux_ctl_pad_key_row2; /* +0x0C0 */
uint32_t sw_mux_ctl_pad_key_row3; /* +0x0C4 */
uint32_t sw_mux_ctl_pad_key_row4; /* +0x0C8 */
uint32_t sw_mux_ctl_pad_lcd1_clk; /* +0x0CC */
uint32_t sw_mux_ctl_pad_lcd1_data00; /* +0x0D0 */
uint32_t sw_mux_ctl_pad_lcd1_data01; /* +0x0D4 */
uint32_t sw_mux_ctl_pad_lcd1_data02; /* +0x0D8 */
uint32_t sw_mux_ctl_pad_lcd1_data03; /* +0x0DC */
uint32_t sw_mux_ctl_pad_lcd1_data04; /* +0x0E0 */
uint32_t sw_mux_ctl_pad_lcd1_data05; /* +0x0E4 */
uint32_t sw_mux_ctl_pad_lcd1_data06; /* +0x0E8 */
uint32_t sw_mux_ctl_pad_lcd1_data07; /* +0x0EC */
uint32_t sw_mux_ctl_pad_lcd1_data08; /* +0x0F0 */
uint32_t sw_mux_ctl_pad_lcd1_data09; /* +0x0F4 */
uint32_t sw_mux_ctl_pad_lcd1_data10; /* +0x0F8 */
uint32_t sw_mux_ctl_pad_lcd1_data11; /* +0x0FC */
uint32_t sw_mux_ctl_pad_lcd1_data12; /* +0x100 */
uint32_t sw_mux_ctl_pad_lcd1_data13; /* +0x104 */
uint32_t sw_mux_ctl_pad_lcd1_data14; /* +0x108 */
uint32_t sw_mux_ctl_pad_lcd1_data15; /* +0x10C */
uint32_t sw_mux_ctl_pad_lcd1_data16; /* +0x110 */
uint32_t sw_mux_ctl_pad_lcd1_data17; /* +0x114 */
uint32_t sw_mux_ctl_pad_lcd1_data18; /* +0x118 */
uint32_t sw_mux_ctl_pad_lcd1_data19; /* +0x11C */
uint32_t sw_mux_ctl_pad_lcd1_data20; /* +0x120 */
uint32_t sw_mux_ctl_pad_lcd1_data21; /* +0x124 */
uint32_t sw_mux_ctl_pad_lcd1_data22; /* +0x128 */
uint32_t sw_mux_ctl_pad_lcd1_data23; /* +0x12C */
uint32_t sw_mux_ctl_pad_lcd1_enable; /* +0x130 */
uint32_t sw_mux_ctl_pad_lcd1_hsync; /* +0x134 */
uint32_t sw_mux_ctl_pad_lcd1_reset; /* +0x138 */
uint32_t sw_mux_ctl_pad_lcd1_vsync; /* +0x13C */
uint32_t sw_mux_ctl_pad_nand_ale; /* +0x140 */
uint32_t sw_mux_ctl_pad_nand_ce0_b; /* +0x144 */
uint32_t sw_mux_ctl_pad_nand_ce1_b; /* +0x148 */
uint32_t sw_mux_ctl_pad_nand_cle; /* +0x14C */
uint32_t sw_mux_ctl_pad_nand_data00; /* +0x150 */
uint32_t sw_mux_ctl_pad_nand_data01; /* +0x154 */
uint32_t sw_mux_ctl_pad_nand_data02; /* +0x158 */
uint32_t sw_mux_ctl_pad_nand_data03; /* +0x15C */
uint32_t sw_mux_ctl_pad_nand_data04; /* +0x160 */
uint32_t sw_mux_ctl_pad_nand_data05; /* +0x164 */
uint32_t sw_mux_ctl_pad_nand_data06; /* +0x168 */
uint32_t sw_mux_ctl_pad_nand_data07; /* +0x16C */
uint32_t sw_mux_ctl_pad_nand_re_b; /* +0x170 */
uint32_t sw_mux_ctl_pad_nand_ready_b; /* +0x174 */
uint32_t sw_mux_ctl_pad_nand_we_b; /* +0x178 */
uint32_t sw_mux_ctl_pad_nand_wp_b; /* +0x17C */
uint32_t sw_mux_ctl_pad_qspi1a_data0; /* +0x180 */
uint32_t sw_mux_ctl_pad_qspi1a_data1; /* +0x184 */
uint32_t sw_mux_ctl_pad_qspi1a_data2; /* +0x188 */
uint32_t sw_mux_ctl_pad_qspi1a_data3; /* +0x18C */
uint32_t sw_mux_ctl_pad_qspi1a_dqs; /* +0x190 */
uint32_t sw_mux_ctl_pad_qspi1a_sclk; /* +0x194 */
uint32_t sw_mux_ctl_pad_qspi1a_ss0_b; /* +0x198 */
uint32_t sw_mux_ctl_pad_qspi1a_ss1_b; /* +0x19C */
uint32_t sw_mux_ctl_pad_qspi1b_data0; /* +0x1A0 */
uint32_t sw_mux_ctl_pad_qspi1b_data1; /* +0x1A4 */
uint32_t sw_mux_ctl_pad_qspi1b_data2; /* +0x1A8 */
uint32_t sw_mux_ctl_pad_qspi1b_data3; /* +0x1AC */
uint32_t sw_mux_ctl_pad_qspi1b_dqs; /* +0x1B0 */
uint32_t sw_mux_ctl_pad_qspi1b_sclk; /* +0x1B4 */
uint32_t sw_mux_ctl_pad_qspi1b_ss0_b; /* +0x1B8 */
uint32_t sw_mux_ctl_pad_qspi1b_ss1_b; /* +0x1BC */
uint32_t sw_mux_ctl_pad_rgmii1_rd0; /* +0x1C0 */
uint32_t sw_mux_ctl_pad_rgmii1_rd1; /* +0x1C4 */
uint32_t sw_mux_ctl_pad_rgmii1_rd2; /* +0x1C8 */
uint32_t sw_mux_ctl_pad_rgmii1_rd3; /* +0x1CC */
uint32_t sw_mux_ctl_pad_rgmii1_rx_ctl; /* +0x1D0 */
uint32_t sw_mux_ctl_pad_rgmii1_rxc; /* +0x1D4 */
uint32_t sw_mux_ctl_pad_rgmii1_td0; /* +0x1D8 */
uint32_t sw_mux_ctl_pad_rgmii1_td1; /* +0x1DC */
uint32_t sw_mux_ctl_pad_rgmii1_td2; /* +0x1E0 */
uint32_t sw_mux_ctl_pad_rgmii1_td3; /* +0x1E4 */
uint32_t sw_mux_ctl_pad_rgmii1_tx_ctl; /* +0x1E8 */
uint32_t sw_mux_ctl_pad_rgmii1_txc; /* +0x1EC */
uint32_t sw_mux_ctl_pad_rgmii2_rd0; /* +0x1F0 */
uint32_t sw_mux_ctl_pad_rgmii2_rd1; /* +0x1F4 */
uint32_t sw_mux_ctl_pad_rgmii2_rd2; /* +0x1F8 */
uint32_t sw_mux_ctl_pad_rgmii2_rd3; /* +0x1FC */
uint32_t sw_mux_ctl_pad_rgmii2_rx_ctl; /* +0x200 */
uint32_t sw_mux_ctl_pad_rgmii2_rxc; /* +0x204 */
uint32_t sw_mux_ctl_pad_rgmii2_td0; /* +0x208 */
uint32_t sw_mux_ctl_pad_rgmii2_td1; /* +0x20C */
uint32_t sw_mux_ctl_pad_rgmii2_td2; /* +0x210 */
uint32_t sw_mux_ctl_pad_rgmii2_td3; /* +0x214 */
uint32_t sw_mux_ctl_pad_rgmii2_tx_ctl; /* +0x218 */
uint32_t sw_mux_ctl_pad_rgmii2_txc; /* +0x21C */
uint32_t sw_mux_ctl_pad_sd1_clk; /* +0x220 */
uint32_t sw_mux_ctl_pad_sd1_cmd; /* +0x224 */
uint32_t sw_mux_ctl_pad_sd1_data0; /* +0x228 */
uint32_t sw_mux_ctl_pad_sd1_data1; /* +0x22C */
uint32_t sw_mux_ctl_pad_sd1_data2; /* +0x230 */
uint32_t sw_mux_ctl_pad_sd1_data3; /* +0x234 */
uint32_t sw_mux_ctl_pad_sd2_clk; /* +0x238 */
uint32_t sw_mux_ctl_pad_sd2_cmd; /* +0x23C */
uint32_t sw_mux_ctl_pad_sd2_data0; /* +0x240 */
uint32_t sw_mux_ctl_pad_sd2_data1; /* +0x244 */
uint32_t sw_mux_ctl_pad_sd2_data2; /* +0x248 */
uint32_t sw_mux_ctl_pad_sd2_data3; /* +0x24C */
uint32_t sw_mux_ctl_pad_sd3_clk; /* +0x250 */
uint32_t sw_mux_ctl_pad_sd3_cmd; /* +0x254 */
uint32_t sw_mux_ctl_pad_sd3_data0; /* +0x258 */
uint32_t sw_mux_ctl_pad_sd3_data1; /* +0x25C */
uint32_t sw_mux_ctl_pad_sd3_data2; /* +0x260 */
uint32_t sw_mux_ctl_pad_sd3_data3; /* +0x264 */
uint32_t sw_mux_ctl_pad_sd3_data4; /* +0x268 */
uint32_t sw_mux_ctl_pad_sd3_data5; /* +0x26C */
uint32_t sw_mux_ctl_pad_sd3_data6; /* +0x270 */
uint32_t sw_mux_ctl_pad_sd3_data7; /* +0x274 */
uint32_t sw_mux_ctl_pad_sd4_clk; /* +0x278 */
uint32_t sw_mux_ctl_pad_sd4_cmd; /* +0x27C */
uint32_t sw_mux_ctl_pad_sd4_data0; /* +0x280 */
uint32_t sw_mux_ctl_pad_sd4_data1; /* +0x284 */
uint32_t sw_mux_ctl_pad_sd4_data2; /* +0x288 */
uint32_t sw_mux_ctl_pad_sd4_data3; /* +0x28C */
uint32_t sw_mux_ctl_pad_sd4_data4; /* +0x290 */
uint32_t sw_mux_ctl_pad_sd4_data5; /* +0x294 */
uint32_t sw_mux_ctl_pad_sd4_data6; /* +0x298 */
uint32_t sw_mux_ctl_pad_sd4_data7; /* +0x29C */
uint32_t sw_mux_ctl_pad_sd4_reset_b; /* +0x2A0 */
uint32_t sw_mux_ctl_pad_usb_h_data; /* +0x2A4 */
uint32_t sw_mux_ctl_pad_usb_h_strobe; /* +0x2A8 */
/*** Pad Control ***/
uint32_t sw_pad_ctl_pad_dram_addr00; /* +0x2AC */
uint32_t sw_pad_ctl_pad_dram_addr01; /* +0x2B0 */
uint32_t sw_pad_ctl_pad_dram_addr02; /* +0x2B4 */
uint32_t sw_pad_ctl_pad_dram_addr03; /* +0x2B8 */
uint32_t sw_pad_ctl_pad_dram_addr04; /* +0x2BC */
uint32_t sw_pad_ctl_pad_dram_addr05; /* +0x2C0 */
uint32_t sw_pad_ctl_pad_dram_addr06; /* +0x2C4 */
uint32_t sw_pad_ctl_pad_dram_addr07; /* +0x2C8 */
uint32_t sw_pad_ctl_pad_dram_addr08; /* +0x2CC */
uint32_t sw_pad_ctl_pad_dram_addr09; /* +0x2D0 */
uint32_t sw_pad_ctl_pad_dram_addr10; /* +0x2D4 */
uint32_t sw_pad_ctl_pad_dram_addr11; /* +0x2D8 */
uint32_t sw_pad_ctl_pad_dram_addr12; /* +0x2DC */
uint32_t sw_pad_ctl_pad_dram_addr13; /* +0x2E0 */
uint32_t sw_pad_ctl_pad_dram_addr14; /* +0x2E4 */
uint32_t sw_pad_ctl_pad_dram_addr15; /* +0x2E8 */
uint32_t sw_pad_ctl_pad_dram_dqm0; /* +0x2EC */
uint32_t sw_pad_ctl_pad_dram_dqm1; /* +0x2F0 */
uint32_t sw_pad_ctl_pad_dram_dqm2; /* +0x2F4 */
uint32_t sw_pad_ctl_pad_dram_dqm3; /* +0x2F8 */
uint32_t sw_pad_ctl_pad_dram_ras_b; /* +0x2FC */
uint32_t sw_pad_ctl_pad_dram_cas_b; /* +0x300 */
uint32_t sw_pad_ctl_pad_dram_cs0_b; /* +0x304 */
uint32_t sw_pad_ctl_pad_dram_cs1_b; /* +0x308 */
uint32_t sw_pad_ctl_pad_dram_sdwe_b; /* +0x30C */
uint32_t sw_pad_ctl_pad_dram_odt0; /* +0x310 */
uint32_t sw_pad_ctl_pad_dram_odt1; /* +0x314 */
uint32_t sw_pad_ctl_pad_dram_sdba0; /* +0x318 */
uint32_t sw_pad_ctl_pad_dram_sdba1; /* +0x31C */
uint32_t sw_pad_ctl_pad_dram_sdba2; /* +0x320 */
uint32_t sw_pad_ctl_pad_dram_sdcke0; /* +0x324 */
uint32_t sw_pad_ctl_pad_dram_sdcke1; /* +0x328 */
uint32_t sw_pad_ctl_pad_dram_sdclk0_p; /* +0x32C */
uint32_t sw_pad_ctl_pad_dram_sdqs0_p; /* +0x330 */
uint32_t sw_pad_ctl_pad_dram_sdqs1_p; /* +0x334 */
uint32_t sw_pad_ctl_pad_dram_sdqs2_p; /* +0x338 */
uint32_t sw_pad_ctl_pad_dram_sdqs3_p; /* +0x33C */
uint32_t sw_pad_ctl_pad_dram_reset; /* +0x340 */
uint32_t sw_pad_ctl_pad_jtag_mod; /* +0x344 */
uint32_t sw_pad_ctl_pad_jtag_tck; /* +0x348 */
uint32_t sw_pad_ctl_pad_jtag_tdi; /* +0x34C */
uint32_t sw_pad_ctl_pad_jtag_tdo; /* +0x350 */
uint32_t sw_pad_ctl_pad_jtag_tms; /* +0x354 */
uint32_t sw_pad_ctl_pad_jtag_trst_b; /* +0x358 */
uint32_t sw_pad_ctl_pad_gpio1_io00; /* +0x35C */
uint32_t sw_pad_ctl_pad_gpio1_io01; /* +0x360 */
uint32_t sw_pad_ctl_pad_gpio1_io02; /* +0x364 */
uint32_t sw_pad_ctl_pad_gpio1_io03; /* +0x368 */
uint32_t sw_pad_ctl_pad_gpio1_io04; /* +0x36C */
uint32_t sw_pad_ctl_pad_gpio1_io05; /* +0x370 */
uint32_t sw_pad_ctl_pad_gpio1_io06; /* +0x374 */
uint32_t sw_pad_ctl_pad_gpio1_io07; /* +0x378 */
uint32_t sw_pad_ctl_pad_gpio1_io08; /* +0x37C */
uint32_t sw_pad_ctl_pad_gpio1_io09; /* +0x380 */
uint32_t sw_pad_ctl_pad_gpio1_io10; /* +0x384 */
uint32_t sw_pad_ctl_pad_gpio1_io11; /* +0x388 */
uint32_t sw_pad_ctl_pad_gpio1_io12; /* +0x38C */
uint32_t sw_pad_ctl_pad_gpio1_io13; /* +0x390 */
uint32_t sw_pad_ctl_pad_csi_data00; /* +0x394 */
uint32_t sw_pad_ctl_pad_csi_data01; /* +0x398 */
uint32_t sw_pad_ctl_pad_csi_data02; /* +0x39C */
uint32_t sw_pad_ctl_pad_csi_data03; /* +0x3A0 */
uint32_t sw_pad_ctl_pad_csi_data04; /* +0x3A4 */
uint32_t sw_pad_ctl_pad_csi_data05; /* +0x3A8 */
uint32_t sw_pad_ctl_pad_csi_data06; /* +0x3AC */
uint32_t sw_pad_ctl_pad_csi_data07; /* +0x3B0 */
uint32_t sw_pad_ctl_pad_csi_hsync; /* +0x3B4 */
uint32_t sw_pad_ctl_pad_csi_mclk; /* +0x3B8 */
uint32_t sw_pad_ctl_pad_csi_pixclk; /* +0x3BC */
uint32_t sw_pad_ctl_pad_csi_vsync; /* +0x3C0 */
uint32_t sw_pad_ctl_pad_enet1_col; /* +0x3C4 */
uint32_t sw_pad_ctl_pad_enet1_crs; /* +0x3C8 */
uint32_t sw_pad_ctl_pad_enet1_mdc; /* +0x3CC */
uint32_t sw_pad_ctl_pad_enet1_mdio; /* +0x3D0 */
uint32_t sw_pad_ctl_pad_enet1_rx_clk; /* +0x3D4 */
uint32_t sw_pad_ctl_pad_enet1_tx_clk; /* +0x3D8 */
uint32_t sw_pad_ctl_pad_enet2_col; /* +0x3DC */
uint32_t sw_pad_ctl_pad_enet2_crs; /* +0x3E0 */
uint32_t sw_pad_ctl_pad_enet2_rx_clk; /* +0x3E4 */
uint32_t sw_pad_ctl_pad_enet2_tx_clk; /* +0x3E8 */
uint32_t sw_pad_ctl_pad_key_col0; /* +0x3EC */
uint32_t sw_pad_ctl_pad_key_col1; /* +0x3F0 */
uint32_t sw_pad_ctl_pad_key_col2; /* +0x3F4 */
uint32_t sw_pad_ctl_pad_key_col3; /* +0x3F8 */
uint32_t sw_pad_ctl_pad_key_col4; /* +0x3FC */
uint32_t sw_pad_ctl_pad_key_row0; /* +0x400 */
uint32_t sw_pad_ctl_pad_key_row1; /* +0x404 */
uint32_t sw_pad_ctl_pad_key_row2; /* +0x408 */
uint32_t sw_pad_ctl_pad_key_row3; /* +0x40C */
uint32_t sw_pad_ctl_pad_key_row4; /* +0x410 */
uint32_t sw_pad_ctl_pad_lcd1_clk; /* +0x414 */
uint32_t sw_pad_ctl_pad_lcd1_data00; /* +0x418 */
uint32_t sw_pad_ctl_pad_lcd1_data01; /* +0x41C */
uint32_t sw_pad_ctl_pad_lcd1_data02; /* +0x420 */
uint32_t sw_pad_ctl_pad_lcd1_data03; /* +0x424 */
uint32_t sw_pad_ctl_pad_lcd1_data04; /* +0x428 */
uint32_t sw_pad_ctl_pad_lcd1_data05; /* +0x42C */
uint32_t sw_pad_ctl_pad_lcd1_data06; /* +0x430 */
uint32_t sw_pad_ctl_pad_lcd1_data07; /* +0x434 */
uint32_t sw_pad_ctl_pad_lcd1_data08; /* +0x438 */
uint32_t sw_pad_ctl_pad_lcd1_data09; /* +0x43C */
uint32_t sw_pad_ctl_pad_lcd1_data10; /* +0x440 */
uint32_t sw_pad_ctl_pad_lcd1_data11; /* +0x444 */
uint32_t sw_pad_ctl_pad_lcd1_data12; /* +0x448 */
uint32_t sw_pad_ctl_pad_lcd1_data13; /* +0x44C */
uint32_t sw_pad_ctl_pad_lcd1_data14; /* +0x450 */
uint32_t sw_pad_ctl_pad_lcd1_data15; /* +0x454 */
uint32_t sw_pad_ctl_pad_lcd1_data16; /* +0x458 */
uint32_t sw_pad_ctl_pad_lcd1_data17; /* +0x45C */
uint32_t sw_pad_ctl_pad_lcd1_data18; /* +0x460 */
uint32_t sw_pad_ctl_pad_lcd1_data19; /* +0x464 */
uint32_t sw_pad_ctl_pad_lcd1_data20; /* +0x468 */
uint32_t sw_pad_ctl_pad_lcd1_data21; /* +0x46C */
uint32_t sw_pad_ctl_pad_lcd1_data22; /* +0x470 */
uint32_t sw_pad_ctl_pad_lcd1_data23; /* +0x474 */
uint32_t sw_pad_ctl_pad_lcd1_enable; /* +0x478 */
uint32_t sw_pad_ctl_pad_lcd1_hsync; /* +0x47C */
uint32_t sw_pad_ctl_pad_lcd1_reset; /* +0x480 */
uint32_t sw_pad_ctl_pad_lcd1_vsync; /* +0x484 */
uint32_t sw_pad_ctl_pad_nand_ale; /* +0x488 */
uint32_t sw_pad_ctl_pad_nand_ce0_b; /* +0x48C */
uint32_t sw_pad_ctl_pad_nand_ce1_b; /* +0x490 */
uint32_t sw_pad_ctl_pad_nand_cle; /* +0x494 */
uint32_t sw_pad_ctl_pad_nand_data00; /* +0x498 */
uint32_t sw_pad_ctl_pad_nand_data01; /* +0x49C */
uint32_t sw_pad_ctl_pad_nand_data02; /* +0x4A0 */
uint32_t sw_pad_ctl_pad_nand_data03; /* +0x4A4 */
uint32_t sw_pad_ctl_pad_nand_data04; /* +0x4A8 */
uint32_t sw_pad_ctl_pad_nand_data05; /* +0x4AC */
uint32_t sw_pad_ctl_pad_nand_data06; /* +0x4B0 */
uint32_t sw_pad_ctl_pad_nand_data07; /* +0x4B4 */
uint32_t sw_pad_ctl_pad_nand_re_b; /* +0x4B8 */
uint32_t sw_pad_ctl_pad_nand_ready_b; /* +0x4BC */
uint32_t sw_pad_ctl_pad_nand_we_b; /* +0x4C0 */
uint32_t sw_pad_ctl_pad_nand_wp_b; /* +0x4C4 */
uint32_t sw_pad_ctl_pad_qspi1a_data0; /* +0x4C8 */
uint32_t sw_pad_ctl_pad_qspi1a_data1; /* +0x4CC */
uint32_t sw_pad_ctl_pad_qspi1a_data2; /* +0x4D0 */
uint32_t sw_pad_ctl_pad_qspi1a_data3; /* +0x4D4 */
uint32_t sw_pad_ctl_pad_qspi1a_dqs; /* +0x4D8 */
uint32_t sw_pad_ctl_pad_qspi1a_sclk; /* +0x4DC */
uint32_t sw_pad_ctl_pad_qspi1a_ss0_b; /* +0x4E0 */
uint32_t sw_pad_ctl_pad_qspi1a_ss1_b; /* +0x4E4 */
uint32_t sw_pad_ctl_pad_qspi1b_data0; /* +0x4E8 */
uint32_t sw_pad_ctl_pad_qspi1b_data1; /* +0x4EC */
uint32_t sw_pad_ctl_pad_qspi1b_data2; /* +0x4F0 */
uint32_t sw_pad_ctl_pad_qspi1b_data3; /* +0x4F4 */
uint32_t sw_pad_ctl_pad_qspi1b_dqs; /* +0x4F8 */
uint32_t sw_pad_ctl_pad_qspi1b_sclk; /* +0x4FC */
uint32_t sw_pad_ctl_pad_qspi1b_ss0_b; /* +0x500 */
uint32_t sw_pad_ctl_pad_qspi1b_ss1_b; /* +0x504 */
uint32_t sw_pad_ctl_pad_rgmii1_rd0; /* +0x508 */
uint32_t sw_pad_ctl_pad_rgmii1_rd1; /* +0x50C */
uint32_t sw_pad_ctl_pad_rgmii1_rd2; /* +0x510 */
uint32_t sw_pad_ctl_pad_rgmii1_rd3; /* +0x514 */
uint32_t sw_pad_ctl_pad_rgmii1_rx_ctl; /* +0x518 */
uint32_t sw_pad_ctl_pad_rgmii1_rxc; /* +0x51C */
uint32_t sw_pad_ctl_pad_rgmii1_td0; /* +0x520 */
uint32_t sw_pad_ctl_pad_rgmii1_td1; /* +0x524 */
uint32_t sw_pad_ctl_pad_rgmii1_td2; /* +0x528 */
uint32_t sw_pad_ctl_pad_rgmii1_td3; /* +0x52C */
uint32_t sw_pad_ctl_pad_rgmii1_tx_ctl; /* +0x530 */
uint32_t sw_pad_ctl_pad_rgmii1_txc; /* +0x534 */
uint32_t sw_pad_ctl_pad_rgmii2_rd0; /* +0x538 */
uint32_t sw_pad_ctl_pad_rgmii2_rd1; /* +0x53C */
uint32_t sw_pad_ctl_pad_rgmii2_rd2; /* +0x540 */
uint32_t sw_pad_ctl_pad_rgmii2_rd3; /* +0x544 */
uint32_t sw_pad_ctl_pad_rgmii2_rx_ctl; /* +0x548 */
uint32_t sw_pad_ctl_pad_rgmii2_rxc; /* +0x54C */
uint32_t sw_pad_ctl_pad_rgmii2_td0; /* +0x550 */
uint32_t sw_pad_ctl_pad_rgmii2_td1; /* +0x554 */
uint32_t sw_pad_ctl_pad_rgmii2_td2; /* +0x558 */
uint32_t sw_pad_ctl_pad_rgmii2_td3; /* +0x55C */
uint32_t sw_pad_ctl_pad_rgmii2_tx_ctl; /* +0x560 */
uint32_t sw_pad_ctl_pad_rgmii2_txc; /* +0x564 */
uint32_t sw_pad_ctl_pad_sd1_clk; /* +0x568 */
uint32_t sw_pad_ctl_pad_sd1_cmd; /* +0x56C */
uint32_t sw_pad_ctl_pad_sd1_data0; /* +0x570 */
uint32_t sw_pad_ctl_pad_sd1_data1; /* +0x574 */
uint32_t sw_pad_ctl_pad_sd1_data2; /* +0x578 */
uint32_t sw_pad_ctl_pad_sd1_data3; /* +0x57C */
uint32_t sw_pad_ctl_pad_sd2_clk; /* +0x580 */
uint32_t sw_pad_ctl_pad_sd2_cmd; /* +0x584 */
uint32_t sw_pad_ctl_pad_sd2_data0; /* +0x588 */
uint32_t sw_pad_ctl_pad_sd2_data1; /* +0x58C */
uint32_t sw_pad_ctl_pad_sd2_data2; /* +0x590 */
uint32_t sw_pad_ctl_pad_sd2_data3; /* +0x594 */
uint32_t sw_pad_ctl_pad_sd3_clk; /* +0x598 */
uint32_t sw_pad_ctl_pad_sd3_cmd; /* +0x59C */
uint32_t sw_pad_ctl_pad_sd3_data0; /* +0x5A0 */
uint32_t sw_pad_ctl_pad_sd3_data1; /* +0x5A4 */
uint32_t sw_pad_ctl_pad_sd3_data2; /* +0x5A8 */
uint32_t sw_pad_ctl_pad_sd3_data3; /* +0x5AC */
uint32_t sw_pad_ctl_pad_sd3_data4; /* +0x5B0 */
uint32_t sw_pad_ctl_pad_sd3_data5; /* +0x5B4 */
uint32_t sw_pad_ctl_pad_sd3_data6; /* +0x5B8 */
uint32_t sw_pad_ctl_pad_sd3_data7; /* +0x5BC */
uint32_t sw_pad_ctl_pad_sd4_clk; /* +0x5C0 */
uint32_t sw_pad_ctl_pad_sd4_cmd; /* +0x5C4 */
uint32_t sw_pad_ctl_pad_sd4_data0; /* +0x5C8 */
uint32_t sw_pad_ctl_pad_sd4_data1; /* +0x5CC */
uint32_t sw_pad_ctl_pad_sd4_data2; /* +0x5D0 */
uint32_t sw_pad_ctl_pad_sd4_data3; /* +0x5D4 */
uint32_t sw_pad_ctl_pad_sd4_data4; /* +0x5D8 */
uint32_t sw_pad_ctl_pad_sd4_data5; /* +0x5DC */
uint32_t sw_pad_ctl_pad_sd4_data6; /* +0x5E0 */
uint32_t sw_pad_ctl_pad_sd4_data7; /* +0x5E4 */
uint32_t sw_pad_ctl_pad_sd4_reset_b; /* +0x5E8 */
uint32_t sw_pad_ctl_pad_usb_h_data; /* +0x5EC */
uint32_t sw_pad_ctl_pad_usb_h_strobe; /* +0x5F0 */
/*** Group ***/
uint32_t sw_pad_ctl_grp_addds; /* +0x5F4 */
uint32_t sw_pad_ctl_grp_ddrmode_ctl; /* +0x5F8 */
uint32_t sw_pad_ctl_grp_ddrpke; /* +0x5FC */
uint32_t sw_pad_ctl_grp_ddrpk; /* +0x600 */
uint32_t sw_pad_ctl_grp_ddrhys; /* +0x604 */
uint32_t sw_pad_ctl_grp_ddrmode; /* +0x608 */
uint32_t sw_pad_ctl_grp_b0ds; /* +0x60C */
uint32_t sw_pad_ctl_grp_b1ds; /* +0x610 */
uint32_t sw_pad_ctl_grp_ctlds; /* +0x614 */
uint32_t sw_pad_ctl_grp_ddr_type; /* +0x618 */
uint32_t sw_pad_ctl_grp_b2ds; /* +0x61C */
uint32_t sw_pad_ctl_grp_b3ds; /* +0x620 */
/*** Select Input ***/
uint32_t anatop_usb_otg_id_select_input; /* +0x624 */
uint32_t anatop_usb_h1_id_select_input; /* +0x628 */
uint32_t audmux_p3_input_da_amx_select_input; /* +0x62C */
uint32_t audmux_p3_input_db_amx_select_input; /* +0x630 */
uint32_t audmux_p3_input_rxclk_amx_select_input; /* +0x634 */
uint32_t audmux_p3_input_rxfs_amx_select_input; /* +0x638 */
uint32_t audmux_p3_input_txclk_amx_select_input; /* +0x63C */
uint32_t audmux_p3_input_txfs_amx_select_input; /* +0x640 */
uint32_t audmux_p4_input_da_amx_select_input; /* +0x644 */
uint32_t audmux_p4_input_db_amx_select_input; /* +0x648 */
uint32_t audmux_p4_input_rxclk_amx_select_input; /* +0x64C */
uint32_t audmux_p4_input_rxfs_amx_select_input; /* +0x650 */
uint32_t audmux_p4_input_txclk_amx_select_input; /* +0x654 */
uint32_t audmux_p4_input_txfs_amx_select_input; /* +0x658 */
uint32_t audmux_p5_input_da_amx_select_input; /* +0x65C */
uint32_t audmux_p5_input_db_amx_select_input; /* +0x660 */
uint32_t audmux_p5_input_rxclk_amx_select_input; /* +0x664 */
uint32_t audmux_p5_input_rxfs_amx_select_input; /* +0x668 */
uint32_t audmux_p5_input_txclk_amx_select_input; /* +0x66C */
uint32_t audmux_p5_input_txfs_amx_select_input; /* +0x670 */
uint32_t audmux_p6_input_da_amx_select_input; /* +0x674 */
uint32_t audmux_p6_input_db_amx_select_input; /* +0x678 */
uint32_t audmux_p6_input_rxclk_amx_select_input; /* +0x67C */
uint32_t audmux_p6_input_rxfs_amx_select_input; /* +0x680 */
uint32_t audmux_p6_input_txclk_amx_select_input; /* +0x684 */
uint32_t audmux_p6_input_txfs_amx_select_input; /* +0x688 */
uint32_t can1_ipp_ind_canrx_select_input; /* +0x68C */
uint32_t can2_ipp_ind_canrx_select_input; /* +0x690 */
uint32_t res3[2];
uint32_t ccm_pmic_vfuncional_ready_select_input; /* +0x69C */
uint32_t csi1_ipp_csi_d_select_input_0; /* +0x6A0 */
uint32_t csi1_ipp_csi_d_select_input_1; /* +0x6A4 */
uint32_t csi1_ipp_csi_d_select_input_2; /* +0x6A8 */
uint32_t csi1_ipp_csi_d_select_input_3; /* +0x6AC */
uint32_t csi1_ipp_csi_d_select_input_4; /* +0x6B0 */
uint32_t csi1_ipp_csi_d_select_input_5; /* +0x6B4 */
uint32_t csi1_ipp_csi_d_select_input_6; /* +0x6B8 */
uint32_t csi1_ipp_csi_d_select_input_7; /* +0x6BC */
uint32_t csi1_ipp_csi_d_select_input_8; /* +0x6C0 */
uint32_t csi1_ipp_csi_d_select_input_9; /* +0x6C4 */
uint32_t csi1_ipp_csi_d_select_input_11; /* +0x6C8 */
uint32_t csi1_ipp_csi_d_select_input_12; /* +0x6CC */
uint32_t csi1_ipp_csi_d_select_input_13; /* +0x6D0 */
uint32_t csi1_ipp_csi_d_select_input_14; /* +0x6D4 */
uint32_t csi1_ipp_csi_d_select_input_15; /* +0x6D8 */
uint32_t csi1_ipp_csi_d_select_input_16; /* +0x6DC */
uint32_t csi1_ipp_csi_d_select_input_17; /* +0x6E0 */
uint32_t csi1_ipp_csi_d_select_input_18; /* +0x6E4 */
uint32_t csi1_ipp_csi_d_select_input_19; /* +0x6E8 */
uint32_t csi1_ipp_csi_d_select_input_20; /* +0x6EC */
uint32_t csi1_ipp_csi_d_select_input_21; /* +0x6F0 */
uint32_t csi1_ipp_csi_d_select_input_22; /* +0x6F4 */
uint32_t csi1_ipp_csi_d_select_input_23; /* +0x6F8 */
uint32_t csi1_ipp_csi_d_select_input_10; /* +0x6FC */
uint32_t csi1_ipp_csi_hsync_select_input; /* +0x700 */
uint32_t csi1_ipp_csi_pixclk_select_input; /* +0x704 */
uint32_t csi1_ipp_csi_vsync_select_input; /* +0x708 */
uint32_t csi1_ipp_csi_tvdecoder_in_field_select_input; /* +0x70C */
uint32_t ecspi1_ipp_cspi_clk_in_select_input; /* +0x710 */
uint32_t ecspi1_ipp_ind_miso_select_input; /* +0x714 */
uint32_t ecspi1_ipp_ind_mosi_select_input; /* +0x718 */
uint32_t ecspi1_ipp_ind_ss_b_select_input_0; /* +0x71C */
uint32_t ecspi2_ipp_cspi_clk_in_select_input; /* +0x720 */
uint32_t ecspi2_ipp_ind_miso_select_input; /* +0x724 */
uint32_t ecspi2_ipp_ind_mosi_select_input; /* +0x728 */
uint32_t ecspi2_ipp_ind_ss_b_select_input_0; /* +0x72C */
uint32_t ecspi3_ipp_cspi_clk_in_select_input; /* +0x730 */
uint32_t ecspi3_ipp_ind_miso_select_input; /* +0x734 */
uint32_t ecspi3_ipp_ind_mosi_select_input; /* +0x738 */
uint32_t ecspi3_ipp_ind_ss_b_select_input_0; /* +0x73C */
uint32_t ecspi4_ipp_cspi_clk_in_select_input; /* +0x740 */
uint32_t ecspi4_ipp_ind_miso_select_input; /* +0x744 */
uint32_t ecspi4_ipp_ind_mosi_select_input; /* +0x748 */
uint32_t ecspi4_ipp_ind_ss_b_select_input_0; /* +0x74C */
uint32_t ecspi5_ipp_cspi_clk_in_select_input; /* +0x750 */
uint32_t ecspi5_ipp_ind_miso_select_input; /* +0x754 */
uint32_t ecspi5_ipp_ind_mosi_select_input; /* +0x758 */
uint32_t ecspi5_ipp_ind_ss_b_select_input_0; /* +0x75C */
uint32_t enet1_ipg_clk_rmii_select_input; /* +0x760 */
uint32_t enet1_ipg_ind_mac0_mdio_select_input; /* +0x764 */
uint32_t enet1_ipg_ind_mac0_rxclk_select_input; /* +0x768 */
uint32_t enet2_ipg_clk_rmii_select_input; /* +0x76C */
uint32_t enet2_ipg_ind_mac0_mdio_select_input; /* +0x770 */
uint32_t enet2_ipg_ind_mac0_rxclk_select_input; /* +0x774 */
uint32_t esai_ipp_ind_fsr_select_input; /* +0x778 */
uint32_t esai_ipp_ind_fst_select_input; /* +0x77C */
uint32_t esai_ipp_ind_hckr_select_input; /* +0x780 */
uint32_t esai_ipp_ind_hckt_select_input; /* +0x784 */
uint32_t esai_ipp_ind_sckr_select_input; /* +0x788 */
uint32_t esai_ipp_ind_sckt_select_input; /* +0x78C */
uint32_t esai_ipp_ind_sdo0_select_input; /* +0x790 */
uint32_t esai_ipp_ind_sdo1_select_input; /* +0x794 */
uint32_t esai_ipp_ind_sdo2_sdi3_select_input; /* +0x798 */
uint32_t esai_ipp_ind_sdo3_sdi2_select_input; /* +0x79C */
uint32_t esai_ipp_ind_sdo4_sdi1_select_input; /* +0x7A0 */
uint32_t esai_ipp_ind_sdo5_sdi0_select_input; /* +0x7A4 */
uint32_t i2c1_ipp_scl_in_select_input; /* +0x7A8 */
uint32_t i2c1_ipp_sda_in_select_input; /* +0x7AC */
uint32_t i2c2_ipp_scl_in_select_input; /* +0x7B0 */
uint32_t i2c2_ipp_sda_in_select_input; /* +0x7B4 */
uint32_t i2c3_ipp_scl_in_select_input; /* +0x7B8 */
uint32_t i2c3_ipp_sda_in_select_input; /* +0x7BC */
uint32_t i2c4_ipp_scl_in_select_input; /* +0x7C0 */
uint32_t i2c4_ipp_sda_in_select_input; /* +0x7C4 */
uint32_t kpp_ipp_ind_col_select_input_5; /* +0x7C8 */
uint32_t kpp_ipp_ind_col_select_input_6; /* +0x7CC */
uint32_t kpp_ipp_ind_col_select_input_7; /* +0x7D0 */
uint32_t kpp_ipp_ind_row_select_input_5; /* +0x7D4 */
uint32_t kpp_ipp_ind_row_select_input_6; /* +0x7D8 */
uint32_t kpp_ipp_ind_row_select_input_7; /* +0x7DC */
uint32_t lcd1_busy_select_input; /* +0x7E0 */
uint32_t lcd2_busy_select_input; /* +0x7E4 */
uint32_t mlb_mlb_clk_in_select_input; /* +0x7E8 */
uint32_t mlb_mlb_data_in_select_input; /* +0x7EC */
uint32_t mlb_mlb_sig_in_select_input; /* +0x7F0 */
uint32_t sai1_ipp_ind_sai_rxbclk_select_input; /* +0x7F4 */
uint32_t sai1_ipp_ind_sai_rxdata_select_input; /* +0x7F8 */
uint32_t sai1_ipp_ind_sai_rxsync_select_input; /* +0x7FC */
uint32_t sai1_ipp_ind_sai_txbclk_select_input; /* +0x800 */
uint32_t sai1_ipp_ind_sai_txsync_select_input; /* +0x804 */
uint32_t sai2_ipp_ind_sai_rxbclk_select_input; /* +0x808 */
uint32_t sai2_ipp_ind_sai_rxdata_select_input; /* +0x80C */
uint32_t sai2_ipp_ind_sai_rxsync_select_input; /* +0x810 */
uint32_t sai2_ipp_ind_sai_txbclk_select_input; /* +0x814 */
uint32_t sai2_ipp_ind_sai_txsync_select_input; /* +0x818 */
uint32_t sdma_events_select_input_14; /* +0x81C */
uint32_t sdma_events_select_input_15; /* +0x820 */
uint32_t spdif_spdif_in1_select_input; /* +0x824 */
uint32_t spdif_tx_clk2_select_input; /* +0x828 */
uint32_t uart1_ipp_uart_rts_b_select_input; /* +0x82C */
uint32_t uart1_ipp_uart_rxd_mux_select_input; /* +0x830 */
uint32_t uart2_ipp_uart_rts_b_select_input; /* +0x834 */
uint32_t uart2_ipp_uart_rxd_mux_select_input; /* +0x838 */
uint32_t uart3_ipp_uart_rts_b_select_input; /* +0x83C */
uint32_t uart3_ipp_uart_rxd_mux_select_input; /* +0x840 */
uint32_t uart4_ipp_uart_rts_b_select_input; /* +0x844 */
uint32_t uart4_ipp_uart_rxd_mux_select_input; /* +0x848 */
uint32_t uart5_ipp_uart_rts_b_select_input; /* +0x84C */
uint32_t uart5_ipp_uart_rxd_mux_select_input; /* +0x850 */
uint32_t uart6_ipp_uart_rts_b_select_input; /* +0x854 */
uint32_t uart6_ipp_uart_rxd_mux_select_input; /* +0x858 */
uint32_t usb_ipp_ind_otg2_oc_select_input; /* +0x85C */
uint32_t usb_ipp_ind_otg_oc_select_input; /* +0x860 */
uint32_t usdhc1_ipp_card_det_select_input; /* +0x864 */
uint32_t usdhc1_ipp_wp_on_select_input; /* +0x868 */
uint32_t usdhc2_ipp_card_det_select_input; /* +0x86C */
uint32_t usdhc2_ipp_wp_on_select_input; /* +0x870 */
uint32_t usdhc4_ipp_card_det_select_input; /* +0x874 */
uint32_t usdhc4_ipp_wp_on_select_input; /* +0x878 */
#else
#error "unknown i.MX6 SOC"
#endif
};
#ifdef CONFIG_PLAT_IMX6SX
struct imx6sx_iomuxc_gpr_regs {
/*** GPR ***/
uint32_t gpr0; /* +0x000 */
uint32_t gpr1; /* +0x004 */
uint32_t gpr2; /* +0x008 */
uint32_t gpr3; /* +0x00C */
uint32_t gpr4; /* +0x010 */
uint32_t gpr5; /* +0x014 */
uint32_t gpr6; /* +0x018 */
uint32_t gpr7; /* +0x01C */
uint32_t gpr8; /* +0x020 */
uint32_t gpr9; /* +0x024 */
uint32_t gpr10; /* +0x028 */
uint32_t gpr11; /* +0x02C */
uint32_t gpr12; /* +0x030 */
uint32_t gpr13; /* +0x034 */
};
#endif
static struct imx6_mux {
volatile struct imx6_iomuxc_regs *iomuxc;
#ifdef CONFIG_PLAT_IMX6SX
volatile struct imx6sx_iomuxc_gpr_regs *iomuxc_gpr;
#endif
} _mux;
static inline struct imx6_mux *get_mux_priv(const mux_sys_t *mux)
{
return (struct imx6_mux *)mux->priv;
}
static inline void set_mux_priv(mux_sys_t *mux, struct imx6_mux *imx6_mux)
{
assert(mux != NULL);
assert(imx6_mux != NULL);
mux->priv = imx6_mux;
}
static int imx6_mux_feature_enable(const mux_sys_t *mux, mux_feature_t mux_feature, UNUSED enum mux_gpio_dir mgd)
{
struct imx6_mux *m;
if (mux == NULL || mux->priv == NULL) {
return -1;
}
m = get_mux_priv(mux);
#if defined(CONFIG_PLAT_IMX6DQ)
assert(((int)&m->iomuxc->usdhc1_wp_on_select_input & 0xfff) == 0x94C);
#elif defined(CONFIG_PLAT_IMX6SX)
assert(((int)&m->iomuxc->usdhc4_ipp_wp_on_select_input & 0xfff) == 0x878);
#else
#error "unknown i.MX6 SOC"
#endif
switch (mux_feature) {
#if defined(CONFIG_PLAT_IMX6DQ)
case MUX_I2C1:
ZF_LOGD("Muxing for I2C1\n");
m->iomuxc->i2c1_scl_in_select_input = IOMUXC_IS_DAISY(0x0);
m->iomuxc->sw_mux_ctl_pad_eim_data21 = IOMUXC_MUXCTL_MODE(6)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c1_sda_in_select_input = IOMUXC_IS_DAISY(0x0);
m->iomuxc->sw_mux_ctl_pad_eim_data28 = IOMUXC_MUXCTL_MODE(1)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_I2C2:
ZF_LOGD("Muxing for I2C2\n");
m->iomuxc->i2c2_scl_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_key_col3 = IOMUXC_MUXCTL_MODE(4)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c2_sda_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_key_row3 = IOMUXC_MUXCTL_MODE(4)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_I2C3:
ZF_LOGD("Muxing for I2C3\n");
m->iomuxc->i2c3_scl_in_select_input = IOMUXC_IS_DAISY(0x2);
m->iomuxc->sw_mux_ctl_pad_gpio05 = IOMUXC_MUXCTL_MODE(6)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c3_sda_in_select_input = IOMUXC_IS_DAISY(0x2);
m->iomuxc->sw_mux_ctl_pad_gpio16 = IOMUXC_MUXCTL_MODE(6)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_GPIO0_CLKO1:
ZF_LOGD("Muxing CLKO1 to MUX0\n");
m->iomuxc->sw_mux_ctl_pad_gpio00 = IOMUXC_MUXCTL_MODE(0);
return 0;
case MUX_UART1:
ZF_LOGD("Muxing for UART1\n");
m->iomuxc->sw_mux_ctl_pad_sd3_data6 = IOMUXC_MUXCTL_MODE(1);
m->iomuxc->uart1_uart_rx_data_select_input = IOMUXC_IS_DAISY(3);
return 0;
#elif defined(CONFIG_PLAT_IMX6SX)
case MUX_I2C1:
ZF_LOGD("Muxing for I2C1\n");
m->iomuxc->i2c1_ipp_scl_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_gpio1_io00 = IOMUXC_MUXCTL_MODE(0)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c1_ipp_sda_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_gpio1_io01 = IOMUXC_MUXCTL_MODE(0)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_I2C2:
ZF_LOGD("Muxing for I2C2\n");
m->iomuxc->i2c2_ipp_scl_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_gpio1_io02 = IOMUXC_MUXCTL_MODE(0)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c2_ipp_sda_in_select_input = IOMUXC_IS_DAISY(0x1);
m->iomuxc->sw_mux_ctl_pad_gpio1_io03 = IOMUXC_MUXCTL_MODE(0)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_I2C3:
ZF_LOGD("Muxing for I2C3\n");
m->iomuxc->i2c3_ipp_scl_in_select_input = IOMUXC_IS_DAISY(0x2);
m->iomuxc->sw_mux_ctl_pad_key_col4 = IOMUXC_MUXCTL_MODE(2)
| IOMUXC_MUXCTL_FORCE_INPUT;
m->iomuxc->i2c3_ipp_sda_in_select_input = IOMUXC_IS_DAISY(0x2);
m->iomuxc->sw_mux_ctl_pad_key_row4 = IOMUXC_MUXCTL_MODE(2)
| IOMUXC_MUXCTL_FORCE_INPUT;
return 0;
case MUX_GPIO11_CLKO1:
ZF_LOGD("Muxing CLKO1 to MUX11\n");
m->iomuxc->sw_mux_ctl_pad_gpio1_io11 = IOMUXC_MUXCTL_MODE(3);
return 0;
#else
#error "unknown i.MX6 SOC"
#endif
default:
return -1;
}
}
int imx6_mux_enable_gpio(mux_sys_t *mux_sys, int gpio_id)
{
static struct imx6_mux *m;
volatile uint32_t *reg;
assert(mux_sys);
m = (struct imx6_mux *)mux_sys->priv;
assert(m);
/* Surely there is a mathematical formula for finding the register to be set? */
switch (gpio_id) {
#if defined(CONFIG_PLAT_IMX6DQ)
case GPIOID(GPIO_BANK1, 0):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio00;
break;
case GPIOID(GPIO_BANK1, 1):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio01;
break;
case GPIOID(GPIO_BANK1, 2):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio02;
break;
case GPIOID(GPIO_BANK1, 3):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio03;
break;
case GPIOID(GPIO_BANK1, 4):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio04;
break;
case GPIOID(GPIO_BANK1, 5):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio05;
break;
case GPIOID(GPIO_BANK1, 6):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio06;
break;
case GPIOID(GPIO_BANK1, 7):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio07;
break;
case GPIOID(GPIO_BANK1, 8):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio08;
break;
case GPIOID(GPIO_BANK1, 9):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio09;
break;
case GPIOID(GPIO_BANK7, 11):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio16;
break;
case GPIOID(GPIO_BANK7, 12):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio17;
break;
case GPIOID(GPIO_BANK7, 13):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio18;
break;
case GPIOID(GPIO_BANK4, 5):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio19;
break;
case GPIOID(GPIO_BANK2, 0):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data00;
break;
case GPIOID(GPIO_BANK2, 1):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data01;
break;
case GPIOID(GPIO_BANK2, 2):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data02;
break;
case GPIOID(GPIO_BANK2, 3):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data03;
break;
case GPIOID(GPIO_BANK2, 4):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data04;
break;
case GPIOID(GPIO_BANK2, 5):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data05;
break;
case GPIOID(GPIO_BANK2, 6):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data06;
break;
case GPIOID(GPIO_BANK2, 7):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data07;
break;
#elif defined(CONFIG_PLAT_IMX6SX)
case GPIOID(GPIO_BANK1, 0):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io00;
break;
case GPIOID(GPIO_BANK1, 1):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io01;
break;
case GPIOID(GPIO_BANK1, 2):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io02;
break;
case GPIOID(GPIO_BANK1, 3):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io03;
break;
case GPIOID(GPIO_BANK1, 4):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io04;
break;
case GPIOID(GPIO_BANK1, 5):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io05;
break;
case GPIOID(GPIO_BANK1, 6):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io06;
break;
case GPIOID(GPIO_BANK1, 7):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io07;
break;
case GPIOID(GPIO_BANK1, 8):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io08;
break;
case GPIOID(GPIO_BANK1, 9):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io09;
break;
case GPIOID(GPIO_BANK1, 10):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io10;
break;
case GPIOID(GPIO_BANK1, 11):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io11;
break;
case GPIOID(GPIO_BANK1, 12):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io12;
break;
case GPIOID(GPIO_BANK1, 13):
reg = &m->iomuxc->sw_mux_ctl_pad_gpio1_io13;
break;
case GPIOID(GPIO_BANK4, 4):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data00;
break;
case GPIOID(GPIO_BANK4, 5):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data01;
break;
case GPIOID(GPIO_BANK4, 6):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data02;
break;
case GPIOID(GPIO_BANK4, 7):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data03;
break;
case GPIOID(GPIO_BANK4, 8):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data04;
break;
case GPIOID(GPIO_BANK4, 9):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data05;
break;
case GPIOID(GPIO_BANK4, 10):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data06;
break;
case GPIOID(GPIO_BANK4, 11):
reg = &m->iomuxc->sw_mux_ctl_pad_nand_data07;
break;
#else
#error Invalid platform defined.
#endif
default:
ZF_LOGD("Unable to mux GPIOID 0x%x\n", gpio_id);
return -1;
}
*reg = IOMUXC_MUXCTL_MODE(5);
return 0;
}
static void *imx6_mux_get_vaddr(const mux_sys_t *mux)
{
struct imx6_mux *m;
if (mux == NULL || mux->priv == NULL) {
return NULL;
}
m = get_mux_priv(mux);
return (void *)m->iomuxc;
}
static int imx6_mux_init_common(mux_sys_t *mux)
{
set_mux_priv(mux, &_mux);
mux->feature_enable = &imx6_mux_feature_enable;
mux->get_mux_vaddr = &imx6_mux_get_vaddr;
return 0;
}
int imx6_mux_init(void *iomuxc, mux_sys_t *mux)
{
if (iomuxc != NULL) {
_mux.iomuxc = iomuxc;
}
return imx6_mux_init_common(mux);
}
#ifdef CONFIG_PLAT_IMX6SX
int imx6sx_mux_init_split(void *iomuxc, void *iomuxc_gpr, mux_sys_t *mux)
{
if (iomuxc != NULL) {
_mux.iomuxc = iomuxc;
}
if (iomuxc_gpr != NULL) {
_mux.iomuxc_gpr = iomuxc_gpr;
}
return imx6_mux_init_common(mux);
}
#endif
int mux_sys_init(ps_io_ops_t *io_ops, UNUSED void *dependencies, mux_sys_t *mux)
{
MAP_IF_NULL(io_ops, IMX6_IOMUXC, _mux.iomuxc);
#ifdef CONFIG_PLAT_IMX6SX
MAP_IF_NULL(io_ops, IMX6_IOMUXC_GPR, _mux.iomuxc_gpr);
#endif
return imx6_mux_init_common(mux);
}