static int mipi_lcd_power_control(struct mipi_dsim_device *dsim, unsigned int power) { if (power) { /* Reset */ gpio_request_one(EXYNOS5420_GPJ4(3), GPIOF_OUT_INIT_HIGH, "GPJ4"); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPJ4(3), 0); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPJ4(3), 1); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPJ4(3)); /* Power */ gpio_request_one(EXYNOS5420_GPH0(0), GPIOF_OUT_INIT_HIGH, "GPH0"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPH0(0)); } else { /* Reset */ gpio_request_one(EXYNOS5420_GPJ4(3), GPIOF_OUT_INIT_LOW, "GPJ4"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPJ4(3)); /* Power */ gpio_request_one(EXYNOS5420_GPH0(0), GPIOF_OUT_INIT_LOW, "GPH0"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPH0(0)); } return 1; }
#if defined(CONFIG_V1A_WIFI) || defined(CONFIG_V2A_WIFI) { EXYNOS5420_GPG1(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(IPC_SLAVE_WAKEUP) */ { EXYNOS5420_GPG1(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(SUSPEND_REQUEST_HSIC) */ { EXYNOS5420_GPG1(4), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(CP_ON) */ #endif { EXYNOS5420_GPG1(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ #if defined(CONFIG_V1A_WIFI) { EXYNOS5420_GPG1(6), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(AP_DUMP_INT) */ { EXYNOS5420_GPG1(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(ACTIVE_STATE_HSIC) */ #endif /* GPG 2 */ { EXYNOS5420_GPG2(0), S3C_GPIO_OUTPUT, GPIO_LV_H, S3C_GPIO_PULL_NONE }, /* GPIO_M_RST_N */ /* GPH 0 */ /* GPJ 4 */ #if defined(CONFIG_V1A_WIFI) || defined(CONFIG_V2A_WIFI) { EXYNOS5420_GPJ4(1), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC(RESET_REQ_N) */ #endif /* GPX 0 */ #if defined(CONFIG_V2A) { EXYNOS5420_GPX0(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ #else { EXYNOS5420_GPX0(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_NONE }, /* WACOM_SENSE */ #endif { EXYNOS5420_GPX0(1), S3C_GPIO_SFN(0xF), GPIO_LV_N, S3C_GPIO_PULL_UP }, /* HALL INT */ { EXYNOS5420_GPX0(5), S3C_GPIO_INPUT, GPIO_LV_H, S3C_GPIO_PULL_DOWN }, /* KBC3_HOME_BTN_N */ { EXYNOS5420_GPX1(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* GPIO_ACC_INT1 */ { EXYNOS5420_GPX1(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_NONE }, /* FUEL_ALERT */ { EXYNOS5420_GPX1(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* GPIO_ACC_INT2 */ { EXYNOS5420_GPX2(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* WLAN_WAKE_WAKE */ { EXYNOS5420_GPX2(1), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_NONE }, /* BT_HOST_WAKE */ { EXYNOS5420_GPX2(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_NONE }, /* GPIO_CODEC_IRQ_N */
static void exynos_fimd_gpio_setup_24bpp(void) { unsigned int reg = 0; #if defined(CONFIG_S5P_DP) /* Set Hotplug detect for DP */ gpio_request(EXYNOS5420_GPX0(7), "GPX0"); s3c_gpio_cfgpin(EXYNOS5420_GPX0(7), S3C_GPIO_SFN(3)); #endif #ifdef CONFIG_FB_I80IF gpio_request(EXYNOS5420_GPJ4(0), "GPJ4"); s3c_gpio_cfgpin(EXYNOS5420_GPJ4(0), S3C_GPIO_SFN(2)); #endif /* * Set DISP1BLK_CFG register for Display path selection * * FIMD of DISP1_BLK Bypass selection : DISP1BLK_CFG[15] * --------------------- * 0 | MIE/MDNIE * 1 | FIMD : selected */ #ifdef CONFIG_FB_S5P_MDNIE /* SYSREG SETTING */ reg = 0; reg = __raw_readl(S3C_VA_SYS + 0x0214); reg &= ~(1>>23); /*FIFO software Reset*/ __raw_writel(reg, S3C_VA_SYS + 0x0214); reg &= ~(7 << 29); /*sync*/ reg &= ~(1 << 27); /*DISP0_SRC not userd*/ reg &= ~(3 << 24); /*VT_DIP1 - RGB*/ reg |= (1 << 23); /*FIFORST_DISP -1*/ reg &= ~(1 << 15); /*FIMDBYPASS_DISP1 -0*/ reg |= (1 << 14); /*MIE_DISP1 - MDNIE -1 */ reg |= (1 << 0); /*MIE_LBLK1 - MDNIE -1*/ __raw_writel(reg, S3C_VA_SYS + 0x0214); #else reg = __raw_readl(S3C_VA_SYS + 0x0214); reg &= ~(1 << 15); /* To save other reset values */ reg |= (1 << 15); __raw_writel(reg, S3C_VA_SYS + 0x0214); #endif #if defined(CONFIG_S5P_DP) /* Reference clcok selection for DPTX_PHY: PAD_OSC_IN */ reg = __raw_readl(S3C_VA_SYS + 0x04d4); reg &= ~(1 << 0); __raw_writel(reg, S3C_VA_SYS + 0x04d4); /* DPTX_PHY: XXTI */ reg = __raw_readl(S3C_VA_SYS + 0x04d8); reg &= ~(1 << 3); __raw_writel(reg, S3C_VA_SYS + 0x04d8); #endif /* * Set DISP1BLK_CFG register for Display path selection * * MIC of DISP1_BLK Bypass selection: DISP1BLK_CFG[11] * -------------------- * 0 | MIC * 1 | Bypass : selected */ reg = __raw_readl(S3C_VA_SYS + 0x0214); reg |= (1 << 11); __raw_writel(reg, S3C_VA_SYS + 0x0214); }