static void gpio_usbotg_vbus_inactive(void) { if (board_is_mx53_arm2()) { /* MX53 ARM2 CPU board */ /* Disable OTG VBus with GPIO high */ gpio_set_value(ARM2_OTG_VBUS, 1); } else if (board_is_mx53_evk_a()) { /* MX53 EVK board ver A*/ /* Disable OTG VBus with GPIO high */ gpio_set_value(EVK_OTG_VBUS, 1); } else if (board_is_mx53_evk_b()) { /* MX53 EVK board ver B*/ /* Disable OTG VBus with GPIO low */ gpio_set_value(EVK_OTG_VBUS, 0); } }
static void gpio_usbotg_vbus_inactive(void) { if (board_is_mx53_arm2()) { /* MX53 ARM2 CPU board */ /* Disable OTG VBus with GPIO high */ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_D22), 1); } else if (board_is_mx53_evk_a()) { /* MX53 EVK board ver A*/ /* Disable OTG VBus with GPIO high */ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), 1); } else if (board_is_mx53_evk_b()) { /* MX53 EVK board ver B*/ /* Disable OTG VBus with GPIO low */ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), 0); } }
static void __init mx53_evk_io_init(void) { mxc_iomux_v3_setup_multiple_pads(mx53common_pads, ARRAY_SIZE(mx53common_pads)); if (board_is_mx53_arm2()) { /* MX53 ARM2 CPU board */ pr_info("MX53 ARM2 board \n"); mxc_iomux_v3_setup_multiple_pads(mx53arm2_pads, ARRAY_SIZE(mx53arm2_pads)); /* Config GPIO for OTG VBus */ gpio_request(ARM2_OTG_VBUS, "otg-vbus"); gpio_direction_output(ARM2_OTG_VBUS, 1); gpio_request(ARM2_SD1_CD, "sdhc1-cd"); gpio_direction_input(ARM2_SD1_CD); /* SD1 CD */ gpio_request(ARM2_LCD_CONTRAST, "lcd-contrast"); gpio_direction_output(ARM2_LCD_CONTRAST, 1); } else { /* MX53 EVK board */ pr_info("MX53 EVK board \n"); mxc_iomux_v3_setup_multiple_pads(mx53evk_pads, ARRAY_SIZE(mx53evk_pads)); /* Host1 Vbus with GPIO high */ gpio_request(EVK_USBH1_VBUS, "usbh1-vbus"); gpio_direction_output(EVK_USBH1_VBUS, 1); /* shutdown the Host1 Vbus when system bring up, * Vbus will be opened in Host1 driver's probe function */ gpio_set_value(EVK_USBH1_VBUS, 0); /* USB HUB RESET - De-assert USB HUB RESET_N */ gpio_request(EVK_USB_HUB_RESET, "usb-hub-reset"); gpio_direction_output(EVK_USB_HUB_RESET, 0); msleep(1); gpio_set_value(EVK_USB_HUB_RESET, 1); /* Config GPIO for OTG VBus */ gpio_request(EVK_OTG_VBUS, "otg-vbus"); gpio_direction_output(EVK_OTG_VBUS, 0); if (board_is_mx53_evk_a()) /*rev A,"1" disable, "0" enable vbus*/ gpio_set_value(EVK_OTG_VBUS, 1); else if (board_is_mx53_evk_b()) /* rev B,"0" disable,"1" enable Vbus*/ gpio_set_value(EVK_OTG_VBUS, 0); gpio_request(EVK_SD1_CD, "sdhc1-cd"); gpio_direction_input(EVK_SD1_CD); /* SD1 CD */ gpio_request(EVK_SD1_WP, "sdhc1-wp"); gpio_direction_input(EVK_SD1_WP); /* SD1 WP */ /* SD3 CD */ gpio_request(EVK_SD3_CD, "sdhc3-cd"); gpio_direction_input(EVK_SD3_CD); /* SD3 WP */ gpio_request(EVK_SD3_WP, "sdhc3-wp"); gpio_direction_input(EVK_SD3_WP); /* reset FEC PHY */ gpio_request(EVK_FEC_PHY_RESET, "fec-phy-reset"); gpio_direction_output(EVK_FEC_PHY_RESET, 0); msleep(1); gpio_set_value(EVK_FEC_PHY_RESET, 1); gpio_request(MX53_ESAI_RESET, "fesai-reset"); gpio_direction_output(MX53_ESAI_RESET, 0); } /* DVI Detect */ gpio_request(MX53_DVI_DETECT, "dvi-detect"); gpio_direction_input(MX53_DVI_DETECT); /* DVI Reset - Assert for i2c disabled mode */ gpio_request(MX53_DVI_RESET, "dvi-reset"); gpio_direction_output(MX53_DVI_RESET, 0); /* DVI Power-down */ gpio_request(MX53_DVI_PD, "dvi-pd"); gpio_direction_output(MX53_DVI_PD, 1); /* DVI I2C enable */ gpio_request(MX53_DVI_I2C, "dvi-i2c"); gpio_direction_output(MX53_DVI_I2C, 0); mxc_iomux_v3_setup_multiple_pads(mx53_nand_pads, ARRAY_SIZE(mx53_nand_pads)); gpio_request(MX53_PMIC_INT, "pmic-int"); gpio_direction_input(MX53_PMIC_INT); /*PMIC_INT*/ /* headphone_det_b */ gpio_request(MX53_HP_DETECT, "hp-detect"); gpio_direction_input(MX53_HP_DETECT); /* power key */ /* LCD related gpio */ /* Camera reset */ gpio_request(MX53_CAM_RESET, "cam-reset"); gpio_direction_output(MX53_CAM_RESET, 1); /* TVIN reset */ gpio_request(MX53_TVIN_RESET, "tvin-reset"); gpio_direction_output(MX53_TVIN_RESET, 0); msleep(5); gpio_set_value(MX53_TVIN_RESET, 1); /* TVin power down */ gpio_request(MX53_TVIN_PWR, "tvin-pwr"); gpio_direction_output(MX53_TVIN_PWR, 0); /* CAN1 enable GPIO*/ gpio_request(MX53_CAN1_EN1, "can1-en1"); gpio_direction_output(MX53_CAN1_EN1, 0); gpio_request(MX53_CAN1_EN2, "can1-en2"); gpio_direction_output(MX53_CAN1_EN2, 0); /* CAN2 enable GPIO*/ gpio_request(MX53_CAN2_EN1, "can2-en1"); gpio_direction_output(MX53_CAN2_EN1, 0); gpio_request(MX53_CAN2_EN2, "can2-en2"); gpio_direction_output(MX53_CAN2_EN2, 0); if (enable_spdif) { iomux_v3_cfg_t spdif_pin = MX53_PAD_GPIO_19__SPDIF_OUT1; mxc_iomux_v3_setup_pad(spdif_pin); } else { /* GPIO for 12V */ gpio_request(MX53_12V_EN, "12v-en"); gpio_direction_output(MX53_12V_EN, 0); } }
void __init mx53_evk_io_init(void) { int i; for (i = 0; i < ARRAY_SIZE(mxc_iomux_pins); i++) { mxc_request_iomux(mxc_iomux_pins[i].pin, mxc_iomux_pins[i].mux_mode); if (mxc_iomux_pins[i].pad_cfg) mxc_iomux_set_pad(mxc_iomux_pins[i].pin, mxc_iomux_pins[i].pad_cfg); if (mxc_iomux_pins[i].in_select) mxc_iomux_set_input(mxc_iomux_pins[i].in_select, mxc_iomux_pins[i].in_mode); } if (board_is_mx53_arm2()) { /* MX53 ARM2 CPU board */ pr_info("MX53 ARM2 board \n"); for (i = 0; i < ARRAY_SIZE(mx53_arm2_iomux_pins); i++) { mxc_request_iomux(mx53_arm2_iomux_pins[i].pin, mx53_arm2_iomux_pins[i].mux_mode); if (mx53_arm2_iomux_pins[i].pad_cfg) mxc_iomux_set_pad(mx53_arm2_iomux_pins[i].pin, mx53_arm2_iomux_pins[i].pad_cfg); if (mx53_arm2_iomux_pins[i].in_select) mxc_iomux_set_input(mx53_arm2_iomux_pins[i].in_select, mx53_arm2_iomux_pins[i].in_mode); } /* Config GPIO for OTG VBus */ mxc_iomux_set_pad(MX53_PIN_EIM_D22, PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST); gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_D22), "gpio3_22"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_EIM_D22), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_D22), 1); gpio_request(IOMUX_TO_GPIO(MX53_PIN_GPIO_1), "gpio1_1"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_GPIO_1)); /* SD1 CD */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_DI0_PIN4), "gpio4_20"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_DI0_PIN4), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_DI0_PIN4), 1); } else { /* MX53 EVK board */ pr_info("MX53 EVK board \n"); for (i = 0; i < ARRAY_SIZE(mx53_evk_iomux_pins); i++) { mxc_request_iomux(mx53_evk_iomux_pins[i].pin, mx53_evk_iomux_pins[i].mux_mode); if (mx53_evk_iomux_pins[i].pad_cfg) mxc_iomux_set_pad(mx53_evk_iomux_pins[i].pin, mx53_evk_iomux_pins[i].pad_cfg); if (mx53_evk_iomux_pins[i].in_select) mxc_iomux_set_input(mx53_evk_iomux_pins[i].in_select, mx53_evk_iomux_pins[i].in_mode); } /* Host1 Vbus with GPIO high */ mxc_iomux_set_pad(MX53_PIN_ATA_DA_2, PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST); gpio_request(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_2), "gpio7_8"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_2), 1); /* shutdown the Host1 Vbus when system bring up, * Vbus will be opened in Host1 driver's probe function */ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_2), 0); /* USB HUB RESET - De-assert USB HUB RESET_N */ mxc_iomux_set_pad(MX53_PIN_CSI0_DATA_EN, PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST); gpio_request(IOMUX_TO_GPIO(MX53_PIN_CSI0_DATA_EN), "gpio5_20"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_CSI0_DATA_EN), 0); msleep(1); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_DATA_EN), 0); msleep(1); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_DATA_EN), 1); /* Config GPIO for OTG VBus */ mxc_iomux_set_pad(MX53_PIN_EIM_A23, PAD_CTL_DRV_HIGH | PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST); gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), "gpio6_6"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), 0); if (board_is_mx53_evk_a()) /*rev A,"1" disable, "0" enable vbus*/ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), 1); else if (board_is_mx53_evk_b()) /* rev B,"0" disable,"1" enable Vbus*/ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_A23), 0); gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_DA13), "gpio3_13"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_EIM_DA13)); /* SD1 CD */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_DA14), "gpio3_14"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_EIM_DA14)); /* SD1 WP */ /* SD3 CD */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_DA11), "gpio3_11"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_EIM_DA11)); /* SD3 WP */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_DA12), "gpio3_12"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_EIM_DA11)); /* reset FEC PHY */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_0), "gpio7_6"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_0), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_0), 0); msleep(1); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_ATA_DA_0), 1); /* CS42888 reset GPIO */ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_12), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_12), 0); } /* DVI Detect */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_D31), "gpio3_31"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_EIM_D31)); /* DVI Reset - Assert for i2c disabled mode */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_WAIT), "gpio5_0"); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_WAIT), 0); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_EIM_WAIT), 0); /* DVI Power-down */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_D24), "gpio3_24"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_EIM_D24), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_D24), 1); /* DVI I2C enable */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_EIM_D28), "gpio3_28"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_EIM_D28), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_EIM_D28), 0); for (i = 0; i < ARRAY_SIZE(nand_iomux_pins); i++) { mxc_request_iomux(nand_iomux_pins[i].pin, nand_iomux_pins[i].mux_mode); if (nand_iomux_pins[i].pad_cfg) mxc_iomux_set_pad(nand_iomux_pins[i].pin, nand_iomux_pins[i].pad_cfg); if (nand_iomux_pins[i].in_select) mxc_iomux_set_input(nand_iomux_pins[i].in_select, nand_iomux_pins[i].in_mode); } gpio_request(IOMUX_TO_GPIO(MX53_PIN_GPIO_16), "gpio7_11"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_GPIO_16)); /*PMIC_INT*/ /* headphone_det_b */ mxc_request_iomux(MX53_PIN_ATA_DATA5, IOMUX_CONFIG_GPIO); mxc_iomux_set_pad(MX53_PIN_ATA_DATA5, PAD_CTL_100K_PU); gpio_request(IOMUX_TO_GPIO(MX53_PIN_ATA_DATA5), "gpio2_5"); gpio_direction_input(IOMUX_TO_GPIO(MX53_PIN_ATA_DATA5)); /* power key */ /* LCD related gpio */ /* Camera reset */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_GPIO_10), "gpio4_0"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_10), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_10), 1); /* TVIN reset */ gpio_request(IOMUX_TO_GPIO(MX53_PIN_CSI0_D7), "gpio5_25"); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_CSI0_D7), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D7), 0); msleep(5); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D7), 1); /* CAN1 enable GPIO*/ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_18), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_18), 0); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_17), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_17), 0); /* CAN2 enable GPIO*/ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_CSI0_D6), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D6), 0); gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_14), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_14), 0); if (enable_spdif) { mxc_free_iomux(MX53_PIN_GPIO_19, IOMUX_CONFIG_ALT1); mxc_request_iomux(MX53_PIN_GPIO_19, IOMUX_CONFIG_ALT3); mxc_iomux_set_pad(MX53_PIN_GPIO_19, PAD_CTL_DRV_HIGH | PAD_CTL_HYS_ENABLE | PAD_CTL_PUE_PULL | PAD_CTL_100K_PU | PAD_CTL_PKE_ENABLE); } else { /* GPIO for CAN 12V */ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_GPIO_19), 0); gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_19), 0); } }