Support more color formats in Overlay.

Signed-off-by: Hsiao Chien Sung <shawn.s...@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c 
b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
index 7e217142d0c4..a3f1630af5df 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
@@ -130,12 +130,20 @@ static const u32 mt8173_formats[] = {
 static const u32 mt8195_formats[] = {
        DRM_FORMAT_XRGB8888,
        DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_XRGB2101010,
        DRM_FORMAT_ARGB2101010,
        DRM_FORMAT_BGRX8888,
        DRM_FORMAT_BGRA8888,
+       DRM_FORMAT_BGRX1010102,
        DRM_FORMAT_BGRA1010102,
        DRM_FORMAT_ABGR8888,
        DRM_FORMAT_XBGR8888,
+       DRM_FORMAT_XBGR2101010,
+       DRM_FORMAT_ABGR2101010,
+       DRM_FORMAT_RGBX8888,
+       DRM_FORMAT_RGBA8888,
+       DRM_FORMAT_RGBX1010102,
+       DRM_FORMAT_RGBA1010102,
        DRM_FORMAT_RGB888,
        DRM_FORMAT_BGR888,
        DRM_FORMAT_RGB565,
@@ -431,12 +439,16 @@ static unsigned int ovl_fmt_convert(struct mtk_disp_ovl 
*ovl, unsigned int fmt,
                return blend_mode == DRM_MODE_BLEND_COVERAGE ?
                       OVL_CON_CLRFMT_ARGB8888 :
                       OVL_CON_CLRFMT_PARGB8888;
+       case DRM_FORMAT_RGBX1010102:
+       case DRM_FORMAT_RGBA1010102:
+               return OVL_CON_CLRFMT_ARGB8888;
        case DRM_FORMAT_BGRX8888:
        case DRM_FORMAT_BGRA8888:
                return OVL_CON_BYTE_SWAP |
                       (blend_mode == DRM_MODE_BLEND_COVERAGE ?
                       OVL_CON_CLRFMT_ARGB8888 :
                       OVL_CON_CLRFMT_PARGB8888);
+       case DRM_FORMAT_BGRX1010102:
        case DRM_FORMAT_BGRA1010102:
                return OVL_CON_CLRFMT_ARGB8888 | OVL_CON_BYTE_SWAP;
        case DRM_FORMAT_XRGB8888:
@@ -444,6 +456,7 @@ static unsigned int ovl_fmt_convert(struct mtk_disp_ovl 
*ovl, unsigned int fmt,
                return blend_mode == DRM_MODE_BLEND_COVERAGE ?
                       OVL_CON_CLRFMT_RGBA8888 :
                       OVL_CON_CLRFMT_PARGB8888;
+       case DRM_FORMAT_XRGB2101010:
        case DRM_FORMAT_ARGB2101010:
                return OVL_CON_CLRFMT_RGBA8888;
        case DRM_FORMAT_XBGR8888:
@@ -452,6 +465,9 @@ static unsigned int ovl_fmt_convert(struct mtk_disp_ovl 
*ovl, unsigned int fmt,
                       (blend_mode == DRM_MODE_BLEND_COVERAGE ?
                       OVL_CON_CLRFMT_RGBA8888 :
                       OVL_CON_CLRFMT_PARGB8888);
+       case DRM_FORMAT_XBGR2101010:
+       case DRM_FORMAT_ABGR2101010:
+               return OVL_CON_CLRFMT_RGBA8888 | OVL_CON_BYTE_SWAP;
        case DRM_FORMAT_UYVY:
                return OVL_CON_CLRFMT_UYVY | OVL_CON_MTX_YUV_TO_RGB;
        case DRM_FORMAT_YUYV:
-- 
2.18.0

Reply via email to