@@ -738,6 +738,43 @@ static u32 *mtk_dpi_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
738
738
return input_fmts ;
739
739
}
740
740
741
+ static unsigned int mtk_dpi_bus_fmt_bit_num (unsigned int out_bus_format )
742
+ {
743
+ switch (out_bus_format ) {
744
+ default :
745
+ case MEDIA_BUS_FMT_RGB888_1X24 :
746
+ case MEDIA_BUS_FMT_RGB888_2X12_LE :
747
+ case MEDIA_BUS_FMT_RGB888_2X12_BE :
748
+ case MEDIA_BUS_FMT_YUYV8_1X16 :
749
+ return MTK_DPI_OUT_BIT_NUM_8BITS ;
750
+ }
751
+ }
752
+
753
+ static unsigned int mtk_dpi_bus_fmt_channel_swap (unsigned int out_bus_format )
754
+ {
755
+ switch (out_bus_format ) {
756
+ default :
757
+ case MEDIA_BUS_FMT_RGB888_1X24 :
758
+ case MEDIA_BUS_FMT_RGB888_2X12_LE :
759
+ case MEDIA_BUS_FMT_RGB888_2X12_BE :
760
+ case MEDIA_BUS_FMT_YUYV8_1X16 :
761
+ return MTK_DPI_OUT_CHANNEL_SWAP_RGB ;
762
+ }
763
+ }
764
+
765
+ static unsigned int mtk_dpi_bus_fmt_color_format (unsigned int out_bus_format )
766
+ {
767
+ switch (out_bus_format ) {
768
+ default :
769
+ case MEDIA_BUS_FMT_RGB888_1X24 :
770
+ case MEDIA_BUS_FMT_RGB888_2X12_LE :
771
+ case MEDIA_BUS_FMT_RGB888_2X12_BE :
772
+ return MTK_DPI_COLOR_FORMAT_RGB ;
773
+ case MEDIA_BUS_FMT_YUYV8_1X16 :
774
+ return MTK_DPI_COLOR_FORMAT_YCBCR_422 ;
775
+ }
776
+ }
777
+
741
778
static int mtk_dpi_bridge_atomic_check (struct drm_bridge * bridge ,
742
779
struct drm_bridge_state * bridge_state ,
743
780
struct drm_crtc_state * crtc_state ,
@@ -757,13 +794,10 @@ static int mtk_dpi_bridge_atomic_check(struct drm_bridge *bridge,
757
794
bridge_state -> output_bus_cfg .format );
758
795
759
796
dpi -> output_fmt = out_bus_format ;
760
- dpi -> bit_num = MTK_DPI_OUT_BIT_NUM_8BITS ;
761
- dpi -> channel_swap = MTK_DPI_OUT_CHANNEL_SWAP_RGB ;
797
+ dpi -> bit_num = mtk_dpi_bus_fmt_bit_num ( out_bus_format ) ;
798
+ dpi -> channel_swap = mtk_dpi_bus_fmt_channel_swap ( out_bus_format ) ;
762
799
dpi -> yc_map = MTK_DPI_OUT_YC_MAP_RGB ;
763
- if (out_bus_format == MEDIA_BUS_FMT_YUYV8_1X16 )
764
- dpi -> color_format = MTK_DPI_COLOR_FORMAT_YCBCR_422 ;
765
- else
766
- dpi -> color_format = MTK_DPI_COLOR_FORMAT_RGB ;
800
+ dpi -> color_format = mtk_dpi_bus_fmt_color_format (out_bus_format );
767
801
768
802
return 0 ;
769
803
}
0 commit comments