diff options
Diffstat (limited to 'include/drm')
-rw-r--r-- | include/drm/drm_atomic.h | 24 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 10 | ||||
-rw-r--r-- | include/drm/drm_crtc_helper.h | 6 | ||||
-rw-r--r-- | include/drm/drm_edid.h | 2 | ||||
-rw-r--r-- | include/drm/drm_gem.h | 14 | ||||
-rw-r--r-- | include/drm/drm_plane_helper.h | 2 |
6 files changed, 43 insertions, 15 deletions
diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h index 51168a8b723a..c157103492b0 100644 --- a/include/drm/drm_atomic.h +++ b/include/drm/drm_atomic.h | |||
@@ -75,4 +75,28 @@ int __must_check drm_atomic_check_only(struct drm_atomic_state *state); | |||
75 | int __must_check drm_atomic_commit(struct drm_atomic_state *state); | 75 | int __must_check drm_atomic_commit(struct drm_atomic_state *state); |
76 | int __must_check drm_atomic_async_commit(struct drm_atomic_state *state); | 76 | int __must_check drm_atomic_async_commit(struct drm_atomic_state *state); |
77 | 77 | ||
78 | #define for_each_connector_in_state(state, connector, connector_state, __i) \ | ||
79 | for ((__i) = 0; \ | ||
80 | (connector) = (state)->connectors[__i], \ | ||
81 | (connector_state) = (state)->connector_states[__i], \ | ||
82 | (__i) < (state)->num_connector; \ | ||
83 | (__i)++) \ | ||
84 | if (connector) | ||
85 | |||
86 | #define for_each_crtc_in_state(state, crtc, crtc_state, __i) \ | ||
87 | for ((__i) = 0; \ | ||
88 | (crtc) = (state)->crtcs[__i], \ | ||
89 | (crtc_state) = (state)->crtc_states[__i], \ | ||
90 | (__i) < (state)->dev->mode_config.num_crtc; \ | ||
91 | (__i)++) \ | ||
92 | if (crtc_state) | ||
93 | |||
94 | #define for_each_plane_in_state(state, plane, plane_state, __i) \ | ||
95 | for ((__i) = 0; \ | ||
96 | (plane) = (state)->planes[__i], \ | ||
97 | (plane_state) = (state)->plane_states[__i], \ | ||
98 | (__i) < (state)->dev->mode_config.num_total_plane; \ | ||
99 | (__i)++) \ | ||
100 | if (plane_state) | ||
101 | |||
78 | #endif /* DRM_ATOMIC_H_ */ | 102 | #endif /* DRM_ATOMIC_H_ */ |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 2e80ad1aea84..ca71c03143d1 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -466,7 +466,7 @@ struct drm_crtc { | |||
466 | int framedur_ns, linedur_ns, pixeldur_ns; | 466 | int framedur_ns, linedur_ns, pixeldur_ns; |
467 | 467 | ||
468 | /* if you are using the helper */ | 468 | /* if you are using the helper */ |
469 | void *helper_private; | 469 | const void *helper_private; |
470 | 470 | ||
471 | struct drm_object_properties properties; | 471 | struct drm_object_properties properties; |
472 | 472 | ||
@@ -596,7 +596,7 @@ struct drm_encoder { | |||
596 | struct drm_crtc *crtc; | 596 | struct drm_crtc *crtc; |
597 | struct drm_bridge *bridge; | 597 | struct drm_bridge *bridge; |
598 | const struct drm_encoder_funcs *funcs; | 598 | const struct drm_encoder_funcs *funcs; |
599 | void *helper_private; | 599 | const void *helper_private; |
600 | }; | 600 | }; |
601 | 601 | ||
602 | /* should we poll this connector for connects and disconnects */ | 602 | /* should we poll this connector for connects and disconnects */ |
@@ -700,7 +700,7 @@ struct drm_connector { | |||
700 | /* requested DPMS state */ | 700 | /* requested DPMS state */ |
701 | int dpms; | 701 | int dpms; |
702 | 702 | ||
703 | void *helper_private; | 703 | const void *helper_private; |
704 | 704 | ||
705 | /* forced on connector */ | 705 | /* forced on connector */ |
706 | struct drm_cmdline_mode cmdline_mode; | 706 | struct drm_cmdline_mode cmdline_mode; |
@@ -863,7 +863,7 @@ struct drm_plane { | |||
863 | 863 | ||
864 | enum drm_plane_type type; | 864 | enum drm_plane_type type; |
865 | 865 | ||
866 | void *helper_private; | 866 | const void *helper_private; |
867 | 867 | ||
868 | struct drm_plane_state *state; | 868 | struct drm_plane_state *state; |
869 | }; | 869 | }; |
@@ -974,7 +974,7 @@ struct drm_mode_set { | |||
974 | * struct drm_mode_config_funcs - basic driver provided mode setting functions | 974 | * struct drm_mode_config_funcs - basic driver provided mode setting functions |
975 | * @fb_create: create a new framebuffer object | 975 | * @fb_create: create a new framebuffer object |
976 | * @output_poll_changed: function to handle output configuration changes | 976 | * @output_poll_changed: function to handle output configuration changes |
977 | * @atomic_check: check whether a give atomic state update is possible | 977 | * @atomic_check: check whether a given atomic state update is possible |
978 | * @atomic_commit: commit an atomic state update previously verified with | 978 | * @atomic_commit: commit an atomic state update previously verified with |
979 | * atomic_check() | 979 | * atomic_check() |
980 | * | 980 | * |
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h index 92d5135b55d2..c8fc187061de 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h | |||
@@ -197,19 +197,19 @@ extern void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, | |||
197 | static inline void drm_crtc_helper_add(struct drm_crtc *crtc, | 197 | static inline void drm_crtc_helper_add(struct drm_crtc *crtc, |
198 | const struct drm_crtc_helper_funcs *funcs) | 198 | const struct drm_crtc_helper_funcs *funcs) |
199 | { | 199 | { |
200 | crtc->helper_private = (void *)funcs; | 200 | crtc->helper_private = funcs; |
201 | } | 201 | } |
202 | 202 | ||
203 | static inline void drm_encoder_helper_add(struct drm_encoder *encoder, | 203 | static inline void drm_encoder_helper_add(struct drm_encoder *encoder, |
204 | const struct drm_encoder_helper_funcs *funcs) | 204 | const struct drm_encoder_helper_funcs *funcs) |
205 | { | 205 | { |
206 | encoder->helper_private = (void *)funcs; | 206 | encoder->helper_private = funcs; |
207 | } | 207 | } |
208 | 208 | ||
209 | static inline void drm_connector_helper_add(struct drm_connector *connector, | 209 | static inline void drm_connector_helper_add(struct drm_connector *connector, |
210 | const struct drm_connector_helper_funcs *funcs) | 210 | const struct drm_connector_helper_funcs *funcs) |
211 | { | 211 | { |
212 | connector->helper_private = (void *)funcs; | 212 | connector->helper_private = funcs; |
213 | } | 213 | } |
214 | 214 | ||
215 | extern void drm_helper_resume_force_mode(struct drm_device *dev); | 215 | extern void drm_helper_resume_force_mode(struct drm_device *dev); |
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index 87d85e81d3a7..799050198323 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h | |||
@@ -215,6 +215,8 @@ struct detailed_timing { | |||
215 | #define DRM_ELD_VER 0 | 215 | #define DRM_ELD_VER 0 |
216 | # define DRM_ELD_VER_SHIFT 3 | 216 | # define DRM_ELD_VER_SHIFT 3 |
217 | # define DRM_ELD_VER_MASK (0x1f << 3) | 217 | # define DRM_ELD_VER_MASK (0x1f << 3) |
218 | # define DRM_ELD_VER_CEA861D (2 << 3) /* supports 861D or below */ | ||
219 | # define DRM_ELD_VER_CANNED (0x1f << 3) | ||
218 | 220 | ||
219 | #define DRM_ELD_BASELINE_ELD_LEN 2 /* in dwords! */ | 221 | #define DRM_ELD_BASELINE_ELD_LEN 2 /* in dwords! */ |
220 | 222 | ||
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index 1e6ae1458f7a..7a592d7e398b 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h | |||
@@ -149,14 +149,16 @@ drm_gem_object_unreference(struct drm_gem_object *obj) | |||
149 | static inline void | 149 | static inline void |
150 | drm_gem_object_unreference_unlocked(struct drm_gem_object *obj) | 150 | drm_gem_object_unreference_unlocked(struct drm_gem_object *obj) |
151 | { | 151 | { |
152 | if (obj && !atomic_add_unless(&obj->refcount.refcount, -1, 1)) { | 152 | struct drm_device *dev; |
153 | struct drm_device *dev = obj->dev; | 153 | |
154 | if (!obj) | ||
155 | return; | ||
154 | 156 | ||
155 | mutex_lock(&dev->struct_mutex); | 157 | dev = obj->dev; |
156 | if (likely(atomic_dec_and_test(&obj->refcount.refcount))) | 158 | if (kref_put_mutex(&obj->refcount, drm_gem_object_free, &dev->struct_mutex)) |
157 | drm_gem_object_free(&obj->refcount); | ||
158 | mutex_unlock(&dev->struct_mutex); | 159 | mutex_unlock(&dev->struct_mutex); |
159 | } | 160 | else |
161 | might_lock(&dev->struct_mutex); | ||
160 | } | 162 | } |
161 | 163 | ||
162 | int drm_gem_handle_create(struct drm_file *file_priv, | 164 | int drm_gem_handle_create(struct drm_file *file_priv, |
diff --git a/include/drm/drm_plane_helper.h b/include/drm/drm_plane_helper.h index e48157a5a59c..96e16283afb9 100644 --- a/include/drm/drm_plane_helper.h +++ b/include/drm/drm_plane_helper.h | |||
@@ -76,7 +76,7 @@ struct drm_plane_helper_funcs { | |||
76 | static inline void drm_plane_helper_add(struct drm_plane *plane, | 76 | static inline void drm_plane_helper_add(struct drm_plane *plane, |
77 | const struct drm_plane_helper_funcs *funcs) | 77 | const struct drm_plane_helper_funcs *funcs) |
78 | { | 78 | { |
79 | plane->helper_private = (void *)funcs; | 79 | plane->helper_private = funcs; |
80 | } | 80 | } |
81 | 81 | ||
82 | extern int drm_plane_helper_check_update(struct drm_plane *plane, | 82 | extern int drm_plane_helper_check_update(struct drm_plane *plane, |