@@ -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