diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c
index f2bcf2f..dede637 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.c
@@ -1273,8 +1273,13 @@
 	u8 in_v_subsample, in_h_subsample;
 	u8 out_v_subsample, out_h_subsample;
 
-	if (!sde_mdp_is_wb_format(out_fmt)) {
-		SDEROT_DBG("Invalid output format\n");
+	if (!sde_rotator_is_valid_pixfmt(mgr, in_fmt->format, true)) {
+		SDEROT_DBG("Invalid input format %x\n", in_fmt->format);
+		return false;
+	}
+
+	if (!sde_rotator_is_valid_pixfmt(mgr, out_fmt->format, false)) {
+		SDEROT_DBG("Invalid output format %x\n", out_fmt->format);
 		return false;
 	}
 
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
index 2476309..3633114 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
@@ -302,10 +302,32 @@
 			struct dentry *debugfs_root);
 	int (*ops_hw_validate_entry)(struct sde_rot_mgr *mgr,
 			struct sde_rot_entry *entry);
+	u32 (*ops_hw_get_pixfmt)(struct sde_rot_mgr *mgr, int index,
+			bool input);
+	int (*ops_hw_is_valid_pixfmt)(struct sde_rot_mgr *mgr, u32 pixfmt,
+			bool input);
 
 	void *hw_data;
 };
 
+static inline int sde_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr,
+		u32 pixfmt, bool input)
+{
+	if (mgr && mgr->ops_hw_is_valid_pixfmt)
+		return mgr->ops_hw_is_valid_pixfmt(mgr, pixfmt, input);
+
+	return false;
+}
+
+static inline u32 sde_rotator_get_pixfmt(struct sde_rot_mgr *mgr,
+		int index, bool input)
+{
+	if (mgr && mgr->ops_hw_get_pixfmt)
+		return mgr->ops_hw_get_pixfmt(mgr, index, input);
+
+	return 0;
+}
+
 static inline int __compare_session_item_rect(
 	struct sde_rotation_buf_info *s_rect,
 	struct sde_rect *i_rect, uint32_t i_fmt, bool src)
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c
index 3f463ef..be84f28 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_dev.c
@@ -52,244 +52,6 @@
 #define SDE_ROTATOR_DEGREE_270		270
 #define SDE_ROTATOR_DEGREE_180		180
 #define SDE_ROTATOR_DEGREE_90		90
-/*
- * Format description/mapping
- * @pixelformat: external format defined in msm_sde_rotator header.
- *
- * Note RGBA/8888 naming convention follows internal convention and
- * is reverse of standard V4L2 convention.  Description containing
- * prefix 'SDE/' refers to SDE specific conventions and/or features.
- */
-static const struct v4l2_fmtdesc fmtdesc[] = {
-	{
-		.description = "SDE/XRGB_8888",
-		.pixelformat = SDE_PIX_FMT_XRGB_8888,
-	},
-	{
-		.description = "SDE/ARGB_8888",
-		.pixelformat = SDE_PIX_FMT_ARGB_8888,
-	},
-	{
-		.description = "SDE/ABGR_8888",
-		.pixelformat = SDE_PIX_FMT_ABGR_8888,
-	},
-	{
-		.description = "SDE/RGBA_8888",
-		.pixelformat = SDE_PIX_FMT_RGBA_8888,
-	},
-	{
-		.description = "SDE/BGRA_8888",
-		.pixelformat = SDE_PIX_FMT_BGRA_8888,
-	},
-	{
-		.description = "SDE/RGBX_8888",
-		.pixelformat = SDE_PIX_FMT_RGBX_8888,
-	},
-	{
-		.description = "SDE/BGRX_8888",
-		.pixelformat = SDE_PIX_FMT_BGRX_8888,
-	},
-	{
-		.description = "SDE/XBGR_8888",
-		.pixelformat = SDE_PIX_FMT_XBGR_8888,
-	},
-	{
-		.description = "RGBA_5551",
-		.pixelformat = SDE_PIX_FMT_RGBA_5551,
-	},
-	{
-		.description = "ARGB_1555",
-		.pixelformat = SDE_PIX_FMT_ARGB_1555,
-	},
-	{
-		.description = "ABGR_1555",
-		.pixelformat = SDE_PIX_FMT_ABGR_1555,
-	},
-	{
-		.description = "BGRA_5551",
-		.pixelformat = SDE_PIX_FMT_BGRA_5551,
-	},
-	{
-		.description = "BGRX_5551",
-		.pixelformat = SDE_PIX_FMT_BGRX_5551,
-	},
-	{
-		.description = "RGBX_5551",
-		.pixelformat = SDE_PIX_FMT_RGBX_5551,
-	},
-	{
-		.description = "XBGR_1555",
-		.pixelformat = SDE_PIX_FMT_XBGR_1555,
-	},
-	{
-		.description = "XRGB_1555",
-		.pixelformat = SDE_PIX_FMT_XRGB_1555,
-	},
-	{
-		.description = "ARGB_4444",
-		.pixelformat = SDE_PIX_FMT_ARGB_4444,
-	},
-	{
-		.description = "RGBA_4444",
-		.pixelformat = SDE_PIX_FMT_RGBA_4444,
-	},
-	{
-		.description = "BGRA_4444",
-		.pixelformat = SDE_PIX_FMT_BGRA_4444,
-	},
-	{
-		.description = "ABGR_4444",
-		.pixelformat = SDE_PIX_FMT_ABGR_4444,
-	},
-	{
-		.description = "RGBX_4444",
-		.pixelformat = SDE_PIX_FMT_RGBX_4444,
-	},
-	{
-		.description = "XRGB_4444",
-		.pixelformat = SDE_PIX_FMT_XRGB_4444,
-	},
-	{
-		.description = "BGRX_4444",
-		.pixelformat = SDE_PIX_FMT_BGRX_4444,
-	},
-	{
-		.description = "XBGR_4444",
-		.pixelformat = SDE_PIX_FMT_XBGR_4444,
-	},
-	{
-		.description = "RGB_888",
-		.pixelformat = SDE_PIX_FMT_RGB_888,
-	},
-	{
-		.description = "BGR_888",
-		.pixelformat = SDE_PIX_FMT_BGR_888,
-	},
-	{
-		.description = "RGB_565",
-		.pixelformat = SDE_PIX_FMT_RGB_565,
-	},
-	{
-		.description = "BGR_565",
-		.pixelformat = SDE_PIX_FMT_BGR_565,
-	},
-	{
-		.description = "Y_CB_CR_H2V2",
-		.pixelformat = SDE_PIX_FMT_Y_CB_CR_H2V2,
-	},
-	{
-		.description = "Y_CR_CB_H2V2",
-		.pixelformat = SDE_PIX_FMT_Y_CR_CB_H2V2,
-	},
-	{
-		.description = "SDE/Y_CR_CB_GH2V2",
-		.pixelformat = SDE_PIX_FMT_Y_CR_CB_GH2V2,
-	},
-	{
-		.description = "Y_CBCR_H2V2",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2,
-	},
-	{
-		.description = "Y_CRCB_H2V2",
-		.pixelformat = SDE_PIX_FMT_Y_CRCB_H2V2,
-	},
-	{
-		.description = "Y_CBCR_H1V2",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H1V2,
-	},
-	{
-		.description = "Y_CRCB_H1V2",
-		.pixelformat = SDE_PIX_FMT_Y_CRCB_H1V2,
-	},
-	{
-		.description = "Y_CBCR_H2V1",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V1,
-	},
-	{
-		.description = "Y_CRCB_H2V1",
-		.pixelformat = SDE_PIX_FMT_Y_CRCB_H2V1,
-	},
-	{
-		.description = "YCBYCR_H2V1",
-		.pixelformat = SDE_PIX_FMT_YCBYCR_H2V1,
-	},
-	{
-		.description = "SDE/Y_CBCR_H2V2_VENUS",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_VENUS,
-	},
-	{
-		.description = "SDE/Y_CRCB_H2V2_VENUS",
-		.pixelformat = SDE_PIX_FMT_Y_CRCB_H2V2_VENUS,
-	},
-	{
-		.description = "SDE/RGBA_8888_UBWC",
-		.pixelformat = SDE_PIX_FMT_RGBA_8888_UBWC,
-	},
-	{
-		.description = "SDE/RGBX_8888_UBWC",
-		.pixelformat = SDE_PIX_FMT_RGBX_8888_UBWC,
-	},
-	{
-		.description = "SDE/RGB_565_UBWC",
-		.pixelformat = SDE_PIX_FMT_RGB_565_UBWC,
-	},
-	{
-		.description = "SDE/Y_CBCR_H2V2_UBWC",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_UBWC,
-	},
-	{
-		.description = "SDE/RGBA_1010102",
-		.pixelformat = SDE_PIX_FMT_RGBA_1010102,
-	},
-	{
-		.description = "SDE/RGBX_1010102",
-		.pixelformat = SDE_PIX_FMT_RGBX_1010102,
-	},
-	{
-		.description = "SDE/ARGB_2101010",
-		.pixelformat = SDE_PIX_FMT_ARGB_2101010,
-	},
-	{
-		.description = "SDE/XRGB_2101010",
-		.pixelformat = SDE_PIX_FMT_XRGB_2101010,
-	},
-	{
-		.description = "SDE/BGRA_1010102",
-		.pixelformat = SDE_PIX_FMT_BGRA_1010102,
-	},
-	{
-		.description = "SDE/BGRX_1010102",
-		.pixelformat = SDE_PIX_FMT_BGRX_1010102,
-	},
-	{
-		.description = "SDE/ABGR_2101010",
-		.pixelformat = SDE_PIX_FMT_ABGR_2101010,
-	},
-	{
-		.description = "SDE/XBGR_2101010",
-		.pixelformat = SDE_PIX_FMT_XBGR_2101010,
-	},
-	{
-		.description = "SDE/RGBA_1010102_UBWC",
-		.pixelformat = SDE_PIX_FMT_RGBA_1010102_UBWC,
-	},
-	{
-		.description = "SDE/RGBX_1010102_UBWC",
-		.pixelformat = SDE_PIX_FMT_RGBX_1010102_UBWC,
-	},
-	{
-		.description = "SDE/Y_CBCR_H2V2_P010",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_P010,
-	},
-	{
-		.description = "SDE/Y_CBCR_H2V2_TP10",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_TP10,
-	},
-	{
-		.description = "SDE/Y_CBCR_H2V2_TP10_UBWC",
-		.pixelformat = SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
-	},
-};
 
 static void sde_rotator_submit_handler(struct work_struct *work);
 static void sde_rotator_retire_handler(struct work_struct *work);
@@ -309,26 +71,6 @@
 }
 
 /*
- * sde_rotator_get_format_idx - Get rotator format lookup index.
- * @ctx: Pointer to rotator ctx.
- * @f: v4l2 format.
- */
-static int sde_rotator_get_format_idx(struct sde_rotator_ctx *ctx,
-	struct v4l2_format *f)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(fmtdesc); i++)
-		if (fmtdesc[i].pixelformat == f->fmt.pix.pixelformat)
-			break;
-
-	if (i == ARRAY_SIZE(fmtdesc))
-		return -EINVAL;
-
-	return i;
-}
-
-/*
  * sde_rotator_get_flags_from_ctx - Get low-level command flag
  * @ctx: Pointer to rotator context.
  */
@@ -1302,12 +1044,21 @@
 static int sde_rotator_enum_fmt_vid_cap(struct file *file,
 	void *fh, struct v4l2_fmtdesc *f)
 {
-	if (f->index >= ARRAY_SIZE(fmtdesc))
+	struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh);
+	struct sde_rotator_device *rot_dev = ctx->rot_dev;
+	struct sde_mdp_format_params *fmt;
+	u32 pixfmt;
+
+	pixfmt = sde_rotator_get_pixfmt(rot_dev->mgr, f->index, false);
+	if (!pixfmt)
 		return -EINVAL;
 
-	f->pixelformat = fmtdesc[f->index].pixelformat;
-	strlcpy(f->description, fmtdesc[f->index].description,
-		sizeof(f->description));
+	fmt = sde_get_format_params(pixfmt);
+	if (!fmt)
+		return -EINVAL;
+
+	f->pixelformat = pixfmt;
+	strlcpy(f->description, fmt->description, sizeof(f->description));
 
 	return 0;
 }
@@ -1321,12 +1072,21 @@
 static int sde_rotator_enum_fmt_vid_out(struct file *file,
 	void *fh, struct v4l2_fmtdesc *f)
 {
-	if (f->index >= ARRAY_SIZE(fmtdesc))
+	struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh);
+	struct sde_rotator_device *rot_dev = ctx->rot_dev;
+	struct sde_mdp_format_params *fmt;
+	u32 pixfmt;
+
+	pixfmt = sde_rotator_get_pixfmt(rot_dev->mgr, f->index, true);
+	if (!pixfmt)
 		return -EINVAL;
 
-	f->pixelformat = fmtdesc[f->index].pixelformat;
-	strlcpy(f->description, fmtdesc[f->index].description,
-		sizeof(f->description));
+	fmt = sde_get_format_params(pixfmt);
+	if (!fmt)
+		return -EINVAL;
+
+	f->pixelformat = pixfmt;
+	strlcpy(f->description, fmt->description, sizeof(f->description));
 
 	return 0;
 }
@@ -1375,13 +1135,8 @@
 	struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh);
 	struct sde_rotator_device *rot_dev = ctx->rot_dev;
 	struct sde_rotation_config config;
-	int fmt_idx;
 	int ret;
 
-	fmt_idx = sde_rotator_get_format_idx(ctx, f);
-	if (fmt_idx < 0)
-		return -EINVAL;
-
 	sde_rot_mgr_lock(rot_dev->mgr);
 	sde_rotator_get_config_from_ctx(ctx, &config);
 	config.output.format = f->fmt.pix.pixelformat;
@@ -1419,13 +1174,8 @@
 	struct sde_rotator_ctx *ctx = sde_rotator_ctx_from_fh(fh);
 	struct sde_rotator_device *rot_dev = ctx->rot_dev;
 	struct sde_rotation_config config;
-	int fmt_idx;
 	int ret;
 
-	fmt_idx = sde_rotator_get_format_idx(ctx, f);
-	if (fmt_idx < 0)
-		return -EINVAL;
-
 	sde_rot_mgr_lock(rot_dev->mgr);
 	sde_rotator_get_config_from_ctx(ctx, &config);
 	config.input.format = f->fmt.pix.pixelformat;
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c
index 5318c9d..3b36b6b 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.c
@@ -16,9 +16,10 @@
 #include "sde_rotator_formats.h"
 #include "sde_rotator_util.h"
 
-#define FMT_RGB_565(fmt, frame_fmt, flag_arg, e0, e1, e2, isubwc)	\
+#define FMT_RGB_565(fmt, desc, frame_fmt, flag_arg, e0, e1, e2, isubwc)	\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -37,9 +38,10 @@
 		.is_ubwc = isubwc,				\
 	}
 
-#define FMT_RGB_888(fmt, frame_fmt, flag_arg, e0, e1, e2, isubwc)	\
+#define FMT_RGB_888(fmt, desc, frame_fmt, flag_arg, e0, e1, e2, isubwc)	\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -58,10 +60,11 @@
 		.is_ubwc = isubwc,				\
 	}
 
-#define FMT_RGB_8888(fmt, frame_fmt, flag_arg,			\
+#define FMT_RGB_8888(fmt, desc, frame_fmt, flag_arg,			\
 		alpha_en, e0, e1, e2, e3, isubwc)		\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -93,10 +96,11 @@
 		.unpack_tight = 1,				\
 		.unpack_align_msb = 0
 
-#define FMT_YUV_PSEUDO(fmt, frame_fmt, samp, pixel_type,	\
+#define FMT_YUV_PSEUDO(fmt, desc, frame_fmt, samp, pixel_type,	\
 		flag_arg, e0, e1, isubwc)			\
 	{							\
 		FMT_YUV_COMMON(fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR,	\
 		.chroma_sample = samp,				\
@@ -108,10 +112,11 @@
 		.is_ubwc = isubwc,				\
 	}
 
-#define FMT_YUV_PLANR(fmt, frame_fmt, samp, \
+#define FMT_YUV_PLANR(fmt, desc, frame_fmt, samp, \
 		flag_arg, e0, e1)		\
 	{							\
 		FMT_YUV_COMMON(fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_PLANAR,		\
 		.chroma_sample = samp,				\
@@ -123,9 +128,10 @@
 		.is_ubwc = SDE_MDP_COMPRESS_NONE,		\
 	}
 
-#define FMT_RGB_1555(fmt, alpha_en, flag_arg, e0, e1, e2, e3)	\
+#define FMT_RGB_1555(fmt, desc, alpha_en, flag_arg, e0, e1, e2, e3)	\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -145,9 +151,10 @@
 		.is_ubwc = SDE_MDP_COMPRESS_NONE,		\
 	}
 
-#define FMT_RGB_4444(fmt, alpha_en, flag_arg, e0, e1, e2, e3)		\
+#define FMT_RGB_4444(fmt, desc, alpha_en, flag_arg, e0, e1, e2, e3)	\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -167,10 +174,11 @@
 		.is_ubwc = SDE_MDP_COMPRESS_NONE,		\
 	}
 
-#define FMT_RGB_1010102(fmt, frame_fmt, flag_arg,		\
+#define FMT_RGB_1010102(fmt, desc, frame_fmt, flag_arg,		\
 			alpha_en, e0, e1, e2, e3, isubwc)	\
 	{							\
 		.format = (fmt),				\
+		.description = (desc),				\
 		.flag = flag_arg,				\
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,	\
 		.unpack_tight = 1,				\
@@ -190,7 +198,6 @@
 		.is_ubwc = isubwc,				\
 	}
 
-#define VALID_ROT_WB_ALL (VALID_ROT_WB_FORMAT | VALID_ROT_R3_WB_FORMAT)
 /*
  * UBWC formats table:
  * This table holds the UBWC formats supported.
@@ -200,7 +207,8 @@
 static struct sde_mdp_format_params_ubwc sde_mdp_format_ubwc_map[] = {
 	{
 		.mdp_format = FMT_RGB_565(SDE_PIX_FMT_RGB_565_UBWC,
-			SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL,
+			"SDE/RGB_565_UBWC",
+			SDE_MDP_FMT_TILE_A5X, 0,
 			C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_UBWC),
 		.micro = {
 			.tile_height = 4,
@@ -209,7 +217,8 @@
 	},
 	{
 		.mdp_format = FMT_RGB_8888(SDE_PIX_FMT_RGBA_8888_UBWC,
-			SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL, 1,
+			"SDE/RGBA_8888_UBWC",
+			SDE_MDP_FMT_TILE_A5X, 0, 1,
 			C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 			SDE_MDP_COMPRESS_UBWC),
 		.micro = {
@@ -219,7 +228,8 @@
 	},
 	{
 		.mdp_format = FMT_RGB_8888(SDE_PIX_FMT_RGBX_8888_UBWC,
-			SDE_MDP_FMT_TILE_A5X, VALID_ROT_WB_ALL, 0,
+			"SDE/RGBX_8888_UBWC",
+			SDE_MDP_FMT_TILE_A5X, 0, 0,
 			C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 			SDE_MDP_COMPRESS_UBWC),
 		.micro = {
@@ -229,9 +239,10 @@
 	},
 	{
 		.mdp_format = FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_UBWC,
+			"SDE/Y_CBCR_H2V2_UBWC",
 			SDE_MDP_FMT_TILE_A5X, SDE_MDP_CHROMA_420,
 			SDE_MDP_PIXEL_NORMAL,
-			VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr,
+			0, C1_B_Cb, C2_R_Cr,
 			SDE_MDP_COMPRESS_UBWC),
 		.micro = {
 			.tile_height = 8,
@@ -240,7 +251,8 @@
 	},
 	{
 		.mdp_format = FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102_UBWC,
-			SDE_MDP_FMT_TILE_A5X, VALID_ROT_R3_WB_FORMAT, 1,
+			"SDE/RGBA_1010102_UBWC",
+			SDE_MDP_FMT_TILE_A5X, 0, 1,
 			C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 			SDE_MDP_COMPRESS_UBWC),
 		.micro = {
@@ -250,7 +262,8 @@
 	},
 	{
 		.mdp_format = FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102_UBWC,
-			SDE_MDP_FMT_TILE_A5X, VALID_ROT_R3_WB_FORMAT, 0,
+			"SDE/RGBX_1010102_UBWC",
+			SDE_MDP_FMT_TILE_A5X, 0, 0,
 			C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 			SDE_MDP_COMPRESS_UBWC),
 		.micro = {
@@ -260,9 +273,10 @@
 	},
 	{
 		.mdp_format = FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
+			"SDE/Y_CBCR_H2V2_TP10_UBWC",
 			SDE_MDP_FMT_TILE_A5X, SDE_MDP_CHROMA_420,
 			SDE_MDP_PIXEL_10BIT,
-			VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
+			0,
 			C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_UBWC),
 		.micro = {
 			.tile_height = 4,
@@ -273,88 +287,89 @@
 
 static struct sde_mdp_format_params sde_mdp_format_map[] = {
 	FMT_RGB_565(
-		SDE_PIX_FMT_RGB_565, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL |
-		VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr,
-		SDE_MDP_COMPRESS_NONE),
+		SDE_PIX_FMT_RGB_565, "RGB_565", SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
 	FMT_RGB_565(
-		SDE_PIX_FMT_BGR_565, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL |
-		VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb,
-		SDE_MDP_COMPRESS_NONE),
+		SDE_PIX_FMT_BGR_565, "BGR_565", SDE_MDP_FMT_LINEAR,
+		0, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
 	FMT_RGB_888(
-		SDE_PIX_FMT_RGB_888, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL |
-		VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C0_G_Y, C1_B_Cb,
-		SDE_MDP_COMPRESS_NONE),
+		SDE_PIX_FMT_RGB_888, "RGB_888", SDE_MDP_FMT_LINEAR,
+		0, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
 	FMT_RGB_888(
-		SDE_PIX_FMT_BGR_888, SDE_MDP_FMT_LINEAR, VALID_ROT_WB_ALL |
-		VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr,
+		SDE_PIX_FMT_BGR_888, "BGR_888", SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
+
+	FMT_RGB_8888(
+		SDE_PIX_FMT_ABGR_8888, "SDE/ABGR_8888", SDE_MDP_FMT_LINEAR,
+		0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
 		SDE_MDP_COMPRESS_NONE),
 
 	FMT_RGB_8888(
-		SDE_PIX_FMT_ABGR_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
+		SDE_PIX_FMT_XRGB_8888, "SDE/XRGB_8888", SDE_MDP_FMT_LINEAR,
+		0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_ARGB_8888, "SDE/ARGB_8888", SDE_MDP_FMT_LINEAR,
+		0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_RGBA_8888, "SDE/RGBA_8888", SDE_MDP_FMT_LINEAR,
+		0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_RGBX_8888, "SDE/RGBX_8888", SDE_MDP_FMT_LINEAR,
+		0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_BGRA_8888, "SDE/BGRA_8888", SDE_MDP_FMT_LINEAR,
+		0, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_BGRX_8888, "SDE/BGRX_8888", SDE_MDP_FMT_LINEAR,
+		0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_8888(
+		SDE_PIX_FMT_XBGR_8888, "SDE/XBGR_8888", SDE_MDP_FMT_LINEAR,
+		0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
 		SDE_MDP_COMPRESS_NONE),
 
-	FMT_RGB_8888(
-		SDE_PIX_FMT_XRGB_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_ARGB_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
-		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_RGBA_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
-		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_RGBX_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_BGRA_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
-		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_BGRX_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_8888(
-		SDE_PIX_FMT_XBGR_8888, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
-
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V1, SDE_MDP_FMT_LINEAR,
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V1, "Y_CRCB_H2V1",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_H2V1, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V1, SDE_MDP_FMT_LINEAR,
+		0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V1, "Y_CBCR_H2V1",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_H2V1, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H1V2, SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H1V2, "Y_CRCB_H1V2",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_H1V2, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H1V2, SDE_MDP_FMT_LINEAR,
+		0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H1V2, "Y_CBCR_H1V2",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_H1V2, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2, SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2, "Y_CRCB_H2V2",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2, SDE_MDP_FMT_LINEAR,
+		0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2, "Y_CBCR_H2V2",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CBCR_H2V2_VENUS, "SDE/Y_CBCR_H2V2_VENUS",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
-	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, SDE_MDP_FMT_LINEAR,
+		0, C1_B_Cb, C2_R_Cr, SDE_MDP_COMPRESS_NONE),
+	FMT_YUV_PSEUDO(SDE_PIX_FMT_Y_CRCB_H2V2_VENUS, "SDE/Y_CRCB_H2V2_VENUS",
+		SDE_MDP_FMT_LINEAR,
 		SDE_MDP_CHROMA_420, SDE_MDP_PIXEL_NORMAL,
-		VALID_ROT_WB_ALL | VALID_MDP_WB_INTF_FORMAT,
-		C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
+		0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),
 
 	{
 		FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_P010),
-		.flag = VALID_ROT_R3_WB_FORMAT,
+		.description = "SDE/Y_CBCR_H2V2_P010",
+		.flag = 0,
 		.fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR,
 		.chroma_sample = SDE_MDP_CHROMA_420,
 		.unpack_count = 2,
@@ -368,7 +383,8 @@
 	},
 	{
 		FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_TP10),
-		.flag = VALID_ROT_R3_WB_FORMAT,
+		.description = "SDE/Y_CBCR_H2V2_TP10",
+		.flag = 0,
 		.fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR,
 		.chroma_sample = SDE_MDP_CHROMA_420,
 		.unpack_count = 2,
@@ -381,19 +397,20 @@
 		.is_ubwc = SDE_MDP_COMPRESS_NONE,
 	},
 
-	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CB_CR_H2V2, SDE_MDP_FMT_LINEAR,
-		SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT |
-		VALID_MDP_WB_INTF_FORMAT, C2_R_Cr, C1_B_Cb),
-	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_H2V2, SDE_MDP_FMT_LINEAR,
-		SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT |
-		VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr),
-	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_GH2V2, SDE_MDP_FMT_LINEAR,
-		SDE_MDP_CHROMA_420, VALID_ROT_WB_FORMAT |
-		VALID_MDP_WB_INTF_FORMAT, C1_B_Cb, C2_R_Cr),
+	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CB_CR_H2V2, "Y_CB_CR_H2V2",
+		SDE_MDP_FMT_LINEAR,
+		SDE_MDP_CHROMA_420, 0, C2_R_Cr, C1_B_Cb),
+	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_H2V2, "Y_CR_CB_H2V2",
+		SDE_MDP_FMT_LINEAR,
+		SDE_MDP_CHROMA_420, 0, C1_B_Cb, C2_R_Cr),
+	FMT_YUV_PLANR(SDE_PIX_FMT_Y_CR_CB_GH2V2, "SDE/Y_CR_CB_GH2V2",
+		SDE_MDP_FMT_LINEAR,
+		SDE_MDP_CHROMA_420, 0, C1_B_Cb, C2_R_Cr),
 
 	{
 		FMT_YUV_COMMON(SDE_PIX_FMT_YCBYCR_H2V1),
-		.flag = VALID_ROT_WB_FORMAT,
+		.description = "YCBYCR_H2V1",
+		.flag = 0,
 		.fetch_planes = SDE_MDP_PLANE_INTERLEAVED,
 		.chroma_sample = SDE_MDP_CHROMA_H2V1,
 		.unpack_count = 4,
@@ -403,61 +420,69 @@
 		.element = { C2_R_Cr, C0_G_Y, C1_B_Cb, C0_G_Y },
 		.is_ubwc = SDE_MDP_COMPRESS_NONE,
 	},
-	FMT_RGB_1555(SDE_PIX_FMT_RGBA_5551, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_RGBA_5551, "RGBA_5551", 1, 0,
 		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),
-	FMT_RGB_1555(SDE_PIX_FMT_ARGB_1555, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_ARGB_1555, "ARGB_1555", 1, 0,
 		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
-	FMT_RGB_1555(SDE_PIX_FMT_ABGR_1555, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_ABGR_1555, "ABGR_1555", 1, 0,
 		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
-	FMT_RGB_1555(SDE_PIX_FMT_BGRA_5551, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_BGRA_5551, "BGRA_5551", 1, 0,
 		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
-	FMT_RGB_1555(SDE_PIX_FMT_BGRX_5551, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_BGRX_5551, "BGRX_5551", 0, 0,
 		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
-	FMT_RGB_1555(SDE_PIX_FMT_RGBX_5551, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_RGBX_5551, "RGBX_5551", 0, 0,
 		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),
-	FMT_RGB_1555(SDE_PIX_FMT_XBGR_1555, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_XBGR_1555, "XBGR_1555", 0, 0,
 		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
-	FMT_RGB_1555(SDE_PIX_FMT_XRGB_1555, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_1555(SDE_PIX_FMT_XRGB_1555, "XRGB_1555", 0, 0,
 		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
-	FMT_RGB_4444(SDE_PIX_FMT_RGBA_4444, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_RGBA_4444, "RGBA_4444", 1, 0,
 		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),
-	FMT_RGB_4444(SDE_PIX_FMT_ARGB_4444, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_ARGB_4444, "ARGB_4444", 1, 0,
 		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
-	FMT_RGB_4444(SDE_PIX_FMT_BGRA_4444, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_BGRA_4444, "BGRA_4444", 1, 0,
 		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
-	FMT_RGB_4444(SDE_PIX_FMT_ABGR_4444, 1, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_ABGR_4444, "ABGR_4444", 1, 0,
 		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
-	FMT_RGB_4444(SDE_PIX_FMT_RGBX_4444, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_RGBX_4444, "RGBX_4444", 0, 0,
 		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),
-	FMT_RGB_4444(SDE_PIX_FMT_XRGB_4444, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_XRGB_4444, "XRGB_4444", 0, 0,
 		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
-	FMT_RGB_4444(SDE_PIX_FMT_BGRX_4444, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_BGRX_4444, "BGRX_4444", 0, 0,
 		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
-	FMT_RGB_4444(SDE_PIX_FMT_XBGR_4444, 0, VALID_ROT_WB_ALL,
+	FMT_RGB_4444(SDE_PIX_FMT_XBGR_4444, "XBGR_4444", 0, 0,
 		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
-	FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
-		1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
-		0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_BGRA_1010102, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
-		1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_BGRX_1010102, SDE_MDP_FMT_LINEAR,
-		VALID_ROT_R3_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
-		0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_ARGB_2101010, SDE_MDP_FMT_LINEAR,
-		INVALID_WB_FORMAT, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+	FMT_RGB_1010102(SDE_PIX_FMT_RGBA_1010102, "SDE/RGBA_1010102",
+		SDE_MDP_FMT_LINEAR,
+		0, 1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_XRGB_2101010, SDE_MDP_FMT_LINEAR,
-		INVALID_WB_FORMAT, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+	FMT_RGB_1010102(SDE_PIX_FMT_RGBX_1010102, "SDE/RGBX_1010102",
+		SDE_MDP_FMT_LINEAR,
+		0, 0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA,
 		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_ABGR_2101010, SDE_MDP_FMT_LINEAR,
-		INVALID_WB_FORMAT, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
+	FMT_RGB_1010102(SDE_PIX_FMT_BGRA_1010102, "SDE/BGRA_1010102",
+		SDE_MDP_FMT_LINEAR,
+		0, 1, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
 		SDE_MDP_COMPRESS_NONE),
-	FMT_RGB_1010102(SDE_PIX_FMT_XBGR_2101010, SDE_MDP_FMT_LINEAR,
-		INVALID_WB_FORMAT, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
+	FMT_RGB_1010102(SDE_PIX_FMT_BGRX_1010102, "SDE/BGRX_1010102",
+		SDE_MDP_FMT_LINEAR,
+		0, 0, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_1010102(SDE_PIX_FMT_ARGB_2101010, "SDE/ARGB_2101010",
+		SDE_MDP_FMT_LINEAR,
+		0, 1, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_1010102(SDE_PIX_FMT_XRGB_2101010, "SDE/XRGB_2101010",
+		SDE_MDP_FMT_LINEAR,
+		0, 0, C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_1010102(SDE_PIX_FMT_ABGR_2101010, "SDE/ABGR_2101010",
+		SDE_MDP_FMT_LINEAR,
+		0, 1, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
+		SDE_MDP_COMPRESS_NONE),
+	FMT_RGB_1010102(SDE_PIX_FMT_XBGR_2101010, "SDE/XBGR_2101010",
+		SDE_MDP_FMT_LINEAR,
+		0, 0, C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr,
 		SDE_MDP_COMPRESS_NONE),
 };
 
@@ -518,24 +543,3 @@
 
 	return 0;
 }
-
-/*
- * sde_mdp_is_wb_format - determine if the given fmt is supported by writeback
- * @fmt: Pointer to format parameter
- */
-bool sde_mdp_is_wb_format(struct sde_mdp_format_params *fmt)
-{
-	struct sde_rot_data_type *mdata = sde_rot_get_mdata();
-
-	if (!mdata || !fmt)
-		return false;
-	else if (test_bit(SDE_CAPS_R1_WB, mdata->sde_caps_map) &&
-			(fmt->flag & VALID_ROT_WB_FORMAT))
-		return true;
-	else if (test_bit(SDE_CAPS_R3_WB, mdata->sde_caps_map) &&
-			(fmt->flag & VALID_ROT_R3_WB_FORMAT))
-		return true;
-	else
-		return false;
-}
-
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h
index 198bee3..23548b9 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_formats.h
@@ -17,19 +17,11 @@
 #include <linux/types.h>
 #include <media/msm_sde_rotator.h>
 
-/* internal formats */
-#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10	v4l2_fourcc('T', 'P', '1', '0')
-
 #define SDE_ROT_MAX_PLANES		4
 
 #define UBWC_META_MACRO_W_H		16
 #define UBWC_META_BLOCK_SIZE		256
 
-#define INVALID_WB_FORMAT		0
-#define VALID_ROT_WB_FORMAT		BIT(0)
-#define VALID_MDP_WB_INTF_FORMAT	BIT(1)
-#define VALID_ROT_R3_WB_FORMAT		BIT(2)
-
 /*
  * Value of enum chosen to fit the number of bits
  * expected by the HW programming.
@@ -79,6 +71,7 @@
 
 struct sde_mdp_format_params {
 	u32 format;
+	const char *description;
 	u32 flag;
 	u8 is_yuv;
 	u8 is_ubwc;
@@ -111,8 +104,6 @@
 
 int sde_rot_get_ubwc_micro_dim(u32 format, u16 *w, u16 *h);
 
-bool sde_mdp_is_wb_format(struct sde_mdp_format_params *fmt);
-
 static inline bool sde_mdp_is_tilea4x_format(struct sde_mdp_format_params *fmt)
 {
 	return fmt && (fmt->frame_format == SDE_MDP_FMT_TILE_A4X);
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c
index 31cc4f3..5b574ed 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r1.c
@@ -45,6 +45,100 @@
 	struct sde_mdp_hw_resource *mdp_hw;
 };
 
+static u32 sde_hw_rotator_input_pixfmts[] = {
+	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,
+};
+
+static u32 sde_hw_rotator_output_pixfmts[] = {
+	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,
+};
+
 static struct sde_mdp_hw_resource *sde_rotator_hw_alloc(
 	struct sde_rot_mgr *mgr, u32 ctl_id, u32 wb_id, int irq_num)
 {
@@ -403,6 +497,52 @@
 	return cnt;
 }
 
+/*
+ * sde_hw_rotator_get_pixfmt - get the indexed pixel format
+ * @mgr: Pointer to rotator manager
+ * @index: index of pixel format
+ * @input: true for input port; false for output port
+ */
+static u32 sde_hw_rotator_get_pixfmt(struct sde_rot_mgr *mgr,
+		int index, bool input)
+{
+	if (input) {
+		if (index < ARRAY_SIZE(sde_hw_rotator_input_pixfmts))
+			return sde_hw_rotator_input_pixfmts[index];
+		else
+			return 0;
+	} else {
+		if (index < ARRAY_SIZE(sde_hw_rotator_output_pixfmts))
+			return sde_hw_rotator_output_pixfmts[index];
+		else
+			return 0;
+	}
+}
+
+/*
+ * sde_hw_rotator_is_valid_pixfmt - verify if the given pixel format is valid
+ * @mgr: Pointer to rotator manager
+ * @pixfmt: pixel format to be verified
+ * @input: true for input port; false for output port
+ */
+static int sde_hw_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr, u32 pixfmt,
+		bool input)
+{
+	int i;
+
+	if (input) {
+		for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_input_pixfmts); i++)
+			if (sde_hw_rotator_input_pixfmts[i] == pixfmt)
+				return true;
+	} else {
+		for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_output_pixfmts); i++)
+			if (sde_hw_rotator_output_pixfmts[i] == pixfmt)
+				return true;
+	}
+
+	return false;
+}
+
 static int sde_rotator_hw_parse_dt(struct sde_rotator_r1_data *hw_data,
 		struct platform_device *dev)
 {
@@ -552,6 +692,8 @@
 	mgr->ops_hw_show_caps = sde_rotator_hw_show_caps;
 	mgr->ops_hw_show_state = sde_rotator_hw_show_state;
 	mgr->ops_hw_create_debugfs = sde_rotator_r1_create_debugfs;
+	mgr->ops_hw_get_pixfmt = sde_hw_rotator_get_pixfmt;
+	mgr->ops_hw_is_valid_pixfmt = sde_hw_rotator_is_valid_pixfmt;
 
 	ret = sde_rotator_hw_parse_dt(mgr->hw_data, mgr->pdev);
 	if (ret)
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
index 6caf50c..b570b3e 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
@@ -78,6 +78,126 @@
 #define SDE_ROTREG_READ(base, off) \
 	readl_relaxed(base + (off))
 
+static u32 sde_hw_rotator_input_pixfmts[] = {
+	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_TP10,
+	SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
+};
+
+static u32 sde_hw_rotator_output_pixfmts[] = {
+	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_TP10,
+	SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
+};
+
 /* Invalid software timestamp value for initialization */
 #define SDE_REGDMA_SWTS_INVALID	(~0)
 
@@ -1872,6 +1992,52 @@
 }
 
 /*
+ * sde_hw_rotator_get_pixfmt - get the indexed pixel format
+ * @mgr: Pointer to rotator manager
+ * @index: index of pixel format
+ * @input: true for input port; false for output port
+ */
+static u32 sde_hw_rotator_get_pixfmt(struct sde_rot_mgr *mgr,
+		int index, bool input)
+{
+	if (input) {
+		if (index < ARRAY_SIZE(sde_hw_rotator_input_pixfmts))
+			return sde_hw_rotator_input_pixfmts[index];
+		else
+			return 0;
+	} else {
+		if (index < ARRAY_SIZE(sde_hw_rotator_output_pixfmts))
+			return sde_hw_rotator_output_pixfmts[index];
+		else
+			return 0;
+	}
+}
+
+/*
+ * sde_hw_rotator_is_valid_pixfmt - verify if the given pixel format is valid
+ * @mgr: Pointer to rotator manager
+ * @pixfmt: pixel format to be verified
+ * @input: true for input port; false for output port
+ */
+static int sde_hw_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr, u32 pixfmt,
+		bool input)
+{
+	int i;
+
+	if (input) {
+		for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_input_pixfmts); i++)
+			if (sde_hw_rotator_input_pixfmts[i] == pixfmt)
+				return true;
+	} else {
+		for (i = 0; i < ARRAY_SIZE(sde_hw_rotator_output_pixfmts); i++)
+			if (sde_hw_rotator_output_pixfmts[i] == pixfmt)
+				return true;
+	}
+
+	return false;
+}
+
+/*
  * sde_hw_rotator_parse_dt - parse r3 specific device tree settings
  * @hw_data: Pointer to rotator hw
  * @dev: Pointer to platform device
@@ -1949,6 +2115,8 @@
 	mgr->ops_hw_show_caps = sde_hw_rotator_show_caps;
 	mgr->ops_hw_show_state = sde_hw_rotator_show_state;
 	mgr->ops_hw_create_debugfs = sde_rotator_r3_create_debugfs;
+	mgr->ops_hw_get_pixfmt = sde_hw_rotator_get_pixfmt;
+	mgr->ops_hw_is_valid_pixfmt = sde_hw_rotator_is_valid_pixfmt;
 
 	ret = sde_hw_rotator_parse_dt(mgr->hw_data, mgr->pdev);
 	if (ret)
