Lines Matching refs:scrtc
61 static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_setup_geometry() argument
63 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_setup_geometry()
119 static void shmob_drm_crtc_start_stop(struct shmob_drm_crtc *scrtc, bool start) in shmob_drm_crtc_start_stop() argument
121 struct shmob_drm_device *sdev = scrtc->crtc.dev->dev_private; in shmob_drm_crtc_start_stop()
152 static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_start() argument
154 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_start()
163 if (scrtc->started) in shmob_drm_crtc_start()
181 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_start()
208 shmob_drm_crtc_setup_geometry(scrtc); in shmob_drm_crtc_start()
212 lcdc_write(sdev, LDMLSR, scrtc->line_size); in shmob_drm_crtc_start()
213 lcdc_write(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_start()
215 lcdc_write(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_start()
248 shmob_drm_crtc_start_stop(scrtc, true); in shmob_drm_crtc_start()
250 scrtc->started = true; in shmob_drm_crtc_start()
253 static void shmob_drm_crtc_stop(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_stop() argument
255 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_stop()
258 if (!scrtc->started) in shmob_drm_crtc_stop()
262 shmob_drm_crtc_start_stop(scrtc, false); in shmob_drm_crtc_stop()
270 scrtc->started = false; in shmob_drm_crtc_stop()
273 void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_suspend() argument
275 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_suspend()
278 void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_resume() argument
280 if (scrtc->dpms != DRM_MODE_DPMS_ON) in shmob_drm_crtc_resume()
283 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_resume()
286 static void shmob_drm_crtc_compute_base(struct shmob_drm_crtc *scrtc, in shmob_drm_crtc_compute_base() argument
289 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_compute_base()
294 bpp = scrtc->format->yuv ? 8 : scrtc->format->bpp; in shmob_drm_crtc_compute_base()
296 scrtc->dma[0] = gem->paddr + fb->offsets[0] in shmob_drm_crtc_compute_base()
299 if (scrtc->format->yuv) { in shmob_drm_crtc_compute_base()
300 bpp = scrtc->format->bpp - 8; in shmob_drm_crtc_compute_base()
302 scrtc->dma[1] = gem->paddr + fb->offsets[1] in shmob_drm_crtc_compute_base()
308 static void shmob_drm_crtc_update_base(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_update_base() argument
310 struct drm_crtc *crtc = &scrtc->crtc; in shmob_drm_crtc_update_base()
313 shmob_drm_crtc_compute_base(scrtc, crtc->x, crtc->y); in shmob_drm_crtc_update_base()
315 lcdc_write_mirror(sdev, LDSA1R, scrtc->dma[0]); in shmob_drm_crtc_update_base()
316 if (scrtc->format->yuv) in shmob_drm_crtc_update_base()
317 lcdc_write_mirror(sdev, LDSA2R, scrtc->dma[1]); in shmob_drm_crtc_update_base()
326 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_dpms() local
328 if (scrtc->dpms == mode) in shmob_drm_crtc_dpms()
332 shmob_drm_crtc_start(scrtc); in shmob_drm_crtc_dpms()
334 shmob_drm_crtc_stop(scrtc); in shmob_drm_crtc_dpms()
336 scrtc->dpms = mode; in shmob_drm_crtc_dpms()
350 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_mode_set() local
361 scrtc->format = format; in shmob_drm_crtc_mode_set()
362 scrtc->line_size = crtc->primary->fb->pitches[0]; in shmob_drm_crtc_mode_set()
364 shmob_drm_crtc_compute_base(scrtc, x, y); in shmob_drm_crtc_mode_set()
390 void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) in shmob_drm_crtc_finish_page_flip() argument
393 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_finish_page_flip()
397 event = scrtc->event; in shmob_drm_crtc_finish_page_flip()
398 scrtc->event = NULL; in shmob_drm_crtc_finish_page_flip()
400 drm_crtc_send_vblank_event(&scrtc->crtc, event); in shmob_drm_crtc_finish_page_flip()
401 drm_crtc_vblank_put(&scrtc->crtc); in shmob_drm_crtc_finish_page_flip()
412 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); in shmob_drm_crtc_page_flip() local
413 struct drm_device *dev = scrtc->crtc.dev; in shmob_drm_crtc_page_flip()
417 if (scrtc->event != NULL) { in shmob_drm_crtc_page_flip()
424 shmob_drm_crtc_update_base(scrtc); in shmob_drm_crtc_page_flip()
428 drm_crtc_vblank_get(&scrtc->crtc); in shmob_drm_crtc_page_flip()
430 scrtc->event = event; in shmob_drm_crtc_page_flip()