@@ -624,7 +624,7 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
624624 struct drm_display_mode * mode = & crtc_state -> adjusted_mode ;
625625 struct drm_connector * conn = conn_state -> connector ;
626626 struct drm_display_info * info = & conn -> display_info ;
627- unsigned int cfg ;
627+ unsigned int cfg , rgbcfg = 0 ;
628628
629629 priv -> panel_is_sharp = info -> bus_flags & DRM_BUS_FLAG_SHARP_SIGNALS ;
630630
@@ -661,6 +661,9 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
661661 case MEDIA_BUS_FMT_RGB888_1X24 :
662662 cfg |= JZ_LCD_CFG_MODE_GENERIC_24BIT ;
663663 break ;
664+ case MEDIA_BUS_FMT_GBR888_3X8 :
665+ rgbcfg = JZ_LCD_RGBC_ODD_GBR | JZ_LCD_RGBC_EVEN_GBR ;
666+ fallthrough ;
664667 case MEDIA_BUS_FMT_RGB888_3X8 :
665668 cfg |= JZ_LCD_CFG_MODE_8BIT_SERIAL ;
666669 break ;
@@ -671,6 +674,7 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
671674 }
672675
673676 regmap_write (priv -> map , JZ_REG_LCD_CFG , cfg );
677+ regmap_write (priv -> map , JZ_REG_LCD_RGBC , rgbcfg );
674678}
675679
676680static int ingenic_drm_encoder_atomic_check (struct drm_encoder * encoder ,
@@ -688,6 +692,7 @@ static int ingenic_drm_encoder_atomic_check(struct drm_encoder *encoder,
688692
689693 switch (* info -> bus_formats ) {
690694 case MEDIA_BUS_FMT_RGB888_3X8 :
695+ case MEDIA_BUS_FMT_GBR888_3X8 :
691696 /*
692697 * The LCD controller expects timing values in dot-clock ticks,
693698 * which is 3x the timing values in pixels when using a 3x8-bit
0 commit comments