Lines Matching refs:scrtc
72 static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_setup_geometry() argument
74 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_setup_geometry()
130 static void shmob_drm_crtc_start_stop(struct shmob_drm_crtc *scrtc, bool start) in shmob_drm_crtc_start_stop() argument
132 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop()
163 static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_start() argument
165 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_start()
174 if (scrtc->started) in shmob_drm_crtc_start()
192 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_start()
219 shmob_drm_crtc_setup_geometry(scrtc); in shmob_drm_crtc_start()
223 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
224 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
226 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
259 shmob_drm_crtc_start_stop(scrtc, true); in shmob_drm_crtc_start()
261 scrtc->started = true; in shmob_drm_crtc_start()
264 static void shmob_drm_crtc_stop(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_stop() argument
266 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_stop()
269 if (!scrtc->started) in shmob_drm_crtc_stop()
273 if (scrtc->cache) { in shmob_drm_crtc_stop()
274 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache); in shmob_drm_crtc_stop()
275 scrtc->cache = NULL; in shmob_drm_crtc_stop()
279 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_stop()
287 scrtc->started = false; in shmob_drm_crtc_stop()
290 void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_suspend() argument
292 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_suspend()
295 void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_resume() argument
297 if (scrtc->dpms != DRM_MODE_DPMS_ON) in shmob_drm_crtc_resume()
300 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_resume()
303 static void shmob_drm_crtc_compute_base(struct shmob_drm_crtc *scrtc, in shmob_drm_crtc_compute_base() argument
306 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_compute_base()
312 bpp = scrtc->format->yuv ? 8 : scrtc->format->bpp; in shmob_drm_crtc_compute_base()
314 scrtc->dma[0] = gem->paddr + fb->offsets[0] in shmob_drm_crtc_compute_base()
317 if (scrtc->format->yuv) { in shmob_drm_crtc_compute_base()
318 bpp = scrtc->format->bpp - 8; in shmob_drm_crtc_compute_base()
320 scrtc->dma[1] = gem->paddr + fb->offsets[1] in shmob_drm_crtc_compute_base()
325 if (scrtc->cache) in shmob_drm_crtc_compute_base()
326 sh_mobile_meram_cache_update(sdev->meram, scrtc->cache, in shmob_drm_crtc_compute_base()
327 scrtc->dma[0], scrtc->dma[1], in shmob_drm_crtc_compute_base()
328 &scrtc->dma[0], &scrtc->dma[1]); in shmob_drm_crtc_compute_base()
331 static void shmob_drm_crtc_update_base(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_update_base() argument
333 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_update_base()
336 shmob_drm_crtc_compute_base(scrtc, crtc->x, crtc->y); in shmob_drm_crtc_update_base()
338 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
339 if (scrtc->format->yuv) in shmob_drm_crtc_update_base()
340 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
349 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_dpms() local
351 if (scrtc->dpms == mode) in shmob_drm_crtc_dpms()
355 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_dpms()
357 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_dpms()
359 scrtc->dpms = mode; in shmob_drm_crtc_dpms()
380 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_mode_set() local
393 scrtc->format = format; in shmob_drm_crtc_mode_set()
394 scrtc->line_size = crtc->primary->fb->pitches[0]; in shmob_drm_crtc_mode_set()
400 if (scrtc->cache) { in shmob_drm_crtc_mode_set()
401 sh_mobile_meram_cache_free(sdev->meram, scrtc->cache); in shmob_drm_crtc_mode_set()
402 scrtc->cache = NULL; in shmob_drm_crtc_mode_set()
409 &scrtc->line_size); in shmob_drm_crtc_mode_set()
411 scrtc->cache = cache; in shmob_drm_crtc_mode_set()
414 shmob_drm_crtc_compute_base(scrtc, x, y); in shmob_drm_crtc_mode_set()
441 void shmob_drm_crtc_cancel_page_flip(struct shmob_drm_crtc *scrtc, in shmob_drm_crtc_cancel_page_flip() argument
445 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_cancel_page_flip()
452 event = scrtc->event; in shmob_drm_crtc_cancel_page_flip()
454 scrtc->event = NULL; in shmob_drm_crtc_cancel_page_flip()
461 void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_finish_page_flip() argument
464 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_finish_page_flip()
468 event = scrtc->event; in shmob_drm_crtc_finish_page_flip()
469 scrtc->event = NULL; in shmob_drm_crtc_finish_page_flip()
482 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_page_flip() local
483 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_page_flip()
487 if (scrtc->event != NULL) { in shmob_drm_crtc_page_flip()
494 shmob_drm_crtc_update_base(scrtc); in shmob_drm_crtc_page_flip()
500 scrtc->event = event; in shmob_drm_crtc_page_flip()