#define OVL_CON_AEN BIT(8)
#define OVL_CON_ALPHA 0xff
#define OVL_CON_VIRT_FLIP BIT(9)
+#define OVL_CON_HORZ_FLIP BIT(10)
struct mtk_disp_ovl_data {
unsigned int addr;
static unsigned int mtk_ovl_supported_rotations(struct mtk_ddp_comp *comp)
{
- return DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_Y;
+ return DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_Y |
+ DRM_MODE_REFLECT_X;
}
static int mtk_ovl_layer_check(struct mtk_ddp_comp *comp, unsigned int idx,
rotation = drm_rotation_simplify(state->rotation,
DRM_MODE_ROTATE_0 |
+ DRM_MODE_REFLECT_X |
DRM_MODE_REFLECT_Y);
rotation &= ~DRM_MODE_ROTATE_0;
addr += (pending->height - 1) * pending->pitch;
}
+ if (pending->rotation & DRM_MODE_REFLECT_X) {
+ con |= OVL_CON_HORZ_FLIP;
+ addr += pending->pitch - 1;
+ }
+
writel_relaxed(con, comp->regs + DISP_REG_OVL_CON(idx));
writel_relaxed(pitch, comp->regs + DISP_REG_OVL_PITCH(idx));
writel_relaxed(src_size, comp->regs + DISP_REG_OVL_SRC_SIZE(idx));