static int lcd_power_on(struct lcd_device *ld, int enable) { struct regulator *regulator_1_8; struct regulator *regulator_2_8; regulator_1_8 = regulator_get(NULL, "vcc_1.8v_lcd"); regulator_2_8 = regulator_get(NULL, "vcc_3.0v_lcd"); if (IS_ERR(regulator_1_8)) printk(KERN_ERR "LCD_1_8: Fail to get regulator!\n"); if (IS_ERR(regulator_2_8)) printk(KERN_ERR "LCD_3.0: Fail to get regulator!\n"); if (enable) { /*panel power enable*/ regulator_enable(regulator_2_8); usleep_range(5000, 8000); regulator_enable(regulator_1_8); } else { /*lcd 1.8V disable*/ if (regulator_is_enabled(regulator_1_8)) regulator_disable(regulator_1_8); if (regulator_is_enabled(regulator_2_8)) regulator_disable(regulator_2_8); /*LCD RESET low*/ gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_LOW, "GPIO_MLCD_RST"); gpio_free(EXYNOS5420_GPY7(4)); } regulator_put(regulator_1_8); regulator_put(regulator_2_8); return 0; }
static int reset_lcd(struct lcd_device *ld) { /*LCD RESET high*/ gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_HIGH, "GPIO_MLCD_RST"); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 0); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 1); gpio_free(EXYNOS5420_GPY7(4)); usleep_range(12000, 12000); return 0; }
static int mipi_lcd_power_control(struct mipi_dsim_device *dsim, unsigned int power) { if (power) { /* mipi 1.8v enable */ gpio_request_one(EXYNOS5420_GPF1(6), GPIOF_OUT_INIT_HIGH, "GPIO_MIPI_18V_EN"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPF1(6)); gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_HIGH, "GPIO_MLCD_RST"); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 0); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 1); gpio_free(EXYNOS5420_GPY7(4)); usleep_range(7000, 8000); } else { /* LCD RESET low */ gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_LOW, "GPIO_MLCD_RST"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPY7(4)); gpio_request_one(EXYNOS5420_GPF1(6), GPIOF_OUT_INIT_LOW, "GPIO_MIPI_18V_EN"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPF1(6)); } return 0; }
static void mipi_lcd_set_power(struct plat_lcd_data *pd, unsigned int power) { if (power) { /* mipi 1.8v enable */ gpio_request_one(EXYNOS5420_GPF1(6), GPIOF_OUT_INIT_HIGH, "GPIO_MIPI_18V_EN"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPF1(6)); gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_HIGH, "GPIO_MLCD_RST"); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 0); usleep_range(5000, 6000); gpio_set_value(EXYNOS5420_GPY7(4), 1); gpio_free(EXYNOS5420_GPY7(4)); usleep_range(7000, 8000); } else { /* LCD RESET low */ gpio_request_one(EXYNOS5420_GPY7(4), GPIOF_OUT_INIT_LOW, "GPIO_MLCD_RST"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPY7(4)); gpio_request_one(EXYNOS5420_GPF1(6), GPIOF_OUT_INIT_LOW, "GPIO_MIPI_18V_EN"); usleep_range(5000, 6000); gpio_free(EXYNOS5420_GPF1(6)); } }
{ EXYNOS5420_GPY5(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(4), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(6), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ /* GPY 6 */ { EXYNOS5420_GPY6(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(1), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(2), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(4), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(6), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ /* GPY 7 */ { EXYNOS5420_GPY7(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* TP4010 */ }; /* Sleep GPIO table for old HW revisions */ static struct gpio_sleep_data sleep_gpio_table_rev00[] = { }; /* Latest : Rev0.9(3G) Rev0.6(WIFI) */ static struct gpio_sleep_data sleep_gpio_table_latest[] = { /* GPA 0 */ { EXYNOS5420_GPA0(0), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* BT_UART_RXD */ { EXYNOS5420_GPA0(1), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* BT_UART_TXD */ { EXYNOS5420_GPA0(2), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* BT_UART_CTS */ { EXYNOS5420_GPA0(3), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* BT_UART_RTS */ { EXYNOS5420_GPA0(4), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* GPS_UART_RXD */ { EXYNOS5420_GPA0(5), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* GPS_UART_TXD */
{ EXYNOS5420_GPY5(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(4), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(6), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY5(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ /* GPY 6 */ { EXYNOS5420_GPY6(0), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(1), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(2), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(3), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(4), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(5), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(6), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ { EXYNOS5420_GPY6(7), S3C_GPIO_INPUT, GPIO_LV_N, S3C_GPIO_PULL_DOWN }, /* NC */ /* GPY 7 */ { EXYNOS5420_GPY7(4), S3C_GPIO_OUTPUT, GPIO_LV_L, S3C_GPIO_PULL_DOWN }, /* BTP_LDO_EN_3.3V */ { EXYNOS5420_GPY7(5), S3C_GPIO_OUTPUT, GPIO_LV_L, S3C_GPIO_PULL_DOWN }, /* BTP_LDO_EN_1.8V */ { EXYNOS5420_GPY7(6), S3C_GPIO_OUTPUT, GPIO_LV_L, S3C_GPIO_PULL_DOWN }, /* BTP_RST_N */ }; /* Sleep GPIO table for old HW revisions */ static struct gpio_sleep_data sleep_gpio_table_rev00[] = { }; /* Latest : Rev0.9(3G) Rev0.6(WIFI) */ static struct gpio_sleep_data sleep_gpio_table_latest[] = { /* GPA 0 */ { EXYNOS5420_GPA0(0), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* BT_UART_RXD */ { EXYNOS5420_GPA0(1), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* BT_UART_TXD */ { EXYNOS5420_GPA0(2), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UPDOWN_DISABLE }, /* BT_UART_CTS */ { EXYNOS5420_GPA0(3), S5P_GPIO_PD_INPUT, S5P_GPIO_PD_UP_ENABLE }, /* BT_UART_RTS */