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 */