示例#1
0
static void s6e8aa0_panel_cond(struct s6e8aa0 *lcd)
{
	struct mipi_dsim_master_ops *ops = lcd_to_master_ops(lcd);
	unsigned char data_to_send_v42[] = {
		0xf8, 0x01, 0x34, 0x00, 0x00, 0x00, 0x95, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
		0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x63, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc8,
		0xc1, 0xd3, 0x01
	};
	unsigned char data_to_send_v142[] = {
		0xf8, 0x3d, 0x35, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x7d, 0x3f, 0x00, 0x00, 0x00, 0x20,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x23, 0xc0, 0xc8, 0x08, 0x48, 0xc1, 0x00, 0xc1,
		0xff, 0xff, 0xc8
	};
	unsigned char data_to_send_v32[] = {
		0xf8, 0x19, 0x35, 0x00, 0x00, 0x00, 0x94, 0x00, 0x3c,
		0x7d, 0x10, 0x27, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
		0x23, 0x6e, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc3,
		0xf6, 0xf6, 0xc1
	};
	unsigned char *data_to_send;
	unsigned int size;

	if (lcd->ver == VER_42) {
		data_to_send = data_to_send_v42;
		size = ARRAY_SIZE(data_to_send_v42);
	} else if (lcd->ver == VER_142) {
		data_to_send_v142[18] = s6e8aa0_apply_aid_panel_cond(lcd->aid);
		data_to_send = data_to_send_v142;
		size = ARRAY_SIZE(data_to_send_v142);
	} else if (lcd->ver == VER_32) {
		data_to_send = data_to_send_v32;
		size = ARRAY_SIZE(data_to_send_v32);
	} else
		return;

	ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_DCS_LONG_WRITE,
			(unsigned int)data_to_send, size);
}
示例#2
0
文件: s6e8aa0.c 项目: ARMP/ARMP-i9300
static void s6e8aa0_panel_cond(struct s6e8aa0 *lcd, int high_freq)
{
	struct mipi_dsim_master_ops *ops = lcd_to_master_ops(lcd);
	unsigned char data_to_send_v42[] = {
		0xf8, 0x01, 0x34, 0x00, 0x00, 0x00, 0x95, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
		0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x63, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc8,
		0xc1, 0xd3, 0x01
	};
	/* same with v174(0xae) panel */
	unsigned char data_to_send_v142[] = {
		0xf8, 0x3d, 0x35, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x7d, 0x3f, 0x00, 0x00, 0x00, 0x20,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x23, 0xc0, 0xc8, 0x08, 0x48, 0xc1, 0x00, 0xc1,
		0xff, 0xff, 0xc8
	};
	unsigned char data_to_send_v32[] = {
		0xf8, 0x19, 0x35, 0x00, 0x00, 0x00, 0x94, 0x00, 0x3c,
		0x7d, 0x10, 0x27, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
		0x23, 0x6e, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc3,
		0xf6, 0xf6, 0xc1
	};
	unsigned char data_to_send_v96[] = {
		0xf8, 0x19, 0x35, 0x00, 0x00, 0x00, 0x94, 0x00, 0x3c,
		0x7d, 0x10, 0x27, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
		0x23, 0x37, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc3,
		0xf6, 0xf6, 0xc1
	};
	unsigned char data_to_send_v210[] = {
		0xf8, 0x3d, 0x32, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x39,
		0x78, 0x08, 0x26, 0x78, 0x3c, 0x00, 0x00, 0x00, 0x20,
		0x04, 0x08, 0x69, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07,
		0x21, 0x21, 0xc0, 0xc8, 0x08, 0x48, 0xc1, 0x00, 0xc1,
		0xff, 0xff, 0xc8
	};
	unsigned char *data_to_send;
	unsigned int size;
	struct lcd_property	*property = lcd->property;
	unsigned char cfg;

	if (lcd->ver == VER_42) {
		data_to_send = data_to_send_v42;
		size = ARRAY_SIZE(data_to_send_v42);
	} else if (lcd->ver == VER_142) {
		data_to_send_v142[18] = s6e8aa0_apply_aid_panel_cond(lcd->aid);
		data_to_send = data_to_send_v142;
		if (property) {
			if (property->flip & LCD_PROPERTY_FLIP_VERTICAL) {
				/* GTCON */
				cfg = data_to_send[1];
				cfg &= ~(PANELCTL_GTCON_MASK);
				cfg |= (PANELCTL_GTCON_110);
				data_to_send[1] = cfg;
			}

			if (property->flip & LCD_PROPERTY_FLIP_HORIZONTAL) {
				/* SS */
				cfg = data_to_send[1];
				cfg &= ~(PANELCTL_SS_MASK);
				cfg |= (PANELCTL_SS_1_800);
				data_to_send[1] = cfg;
			}

			if (property->flip & (LCD_PROPERTY_FLIP_VERTICAL |
			LCD_PROPERTY_FLIP_HORIZONTAL)) {
				/* CLK1,2_CON */
				cfg = data_to_send[30];
				cfg &= ~(PANELCTL_CLK1_CON_MASK |
					PANELCTL_CLK2_CON_MASK);
				cfg |= (PANELCTL_CLK1_000 | PANELCTL_CLK2_001);
				data_to_send[30] = cfg;

				/* INT1,2_CON */
				cfg = data_to_send[31];
				cfg &= ~(PANELCTL_INT1_CON_MASK |
					PANELCTL_INT2_CON_MASK);
				cfg |= (PANELCTL_INT1_000 | PANELCTL_INT2_001);
				data_to_send[31] = cfg;

				/* BICTL,B_CON */
				cfg = data_to_send[32];
				cfg &= ~(PANELCTL_BICTL_CON_MASK |
					PANELCTL_BICTLB_CON_MASK);
				cfg |= (PANELCTL_BICTL_000 |
					PANELCTL_BICTLB_001);
				data_to_send[32] = cfg;

				/* EM_CLK1,1B_CON */
				cfg = data_to_send[36];
				cfg &= ~(PANELCTL_EM_CLK1_CON_MASK |
					PANELCTL_EM_CLK1B_CON_MASK);
				cfg |= (PANELCTL_EM_CLK1_110 |
					PANELCTL_EM_CLK1B_110);
				data_to_send[36] = cfg;

				/* EM_CLK2,2B_CON */
				cfg = data_to_send[37];
				cfg &= ~(PANELCTL_EM_CLK2_CON_MASK |
					PANELCTL_EM_CLK2B_CON_MASK);
				cfg |= (PANELCTL_EM_CLK2_110 |
					PANELCTL_EM_CLK2B_110);
				data_to_send[37] = cfg;

				/* EM_INT1,2_CON */
				cfg = data_to_send[38];
				cfg &= ~(PANELCTL_EM_INT1_CON_MASK |
					PANELCTL_EM_INT2_CON_MASK);
				cfg |= (PANELCTL_EM_INT1_000 |
					PANELCTL_EM_INT2_001);
				data_to_send[38] = cfg;
			}
		}
		size = ARRAY_SIZE(data_to_send_v142);
	} else if (lcd->ver == VER_174) {
		data_to_send_v142[18] = s6e8aa0_apply_aid_panel_cond(lcd->aid);
		data_to_send = data_to_send_v142;
		size = ARRAY_SIZE(data_to_send_v142);
	} else if (lcd->ver == VER_32) {
		data_to_send = data_to_send_v32;
		size = ARRAY_SIZE(data_to_send_v32);
	} else if (lcd->ver == VER_96) {
		data_to_send = data_to_send_v96;
		size = ARRAY_SIZE(data_to_send_v96);
	} else if (lcd->ver == VER_210) {
		data_to_send = data_to_send_v210;
		size = ARRAY_SIZE(data_to_send_v210);
	} else
		return;

	if (!high_freq) {
		data_to_send[9] = 0x7e;
		data_to_send[25] = 0x0a;
		data_to_send[26] = 0x0a;
	}

	ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_DCS_LONG_WRITE,
			(unsigned int)data_to_send, size);
}
示例#3
0
void s6e8aa0_panel_cond(int high_freq)
{
	struct s6e8aa0 *lcd = lcd_global;
	struct mipi_dsim_master_ops *ops = lcd_to_master_ops(lcd);
	unsigned char data_to_send_v42[] = {
		0xf8, 0x01, 0x34, 0x00, 0x00, 0x00, 0x95, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
		0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x63, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc8,
		0xc1, 0xd3, 0x01
	};
	/* same with v174(0xae) panel */
	unsigned char data_to_send_v142[] = {
		0xf8, 0x3d, 0x35, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3c,
		0x7d, 0x08, 0x27, 0x7d, 0x3f, 0x00, 0x00, 0x00, 0x20,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08,
		0x23, 0x23, 0xc0, 0xc8, 0x08, 0x48, 0xc1, 0x00, 0xc1,
		0xff, 0xff, 0xc8
	};
	unsigned char data_to_send_v32[] = {
		0xf8, 0x19, 0x35, 0x00, 0x00, 0x00, 0x94, 0x00, 0x3c,
		0x7d, 0x10, 0x27, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00,
		0x04, 0x08, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
		0x23, 0x6e, 0xc0, 0xc1, 0x01, 0x81, 0xc1, 0x00, 0xc3,
		0xf6, 0xf6, 0xc1
	};
	unsigned char data_to_send_v210[] = {
		0xf8, 0x3d, 0x32, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x39,
		0x78, 0x08, 0x26, 0x78, 0x3c, 0x00, 0x00, 0x00, 0x20,
		0x04, 0x08, 0x69, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07,
		0x21, 0x21, 0xc0, 0xc8, 0x08, 0x48, 0xc1, 0x00, 0xc1,
		0xff, 0xff, 0xc8
	};
	unsigned char *data_to_send;
	unsigned int size;

	if (lcd->ver == VER_42) {
		data_to_send = data_to_send_v42;
		size = ARRAY_SIZE(data_to_send_v42);
	} else if (lcd->ver == VER_142 || lcd->ver == VER_174) {
		data_to_send_v142[18] = s6e8aa0_apply_aid_panel_cond(lcd->aid);
		data_to_send = data_to_send_v142;
		size = ARRAY_SIZE(data_to_send_v142);
	} else if (lcd->ver == VER_32) {
		data_to_send = data_to_send_v32;
		size = ARRAY_SIZE(data_to_send_v32);
	} else if (lcd->ver == VER_210) {
		data_to_send = data_to_send_v210;
		size = ARRAY_SIZE(data_to_send_v210);
	} else
		return;

	if (!high_freq) {
		data_to_send[9] = 0x7e;
		data_to_send[25] = 0x0a;
		data_to_send[26] = 0x0a;
	}

	ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_DCS_LONG_WRITE,
			(unsigned int)data_to_send, size);
}