Exemplo n.º 1
0
static int s6e3ha2_enable(struct drm_panel *panel)
{
	struct s6e3ha2 *ctx = container_of(panel, struct s6e3ha2, panel);
	struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
	int ret;

	/* common setting */
	s6e3ha2_call_write_func(ret,
		mipi_dsi_dcs_set_tear_on(dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK));

	s6e3ha2_call_write_func(ret, s6e3ha2_test_key_on_f0(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_test_key_on_fc(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_touch_hsync_on1(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_pentile_control(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_poc_global(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_poc_setting(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_test_key_off_fc(ctx));

	/* pcd setting off for TB */
	s6e3ha2_call_write_func(ret, s6e3ha2_pcd_set_off(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_err_fg_set(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_te_start_setting(ctx));

	/* brightness setting */
	s6e3ha2_call_write_func(ret, s6e3ha2_set_brightness(ctx->bl_dev));
	s6e3ha2_call_write_func(ret, s6e3ha2_aor_control(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_caps_elvss_set(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_gamma_update(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_acl_off(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_acl_off_opr(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_hbm_off(ctx));

	/* elvss temp compensation */
	s6e3ha2_call_write_func(ret, s6e3ha2_test_global(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_test(ctx));
	s6e3ha2_call_write_func(ret, s6e3ha2_test_key_off_f0(ctx));

	s6e3ha2_call_write_func(ret, mipi_dsi_dcs_set_display_on(dsi));
	ctx->bl_dev->props.power = FB_BLANK_UNBLANK;

	return 0;
}
Exemplo n.º 2
0
int panel_jdi_prepare(struct panel_jdi *jdi)
{
	int ret;
	u8 data;

	if (jdi->enabled)
		return 0;

	ret = mipi_dsi_dcs_set_column_address(jdi->dsi, 0,
				jdi->mode->xres / 2 - 1); // 2560/2
	if (ret < 0)
		printk(BIOS_ERR, "failed to set column address: %d\n", ret);

	ret = mipi_dsi_dcs_set_column_address(jdi->dsi->slave, 0,
				jdi->mode->xres / 2 - 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set column address: %d\n", ret);

	ret = mipi_dsi_dcs_set_page_address(jdi->dsi, 0,
				jdi->mode->yres - 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set page address: %d\n", ret);

	ret = mipi_dsi_dcs_set_page_address(jdi->dsi->slave, 0,
				jdi->mode->yres - 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set page address: %d\n", ret);

	ret = mipi_dsi_dcs_set_tear_on(jdi->dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set tear on: %d\n", ret);

	ret = mipi_dsi_dcs_set_tear_on(jdi->dsi->slave,
			MIPI_DSI_DCS_TEAR_MODE_VBLANK);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set tear on: %d\n", ret);

	ret = mipi_dsi_dcs_set_address_mode(jdi->dsi, false, false, false,
			false, false, false, false, false);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set address mode: %d\n", ret);

	ret = mipi_dsi_dcs_set_address_mode(jdi->dsi->slave, false, false,
			false, false, false, false, false, false);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set address mode: %d\n", ret);

	ret = mipi_dsi_dcs_set_pixel_format(jdi->dsi, 0x77);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set pixel format: %d\n", ret);

	ret = mipi_dsi_dcs_set_pixel_format(jdi->dsi->slave, 0x77);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set pixel format: %d\n", ret);

	data = 0xFF;
	ret = mipi_dsi_dcs_write(jdi->dsi, 0x51, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x51: %d\n", ret);

	data = 0xFF;
	ret = mipi_dsi_dcs_write(jdi->dsi->slave, 0x51, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x51: %d\n", ret);

	data = 0x24;
	ret = mipi_dsi_dcs_write(jdi->dsi, 0x53, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x53: %d\n", ret);

	data = 0x24;
	ret = mipi_dsi_dcs_write(jdi->dsi->slave, 0x53, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x53: %d\n", ret);

	data = 0x00;
	ret = mipi_dsi_dcs_write(jdi->dsi, 0x55, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x55: %d\n", ret);

	data = 0x00;
	ret = mipi_dsi_dcs_write(jdi->dsi->slave, 0x55, &data, 1);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set 0x55: %d\n", ret);

	ret = mipi_dsi_dcs_exit_sleep_mode(jdi->dsi);
	if (ret < 0)
		printk(BIOS_ERR, "failed to exit sleep mode: %d\n", ret);

	ret = mipi_dsi_dcs_exit_sleep_mode(jdi->dsi->slave);
	if (ret < 0)
		printk(BIOS_ERR, "failed to exit sleep mode: %d\n", ret);
	mdelay(150);

	ret = mipi_dsi_dcs_set_display_on(jdi->dsi);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set display on: %d\n", ret);

	ret = mipi_dsi_dcs_set_display_on(jdi->dsi->slave);
	if (ret < 0)
		printk(BIOS_ERR, "failed to set display on: %d\n", ret);
	mdelay(50);

	jdi->enabled = true;

	return 0;
}