drm/rockchip: add afbdc feature for plane

For next Soc VOP only vopb win1 support AFBDC, so we need
add afbdc feature for every win.

Change-Id: Icbe5e26189d2147a6b81f2f75d0b855b2c35fd26
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
Sandy Huang 2017-12-06 10:04:02 +08:00 committed by Tao Huang
parent 268d7f4e3d
commit 6d852444b8
4 changed files with 16 additions and 4 deletions

View File

@ -3453,6 +3453,8 @@ static int vop_plane_init(struct vop *vop, struct vop_win *win,
feature |= BIT(ROCKCHIP_DRM_PLANE_FEATURE_HDR2SDR);
if (win->feature & WIN_FEATURE_SDR2HDR)
feature |= BIT(ROCKCHIP_DRM_PLANE_FEATURE_SDR2HDR);
if (win->feature & WIN_FEATURE_AFBDC)
feature |= BIT(ROCKCHIP_DRM_PLANE_FEATURE_AFBDC);
drm_object_attach_property(&win->base.base, vop->plane_feature_prop,
feature);
@ -3704,6 +3706,7 @@ static int vop_win_init(struct vop *vop)
{ ROCKCHIP_DRM_PLANE_FEATURE_ALPHA, "alpha" },
{ ROCKCHIP_DRM_PLANE_FEATURE_HDR2SDR, "hdr2sdr" },
{ ROCKCHIP_DRM_PLANE_FEATURE_SDR2HDR, "sdr2hdr" },
{ ROCKCHIP_DRM_PLANE_FEATURE_AFBDC, "afbdc" },
};
static const struct drm_prop_enum_list crtc_props[] = {
{ ROCKCHIP_DRM_CRTC_FEATURE_AFBDC, "afbdc" },
@ -3761,7 +3764,8 @@ static int vop_win_init(struct vop *vop)
BIT(ROCKCHIP_DRM_PLANE_FEATURE_SCALE) |
BIT(ROCKCHIP_DRM_PLANE_FEATURE_ALPHA) |
BIT(ROCKCHIP_DRM_PLANE_FEATURE_HDR2SDR) |
BIT(ROCKCHIP_DRM_PLANE_FEATURE_SDR2HDR));
BIT(ROCKCHIP_DRM_PLANE_FEATURE_SDR2HDR) |
BIT(ROCKCHIP_DRM_PLANE_FEATURE_AFBDC));
if (!vop->plane_feature_prop) {
DRM_ERROR("failed to create feature property\n");
return -EINVAL;

View File

@ -396,6 +396,7 @@ struct vop_win_data {
#define WIN_FEATURE_HDR2SDR BIT(0)
#define WIN_FEATURE_SDR2HDR BIT(1)
#define WIN_FEATURE_PRE_OVERLAY BIT(2)
#define WIN_FEATURE_AFBDC BIT(3)
struct vop_rect {
int width;

View File

@ -548,15 +548,19 @@ static const struct vop_csc rk3399_win3_csc = {
static const struct vop_win_data rk3399_vop_win_data[] = {
{ .base = 0x00, .phy = &rk3288_win01_data, .csc = &rk3399_win0_csc,
.type = DRM_PLANE_TYPE_PRIMARY },
.type = DRM_PLANE_TYPE_PRIMARY,
.feature = WIN_FEATURE_AFBDC },
{ .base = 0x40, .phy = &rk3288_win01_data, .csc = &rk3399_win1_csc,
.type = DRM_PLANE_TYPE_OVERLAY },
.type = DRM_PLANE_TYPE_OVERLAY,
.feature = WIN_FEATURE_AFBDC },
{ .base = 0x00, .phy = &rk3368_win23_data, .csc = &rk3399_win2_csc,
.type = DRM_PLANE_TYPE_OVERLAY,
.feature = WIN_FEATURE_AFBDC,
.area = rk3368_area_data,
.area_size = ARRAY_SIZE(rk3368_area_data), },
{ .base = 0x50, .phy = &rk3368_win23_data, .csc = &rk3399_win3_csc,
.type = DRM_PLANE_TYPE_CURSOR,
.feature = WIN_FEATURE_AFBDC,
.area = rk3368_area_data,
.area_size = ARRAY_SIZE(rk3368_area_data), },
};
@ -575,10 +579,12 @@ static const struct vop_data rk3399_vop_big = {
static const struct vop_win_data rk3399_vop_lit_win_data[] = {
{ .base = 0x00, .phy = &rk3288_win01_data, .csc = &rk3399_win0_csc,
.type = DRM_PLANE_TYPE_PRIMARY },
.type = DRM_PLANE_TYPE_PRIMARY,
.feature = WIN_FEATURE_AFBDC },
{ .phy = NULL },
{ .base = 0x00, .phy = &rk3368_win23_data, .csc = &rk3399_win2_csc,
.type = DRM_PLANE_TYPE_CURSOR,
.feature = WIN_FEATURE_AFBDC,
.area = rk3368_area_data,
.area_size = ARRAY_SIZE(rk3368_area_data), },
{ .phy = NULL },

View File

@ -122,6 +122,7 @@ enum rockchip_plane_feture {
ROCKCHIP_DRM_PLANE_FEATURE_ALPHA,
ROCKCHIP_DRM_PLANE_FEATURE_HDR2SDR,
ROCKCHIP_DRM_PLANE_FEATURE_SDR2HDR,
ROCKCHIP_DRM_PLANE_FEATURE_AFBDC,
ROCKCHIP_DRM_PLANE_FEATURE_MAX,
};