@@ -624,7 +624,7 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
624
624
struct drm_display_mode * mode = & crtc_state -> adjusted_mode ;
625
625
struct drm_connector * conn = conn_state -> connector ;
626
626
struct drm_display_info * info = & conn -> display_info ;
627
- unsigned int cfg ;
627
+ unsigned int cfg , rgbcfg = 0 ;
628
628
629
629
priv -> panel_is_sharp = info -> bus_flags & DRM_BUS_FLAG_SHARP_SIGNALS ;
630
630
@@ -661,6 +661,9 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
661
661
case MEDIA_BUS_FMT_RGB888_1X24 :
662
662
cfg |= JZ_LCD_CFG_MODE_GENERIC_24BIT ;
663
663
break ;
664
+ case MEDIA_BUS_FMT_GBR888_3X8 :
665
+ rgbcfg = JZ_LCD_RGBC_ODD_GBR | JZ_LCD_RGBC_EVEN_GBR ;
666
+ fallthrough ;
664
667
case MEDIA_BUS_FMT_RGB888_3X8 :
665
668
cfg |= JZ_LCD_CFG_MODE_8BIT_SERIAL ;
666
669
break ;
@@ -671,6 +674,7 @@ static void ingenic_drm_encoder_atomic_mode_set(struct drm_encoder *encoder,
671
674
}
672
675
673
676
regmap_write (priv -> map , JZ_REG_LCD_CFG , cfg );
677
+ regmap_write (priv -> map , JZ_REG_LCD_RGBC , rgbcfg );
674
678
}
675
679
676
680
static 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,
688
692
689
693
switch (* info -> bus_formats ) {
690
694
case MEDIA_BUS_FMT_RGB888_3X8 :
695
+ case MEDIA_BUS_FMT_GBR888_3X8 :
691
696
/*
692
697
* The LCD controller expects timing values in dot-clock ticks,
693
698
* which is 3x the timing values in pixels when using a 3x8-bit
0 commit comments