mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
drm/mediatek: Support more 10bit formats in OVL
Support more 10bit formats in OVL. Reviewed-by: CK Hu <ck.hu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com> Link: https://patchwork.kernel.org/project/dri-devel/patch/20240620-igt-v3-11-a9d62d2e2c7e@mediatek.com/ Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
This commit is contained in:
parent
a4c9410b31
commit
46ed6ff6f9
1 changed files with 29 additions and 3 deletions
|
@ -76,6 +76,22 @@
|
|||
|
||||
#define OVL_COLOR_ALPHA GENMASK(31, 24)
|
||||
|
||||
static inline bool is_10bit_rgb(u32 fmt)
|
||||
{
|
||||
switch (fmt) {
|
||||
case DRM_FORMAT_XRGB2101010:
|
||||
case DRM_FORMAT_ARGB2101010:
|
||||
case DRM_FORMAT_RGBX1010102:
|
||||
case DRM_FORMAT_RGBA1010102:
|
||||
case DRM_FORMAT_XBGR2101010:
|
||||
case DRM_FORMAT_ABGR2101010:
|
||||
case DRM_FORMAT_BGRX1010102:
|
||||
case DRM_FORMAT_BGRA1010102:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static const u32 mt8173_formats[] = {
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_ARGB8888,
|
||||
|
@ -93,12 +109,18 @@ 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_RGBX1010102,
|
||||
DRM_FORMAT_RGBA1010102,
|
||||
DRM_FORMAT_RGB888,
|
||||
DRM_FORMAT_BGR888,
|
||||
DRM_FORMAT_RGB565,
|
||||
|
@ -258,9 +280,7 @@ static void mtk_ovl_set_bit_depth(struct device *dev, int idx, u32 format,
|
|||
reg = readl(ovl->regs + DISP_REG_OVL_CLRFMT_EXT);
|
||||
reg &= ~OVL_CON_CLRFMT_BIT_DEPTH_MASK(idx);
|
||||
|
||||
if (format == DRM_FORMAT_RGBA1010102 ||
|
||||
format == DRM_FORMAT_BGRA1010102 ||
|
||||
format == DRM_FORMAT_ARGB2101010)
|
||||
if (is_10bit_rgb(format))
|
||||
bit_depth = OVL_CON_CLRFMT_10_BIT;
|
||||
|
||||
reg |= OVL_CON_CLRFMT_BIT_DEPTH(bit_depth, idx);
|
||||
|
@ -379,17 +399,23 @@ static unsigned int ovl_fmt_convert(struct mtk_disp_ovl *ovl, unsigned int fmt)
|
|||
return OVL_CON_CLRFMT_RGB888(ovl) | OVL_CON_BYTE_SWAP;
|
||||
case DRM_FORMAT_RGBX8888:
|
||||
case DRM_FORMAT_RGBA8888:
|
||||
case DRM_FORMAT_RGBX1010102:
|
||||
case DRM_FORMAT_RGBA1010102:
|
||||
return OVL_CON_CLRFMT_RGBA8888;
|
||||
case DRM_FORMAT_BGRX8888:
|
||||
case DRM_FORMAT_BGRA8888:
|
||||
case DRM_FORMAT_BGRX1010102:
|
||||
case DRM_FORMAT_BGRA1010102:
|
||||
return OVL_CON_CLRFMT_BGRA8888;
|
||||
case DRM_FORMAT_XRGB8888:
|
||||
case DRM_FORMAT_ARGB8888:
|
||||
case DRM_FORMAT_XRGB2101010:
|
||||
case DRM_FORMAT_ARGB2101010:
|
||||
return OVL_CON_CLRFMT_ARGB8888;
|
||||
case DRM_FORMAT_XBGR8888:
|
||||
case DRM_FORMAT_ABGR8888:
|
||||
case DRM_FORMAT_XBGR2101010:
|
||||
case DRM_FORMAT_ABGR2101010:
|
||||
return OVL_CON_CLRFMT_ABGR8888;
|
||||
case DRM_FORMAT_UYVY:
|
||||
return OVL_CON_CLRFMT_UYVY | OVL_CON_MTX_YUV_TO_RGB;
|
||||
|
|
Loading…
Add table
Reference in a new issue