static int n8x0_panel_resume(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = get_drv_data(dssdev); int r; dev_dbg(&dssdev->dev, "resume\n"); mutex_lock(&ddata->lock); rfbi_bus_lock(); r = n8x0_panel_power_on(dssdev); rfbi_bus_unlock(); if (r) { mutex_unlock(&ddata->lock); return r; } dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; mutex_unlock(&ddata->lock); return 0; }
static int n8x0_panel_update(struct omap_dss_device *dssdev, u16 x, u16 y, u16 w, u16 h) { struct panel_drv_data *ddata = get_drv_data(dssdev); u16 dw, dh; dev_dbg(&dssdev->dev, "update\n"); dw = dssdev->panel.timings.x_res; dh = dssdev->panel.timings.y_res; if (x != 0 || y != 0 || w != dw || h != dh) { dev_err(&dssdev->dev, "invaid update region %d, %d, %d, %d\n", x, y, w, h); return -EINVAL; } mutex_lock(&ddata->lock); rfbi_bus_lock(); blizzard_ctrl_setup_update(dssdev, x, y, w, h); omap_rfbi_update(dssdev, update_done, NULL); mutex_unlock(&ddata->lock); return 0; }
static int n8x0_panel_sync(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = get_drv_data(dssdev); dev_dbg(&dssdev->dev, "sync\n"); mutex_lock(&ddata->lock); rfbi_bus_lock(); rfbi_bus_unlock(); mutex_unlock(&ddata->lock); return 0; }
static void n8x0_panel_disable(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = get_drv_data(dssdev); dev_dbg(&dssdev->dev, "disable\n"); mutex_lock(&ddata->lock); rfbi_bus_lock(); n8x0_panel_power_off(dssdev); rfbi_bus_unlock(); dssdev->state = OMAP_DSS_DISPLAY_DISABLED; mutex_unlock(&ddata->lock); }
static int n8x0_panel_update(struct omap_dss_device *dssdev, u16 x, u16 y, u16 w, u16 h) { struct panel_drv_data *ddata = get_drv_data(dssdev); dev_dbg(&dssdev->dev, "update\n"); mutex_lock(&ddata->lock); rfbi_bus_lock(); omap_rfbi_prepare_update(dssdev, &x, &y, &w, &h); blizzard_ctrl_setup_update(dssdev, x, y, w, h); omap_rfbi_update(dssdev, x, y, w, h, update_done, NULL); mutex_unlock(&ddata->lock); return 0; }
static int n8x0_panel_suspend(struct omap_dss_device *dssdev) { struct panel_drv_data *ddata = get_drv_data(dssdev); dev_dbg(&dssdev->dev, "suspend\n"); mutex_lock(&ddata->lock); rfbi_bus_lock(); n8x0_panel_power_off(dssdev); rfbi_bus_unlock(); dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; mutex_unlock(&ddata->lock); return 0; }