Skip to content
This repository was archived by the owner on Oct 5, 2018. It is now read-only.

Commit 70ffc7c

Browse files
committed
Merge branch 'base/hikey' into hikey
2 parents 55d86cd + 5be4295 commit 70ffc7c

File tree

1 file changed

+32
-43
lines changed

1 file changed

+32
-43
lines changed

drivers/gpu/drm/hisilicon/hisi_drm_ade.c

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ struct hisi_drm_ade_crtc {
101101
u32 ade_core_rate;
102102
u32 media_noc_rate;
103103
u32 x , y;
104-
bool first_time;
105104

106105
struct drm_device *drm_dev;
107106
struct drm_crtc crtc;
@@ -341,59 +340,51 @@ static int hisi_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
341340
stride, (u32)obj->paddr, display_addr,
342341
fb->width, fb_hight);
343342

344-
if (crtc_ade->first_time) {
345-
crtc_ade->first_time = false;
346-
/* TOP */
347-
writel(0, (ade_base + ADE_WDMA2_SRC_CFG_REG));
348-
writel(0, (ade_base + ADE_SCL3_MUX_CFG_REG));
349-
writel(0, (ade_base + ADE_SCL1_MUX_CFG_REG));
350-
writel(0, (ade_base + ADE_ROT_SRC_CFG_REG));
351-
writel(0, (ade_base + ADE_SCL2_SRC_CFG_REG));
352-
writel(0, (ade_base + ADE_SEC_OVLY_SRC_CFG_REG));
353-
writel(0, (ade_base + ADE_WDMA3_SRC_CFG_REG));
354-
writel(0, (ade_base + ADE_OVLY1_TRANS_CFG_REG));
355-
writel(0, (ade_base + ADE_CTRAN5_TRANS_CFG_REG));
356-
writel(0, (ade_base + ADE_OVLY_CTL_REG));
357-
358-
writel(0, (ade_base + ADE_SOFT_RST_SEL0_REG));
359-
writel(0, (ade_base + ADE_SOFT_RST_SEL1_REG));
360-
set_TOP_SOFT_RST_SEL0_disp_rdma(ade_base, 1);
361-
set_TOP_SOFT_RST_SEL0_ctran5(ade_base, 1);
362-
set_TOP_SOFT_RST_SEL0_ctran6(ade_base, 1);
363-
364-
writel(0, (ade_base + ADE_RELOAD_DIS0_REG));
365-
writel(0, (ade_base + ADE_RELOAD_DIS1_REG));
366-
367-
writel(TOP_DISP_CH_SRC_RDMA, (ade_base + ADE_DISP_SRC_CFG_REG));
368-
369-
/* ctran5 */
370-
writel(1, (ade_base + ADE_CTRAN5_DIS_REG));
371-
writel(fb->width * fb_hight - 1,
372-
(ade_base + ADE_CTRAN5_IMAGE_SIZE_REG));
373-
writel(1, (ade_base + ADE_CTRAN5_CFG_OK_REG));
374-
375-
/* ctran6 */
376-
writel(1, (ade_base + ADE_CTRAN6_DIS_REG));
377-
writel(fb->width * fb_hight - 1,
378-
(ade_base + ADE_CTRAN6_IMAGE_SIZE_REG));
379-
writel(1, (ade_base + ADE_CTRAN6_CFG_OK_REG));
380-
}
343+
/* TOP setting */
344+
writel(0, (ade_base + ADE_WDMA2_SRC_CFG_REG));
345+
writel(0, (ade_base + ADE_SCL3_MUX_CFG_REG));
346+
writel(0, (ade_base + ADE_SCL1_MUX_CFG_REG));
347+
writel(0, (ade_base + ADE_ROT_SRC_CFG_REG));
348+
writel(0, (ade_base + ADE_SCL2_SRC_CFG_REG));
349+
writel(0, (ade_base + ADE_SEC_OVLY_SRC_CFG_REG));
350+
writel(0, (ade_base + ADE_WDMA3_SRC_CFG_REG));
351+
writel(0, (ade_base + ADE_OVLY1_TRANS_CFG_REG));
352+
writel(0, (ade_base + ADE_CTRAN5_TRANS_CFG_REG));
353+
writel(0, (ade_base + ADE_OVLY_CTL_REG));
354+
writel(0, (ade_base + ADE_SOFT_RST_SEL0_REG));
355+
writel(0, (ade_base + ADE_SOFT_RST_SEL1_REG));
356+
set_TOP_SOFT_RST_SEL0_disp_rdma(ade_base, 1);
357+
set_TOP_SOFT_RST_SEL0_ctran5(ade_base, 1);
358+
set_TOP_SOFT_RST_SEL0_ctran6(ade_base, 1);
359+
writel(0, (ade_base + ADE_RELOAD_DIS0_REG));
360+
writel(0, (ade_base + ADE_RELOAD_DIS1_REG));
361+
writel(TOP_DISP_CH_SRC_RDMA, (ade_base + ADE_DISP_SRC_CFG_REG));
381362

382-
/* DISP DMA */
363+
/* DISP DMA setting */
383364
if (16 == fb->bits_per_pixel)
384365
writel((ADE_RGB_565 << 16) & 0x1f0000,
385366
(ade_base + RD_CH_DISP_CTRL_REG));
386367
else if (32 == fb->bits_per_pixel)
387368
writel((ADE_ABGR_8888 << 16) & 0x1f0000,
388369
(ade_base + RD_CH_DISP_CTRL_REG));
389-
390370
writel(display_addr, (ade_base + RD_CH_DISP_ADDR_REG));
391371
writel(((fb_hight << 16) | stride), (ade_base + RD_CH_DISP_SIZE_REG));
392372
writel(stride, (ade_base + RD_CH_DISP_STRIDE_REG));
393373
writel(fb_hight * stride, (ade_base + RD_CH_DISP_SPACE_REG));
394374
writel(1, (ade_base + RD_CH_DISP_EN_REG));
395375

396-
writel(1, (ade_base + ADE_EN_REG));
376+
/* ctran5 setting */
377+
writel(1, (ade_base + ADE_CTRAN5_DIS_REG));
378+
writel(fb->width * fb_hight - 1,
379+
(ade_base + ADE_CTRAN5_IMAGE_SIZE_REG));
380+
381+
/* ctran6 setting */
382+
writel(1, (ade_base + ADE_CTRAN6_DIS_REG));
383+
writel(fb->width * fb_hight - 1,
384+
(ade_base + ADE_CTRAN6_IMAGE_SIZE_REG));
385+
386+
/* enable ade and ldi */
387+
writel(ADE_ENABLE, (ade_base + ADE_EN_REG));
397388
set_TOP_CTL_frm_end_start(ade_base, 1);
398389
set_LDI_CTRL_ldi_en(ade_base, ADE_ENABLE);
399390

@@ -446,8 +437,6 @@ static int hisi_drm_crtc_create(struct hisi_drm_ade_crtc *crtc_ade)
446437
int ret;
447438

448439
crtc_ade->dpms = DRM_MODE_DPMS_OFF;
449-
crtc_ade->first_time = true;
450-
451440
ret = drm_crtc_init(crtc_ade->drm_dev, crtc, &crtc_funcs);
452441
if (ret < 0)
453442
return ret;

0 commit comments

Comments
 (0)