Lines Matching refs:lcdif
148 static void lcdif_set_formats(struct lcdif_drm_private *lcdif, in lcdif_set_formats() argument
152 struct drm_device *drm = lcdif->drm; in lcdif_set_formats()
160 lcdif->base + LCDC_V8_DISP_PARA); in lcdif_set_formats()
164 lcdif->base + LCDC_V8_DISP_PARA); in lcdif_set_formats()
168 lcdif->base + LCDC_V8_DISP_PARA); in lcdif_set_formats()
180 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
184 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
188 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
192 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
196 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
200 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
206 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
211 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
216 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
221 lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_set_formats()
240 lcdif->base + LCDC_V8_CSC0_CTRL); in lcdif_set_formats()
250 lcdif->base + LCDC_V8_CSC0_COEF0); in lcdif_set_formats()
252 lcdif->base + LCDC_V8_CSC0_COEF1); in lcdif_set_formats()
254 lcdif->base + LCDC_V8_CSC0_COEF2); in lcdif_set_formats()
256 lcdif->base + LCDC_V8_CSC0_COEF3); in lcdif_set_formats()
258 lcdif->base + LCDC_V8_CSC0_COEF4); in lcdif_set_formats()
260 lcdif->base + LCDC_V8_CSC0_COEF5); in lcdif_set_formats()
268 lcdif->base + LCDC_V8_CSC0_CTRL); in lcdif_set_formats()
270 writel(coeffs[0], lcdif->base + LCDC_V8_CSC0_COEF0); in lcdif_set_formats()
271 writel(coeffs[1], lcdif->base + LCDC_V8_CSC0_COEF1); in lcdif_set_formats()
272 writel(coeffs[2], lcdif->base + LCDC_V8_CSC0_COEF2); in lcdif_set_formats()
273 writel(coeffs[3], lcdif->base + LCDC_V8_CSC0_COEF3); in lcdif_set_formats()
274 writel(coeffs[4], lcdif->base + LCDC_V8_CSC0_COEF4); in lcdif_set_formats()
275 writel(coeffs[5], lcdif->base + LCDC_V8_CSC0_COEF5); in lcdif_set_formats()
278 writel(CSC0_CTRL_BYPASS, lcdif->base + LCDC_V8_CSC0_CTRL); in lcdif_set_formats()
282 static void lcdif_set_mode(struct lcdif_drm_private *lcdif, u32 bus_flags) in lcdif_set_mode() argument
284 struct drm_display_mode *m = &lcdif->crtc.state->adjusted_mode; in lcdif_set_mode()
296 writel(ctrl, lcdif->base + LCDC_V8_CTRL); in lcdif_set_mode()
300 lcdif->base + LCDC_V8_DISP_SIZE); in lcdif_set_mode()
304 lcdif->base + LCDC_V8_HSYN_PARA); in lcdif_set_mode()
308 lcdif->base + LCDC_V8_VSYN_PARA); in lcdif_set_mode()
312 lcdif->base + LCDC_V8_VSYN_HSYN_WIDTH); in lcdif_set_mode()
316 lcdif->base + LCDC_V8_CTRLDESCL0_1); in lcdif_set_mode()
328 CTRLDESCL0_3_PITCH(lcdif->crtc.primary->state->fb->pitches[0]); in lcdif_set_mode()
329 writel(ctrl, lcdif->base + LCDC_V8_CTRLDESCL0_3); in lcdif_set_mode()
332 static void lcdif_enable_controller(struct lcdif_drm_private *lcdif) in lcdif_enable_controller() argument
339 lcdif->base + LCDC_V8_PANIC0_THRES); in lcdif_enable_controller()
346 lcdif->base + LCDC_V8_INT_ENABLE_D1); in lcdif_enable_controller()
348 reg = readl(lcdif->base + LCDC_V8_DISP_PARA); in lcdif_enable_controller()
350 writel(reg, lcdif->base + LCDC_V8_DISP_PARA); in lcdif_enable_controller()
352 reg = readl(lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_enable_controller()
354 writel(reg, lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_enable_controller()
357 static void lcdif_disable_controller(struct lcdif_drm_private *lcdif) in lcdif_disable_controller() argument
362 reg = readl(lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_disable_controller()
364 writel(reg, lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_disable_controller()
366 ret = readl_poll_timeout(lcdif->base + LCDC_V8_CTRLDESCL0_5, in lcdif_disable_controller()
370 drm_err(lcdif->drm, "Failed to disable controller!\n"); in lcdif_disable_controller()
372 reg = readl(lcdif->base + LCDC_V8_DISP_PARA); in lcdif_disable_controller()
374 writel(reg, lcdif->base + LCDC_V8_DISP_PARA); in lcdif_disable_controller()
377 writel(0, lcdif->base + LCDC_V8_INT_ENABLE_D1); in lcdif_disable_controller()
380 static void lcdif_reset_block(struct lcdif_drm_private *lcdif) in lcdif_reset_block() argument
382 writel(CTRL_SW_RESET, lcdif->base + LCDC_V8_CTRL + REG_SET); in lcdif_reset_block()
383 readl(lcdif->base + LCDC_V8_CTRL); in lcdif_reset_block()
384 writel(CTRL_SW_RESET, lcdif->base + LCDC_V8_CTRL + REG_CLR); in lcdif_reset_block()
385 readl(lcdif->base + LCDC_V8_CTRL); in lcdif_reset_block()
388 static void lcdif_crtc_mode_set_nofb(struct lcdif_drm_private *lcdif, in lcdif_crtc_mode_set_nofb() argument
393 struct drm_device *drm = lcdif->crtc.dev; in lcdif_crtc_mode_set_nofb()
394 struct drm_display_mode *m = &lcdif->crtc.state->adjusted_mode; in lcdif_crtc_mode_set_nofb()
397 if (lcdif->bridge && lcdif->bridge->timings) in lcdif_crtc_mode_set_nofb()
398 bus_flags = lcdif->bridge->timings->input_bus_flags; in lcdif_crtc_mode_set_nofb()
404 (int)(clk_get_rate(lcdif->clk) / 1000)); in lcdif_crtc_mode_set_nofb()
410 lcdif_reset_block(lcdif); in lcdif_crtc_mode_set_nofb()
412 lcdif_set_formats(lcdif, plane_state, bus_format); in lcdif_crtc_mode_set_nofb()
414 lcdif_set_mode(lcdif, bus_flags); in lcdif_crtc_mode_set_nofb()
435 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev); in lcdif_crtc_atomic_flush() local
439 reg = readl(lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_crtc_atomic_flush()
441 writel(reg, lcdif->base + LCDC_V8_CTRLDESCL0_5); in lcdif_crtc_atomic_flush()
460 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev); in lcdif_crtc_atomic_enable() local
463 struct drm_display_mode *m = &lcdif->crtc.state->adjusted_mode; in lcdif_crtc_atomic_enable()
465 struct drm_device *drm = lcdif->drm; in lcdif_crtc_atomic_enable()
470 if (lcdif->bridge) { in lcdif_crtc_atomic_enable()
473 lcdif->bridge); in lcdif_crtc_atomic_enable()
491 clk_set_rate(lcdif->clk, m->crtc_clock * 1000); in lcdif_crtc_atomic_enable()
495 lcdif_crtc_mode_set_nofb(lcdif, new_pstate, bridge_state, bus_format); in lcdif_crtc_atomic_enable()
501 lcdif->base + LCDC_V8_CTRLDESCL_LOW0_4); in lcdif_crtc_atomic_enable()
503 lcdif->base + LCDC_V8_CTRLDESCL_HIGH0_4); in lcdif_crtc_atomic_enable()
505 lcdif_enable_controller(lcdif); in lcdif_crtc_atomic_enable()
513 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev); in lcdif_crtc_atomic_disable() local
514 struct drm_device *drm = lcdif->drm; in lcdif_crtc_atomic_disable()
519 lcdif_disable_controller(lcdif); in lcdif_crtc_atomic_disable()
534 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev); in lcdif_crtc_enable_vblank() local
537 writel(INT_STATUS_D0_VS_BLANK, lcdif->base + LCDC_V8_INT_STATUS_D0); in lcdif_crtc_enable_vblank()
538 writel(INT_ENABLE_D0_VS_BLANK_EN, lcdif->base + LCDC_V8_INT_ENABLE_D0); in lcdif_crtc_enable_vblank()
545 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(crtc->dev); in lcdif_crtc_disable_vblank() local
548 writel(0, lcdif->base + LCDC_V8_INT_ENABLE_D0); in lcdif_crtc_disable_vblank()
549 writel(INT_STATUS_D0_VS_BLANK, lcdif->base + LCDC_V8_INT_STATUS_D0); in lcdif_crtc_disable_vblank()
587 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(plane->dev); in lcdif_plane_atomic_check() local
591 &lcdif->crtc); in lcdif_plane_atomic_check()
602 struct lcdif_drm_private *lcdif = to_lcdif_drm_private(plane->dev); in lcdif_plane_primary_atomic_update() local
610 lcdif->base + LCDC_V8_CTRLDESCL_LOW0_4); in lcdif_plane_primary_atomic_update()
612 lcdif->base + LCDC_V8_CTRLDESCL_HIGH0_4); in lcdif_plane_primary_atomic_update()
663 int lcdif_kms_init(struct lcdif_drm_private *lcdif) in lcdif_kms_init() argument
670 struct drm_encoder *encoder = &lcdif->encoder; in lcdif_kms_init()
671 struct drm_crtc *crtc = &lcdif->crtc; in lcdif_kms_init()
674 drm_plane_helper_add(&lcdif->planes.primary, in lcdif_kms_init()
676 ret = drm_universal_plane_init(lcdif->drm, &lcdif->planes.primary, 1, in lcdif_kms_init()
685 ret = drm_plane_create_color_properties(&lcdif->planes.primary, in lcdif_kms_init()
694 ret = drm_crtc_init_with_planes(lcdif->drm, crtc, in lcdif_kms_init()
695 &lcdif->planes.primary, NULL, in lcdif_kms_init()
701 return drm_encoder_init(lcdif->drm, encoder, &lcdif_encoder_funcs, in lcdif_kms_init()