/* * iopin settings are controlled by four different sets of registers * iopad mux control * individual iopad setup (voltage select, pull/keep, drive strength ...) * group iopad setup (same as above but for groups of signals) * input select when multiple inputs are possible */ /* * software pad mux control */ /* SW Input On (Loopback) */ #define MX25_PIN_MUX_SION (1 << 4) /* MUX Mode (0-7) */ #define MX25_PIN_MUX_MODE(mode) ((mode & 0x7) << 0) struct iomuxc_mux_ctl { u32 gpr1; u32 observe_int_mux; u32 pad_a10; u32 pad_a13; u32 pad_a14; u32 pad_a15; u32 pad_a16; u32 pad_a17; u32 pad_a18; u32 pad_a19; u32 pad_a20; u32 pad_a21; u32 pad_a22; u32 pad_a23; u32 pad_a24; u32 pad_a25; u32 pad_eb0; u32 pad_eb1; u32 pad_oe; u32 pad_cs0; u32 pad_cs1; u32 pad_cs4; u32 pad_cs5; u32 pad_nf_ce0; u32 pad_ecb; u32 pad_lba; u32 pad_bclk; u32 pad_rw; u32 pad_nfwe_b; u32 pad_nfre_b; u32 pad_nfale; u32 pad_nfcle; u32 pad_nfwp_b; u32 pad_nfrb; u32 pad_d15; u32 pad_d14; u32 pad_d13; u32 pad_d12; u32 pad_d11; u32 pad_d10; u32 pad_d9; u32 pad_d8; u32 pad_d7; u32 pad_d6; u32 pad_d5; u32 pad_d4; u32 pad_d3; u32 pad_d2; u32 pad_d1; u32 pad_d0; u32 pad_ld0; u32 pad_ld1; u32 pad_ld2; u32 pad_ld3; u32 pad_ld4; u32 pad_ld5; u32 pad_ld6; u32 pad_ld7; u32 pad_ld8; u32 pad_ld9; u32 pad_ld10; u32 pad_ld11; u32 pad_ld12; u32 pad_ld13; u32 pad_ld14; u32 pad_ld15; u32 pad_hsync; u32 pad_vsync; u32 pad_lsclk; u32 pad_oe_acd; u32 pad_contrast; u32 pad_pwm; u32 pad_csi_d2; u32 pad_csi_d3; u32 pad_csi_d4; u32 pad_csi_d5; u32 pad_csi_d6; u32 pad_csi_d7; u32 pad_csi_d8; u32 pad_csi_d9; u32 pad_csi_mclk; u32 pad_csi_vsync; u32 pad_csi_hsync; u32 pad_csi_pixclk; u32 pad_i2c1_clk; u32 pad_i2c1_dat; u32 pad_cspi1_mosi; u32 pad_cspi1_miso; u32 pad_cspi1_ss0; u32 pad_cspi1_ss1; u32 pad_cspi1_sclk; u32 pad_cspi1_rdy; u32 pad_uart1_rxd; u32 pad_uart1_txd; u32 pad_uart1_rts; u32 pad_uart1_cts; u32 pad_uart2_rxd; u32 pad_uart2_txd; u32 pad_uart2_rts; u32 pad_uart2_cts; u32 pad_sd1_cmd; u32 pad_sd1_clk; u32 pad_sd1_data0; u32 pad_sd1_data1; u32 pad_sd1_data2; u32 pad_sd1_data3; u32 pad_kpp_row0; u32 pad_kpp_row1; u32 pad_kpp_row2; u32 pad_kpp_row3; u32 pad_kpp_col0; u32 pad_kpp_col1; u32 pad_kpp_col2; u32 pad_kpp_col3; u32 pad_fec_mdc; u32 pad_fec_mdio; u32 pad_fec_tdata0; u32 pad_fec_tdata1; u32 pad_fec_tx_en; u32 pad_fec_rdata0; u32 pad_fec_rdata1; u32 pad_fec_rx_dv; u32 pad_fec_tx_clk; u32 pad_rtck; u32 pad_de_b; u32 pad_gpio_a; u32 pad_gpio_b; u32 pad_gpio_c; u32 pad_gpio_d; u32 pad_gpio_e; u32 pad_gpio_f; u32 pad_ext_armclk; u32 pad_upll_bypclk; u32 pad_vstby_req; u32 pad_vstby_ack; u32 pad_power_fail; u32 pad_clko; u32 pad_boot_mode0; u32 pad_boot_mode1; }; /* * software pad control */ /* Select 3.3 or 1.8 volts */ #define MX25_PIN_PAD_CTL_DVS_33 (0 << 13) #define MX25_PIN_PAD_CTL_DVS_18 (1 << 13) /* Enable hysteresis */ #define MX25_PIN_PAD_CTL_HYS (1 << 8) /* Enable pull/keeper */ #define MX25_PIN_PAD_CTL_PKE (1 << 7) /* 0 - keeper / 1 - pull */ #define MX25_PIN_PAD_CTL_PUE (1 << 6) /* pull up/down strength */ #define MX25_PIN_PAD_CTL_100K_PD (0 << 4) #define MX25_PIN_PAD_CTL_47K_PU (1 << 4) #define MX25_PIN_PAD_CTL_100K_PU (2 << 4) #define MX25_PIN_PAD_CTL_22K_PU (3 << 4) /* open drain control */ #define MX25_PIN_PAD_CTL_OD (1 << 3) /* drive strength */ #define MX25_PIN_PAD_CTL_DS_NOM (0 << 1) #define MX25_PIN_PAD_CTL_DS_HIGH (1 << 1) #define MX25_PIN_PAD_CTL_DS_MAX (2 << 1) #define MX25_PIN_PAD_CTL_DS_MAX11 (3 << 1) /* slew rate */ #define MX25_PIN_PAD_CTL_SRE_SLOW (0 << 0) #define MX25_PIN_PAD_CTL_SRE_FAST (1 << 0) struct iomuxc_pad_ctl { u32 pad_a13; u32 pad_a14; u32 pad_a15; u32 pad_a17; u32 pad_a18; u32 pad_a19; u32 pad_a20; u32 pad_a21; u32 pad_a23; u32 pad_a24; u32 pad_a25; u32 pad_eb0; u32 pad_eb1; u32 pad_oe; u32 pad_cs4; u32 pad_cs5; u32 pad_nf_ce0; u32 pad_ecb; u32 pad_lba; u32 pad_rw; u32 pad_nfrb; u32 pad_d15; u32 pad_d14; u32 pad_d13; u32 pad_d12; u32 pad_d11; u32 pad_d10; u32 pad_d9; u32 pad_d8; u32 pad_d7; u32 pad_d6; u32 pad_d5; u32 pad_d4; u32 pad_d3; u32 pad_d2; u32 pad_d1; u32 pad_d0; u32 pad_ld0; u32 pad_ld1; u32 pad_ld2; u32 pad_ld3; u32 pad_ld4; u32 pad_ld5; u32 pad_ld6; u32 pad_ld7; u32 pad_ld8; u32 pad_ld9; u32 pad_ld10; u32 pad_ld11; u32 pad_ld12; u32 pad_ld13; u32 pad_ld14; u32 pad_ld15; u32 pad_hsync; u32 pad_vsync; u32 pad_lsclk; u32 pad_oe_acd; u32 pad_contrast; u32 pad_pwm; u32 pad_csi_d2; u32 pad_csi_d3; u32 pad_csi_d4; u32 pad_csi_d5; u32 pad_csi_d6; u32 pad_csi_d7; u32 pad_csi_d8; u32 pad_csi_d9; u32 pad_csi_mclk; u32 pad_csi_vsync; u32 pad_csi_hsync; u32 pad_csi_pixclk; u32 pad_i2c1_clk; u32 pad_i2c1_dat; u32 pad_cspi1_mosi; u32 pad_cspi1_miso; u32 pad_cspi1_ss0; u32 pad_cspi1_ss1; u32 pad_cspi1_sclk; u32 pad_cspi1_rdy; u32 pad_uart1_rxd; u32 pad_uart1_txd; u32 pad_uart1_rts; u32 pad_uart1_cts; u32 pad_uart2_rxd; u32 pad_uart2_txd; u32 pad_uart2_rts; u32 pad_uart2_cts; u32 pad_sd1_cmd; u32 pad_sd1_clk; u32 pad_sd1_data0; u32 pad_sd1_data1; u32 pad_sd1_data2; u32 pad_sd1_data3; u32 pad_kpp_row0; u32 pad_kpp_row1; u32 pad_kpp_row2; u32 pad_kpp_row3; u32 pad_kpp_col0; u32 pad_kpp_col1; u32 pad_kpp_col2; u32 pad_kpp_col3; u32 pad_fec_mdc; u32 pad_fec_mdio; u32 pad_fec_tdata0; u32 pad_fec_tdata1; u32 pad_fec_tx_en; u32 pad_fec_rdata0; u32 pad_fec_rdata1; u32 pad_fec_rx_dv; u32 pad_fec_tx_clk; u32 pad_rtck; u32 pad_tdo; u32 pad_de_b; u32 pad_gpio_a; u32 pad_gpio_b; u32 pad_gpio_c; u32 pad_gpio_d; u32 pad_gpio_e; u32 pad_gpio_f; u32 pad_vstby_req; u32 pad_vstby_ack; u32 pad_power_fail; u32 pad_clko; }; /* * Pad group drive strength and voltage select * Same fields as iomuxc_pad_ctl plus ddr type */ /* Select DDR type */ #define MX25_PIN_PAD_CTL_DDR_18 (0 << 11) #define MX25_PIN_PAD_CTL_DDR_33 (1 << 11) #define MX25_PIN_PAD_CTL_DDR_MAX (2 << 11) struct iomuxc_pad_grp_ctl { u32 grp_dvs_misc; u32 grp_dse_fec; u32 grp_dvs_jtag; u32 grp_dse_nfc; u32 grp_dse_csi; u32 grp_dse_weim; u32 grp_dse_ddr; u32 grp_dvs_crm; u32 grp_dse_kpp; u32 grp_dse_sdhc1; u32 grp_dse_lcd; u32 grp_dse_uart; u32 grp_dvs_nfc; u32 grp_dvs_csi; u32 grp_dse_cspi1; u32 grp_ddrtype; u32 grp_dvs_sdhc1; u32 grp_dvs_lcd; }; /* * Pad input select control * Select which pad to connect to an input port * where multiple pads can function as given input */ #define MX25_PAD_INPUT_SELECT_DAISY(in) ((in & 0x7) << 0) struct iomuxc_pad_input_select { u32 audmux_p4_input_da_amx; u32 audmux_p4_input_db_amx; u32 audmux_p4_input_rxclk_amx; u32 audmux_p4_input_rxfs_amx; u32 audmux_p4_input_txclk_amx; u32 audmux_p4_input_txfs_amx; u32 audmux_p7_input_da_amx; u32 audmux_p7_input_txfs_amx; u32 can1_ipp_ind_canrx; u32 can2_ipp_ind_canrx; u32 csi_ipp_csi_d_0; u32 csi_ipp_csi_d_1; u32 cspi1_ipp_ind_ss3_b; u32 cspi2_ipp_cspi_clk_in; u32 cspi2_ipp_ind_dataready_b; u32 cspi2_ipp_ind_miso; u32 cspi2_ipp_ind_mosi; u32 cspi2_ipp_ind_ss0_b; u32 cspi2_ipp_ind_ss1_b; u32 cspi3_ipp_cspi_clk_in; u32 cspi3_ipp_ind_dataready_b; u32 cspi3_ipp_ind_miso; u32 cspi3_ipp_ind_mosi; u32 cspi3_ipp_ind_ss0_b; u32 cspi3_ipp_ind_ss1_b; u32 cspi3_ipp_ind_ss2_b; u32 cspi3_ipp_ind_ss3_b; u32 esdhc1_ipp_dat4_in; u32 esdhc1_ipp_dat5_in; u32 esdhc1_ipp_dat6_in; u32 esdhc1_ipp_dat7_in; u32 esdhc2_ipp_card_clk_in; u32 esdhc2_ipp_cmd_in; u32 esdhc2_ipp_dat0_in; u32 esdhc2_ipp_dat1_in; u32 esdhc2_ipp_dat2_in; u32 esdhc2_ipp_dat3_in; u32 esdhc2_ipp_dat4_in; u32 esdhc2_ipp_dat5_in; u32 esdhc2_ipp_dat6_in; u32 esdhc2_ipp_dat7_in; u32 fec_fec_col; u32 fec_fec_crs; u32 fec_fec_rdata_2; u32 fec_fec_rdata_3; u32 fec_fec_rx_clk; u32 fec_fec_rx_er; u32 i2c2_ipp_scl_in; u32 i2c2_ipp_sda_in; u32 i2c3_ipp_scl_in; u32 i2c3_ipp_sda_in; u32 kpp_ipp_ind_col_4; u32 kpp_ipp_ind_col_5; u32 kpp_ipp_ind_col_6; u32 kpp_ipp_ind_col_7; u32 kpp_ipp_ind_row_4; u32 kpp_ipp_ind_row_5; u32 kpp_ipp_ind_row_6; u32 kpp_ipp_ind_row_7; u32 sim1_pin_sim_rcvd1_in; u32 sim1_pin_sim_simpd1; u32 sim1_sim_rcvd1_io; u32 sim2_pin_sim_rcvd1_in; u32 sim2_pin_sim_simpd1; u32 sim2_sim_rcvd1_io; u32 uart3_ipp_uart_rts_b; u32 uart3_ipp_uart_rxd_mux; u32 uart4_ipp_uart_rts_b; u32 uart4_ipp_uart_rxd_mux; u32 uart5_ipp_uart_rts_b; u32 uart5_ipp_uart_rxd_mux; u32 usb_top_ipp_ind_otg_usb_oc; u32 usb_top_ipp_ind_uh2_usb_oc; };