|
@@ -54,6 +54,7 @@ void rcar_du_vsp_enable(struct rcar_du_crtc *crtc)
|
|
|
};
|
|
|
struct rcar_du_plane_state state = {
|
|
|
.state = {
|
|
|
+ .alpha = DRM_BLEND_ALPHA_OPAQUE,
|
|
|
.crtc = &crtc->crtc,
|
|
|
.dst.x1 = 0,
|
|
|
.dst.y1 = 0,
|
|
@@ -67,7 +68,6 @@ void rcar_du_vsp_enable(struct rcar_du_crtc *crtc)
|
|
|
},
|
|
|
.format = rcar_du_format_info(DRM_FORMAT_ARGB8888),
|
|
|
.source = RCAR_DU_PLANE_VSPD1,
|
|
|
- .alpha = 255,
|
|
|
.colorkey = 0,
|
|
|
};
|
|
|
|
|
@@ -173,7 +173,7 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
|
|
|
struct vsp1_du_atomic_config cfg = {
|
|
|
.pixelformat = 0,
|
|
|
.pitch = fb->pitches[0],
|
|
|
- .alpha = state->alpha,
|
|
|
+ .alpha = state->state.alpha >> 8,
|
|
|
.zpos = state->state.zpos,
|
|
|
};
|
|
|
unsigned int i;
|
|
@@ -335,44 +335,13 @@ static void rcar_du_vsp_plane_reset(struct drm_plane *plane)
|
|
|
if (state == NULL)
|
|
|
return;
|
|
|
|
|
|
- state->alpha = 255;
|
|
|
+ state->state.alpha = DRM_BLEND_ALPHA_OPAQUE;
|
|
|
state->state.zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
|
|
|
|
|
|
plane->state = &state->state;
|
|
|
plane->state->plane = plane;
|
|
|
}
|
|
|
|
|
|
-static int rcar_du_vsp_plane_atomic_set_property(struct drm_plane *plane,
|
|
|
- struct drm_plane_state *state, struct drm_property *property,
|
|
|
- uint64_t val)
|
|
|
-{
|
|
|
- struct rcar_du_vsp_plane_state *rstate = to_rcar_vsp_plane_state(state);
|
|
|
- struct rcar_du_device *rcdu = to_rcar_vsp_plane(plane)->vsp->dev;
|
|
|
-
|
|
|
- if (property == rcdu->props.alpha)
|
|
|
- rstate->alpha = val;
|
|
|
- else
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int rcar_du_vsp_plane_atomic_get_property(struct drm_plane *plane,
|
|
|
- const struct drm_plane_state *state, struct drm_property *property,
|
|
|
- uint64_t *val)
|
|
|
-{
|
|
|
- const struct rcar_du_vsp_plane_state *rstate =
|
|
|
- container_of(state, const struct rcar_du_vsp_plane_state, state);
|
|
|
- struct rcar_du_device *rcdu = to_rcar_vsp_plane(plane)->vsp->dev;
|
|
|
-
|
|
|
- if (property == rcdu->props.alpha)
|
|
|
- *val = rstate->alpha;
|
|
|
- else
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static const struct drm_plane_funcs rcar_du_vsp_plane_funcs = {
|
|
|
.update_plane = drm_atomic_helper_update_plane,
|
|
|
.disable_plane = drm_atomic_helper_disable_plane,
|
|
@@ -380,8 +349,6 @@ static const struct drm_plane_funcs rcar_du_vsp_plane_funcs = {
|
|
|
.destroy = drm_plane_cleanup,
|
|
|
.atomic_duplicate_state = rcar_du_vsp_plane_atomic_duplicate_state,
|
|
|
.atomic_destroy_state = rcar_du_vsp_plane_atomic_destroy_state,
|
|
|
- .atomic_set_property = rcar_du_vsp_plane_atomic_set_property,
|
|
|
- .atomic_get_property = rcar_du_vsp_plane_atomic_get_property,
|
|
|
};
|
|
|
|
|
|
int rcar_du_vsp_init(struct rcar_du_vsp *vsp, struct device_node *np,
|
|
@@ -438,8 +405,7 @@ int rcar_du_vsp_init(struct rcar_du_vsp *vsp, struct device_node *np,
|
|
|
if (type == DRM_PLANE_TYPE_PRIMARY)
|
|
|
continue;
|
|
|
|
|
|
- drm_object_attach_property(&plane->plane.base,
|
|
|
- rcdu->props.alpha, 255);
|
|
|
+ drm_plane_create_alpha_property(&plane->plane);
|
|
|
drm_plane_create_zpos_property(&plane->plane, 1, 1,
|
|
|
vsp->num_planes - 1);
|
|
|
}
|