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; }
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; }
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 {
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); }
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); } }
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); }