mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
drm/rockchip: vop2: use property create by rockchip drm drv
As some property can be used by both of rockchip_drm_vop2.c and rockchip_drm_vop.c, so we delete some property create at vop2.c and instead by rockchip drm driver common property. Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: If4f327db79a455da75c7d4af04d2fe3aab19a6f0
This commit is contained in:
@@ -543,11 +543,6 @@ struct vop2 {
|
||||
struct vop2_wb wb;
|
||||
struct dentry *debugfs;
|
||||
struct drm_info_list *debugfs_files;
|
||||
struct drm_property *soc_id_prop;
|
||||
struct drm_property *vp_id_prop;
|
||||
struct drm_property *aclk_prop;
|
||||
struct drm_property *bg_prop;
|
||||
struct drm_property *line_flag_prop;
|
||||
struct drm_prop_enum_list *plane_name_list;
|
||||
bool is_iommu_enabled;
|
||||
bool is_iommu_needed;
|
||||
@@ -5535,6 +5530,8 @@ static int vop2_crtc_atomic_get_property(struct drm_crtc *crtc,
|
||||
struct rockchip_crtc_state *vcstate = to_rockchip_crtc_state(state);
|
||||
struct vop2_video_port *vp = to_vop2_video_port(crtc);
|
||||
struct vop2 *vop2 = vp->vop2;
|
||||
const struct vop2_data *vop2_data = vop2->data;
|
||||
const struct vop2_video_port_data *vp_data = &vop2_data->vp[vp->id];
|
||||
|
||||
if (property == mode_config->tv_left_margin_property) {
|
||||
*val = vcstate->left_margin;
|
||||
@@ -5557,23 +5554,23 @@ static int vop2_crtc_atomic_get_property(struct drm_crtc *crtc,
|
||||
}
|
||||
|
||||
if (property == private->alpha_scale_prop) {
|
||||
*val = (vop2->data->feature & VOP_FEATURE_ALPHA_SCALE) ? 1 : 0;
|
||||
*val = (vp_data->feature & VOP_FEATURE_ALPHA_SCALE) ? 1 : 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (property == vop2->aclk_prop) {
|
||||
if (property == private->aclk_prop) {
|
||||
/* KHZ, keep align with mode->clock */
|
||||
*val = clk_get_rate(vop2->aclk) / 1000;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (property == vop2->bg_prop) {
|
||||
if (property == private->bg_prop) {
|
||||
*val = vcstate->background;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (property == vop2->line_flag_prop) {
|
||||
if (property == private->line_flag_prop) {
|
||||
*val = vcstate->line_flag;
|
||||
return 0;
|
||||
}
|
||||
@@ -5589,10 +5586,9 @@ static int vop2_crtc_atomic_set_property(struct drm_crtc *crtc,
|
||||
uint64_t val)
|
||||
{
|
||||
struct drm_device *drm_dev = crtc->dev;
|
||||
struct rockchip_drm_private *private = drm_dev->dev_private;
|
||||
struct rockchip_crtc_state *vcstate = to_rockchip_crtc_state(state);
|
||||
struct drm_mode_config *mode_config = &drm_dev->mode_config;
|
||||
struct vop2_video_port *vp = to_vop2_video_port(crtc);
|
||||
struct vop2 *vop2 = vp->vop2;
|
||||
|
||||
if (property == mode_config->tv_left_margin_property) {
|
||||
vcstate->left_margin = val;
|
||||
@@ -5615,12 +5611,12 @@ static int vop2_crtc_atomic_set_property(struct drm_crtc *crtc,
|
||||
}
|
||||
|
||||
|
||||
if (property == vop2->bg_prop) {
|
||||
if (property == private->bg_prop) {
|
||||
vcstate->background = val;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (property == vop2->line_flag_prop) {
|
||||
if (property == private->line_flag_prop) {
|
||||
vcstate->line_flag = val;
|
||||
return 0;
|
||||
}
|
||||
@@ -6151,6 +6147,7 @@ static int vop2_create_crtc(struct vop2 *vop2)
|
||||
bool be_used_for_primary_plane = false;
|
||||
bool find_primary_plane = false;
|
||||
bool bootloader_initialized = false;
|
||||
struct rockchip_drm_private *private = drm_dev->dev_private;
|
||||
|
||||
/* all planes can attach to any crtc */
|
||||
possible_crtcs = (1 << vop2_data->nr_vps) - 1;
|
||||
@@ -6284,11 +6281,12 @@ static int vop2_create_crtc(struct vop2 *vop2)
|
||||
init_completion(&vp->line_flag_completion);
|
||||
rockchip_register_crtc_funcs(crtc, &private_crtc_funcs);
|
||||
soc_id = vop2_soc_id_fixup(soc_id);
|
||||
drm_object_attach_property(&crtc->base, vop2->soc_id_prop, soc_id);
|
||||
drm_object_attach_property(&crtc->base, vop2->vp_id_prop, vp->id);
|
||||
drm_object_attach_property(&crtc->base, vop2->aclk_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, vop2->bg_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, vop2->line_flag_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, private->soc_id_prop, soc_id);
|
||||
drm_object_attach_property(&crtc->base, private->port_id_prop, vp->id);
|
||||
drm_object_attach_property(&crtc->base, private->aclk_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, private->bg_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, private->line_flag_prop, 0);
|
||||
drm_object_attach_property(&crtc->base, private->alpha_scale_prop, 0);
|
||||
drm_object_attach_property(&crtc->base,
|
||||
drm_dev->mode_config.tv_left_margin_property, 100);
|
||||
drm_object_attach_property(&crtc->base,
|
||||
@@ -6364,7 +6362,6 @@ static int vop2_win_init(struct vop2 *vop2)
|
||||
struct drm_prop_enum_list *plane_name_list;
|
||||
struct vop2_win *win;
|
||||
struct vop2_layer *layer;
|
||||
struct drm_property *prop;
|
||||
char name[DRM_PROP_NAME_LEN];
|
||||
unsigned int num_wins = 0;
|
||||
uint8_t plane_id = 0;
|
||||
@@ -6461,27 +6458,6 @@ static int vop2_win_init(struct vop2 *vop2)
|
||||
|
||||
vop2->plane_name_list = plane_name_list;
|
||||
|
||||
prop = drm_property_create_object(vop2->drm_dev,
|
||||
DRM_MODE_PROP_ATOMIC | DRM_MODE_PROP_IMMUTABLE,
|
||||
"SOC_ID", DRM_MODE_OBJECT_CRTC);
|
||||
vop2->soc_id_prop = prop;
|
||||
|
||||
prop = drm_property_create_object(vop2->drm_dev,
|
||||
DRM_MODE_PROP_ATOMIC | DRM_MODE_PROP_IMMUTABLE,
|
||||
"PORT_ID", DRM_MODE_OBJECT_CRTC);
|
||||
vop2->vp_id_prop = prop;
|
||||
|
||||
vop2->aclk_prop = drm_property_create_range(vop2->drm_dev, 0, "ACLK", 0, UINT_MAX);
|
||||
vop2->bg_prop = drm_property_create_range(vop2->drm_dev, 0, "BACKGROUND", 0, UINT_MAX);
|
||||
|
||||
vop2->line_flag_prop = drm_property_create_range(vop2->drm_dev, 0, "LINE_FLAG1", 0, UINT_MAX);
|
||||
|
||||
if (!vop2->soc_id_prop || !vop2->vp_id_prop || !vop2->aclk_prop || !vop2->bg_prop ||
|
||||
!vop2->line_flag_prop) {
|
||||
DRM_DEV_ERROR(vop2->dev, "failed to create soc_id/vp_id/aclk property\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -646,7 +646,7 @@ static const struct vop2_video_port_data rk3568_vop_video_ports[] = {
|
||||
{
|
||||
.id = 0,
|
||||
.soc_id = { 0x3568, 0x3566 },
|
||||
.feature = VOP_FEATURE_OUTPUT_10BIT,
|
||||
.feature = VOP_FEATURE_OUTPUT_10BIT | VOP_FEATURE_ALPHA_SCALE,
|
||||
.gamma_lut_len = 1024,
|
||||
.cubic_lut_len = 729, /* 9x9x9 */
|
||||
.max_output = { 4096, 2304 },
|
||||
@@ -658,6 +658,7 @@ static const struct vop2_video_port_data rk3568_vop_video_ports[] = {
|
||||
{
|
||||
.id = 1,
|
||||
.soc_id = { 0x3568, 0x3566 },
|
||||
.feature = VOP_FEATURE_ALPHA_SCALE,
|
||||
.gamma_lut_len = 1024,
|
||||
.max_output = { 2048, 1536 },
|
||||
.pre_scan_max_dly = { 40, 40, 40, 40 },
|
||||
@@ -666,6 +667,7 @@ static const struct vop2_video_port_data rk3568_vop_video_ports[] = {
|
||||
},
|
||||
{
|
||||
.id = 2,
|
||||
.feature = VOP_FEATURE_ALPHA_SCALE,
|
||||
.soc_id = { 0x3568, 0x3566 },
|
||||
.gamma_lut_len = 1024,
|
||||
.max_output = { 1920, 1080 },
|
||||
|
||||
Reference in New Issue
Block a user