|
@@ -572,6 +572,88 @@ static const u32 sde_hw_rotator_v5_outpixfmts[] = {
|
|
/* SDE_PIX_FMT_XBGR_2101010_TILE,*/
|
|
/* SDE_PIX_FMT_XBGR_2101010_TILE,*/
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static const u32 sde_hw_rotator_v6_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_v4_inpixfmts_sbuf[] = {
|
|
static const u32 sde_hw_rotator_v4_inpixfmts_sbuf[] = {
|
|
SDE_PIX_FMT_Y_CBCR_H2V2_P010,
|
|
SDE_PIX_FMT_Y_CBCR_H2V2_P010,
|
|
SDE_PIX_FMT_Y_CBCR_H2V2,
|
|
SDE_PIX_FMT_Y_CBCR_H2V2,
|
|
@@ -3703,6 +3785,22 @@ static int sde_rotator_hw_rev_init(struct sde_hw_rotator *rot)
|
|
ARRAY_SIZE(sde_hw_rotator_v5_outpixfmts);
|
|
ARRAY_SIZE(sde_hw_rotator_v5_outpixfmts);
|
|
rot->downscale_caps =
|
|
rot->downscale_caps =
|
|
"LINEAR/1.5/2/4/8/16/32/64 TILE/1.5/2/4 TP10/1.5/2";
|
|
"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_870)) {
|
|
|
|
+ SDEROT_DBG("Sys cache inline rotation not supported\n");
|
|
|
|
+ set_bit(SDE_CAPS_UBWC_2, mdata->sde_caps_map);
|
|
|
|
+ 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_v6_inpixfmts;
|
|
|
|
+ rot->num_inpixfmt[SDE_ROTATOR_MODE_OFFLINE] =
|
|
|
|
+ ARRAY_SIZE(sde_hw_rotator_v6_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 {
|
|
} else {
|
|
rot->inpixfmts[SDE_ROTATOR_MODE_OFFLINE] =
|
|
rot->inpixfmts[SDE_ROTATOR_MODE_OFFLINE] =
|
|
sde_hw_rotator_v3_inpixfmts;
|
|
sde_hw_rotator_v3_inpixfmts;
|