static void rcar_du_crtc_update_base(struct rcar_du_crtc *rcrtc) { struct drm_crtc *crtc = &rcrtc->crtc; rcar_du_plane_compute_base(rcrtc->plane, crtc->primary->fb); rcar_du_plane_update_base(rcrtc->plane); }
static void rcar_du_crtc_update_base(struct rcar_du_crtc *rcrtc) { struct drm_crtc *crtc = &rcrtc->crtc; rcrtc->plane->pitch = crtc->fb->pitches[0]; rcar_du_plane_compute_base(rcrtc->plane, crtc->fb); rcar_du_plane_update_base(rcrtc->plane); }
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; }