Lines Matching full:crtc
28 * Atmel HLCDC CRTC state structure
30 * @base: base CRTC state
45 * Atmel HLCDC CRTC structure
47 * @base: base DRM CRTC structure
50 * @id: CRTC id (returned by drm_crtc_index)
60 drm_crtc_to_atmel_hlcdc_crtc(struct drm_crtc *crtc) in drm_crtc_to_atmel_hlcdc_crtc() argument
62 return container_of(crtc, struct atmel_hlcdc_crtc, base); in drm_crtc_to_atmel_hlcdc_crtc()
67 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_mode_set_nofb() local
68 struct regmap *regmap = crtc->dc->hlcdc->regmap; in atmel_hlcdc_crtc_mode_set_nofb()
78 ret = clk_prepare_enable(crtc->dc->hlcdc->sys_clk); in atmel_hlcdc_crtc_mode_set_nofb()
102 prate = clk_get_rate(crtc->dc->hlcdc->sys_clk); in atmel_hlcdc_crtc_mode_set_nofb()
104 if (!crtc->dc->desc->fixed_clksrc) { in atmel_hlcdc_crtc_mode_set_nofb()
155 clk_disable_unprepare(crtc->dc->hlcdc->sys_clk); in atmel_hlcdc_crtc_mode_set_nofb()
162 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_mode_valid() local
164 return atmel_hlcdc_dc_mode_valid(crtc->dc, mode); in atmel_hlcdc_crtc_mode_valid()
171 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_atomic_disable() local
172 struct regmap *regmap = crtc->dc->hlcdc->regmap; in atmel_hlcdc_crtc_atomic_disable()
194 clk_disable_unprepare(crtc->dc->hlcdc->sys_clk); in atmel_hlcdc_crtc_atomic_disable()
206 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_atomic_enable() local
207 struct regmap *regmap = crtc->dc->hlcdc->regmap; in atmel_hlcdc_crtc_atomic_enable()
215 clk_prepare_enable(crtc->dc->hlcdc->sys_clk); in atmel_hlcdc_crtc_atomic_enable()
299 struct atmel_hlcdc_crtc *crtc; in atmel_hlcdc_crtc_select_output_mode() local
302 crtc = drm_crtc_to_atmel_hlcdc_crtc(state->crtc); in atmel_hlcdc_crtc_select_output_mode()
307 if (!cstate->crtc) in atmel_hlcdc_crtc_select_output_mode()
312 if (crtc->dc->desc->conflicting_output_formats) in atmel_hlcdc_crtc_select_output_mode()
346 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_atomic_begin() local
353 crtc->event = c->state->event; in atmel_hlcdc_crtc_atomic_begin()
358 static void atmel_hlcdc_crtc_atomic_flush(struct drm_crtc *crtc, in atmel_hlcdc_crtc_atomic_flush() argument
376 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_destroy() local
379 kfree(crtc); in atmel_hlcdc_crtc_destroy()
382 static void atmel_hlcdc_crtc_finish_page_flip(struct atmel_hlcdc_crtc *crtc) in atmel_hlcdc_crtc_finish_page_flip() argument
384 struct drm_device *dev = crtc->base.dev; in atmel_hlcdc_crtc_finish_page_flip()
388 if (crtc->event) { in atmel_hlcdc_crtc_finish_page_flip()
389 drm_crtc_send_vblank_event(&crtc->base, crtc->event); in atmel_hlcdc_crtc_finish_page_flip()
390 drm_crtc_vblank_put(&crtc->base); in atmel_hlcdc_crtc_finish_page_flip()
391 crtc->event = NULL; in atmel_hlcdc_crtc_finish_page_flip()
402 static void atmel_hlcdc_crtc_reset(struct drm_crtc *crtc) in atmel_hlcdc_crtc_reset() argument
406 if (crtc->state) { in atmel_hlcdc_crtc_reset()
407 __drm_atomic_helper_crtc_destroy_state(crtc->state); in atmel_hlcdc_crtc_reset()
408 state = drm_crtc_state_to_atmel_hlcdc_crtc_state(crtc->state); in atmel_hlcdc_crtc_reset()
410 crtc->state = NULL; in atmel_hlcdc_crtc_reset()
415 __drm_atomic_helper_crtc_reset(crtc, &state->base); in atmel_hlcdc_crtc_reset()
419 atmel_hlcdc_crtc_duplicate_state(struct drm_crtc *crtc) in atmel_hlcdc_crtc_duplicate_state() argument
423 if (WARN_ON(!crtc->state)) in atmel_hlcdc_crtc_duplicate_state()
429 __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base); in atmel_hlcdc_crtc_duplicate_state()
431 cur = drm_crtc_state_to_atmel_hlcdc_crtc_state(crtc->state); in atmel_hlcdc_crtc_duplicate_state()
437 static void atmel_hlcdc_crtc_destroy_state(struct drm_crtc *crtc, in atmel_hlcdc_crtc_destroy_state() argument
449 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_enable_vblank() local
450 struct regmap *regmap = crtc->dc->hlcdc->regmap; in atmel_hlcdc_crtc_enable_vblank()
460 struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c); in atmel_hlcdc_crtc_disable_vblank() local
461 struct regmap *regmap = crtc->dc->hlcdc->regmap; in atmel_hlcdc_crtc_disable_vblank()
482 struct atmel_hlcdc_crtc *crtc; in atmel_hlcdc_crtc_create() local
486 crtc = kzalloc(sizeof(*crtc), GFP_KERNEL); in atmel_hlcdc_crtc_create()
487 if (!crtc) in atmel_hlcdc_crtc_create()
490 crtc->dc = dc; in atmel_hlcdc_crtc_create()
510 ret = drm_crtc_init_with_planes(dev, &crtc->base, &primary->base, in atmel_hlcdc_crtc_create()
516 crtc->id = drm_crtc_index(&crtc->base); in atmel_hlcdc_crtc_create()
524 overlay->base.possible_crtcs = 1 << crtc->id; in atmel_hlcdc_crtc_create()
528 drm_crtc_helper_add(&crtc->base, &lcdc_crtc_helper_funcs); in atmel_hlcdc_crtc_create()
530 drm_mode_crtc_set_gamma_size(&crtc->base, ATMEL_HLCDC_CLUT_SIZE); in atmel_hlcdc_crtc_create()
531 drm_crtc_enable_color_mgmt(&crtc->base, 0, false, in atmel_hlcdc_crtc_create()
534 dc->crtc = &crtc->base; in atmel_hlcdc_crtc_create()
539 atmel_hlcdc_crtc_destroy(&crtc->base); in atmel_hlcdc_crtc_create()