disp: msm: rotator: add revision check for blair target

This change includes hw revision check and adds
supported color format for decoder and encoder
of offline rotator.

Change-Id: Ibc9271a8f56221b22ad040183f5311bfd0d2febe
Signed-off-by: Vinod Polimera <quic_vpolimer@quicinc.com>
This commit is contained in:
Vinod Polimera
2023-05-17 17:14:41 +05:30
committed by Charishma Jerripothula
parent 9c3a4825b8
commit 3448ebeca6
2 changed files with 181 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
*/
@@ -49,6 +49,7 @@
#define SDE_MDP_HW_REV_600 SDE_MDP_REV(6, 0, 0) /* msmnile+ v1.0 */
#define SDE_MDP_HW_REV_630 SDE_MDP_REV(6, 3, 0) /* bengal v1.0 */
#define SDE_MDP_HW_REV_660 SDE_MDP_REV(6, 6, 0) /* holi */
#define SDE_MDP_HW_REV_690 SDE_MDP_REV(6, 9, 0) /* blair */
#define SDE_MDP_VBIF_4_LEVEL_REMAPPER 4
#define SDE_MDP_VBIF_8_LEVEL_REMAPPER 8

View File

@@ -408,6 +408,170 @@ static const u32 sde_hw_rotator_v4_outpixfmts[] = {
SDE_PIX_FMT_XBGR_2101010_TILE,
};
static const u32 sde_hw_rotator_v5_inpixfmts[] = {
SDE_PIX_FMT_XRGB_8888,
SDE_PIX_FMT_ARGB_8888,
SDE_PIX_FMT_ABGR_8888,
SDE_PIX_FMT_RGBA_8888,
SDE_PIX_FMT_BGRA_8888,
SDE_PIX_FMT_RGBX_8888,
SDE_PIX_FMT_BGRX_8888,
SDE_PIX_FMT_XBGR_8888,
SDE_PIX_FMT_RGBA_5551,
SDE_PIX_FMT_ARGB_1555,
SDE_PIX_FMT_ABGR_1555,
SDE_PIX_FMT_BGRA_5551,
SDE_PIX_FMT_BGRX_5551,
SDE_PIX_FMT_RGBX_5551,
SDE_PIX_FMT_XBGR_1555,
SDE_PIX_FMT_XRGB_1555,
SDE_PIX_FMT_ARGB_4444,
SDE_PIX_FMT_RGBA_4444,
SDE_PIX_FMT_BGRA_4444,
SDE_PIX_FMT_ABGR_4444,
SDE_PIX_FMT_RGBX_4444,
SDE_PIX_FMT_XRGB_4444,
SDE_PIX_FMT_BGRX_4444,
SDE_PIX_FMT_XBGR_4444,
SDE_PIX_FMT_RGB_888,
SDE_PIX_FMT_BGR_888,
SDE_PIX_FMT_RGB_565,
SDE_PIX_FMT_BGR_565,
SDE_PIX_FMT_Y_CB_CR_H2V2,
SDE_PIX_FMT_Y_CR_CB_H2V2,
/* SDE_PIX_FMT_Y_CR_CB_GH2V2, */
SDE_PIX_FMT_Y_CBCR_H2V2,
SDE_PIX_FMT_Y_CRCB_H2V2,
/* SDE_PIX_FMT_Y_CBCR_H1V2, */
/* SDE_PIX_FMT_Y_CRCB_H1V2, */
/* SDE_PIX_FMT_Y_CBCR_H2V1, */
/* SDE_PIX_FMT_Y_CRCB_H2V1, */
/* SDE_PIX_FMT_YCBYCR_H2V1, */
SDE_PIX_FMT_Y_CBCR_H2V2_VENUS,
SDE_PIX_FMT_Y_CRCB_H2V2_VENUS,
/* SDE_PIX_FMT_RGBA_8888_UBWC, */
/* SDE_PIX_FMT_RGBX_8888_UBWC, */
/* SDE_PIX_FMT_RGB_565_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, */
SDE_PIX_FMT_RGBA_1010102,
SDE_PIX_FMT_RGBX_1010102,
SDE_PIX_FMT_ARGB_2101010,
SDE_PIX_FMT_XRGB_2101010,
SDE_PIX_FMT_BGRA_1010102,
SDE_PIX_FMT_BGRX_1010102,
SDE_PIX_FMT_ABGR_2101010,
SDE_PIX_FMT_XBGR_2101010,
/* SDE_PIX_FMT_RGBA_1010102_UBWC, */
/* SDE_PIX_FMT_RGBX_1010102_UBWC */
SDE_PIX_FMT_Y_CBCR_H2V2_P010,
SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS,
/* SDE_PIX_FMT_Y_CBCR_H2V2_TP10 */
/* SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_P010_TILE, */
/*SDE_PIX_FMT_Y_CBCR_H2V2_TILE, */
/* SDE_PIX_FMT_Y_CRCB_H2V2_TILE, */
/* SDE_PIX_FMT_XRGB_8888_TILE, */
/* SDE_PIX_FMT_ARGB_8888_TILE, */
/* SDE_PIX_FMT_ABGR_8888_TILE, */
/* SDE_PIX_FMT_XBGR_8888_TILE, */
/* SDE_PIX_FMT_RGBA_8888_TILE, */
/* SDE_PIX_FMT_BGRA_8888_TILE, */
/* SDE_PIX_FMT_RGBX_8888_TILE, */
/* SDE_PIX_FMT_BGRX_8888_TILE, */
/* SDE_PIX_FMT_RGBA_1010102_TILE, */
/* SDE_PIX_FMT_RGBX_1010102_TILE, */
/* SDE_PIX_FMT_ARGB_2101010_TILE, */
/* SDE_PIX_FMT_XRGB_2101010_TILE, */
/* SDE_PIX_FMT_BGRA_1010102_TILE, */
/* SDE_PIX_FMT_BGRX_1010102_TILE, */
/* SDE_PIX_FMT_ABGR_2101010_TILE, */
/* SDE_PIX_FMT_XBGR_2101010_TILE, */
};
static const u32 sde_hw_rotator_v5_outpixfmts[] = {
SDE_PIX_FMT_XRGB_8888,
SDE_PIX_FMT_ARGB_8888,
SDE_PIX_FMT_ABGR_8888,
SDE_PIX_FMT_RGBA_8888,
SDE_PIX_FMT_BGRA_8888,
SDE_PIX_FMT_RGBX_8888,
SDE_PIX_FMT_BGRX_8888,
SDE_PIX_FMT_XBGR_8888,
SDE_PIX_FMT_RGBA_5551,
SDE_PIX_FMT_ARGB_1555,
SDE_PIX_FMT_ABGR_1555,
SDE_PIX_FMT_BGRA_5551,
SDE_PIX_FMT_BGRX_5551,
SDE_PIX_FMT_RGBX_5551,
SDE_PIX_FMT_XBGR_1555,
SDE_PIX_FMT_XRGB_1555,
SDE_PIX_FMT_ARGB_4444,
SDE_PIX_FMT_RGBA_4444,
SDE_PIX_FMT_BGRA_4444,
SDE_PIX_FMT_ABGR_4444,
SDE_PIX_FMT_RGBX_4444,
SDE_PIX_FMT_XRGB_4444,
SDE_PIX_FMT_BGRX_4444,
SDE_PIX_FMT_XBGR_4444,
SDE_PIX_FMT_RGB_888,
SDE_PIX_FMT_BGR_888,
SDE_PIX_FMT_RGB_565,
SDE_PIX_FMT_BGR_565,
SDE_PIX_FMT_Y_CB_CR_H2V2,
SDE_PIX_FMT_Y_CR_CB_H2V2,
/* SDE_PIX_FMT_Y_CR_CB_GH2V2 */
SDE_PIX_FMT_Y_CBCR_H2V2,
SDE_PIX_FMT_Y_CRCB_H2V2,
/* SDE_PIX_FMT_Y_CBCR_H1V2, */
/* SDE_PIX_FMT_Y_CRCB_H1V2, */
/* SDE_PIX_FMT_Y_CBCR_H2V1, */
/* SDE_PIX_FMT_Y_CRCB_H2V1, */
/* SDE_PIX_FMT_YCBYCR_H2V1, */
SDE_PIX_FMT_Y_CBCR_H2V2_VENUS,
SDE_PIX_FMT_Y_CRCB_H2V2_VENUS,
/* SDE_PIX_FMT_RGBA_8888_UBWC, */
/* SDE_PIX_FMT_RGBX_8888_UBWC */
/* SDE_PIX_FMT_RGB_565_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_UBWC, */
SDE_PIX_FMT_RGBA_1010102,
SDE_PIX_FMT_RGBX_1010102,
SDE_PIX_FMT_ARGB_2101010,
SDE_PIX_FMT_XRGB_2101010,
SDE_PIX_FMT_BGRA_1010102,
SDE_PIX_FMT_BGRX_1010102,
SDE_PIX_FMT_ABGR_2101010,
SDE_PIX_FMT_XBGR_2101010,
/* SDE_PIX_FMT_RGBA_1010102_UBWC, */
/* SDE_PIX_FMT_RGBX_1010102_UBWC */
SDE_PIX_FMT_Y_CBCR_H2V2_P010,
SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS,
/* SDE_PIX_FMT_Y_CBCR_H2V2_TP10 */
/* SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC, */
/* SDE_PIX_FMT_Y_CBCR_H2V2_P010_TILE */
/* SDE_PIX_FMT_Y_CBCR_H2V2_TILE, */
/* SDE_PIX_FMT_Y_CRCB_H2V2_TILE, */
/* SDE_PIX_FMT_XRGB_8888_TILE, */
/* SDE_PIX_FMT_ARGB_8888_TILE, */
/* SDE_PIX_FMT_ABGR_8888_TILE, */
/* SDE_PIX_FMT_XBGR_8888_TILE, */
/* SDE_PIX_FMT_RGBA_8888_TILE, */
/* SDE_PIX_FMT_BGRA_8888_TILE, */
/* SDE_PIX_FMT_RGBX_8888_TILE, */
/* SDE_PIX_FMT_BGRX_8888_TILE, */
/* SDE_PIX_FMT_RGBA_1010102_TILE, */
/* SDE_PIX_FMT_RGBX_1010102_TILE, */
/* SDE_PIX_FMT_ARGB_2101010_TILE, */
/* SDE_PIX_FMT_XRGB_2101010_TILE, */
/* SDE_PIX_FMT_BGRA_1010102_TILE, */
/* SDE_PIX_FMT_BGRX_1010102_TILE, */
/* SDE_PIX_FMT_ABGR_2101010_TILE, */
/* SDE_PIX_FMT_XBGR_2101010_TILE,*/
};
static const u32 sde_hw_rotator_v4_inpixfmts_sbuf[] = {
SDE_PIX_FMT_Y_CBCR_H2V2_P010,
SDE_PIX_FMT_Y_CBCR_H2V2,
@@ -3524,6 +3688,21 @@ static int sde_rotator_hw_rev_init(struct sde_hw_rotator *rot)
ARRAY_SIZE(sde_hw_rotator_v4_outpixfmts);
rot->downscale_caps =
"LINEAR/1.5/2/4/8/16/32/64 TILE/1.5/2/4 TP10/1.5/2";
} else if (IS_SDE_MAJOR_MINOR_SAME(mdata->mdss_version,
SDE_MDP_HW_REV_690)) {
SDEROT_DBG("Sys cache inline rotation not supported\n");
set_bit(SDE_CAPS_PARTIALWR, mdata->sde_caps_map);
set_bit(SDE_CAPS_HW_TIMESTAMP, mdata->sde_caps_map);
rot->inpixfmts[SDE_ROTATOR_MODE_OFFLINE] =
sde_hw_rotator_v5_inpixfmts;
rot->num_inpixfmt[SDE_ROTATOR_MODE_OFFLINE] =
ARRAY_SIZE(sde_hw_rotator_v5_inpixfmts);
rot->outpixfmts[SDE_ROTATOR_MODE_OFFLINE] =
sde_hw_rotator_v5_outpixfmts;
rot->num_outpixfmt[SDE_ROTATOR_MODE_OFFLINE] =
ARRAY_SIZE(sde_hw_rotator_v5_outpixfmts);
rot->downscale_caps =
"LINEAR/1.5/2/4/8/16/32/64 TILE/1.5/2/4 TP10/1.5/2";
} else {
rot->inpixfmts[SDE_ROTATOR_MODE_OFFLINE] =
sde_hw_rotator_v3_inpixfmts;