コード例 #1
0
static void mapphone_panel_setup_update(struct omap_dss_device *dssdev,
				      u16 x, u16 y, u16 w, u16 h)
{
	u8 data[5];
	int ret;

	/* set page, column address */
	data[0] = EDISCO_CMD_SET_PAGE_ADDRESS;
	data[1] = y >> 8;
	data[2] = y & 0xff;
	data[3] = (y + h - 1) >> 8;
	data[4] = (y + h - 1) & 0xff;
	ret = dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 5);
	if (ret)
		return;

	data[0] = EDISCO_CMD_SET_COLUMN_ADDRESS;
	data[1] = x >> 8;
	data[2] = x & 0xff;
	data[3] = (x + w - 1) >> 8;
	data[4] = (x + w - 1) & 0xff;
	ret = dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 5);
	if (ret)
		return;
}
コード例 #2
0
static bool mapphone_panel_deep_sleep_mode(struct omap_dss_device *dssdev)
{
	bool ret = false;
	u8 data[2];

	switch (dssdev->panel.panel_id) {
	case MOT_DISP_310_1_MIPI_320_480_CM:
		data[0] = 0x3B; /* ENTER_DSTB_MODE command */
		data[1] = 0x01;
		ret = true;
		break;
	case MOT_DISP_310_2_MIPI_320_480_CM:
		data[0] = 0x4F; /* ENTER_DSTB_MODE command */
		data[1] = 0x01;
		ret = true;
		break;
	default:
		ret = false;
	}

	if (ret == true) {
		if (dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 2))
			printk(KERN_ERR "fail to send ENTER_DSTB_MODE =0x%x\n",
				data[0]);
	}

	return ret;
}
コード例 #3
0
static int mapphone_panel_enable_te(struct omap_dss_device *dssdev, bool enable)
{
	u8 data[3];
	int ret;
	struct mapphone_data *map_data = (struct mapphone_data *) dssdev->data;

	if (enable == true) {
		data[0] = EDISCO_CMD_SET_TEAR_ON;
		data[1] = 0x00;
		ret = dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 2);
		if (ret)
			goto error;

		data[0] = EDISCO_CMD_SET_TEAR_SCANLINE;
		data[1] = (map_data->te_scan_line & 0xff00) >> 8;
		data[2] = (map_data->te_scan_line & 0xff);
		ret = dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 3);
		if (ret)
			goto error;
	} else {
コード例 #4
0
static void mapphone_panel_disable_local(struct omap_dss_device *dssdev)
{
	u8 data[1];
	struct mapphone_data *map_data = (struct mapphone_data *) dssdev->data;

	if ((dssdev->panel.panel_id == MOT_DISP_MIPI_480_854_CM) ||
		(dssdev->panel.panel_id == MOT_DISP_430_MIPI_480_854_CM)) {
		atomic_set(&map_data->state, PANEL_OFF);
		wake_up(&map_data->wait);
		cancel_work_sync(&map_data->work);
		DBG("panel off\n");
	}

	data[0] = EDISCO_CMD_SET_DISPLAY_OFF;
	dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 1);

	data[0] = EDISCO_CMD_ENTER_SLEEP_MODE;
	dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 1);
	msleep(120);

	if (dssdev->platform_disable)
		dssdev->platform_disable(dssdev);
}
コード例 #5
0
static void mapphone_panel_disable_local(struct omap_dss_device *dssdev)
{
	u8 data[1];
	struct mapphone_data *map_data = (struct mapphone_data *) dssdev->data;

	atomic_set(&map_data->state, PANEL_OFF);

	data[0] = EDISCO_CMD_SET_DISPLAY_OFF;
	dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 1);

	data[0] = EDISCO_CMD_ENTER_SLEEP_MODE;
	dsi_vc_dcs_write_nosync(EDISCO_CMD_VC, data, 1);

	msleep(100);

	/*
	 * mapphone_panel_deep_sleep_mode(0 will return false if the panel
	 * doesn't support depp_sleep_mode
	 */
	if (mapphone_panel_deep_sleep_mode(dssdev) == false) {
		if (dssdev->platform_disable)
			dssdev->platform_disable(dssdev);
	}
}
コード例 #6
0
static int s6e8aa0a01_write_block_nosync(struct omap_dss_device *dssdev,
					 const u8 *data, int len)
{
	return dsi_vc_dcs_write_nosync(dssdev, 1, (u8 *) data, len);
}