.vsync_front_porch	= 8,
	.vsync_act_low		= 1,
	.hsync_act_low		= 1,
	.den_act_low		= 0,
};

/*----------------------------------------------------------------------------*/
#define LCM_CMD(_cmd, ...)                                      \
{                                                               \
	.cmd = _cmd,                                            \
	.data = (u8 []){__VA_ARGS__},                           \
	.len = sizeof((u8 []){__VA_ARGS__}) / sizeof(u8)        \
}

static struct spi_msg sharp_init_seq[] = {
        LCM_CMD(0x11), LCM_CMD(LCM_MDELAY, 110), LCM_CMD(0x29),
};

static struct spi_msg sharp_uninit_seq[] = {
        LCM_CMD(0x28), LCM_CMD(0x10),
};

static int lcm_sharp_write_seq(struct spi_msg *cmd_table, unsigned size)
{
	int i;

	for (i = 0; i < size; i++) {
		if (cmd_table[i].cmd == LCM_MDELAY) {
			hr_msleep(cmd_table[i].data[0]);
			continue;
		}
#define LCM_CMD_END	{-1, 0, 0}
struct lcm_cmdII {
        u8 cmd;
        u8 *vals;
        unsigned len;
};

#define LCM_CMD(_cmd, ...)					\
{                                                               \
        .cmd = _cmd,                                            \
        .data = (u8 []){__VA_ARGS__},                           \
        .len = sizeof((u8 []){__VA_ARGS__}) / sizeof(u8)        \
}

static struct spi_msg lcm_init_seq[] = {
	LCM_CMD(0xF8, 0x01, 0x27, 0x27, 0x07, 0x07, 0x54, 0x9F, 0x63, 0x86,
                0x1A, 0x33, 0x0D, 0x00, 0x00),
        LCM_CMD(0xF2, 0x02, 0x03, 0x1C, 0x10, 0x10),
        LCM_CMD(0xF7, 0x00, 0x03, 0x01),
        LCM_CMD(0xF6, 0x00, 0x8C, 0x07),
        LCM_CMD(0xB3, 0x0C),
        LCM_CMD(0xB5, 0x2C, 0x12, 0x0C, 0x0A, 0x10, 0x0E, 0x17, 0x13, 0x1F,
                0x1A, 0x2A, 0x24, 0x1F, 0x1B, 0x1A, 0x17, 0x2B, 0x26, 0x22,
                0x20, 0x3A, 0x34, 0x30, 0x2C, 0x29, 0x26, 0x25, 0x23, 0x21,
                0x20, 0x1E, 0x1E),
        LCM_CMD(0xB7, 0x2C, 0x12, 0x0C, 0x0A, 0x10, 0x0E, 0x17, 0x13, 0x1F,
                0x1A, 0x2A, 0x24, 0x1F, 0x1B, 0x1A, 0x17, 0x2B, 0x26, 0x22,
                0x20, 0x3A, 0x34, 0x30, 0x2C, 0x29, 0x26, 0x25, 0x23, 0x21,
                0x20, 0x1E, 0x1E),
        LCM_CMD(0xB6, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x44, 0x44, 0x55,
                0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66),
        LCM_CMD(0xB8, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x44, 0x44, 0x55,
	.hsync_act_low		= 1,
	.den_act_low		= 0,
};
#endif

/*----------------------------------------------------------------------------*/

#define LCM_CMD(_cmd, ...)                                      \
{                                                               \
	.cmd = _cmd,                                            \
	.data = (u8 []){__VA_ARGS__},                           \
	.len = sizeof((u8 []){__VA_ARGS__}) / sizeof(u8)        \
}

static struct spi_msg sharp565_init_seq[] = {
        LCM_CMD(0x11),
	LCM_CMD(LCM_MDELAY, 110),
	LCM_CMD(0xB9, 0xFF, 0x83, 0x63),
	LCM_CMD(0x3A, 0x50),
	LCM_CMD(0x29),
};

static struct spi_msg sharp_init_seq[] = {
	LCM_CMD(0x11), LCM_CMD(LCM_MDELAY, 110),
	LCM_CMD(0xB9, 0xFF, 0x83, 0x63),
	LCM_CMD(0x3A, 0x70),
	LCM_CMD(0xC9, 0x0F, 0x3E, 0x02),
};

static struct spi_msg sharp_gamma_seq[] = {
	LCM_CMD(0xB1, 0x78, 0x34, 0x07, 0x01, 0x02, 0x03, 0x0F, 0x00, 0x3A,
	u8 cmd;
	unsigned delay;
	u8 *vals;
	unsigned len;
};

#define LCM_CMD(_cmd, _delay, ...)                              \
{                                                               \
	.cmd = _cmd,                                            \
	.delay = _delay,                                        \
	.vals = (u8 []){__VA_ARGS__},                           \
	.len = sizeof((u8 []){__VA_ARGS__}) / sizeof(u8)        \
}

static struct mddi_cmd renesas_init_cmd_table[] = {
	LCM_CMD(0xb0, 0, 0x04, 0x00, 0x00, 0x00),
	LCM_CMD(0x36, 0, 0x08, 0x00, 0x00, 0x00),
	LCM_CMD(0x3a, 0, 0x07, 0x00, 0x00, 0x00),
	LCM_CMD(0x35, 0, 0x00, 0x00, 0x00, 0x00),
	LCM_CMD(0xb8, 0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
		0x0f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00,
		0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
		0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
		0x0a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
		0x00, 0x00, 0x00, 0x00),
	LCM_CMD(0xc0, 0, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x40, 0x00,
		0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
	LCM_CMD(0xc1, 0, 0x07, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x32, 0x00,
		0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
	LCM_CMD(0xc4, 0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
power_fail:
	return ret;
}

extern int qspi_send_9bit(struct spi_msg *msg);

#define LCM_CMD(_cmd, ...)					\
{                                                               \
        .cmd = _cmd,                                            \
        .data = (u8 []){__VA_ARGS__},                           \
        .len = sizeof((u8 []){__VA_ARGS__}) / sizeof(u8)        \
}
//2010-5-21 Rev May21-2(Wx, Wy)=(0.306, 0.315) Gamma = 2.2
static struct spi_msg SONY_TFT_INIT_TABLE[] = {
        //Change to level 2
	LCM_CMD(0xF1, 0x5A, 0x5A),
	LCM_CMD(0xFA, 0x32, 0x3F, 0x3F, 0x29, 0x3E, 0x3C, 0x3D, 0x2C,
		0x27, 0x3D, 0x2E, 0x31, 0x3A, 0x34, 0x36, 0x1A, 0x3F, 0x3F, 0x2E,
		0x40, 0x3C, 0x3C, 0x2B, 0x25, 0x39, 0x25, 0x23, 0x2A, 0x20, 0x22,
		0x00, 0x3F, 0x3F, 0x2F, 0x3E, 0x3C, 0x3C, 0x2A, 0x23, 0x35, 0x1E,
		0x18, 0x1C, 0x0C, 0x0E),
	LCM_CMD(0xFB, 0x00, 0x0D, 0x09, 0x0C, 0x26, 0x2E, 0x31, 0x22,
		0x19, 0x33, 0x22, 0x23, 0x21, 0x17, 0x00, 0x00, 0x25, 0x1D, 0x1F,
		0x35, 0x3C, 0x3A, 0x26, 0x1B, 0x34, 0x23, 0x23, 0x1F, 0x12, 0x00,
		0x00, 0x3F, 0x31, 0x33, 0x43, 0x48, 0x41, 0x2A, 0x1D, 0x35, 0x23,
		0x23, 0x21, 0x10, 0x00),
        // F3h Power control
	LCM_CMD(0xF3, 0x00, 0x10, 0x25, 0x01, 0x2D, 0x2D, 0x24, 0x2D, 0x10,
		0x10, 0x0A, 0x37),
        // F4h VCOM Control
	LCM_CMD(0xF4, 0x88, 0x20, 0x00, 0xAF, 0x64, 0x00, 0xAA, 0x64, 0x00, 0x00),