diff options
author | Paulo Zanoni <paulo.r.zanoni@intel.com> | 2012-05-15 17:09:05 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-05-17 06:11:46 -0400 |
commit | bffd9de0297702566e6aec0678c7ebc3806fe3db (patch) | |
tree | e94c9388bb9f6c765f8bc47b26f92b7d2ac75ae3 /drivers/gpu/drm/drm_crtc.c | |
parent | 7f88a9bedfb814a2d4d537db8295c524298256cb (diff) |
drm: add CRTC properties
The i915 driver needs this for the rotation and overscan compensation
properties. Other drivers might need this too.
Reviewed-by: Rob Clark <rob.clark@linaro.org>
Tested-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 368e3e72a45..a177d0abb8b 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -384,6 +384,8 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, | |||
384 | if (ret) | 384 | if (ret) |
385 | goto out; | 385 | goto out; |
386 | 386 | ||
387 | crtc->base.properties = &crtc->properties; | ||
388 | |||
387 | list_add_tail(&crtc->head, &dev->mode_config.crtc_list); | 389 | list_add_tail(&crtc->head, &dev->mode_config.crtc_list); |
388 | dev->mode_config.num_crtc++; | 390 | dev->mode_config.num_crtc++; |
389 | 391 | ||
@@ -3141,6 +3143,21 @@ static int drm_mode_connector_set_obj_prop(struct drm_mode_object *obj, | |||
3141 | return ret; | 3143 | return ret; |
3142 | } | 3144 | } |
3143 | 3145 | ||
3146 | static int drm_mode_crtc_set_obj_prop(struct drm_mode_object *obj, | ||
3147 | struct drm_property *property, | ||
3148 | uint64_t value) | ||
3149 | { | ||
3150 | int ret = -EINVAL; | ||
3151 | struct drm_crtc *crtc = obj_to_crtc(obj); | ||
3152 | |||
3153 | if (crtc->funcs->set_property) | ||
3154 | ret = crtc->funcs->set_property(crtc, property, value); | ||
3155 | if (!ret) | ||
3156 | drm_object_property_set_value(obj, property, value); | ||
3157 | |||
3158 | return ret; | ||
3159 | } | ||
3160 | |||
3144 | int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data, | 3161 | int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data, |
3145 | struct drm_file *file_priv) | 3162 | struct drm_file *file_priv) |
3146 | { | 3163 | { |
@@ -3239,6 +3256,9 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data, | |||
3239 | ret = drm_mode_connector_set_obj_prop(arg_obj, property, | 3256 | ret = drm_mode_connector_set_obj_prop(arg_obj, property, |
3240 | arg->value); | 3257 | arg->value); |
3241 | break; | 3258 | break; |
3259 | case DRM_MODE_OBJECT_CRTC: | ||
3260 | ret = drm_mode_crtc_set_obj_prop(arg_obj, property, arg->value); | ||
3261 | break; | ||
3242 | } | 3262 | } |
3243 | 3263 | ||
3244 | out: | 3264 | out: |