Skip to content

Commit 5d0253c

Browse files
AngeloGioacchino Del RegnoChun-Kuang Hu
authored andcommitted
drm/mediatek: mtk_dpi: Add support for additional output formats
Add support for configuring the Display Parallel Interface block to output YUV444 8/10 bits, YUV422 10/12 bits (8 bits support is already present), BGR 8-bits, and RGB 10-bits. The enablement of the various additional output formats in SoCs platform data will be done in a different change. Signed-off-by: AngeloGioacchino Del Regno <[email protected]> Reviewed-by: CK Hu <[email protected]> Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/ Signed-off-by: Chun-Kuang Hu <[email protected]>
1 parent c64cad8 commit 5d0253c

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

drivers/gpu/drm/mediatek/mtk_dpi.c

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ enum mtk_dpi_out_channel_swap {
5959

6060
enum mtk_dpi_out_color_format {
6161
MTK_DPI_COLOR_FORMAT_RGB,
62-
MTK_DPI_COLOR_FORMAT_YCBCR_422
62+
MTK_DPI_COLOR_FORMAT_YCBCR_422,
63+
MTK_DPI_COLOR_FORMAT_YCBCR_444
6364
};
6465

6566
struct mtk_dpi {
@@ -450,9 +451,15 @@ static void mtk_dpi_config_disable_edge(struct mtk_dpi *dpi)
450451
static void mtk_dpi_config_color_format(struct mtk_dpi *dpi,
451452
enum mtk_dpi_out_color_format format)
452453
{
453-
mtk_dpi_config_channel_swap(dpi, MTK_DPI_OUT_CHANNEL_SWAP_RGB);
454+
mtk_dpi_config_channel_swap(dpi, dpi->channel_swap);
454455

455456
switch (format) {
457+
case MTK_DPI_COLOR_FORMAT_YCBCR_444:
458+
mtk_dpi_config_yuv422_enable(dpi, false);
459+
mtk_dpi_config_csc_enable(dpi, true);
460+
if (dpi->conf->swap_input_support)
461+
mtk_dpi_config_swap_input(dpi, false);
462+
break;
456463
case MTK_DPI_COLOR_FORMAT_YCBCR_422:
457464
mtk_dpi_config_yuv422_enable(dpi, true);
458465
mtk_dpi_config_csc_enable(dpi, true);
@@ -743,10 +750,18 @@ static unsigned int mtk_dpi_bus_fmt_bit_num(unsigned int out_bus_format)
743750
switch (out_bus_format) {
744751
default:
745752
case MEDIA_BUS_FMT_RGB888_1X24:
753+
case MEDIA_BUS_FMT_BGR888_1X24:
746754
case MEDIA_BUS_FMT_RGB888_2X12_LE:
747755
case MEDIA_BUS_FMT_RGB888_2X12_BE:
748756
case MEDIA_BUS_FMT_YUYV8_1X16:
757+
case MEDIA_BUS_FMT_YUV8_1X24:
749758
return MTK_DPI_OUT_BIT_NUM_8BITS;
759+
case MEDIA_BUS_FMT_RGB101010_1X30:
760+
case MEDIA_BUS_FMT_YUYV10_1X20:
761+
case MEDIA_BUS_FMT_YUV10_1X30:
762+
return MTK_DPI_OUT_BIT_NUM_10BITS;
763+
case MEDIA_BUS_FMT_YUYV12_1X24:
764+
return MTK_DPI_OUT_BIT_NUM_12BITS;
750765
}
751766
}
752767

@@ -757,8 +772,15 @@ static unsigned int mtk_dpi_bus_fmt_channel_swap(unsigned int out_bus_format)
757772
case MEDIA_BUS_FMT_RGB888_1X24:
758773
case MEDIA_BUS_FMT_RGB888_2X12_LE:
759774
case MEDIA_BUS_FMT_RGB888_2X12_BE:
775+
case MEDIA_BUS_FMT_RGB101010_1X30:
760776
case MEDIA_BUS_FMT_YUYV8_1X16:
777+
case MEDIA_BUS_FMT_YUYV10_1X20:
778+
case MEDIA_BUS_FMT_YUYV12_1X24:
761779
return MTK_DPI_OUT_CHANNEL_SWAP_RGB;
780+
case MEDIA_BUS_FMT_BGR888_1X24:
781+
case MEDIA_BUS_FMT_YUV8_1X24:
782+
case MEDIA_BUS_FMT_YUV10_1X30:
783+
return MTK_DPI_OUT_CHANNEL_SWAP_BGR;
762784
}
763785
}
764786

@@ -767,11 +789,18 @@ static unsigned int mtk_dpi_bus_fmt_color_format(unsigned int out_bus_format)
767789
switch (out_bus_format) {
768790
default:
769791
case MEDIA_BUS_FMT_RGB888_1X24:
792+
case MEDIA_BUS_FMT_BGR888_1X24:
770793
case MEDIA_BUS_FMT_RGB888_2X12_LE:
771794
case MEDIA_BUS_FMT_RGB888_2X12_BE:
795+
case MEDIA_BUS_FMT_RGB101010_1X30:
772796
return MTK_DPI_COLOR_FORMAT_RGB;
773797
case MEDIA_BUS_FMT_YUYV8_1X16:
798+
case MEDIA_BUS_FMT_YUYV10_1X20:
799+
case MEDIA_BUS_FMT_YUYV12_1X24:
774800
return MTK_DPI_COLOR_FORMAT_YCBCR_422;
801+
case MEDIA_BUS_FMT_YUV8_1X24:
802+
case MEDIA_BUS_FMT_YUV10_1X30:
803+
return MTK_DPI_COLOR_FORMAT_YCBCR_444;
775804
}
776805
}
777806

0 commit comments

Comments
 (0)