msm: sde: cleanup format validation for sbuf mode
Add rotator operating mode to format validation logic
and define h/w version specific format table for each
operating mode. Update base format lookup table for
missing rgb565/rgb ubwc/rgb565 tile to rgb565 tile.
Change-Id: I0146fdd9423114903f40873d4a0e10c19ca8e38a
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
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 731ff1e..3d368a1 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
@@ -141,6 +141,12 @@
SDE_ROTATOR_TRIGGER_COMMAND,
};
+enum sde_rotator_mode {
+ SDE_ROTATOR_MODE_OFFLINE,
+ SDE_ROTATOR_MODE_SBUF,
+ SDE_ROTATOR_MODE_MAX,
+};
+
struct sde_rotation_item {
/* rotation request flag */
uint32_t flags;
@@ -463,9 +469,9 @@
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);
+ bool input, u32 mode);
int (*ops_hw_is_valid_pixfmt)(struct sde_rot_mgr *mgr, u32 pixfmt,
- bool input);
+ bool input, u32 mode);
int (*ops_hw_get_downscale_caps)(struct sde_rot_mgr *mgr, char *caps,
int len);
int (*ops_hw_get_maxlinewidth)(struct sde_rot_mgr *mgr);
@@ -474,19 +480,19 @@
};
static inline int sde_rotator_is_valid_pixfmt(struct sde_rot_mgr *mgr,
- u32 pixfmt, bool input)
+ u32 pixfmt, bool input, u32 mode)
{
if (mgr && mgr->ops_hw_is_valid_pixfmt)
- return mgr->ops_hw_is_valid_pixfmt(mgr, pixfmt, input);
+ return mgr->ops_hw_is_valid_pixfmt(mgr, pixfmt, input, mode);
return false;
}
static inline u32 sde_rotator_get_pixfmt(struct sde_rot_mgr *mgr,
- int index, bool input)
+ int index, bool input, u32 mode)
{
if (mgr && mgr->ops_hw_get_pixfmt)
- return mgr->ops_hw_get_pixfmt(mgr, index, input);
+ return mgr->ops_hw_get_pixfmt(mgr, index, input, mode);
return 0;
}