From 3448ebeca624af0202ce085aa30d13e1f5a627dd Mon Sep 17 00:00:00 2001 From: Vinod Polimera Date: Wed, 17 May 2023 17:14:41 +0530 Subject: [PATCH] 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 --- rotator/sde_rotator_base.h | 3 +- rotator/sde_rotator_r3.c | 179 +++++++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+), 1 deletion(-) diff --git a/rotator/sde_rotator_base.h b/rotator/sde_rotator_base.h index bf9d1560e6..fcc968b031 100644 --- a/rotator/sde_rotator_base.h +++ b/rotator/sde_rotator_base.h @@ -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 diff --git a/rotator/sde_rotator_r3.c b/rotator/sde_rotator_r3.c index 19b1691704..55f0c138ad 100644 --- a/rotator/sde_rotator_r3.c +++ b/rotator/sde_rotator_r3.c @@ -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;