Lines Matching defs:scrtc

71 static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc)
73 struct drm_crtc *crtc = &scrtc->crtc;
129 static void shmob_drm_crtc_start_stop(struct shmob_drm_crtc *scrtc, bool start)
131 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private;
157 * @scrtc: the SH Mobile CRTC
162 static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc)
164 struct drm_crtc *crtc = &scrtc->crtc;
173 if (scrtc->started)
191 shmob_drm_crtc_start_stop(scrtc, false);
218 shmob_drm_crtc_setup_geometry(scrtc);
222 lcdc_write(sdev, LDMLSR, scrtc->line_size);
223 lcdc_write(sdev, LDSA1R, scrtc->dma[0]);
225 lcdc_write(sdev, LDSA2R, scrtc->dma[1]);
258 shmob_drm_crtc_start_stop(scrtc, true);
260 scrtc->started = true;
263 static void shmob_drm_crtc_stop(struct shmob_drm_crtc *scrtc)
265 struct drm_crtc *crtc = &scrtc->crtc;
268 if (!scrtc->started)
272 if (scrtc->cache) {
273 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache);
274 scrtc->cache = NULL;
278 shmob_drm_crtc_start_stop(scrtc, false);
286 scrtc->started = false;
289 void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc)
291 shmob_drm_crtc_stop(scrtc);
294 void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc)
296 if (scrtc->dpms != DRM_MODE_DPMS_ON)
299 shmob_drm_crtc_start(scrtc);
302 static void shmob_drm_crtc_compute_base(struct shmob_drm_crtc *scrtc,
305 struct drm_crtc *crtc = &scrtc->crtc;
311 bpp = scrtc->format->yuv ? 8 : scrtc->format->bpp;
313 scrtc->dma[0] = gem->paddr + fb->offsets[0]
316 if (scrtc->format->yuv) {
317 bpp = scrtc->format->bpp - 8;
319 scrtc->dma[1] = gem->paddr + fb->offsets[1]
324 if (scrtc->cache)
325 sh_mobile_meram_cache_update(sdev->meram, scrtc->cache,
326 scrtc->dma[0], scrtc->dma[1],
327 &scrtc->dma[0], &scrtc->dma[1]);
330 static void shmob_drm_crtc_update_base(struct shmob_drm_crtc *scrtc)
332 struct drm_crtc *crtc = &scrtc->crtc;
335 shmob_drm_crtc_compute_base(scrtc, crtc->x, crtc->y);
337 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]);
338 if (scrtc->format->yuv)
339 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]);
348 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc);
350 if (scrtc->dpms == mode)
354 shmob_drm_crtc_start(scrtc);
356 shmob_drm_crtc_stop(scrtc);
358 scrtc->dpms = mode;
379 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc);
392 scrtc->format = format;
393 scrtc->line_size = crtc->primary->fb->pitches[0];
399 if (scrtc->cache) {
400 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache);
401 scrtc->cache = NULL;
408 &scrtc->line_size);
410 scrtc->cache = cache;
413 shmob_drm_crtc_compute_base(scrtc, x, y);
440 void shmob_drm_crtc_cancel_page_flip(struct shmob_drm_crtc *scrtc,
444 struct drm_device *dev = scrtc->crtc.dev;
451 event = scrtc->event;
453 scrtc->event = NULL;
460 void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc)
463 struct drm_device *dev = scrtc->crtc.dev;
467 event = scrtc->event;
468 scrtc->event = NULL;
481 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc);
482 struct drm_device *dev = scrtc->crtc.dev;
486 if (scrtc->event != NULL) {
493 shmob_drm_crtc_update_base(scrtc);
499 scrtc->event = event;