Lines Matching refs:scrtc

63 static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc)  in shmob_drm_crtc_setup_geometry()  argument
65 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_setup_geometry()
121 static void shmob_drm_crtc_start_stop(struct shmob_drm_crtc *scrtc, bool start) in shmob_drm_crtc_start_stop() argument
123 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop()
154 static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_start() argument
156 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_start()
165 if (scrtc->started) in shmob_drm_crtc_start()
183 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_start()
210 shmob_drm_crtc_setup_geometry(scrtc); in shmob_drm_crtc_start()
214 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
215 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
217 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
250 shmob_drm_crtc_start_stop(scrtc, true); in shmob_drm_crtc_start()
252 scrtc->started = true; in shmob_drm_crtc_start()
255 static void shmob_drm_crtc_stop(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_stop() argument
257 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_stop()
260 if (!scrtc->started) in shmob_drm_crtc_stop()
264 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_stop()
272 scrtc->started = false; in shmob_drm_crtc_stop()
275 void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_suspend() argument
277 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_suspend()
280 void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_resume() argument
282 if (scrtc->dpms != DRM_MODE_DPMS_ON) in shmob_drm_crtc_resume()
285 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_resume()
288 static void shmob_drm_crtc_compute_base(struct shmob_drm_crtc *scrtc, in shmob_drm_crtc_compute_base() argument
291 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_compute_base()
296 bpp = scrtc->format->yuv ? 8 : scrtc->format->bpp; in shmob_drm_crtc_compute_base()
298 scrtc->dma[0] = gem->dma_addr + fb->offsets[0] in shmob_drm_crtc_compute_base()
301 if (scrtc->format->yuv) { in shmob_drm_crtc_compute_base()
302 bpp = scrtc->format->bpp - 8; in shmob_drm_crtc_compute_base()
304 scrtc->dma[1] = gem->dma_addr + fb->offsets[1] in shmob_drm_crtc_compute_base()
310 static void shmob_drm_crtc_update_base(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_update_base() argument
312 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_update_base()
315 shmob_drm_crtc_compute_base(scrtc, crtc->x, crtc->y); in shmob_drm_crtc_update_base()
317 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
318 if (scrtc->format->yuv) in shmob_drm_crtc_update_base()
319 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
328 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_dpms() local
330 if (scrtc->dpms == mode) in shmob_drm_crtc_dpms()
334 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_dpms()
336 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_dpms()
338 scrtc->dpms = mode; in shmob_drm_crtc_dpms()
352 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_mode_set() local
363 scrtc->format = format; in shmob_drm_crtc_mode_set()
364 scrtc->line_size = crtc->primary->fb->pitches[0]; in shmob_drm_crtc_mode_set()
366 shmob_drm_crtc_compute_base(scrtc, x, y); in shmob_drm_crtc_mode_set()
392 void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_finish_page_flip() argument
395 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_finish_page_flip()
399 event = scrtc->event; in shmob_drm_crtc_finish_page_flip()
400 scrtc->event = NULL; in shmob_drm_crtc_finish_page_flip()
402 drm_crtc_send_vblank_event(&scrtc->crtc, event); in shmob_drm_crtc_finish_page_flip()
403 drm_crtc_vblank_put(&scrtc->crtc); in shmob_drm_crtc_finish_page_flip()
414 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_page_flip() local
415 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_page_flip()
419 if (scrtc->event != NULL) { in shmob_drm_crtc_page_flip()
426 shmob_drm_crtc_update_base(scrtc); in shmob_drm_crtc_page_flip()
430 drm_crtc_vblank_get(&scrtc->crtc); in shmob_drm_crtc_page_flip()
432 scrtc->event = event; in shmob_drm_crtc_page_flip()