void rcar_du_crtc_suspend(struct rcar_du_crtc *rcrtc) { if (rcar_du_has(rcrtc->group->dev, RCAR_DU_FEATURE_VSP1_SOURCE)) rcar_du_vsp_disable(rcrtc); rcar_du_crtc_stop(rcrtc); rcar_du_crtc_put(rcrtc); }
static void rcar_du_crtc_disable(struct drm_crtc *crtc) { struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); rcar_du_crtc_stop(rcrtc); rcar_du_crtc_put(rcrtc); rcrtc->outputs = 0; }
static void rcar_du_crtc_disable(struct drm_crtc *crtc) { struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); if (!rcrtc->enabled) return; rcar_du_crtc_stop(rcrtc); rcar_du_crtc_put(rcrtc); rcrtc->enabled = false; rcrtc->outputs = 0; }
static void rcar_du_crtc_dpms(struct drm_crtc *crtc, int mode) { struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); if (rcrtc->dpms == mode) return; if (mode == DRM_MODE_DPMS_ON) { rcar_du_crtc_get(rcrtc); rcar_du_crtc_start(rcrtc); } else { rcar_du_crtc_stop(rcrtc); rcar_du_crtc_put(rcrtc); } rcrtc->dpms = mode; }
static int rcar_du_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode, int x, int y, struct drm_framebuffer *old_fb) { struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc); struct rcar_du_device *rcdu = rcrtc->group->dev; const struct rcar_du_format_info *format; int ret; format = rcar_du_format_info(crtc->fb->pixel_format); if (format == NULL) { dev_dbg(rcdu->dev, "mode_set: unsupported format %08x\n", crtc->fb->pixel_format); ret = -EINVAL; goto error; } ret = rcar_du_plane_reserve(rcrtc->plane, format); if (ret < 0) goto error; rcrtc->plane->format = format; rcrtc->plane->src_x = x; rcrtc->plane->src_y = y; rcrtc->plane->width = mode->hdisplay; rcrtc->plane->height = mode->vdisplay; rcar_du_plane_compute_base(rcrtc->plane, crtc->fb); rcrtc->outputs = 0; return 0; error: /* There's no rollback/abort operation to clean up in case of error. We * thus need to release the reference to the CRTC acquired in prepare() * here. */ rcar_du_crtc_put(rcrtc); return ret; }
void rcar_du_crtc_suspend(struct rcar_du_crtc *rcrtc) { rcar_du_crtc_stop(rcrtc); rcar_du_crtc_put(rcrtc); }