void lcd_enable()
{
	int id = 0;

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE,
			SEQ_DISPLAY_ON[0], 0) < 0)
		dsim_err("fail to send SEQ_DISPLAY_ON command.\n");
}
int lcd_gamma_update(void)
{
	int ret;

	ret = dsim_wr_data(MIPI_DSI_DCS_LONG_WRITE, (u32)SEQ_GAMMA_UPDATE,
			ARRAY_SIZE(SEQ_GAMMA_UPDATE));
	if (ret) {
		dsim_err("fail to update gamma value.\n");
		return ret;
	}

	return 0;
}
/*
 * Set gamma values
 *
 * Parameter
 *	- backlightlevel : It is from 0 to 26.
 */
int lcd_gamma_ctrl(u32 backlightlevel)
{
	int ret;

	ret = dsim_wr_data(MIPI_DSI_DCS_LONG_WRITE, (u32)gamma22_table[backlightlevel],
			GAMMA_PARAM_SIZE);
	if (ret) {
		dsim_err("fail to write gamma value.\n");
		return ret;
	}

	return 0;
}
int lcd_gamma_update()
{
	int id = 0;
	int ret;

	ret = dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
			(unsigned long)SEQ_GAMMA_UPDATE,
			ARRAY_SIZE(SEQ_GAMMA_UPDATE));
	if (ret) {
		dsim_err("fail to update gamma value.\n");
		return ret;
	}

	return 0;
}
/*
 * 3HA0 lcd init sequence
 *
 * Parameters
 *	- mic_enabled : if mic is enabled, MIC_ENABLE command must be sent
 *	- mode : LCD init sequence depends on command or video mode
 */
void lcd_init(int id, struct decon_lcd *lcd)
{
	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F0,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F0)) == -1)
		dsim_err("fail to write F0 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE, SEQ_SLEEP_OUT[0], 0) < 0)
		dsim_err("fail to send SEQ_SLEEP_OUT command.\n");

	msleep(120);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F1,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F1)) == -1)
		dsim_err("fail to write F1 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_FC,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_FC)) == -1)
		dsim_err("fail to write FC init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F9,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F9)) == -1)
		dsim_err("fail to write F9 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F2,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F2)) == -1)
		dsim_err("fail to write F9 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE, SEQ_TE_ON[0], 0) < 0)
		dsim_err("fail to send SEQ_TE_ON command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE_PARAM,
				(unsigned long)SEQ_DISPLAY_D0[0],
				(unsigned int)SEQ_DISPLAY_D0[1]) == -1)
		dsim_err("fail to write D0 init command.\n");
}
/*
 * 3FAH0 lcd init sequence
 *
 * Parameters
 *	- mic : if mic is enabled, MIC_ENABLE command must be sent
 *	- mode : LCD init sequence depends on command or video mode
 */
void lcd_init(struct decon_lcd *lcd)
{
	int id = 0;

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F0,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F0)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_F0 command.\n");
	msleep(12);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_F1,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F1)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_F1 command.\n");
	msleep(12);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_FC,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_FC)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_FC command.\n");
	msleep(12);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_ED,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_ED)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_ED command.\n");
	msleep(12);

	if (lcd->mode == DECON_MIPI_COMMAND_MODE) {
		if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_FD,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_FD)) < 0)
			dsim_err(
			"fail to send SEQ_TEST_KEY_ON_FD command.\n");
		msleep(12);

		if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE_PARAM,
					SEQ_TEST_KEY_ON_F6[0],
					SEQ_TEST_KEY_ON_F6[1]) < 0)
			dsim_err(
			"fail to send SEQ_TEST_KEY_ON_F6 command.\n");
		mdelay(12);
	} else {
		if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_E7,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_E7)) < 0)
			dsim_err(
			"fail to send SEQ_TEST_KEY_ON_E7 command.\n");
		msleep(120);
	}

	if (lcd->mic_enabled)
		dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE_PARAM,
				SEQ_MIC_ENABLE[0],
				SEQ_MIC_ENABLE[1]);

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE,
				SEQ_SLEEP_OUT[0], 0) < 0)
		dsim_err("fail to send SEQ_SLEEP_OUT command.\n");
	mdelay(20);

	if (lcd->mode == DECON_VIDEO_MODE) {
		if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE,
				SEQ_DISPLAY_ON[0], 0) < 0)
			dsim_err("fail to send SEQ_DISPLAY_ON command.\n");
		mdelay(120);

		if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE_PARAM,
				SEQ_TEST_KEY_ON_F2[0],
				SEQ_TEST_KEY_ON_F2[1]) < 0)
			dsim_err(
			"fail to send SEQ_TEST_KEY_ON_F2 command.\n");
		mdelay(12);
	}

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_EB,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_EB)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_EB command.\n");
	mdelay(12);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE,
				(unsigned long)SEQ_TEST_KEY_ON_C0,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_C0)) < 0)
		dsim_err("fail to send SEQ_TEST_KEY_ON_C0 command.\n");
	mdelay(12);

	if (lcd->mode == DECON_MIPI_COMMAND_MODE) {
		if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE,
				SEQ_TE_ON[0], 0) < 0)
			dsim_err("fail to send SEQ_TE_ON command.\n");
		mdelay(12);
	}
}
void lcd_init(int id, struct decon_lcd *lcd)
{
	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TEST_KEY_ON_F0,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F0)) < 0)
		dsim_err("fail to write KEY_ON init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_REG_F2,
				ARRAY_SIZE(SEQ_REG_F2)) < 0)
		dsim_err("fail to write F2 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_REG_F9,
				ARRAY_SIZE(SEQ_REG_F9)) < 0)
		dsim_err("fail to write F9 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE, (unsigned long)SEQ_SLEEP_OUT[0], 0) < 0)
		dsim_err("fail to write SLEEP_OUT init command.\n");

	msleep(10);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TEST_KEY_ON_F0,
				ARRAY_SIZE(SEQ_TEST_KEY_ON_F0)) < 0)
		dsim_err("fail to write KEY_ON init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_REG_B9,
				ARRAY_SIZE(SEQ_REG_B9)) < 0)
		dsim_err("fail to write KEY_ON init command.\n");

	msleep(120);

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_REG_F2,
				ARRAY_SIZE(SEQ_REG_F2)) < 0)
		dsim_err("fail to write F2 init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE, SEQ_TE_ON[0], 0) < 0)
		dsim_err("fail to write TE_on init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TOUCH_HSYNC,
				ARRAY_SIZE(SEQ_TOUCH_HSYNC)) < 0)
		dsim_err("fail to write TOUCH_HSYNC init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_PENTILE_CONTROL,
				ARRAY_SIZE(SEQ_PENTILE_CONTROL)) < 0)
		dsim_err("fail to write PENTILE_CONTROL init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_COLUMN_ADDRESS,
				ARRAY_SIZE(SEQ_COLUMN_ADDRESS)) < 0)
		dsim_err("fail to write COLUMN_ADDRESS init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_GAMMA_CONDITION_SET,
				ARRAY_SIZE(SEQ_GAMMA_CONDITION_SET)) < 0)
		dsim_err("fail to write GAMMA_CONDITION_SET init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_AID_SET,
				ARRAY_SIZE(SEQ_AID_SET)) < 0)
		dsim_err("fail to write AID_SET init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_ELVSS_SET,
				ARRAY_SIZE(SEQ_ELVSS_SET)) < 0)
		dsim_err("fail to write ELVSS_SET init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_GAMMA_UPDATE,
				ARRAY_SIZE(SEQ_GAMMA_UPDATE)) < 0)
		dsim_err("fail to write GAMMA_UPDATE init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_ACL_OFF,
				ARRAY_SIZE(SEQ_ACL_OFF)) < 0)
		dsim_err("fail to write ACL_OFF init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_ACL_OPR,
				ARRAY_SIZE(SEQ_ACL_OPR)) < 0)
		dsim_err("fail to write ACL_OPR init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_HBM_OFF,
				ARRAY_SIZE(SEQ_HBM_OFF)) < 0)
		dsim_err("fail to write HBM_OFF init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TSET_GLOBAL,
				ARRAY_SIZE(SEQ_TSET_GLOBAL)) < 0)
		dsim_err("fail to write TSET_GLOBAL init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TSET,
				ARRAY_SIZE(SEQ_TSET)) < 0)
		dsim_err("fail to write TSET init command.\n");

	if (dsim_wr_data(id, MIPI_DSI_DCS_LONG_WRITE, (unsigned long)SEQ_TEST_KEY_OFF_F0,
				ARRAY_SIZE(SEQ_TEST_KEY_OFF_F0)) < 0)
		dsim_err("fail to write KEY_OFF init command.\n");

}
void lcd_enable(int id)
{
	if (dsim_wr_data(id, MIPI_DSI_DCS_SHORT_WRITE, (unsigned long)SEQ_DISPLAY_ON[0], 0) < 0)
		dsim_err("fail to write DISPLAY_ON command.\n");
}