aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-12-04 03:46:01 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-12-08 10:13:52 -0500
commitc6b0ca3ea8366d1954c7825d0f67bc833b8e10df (patch)
tree0354a81b5a3fd6459e9b9df2e326ae0343e26721
parentf6da8c6e5ee378c82f20ad07f84556befc7b58e9 (diff)
drm: Add kerneldoc for drm_framebuffer_funcs
While typing these I noticed that ->dirty is a bit a can of worms and even supports blt/fill semantics ... shocked me a bit. Oh well it's defined in a way that nothing bad (just a bit of inefficiency) will happen for drivers which supports this. So I didn't bother copying the detailed spec into the new kerneldoc. v2: Suggestions from Thierry. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1449218769-16577-21-git-send-email-daniel.vetter@ffwll.ch Reviewed-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--include/drm/drm_crtc.h68
1 files changed, 50 insertions, 18 deletions
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 44a98082d409..f09391f9cac0 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -162,23 +162,55 @@ struct drm_tile_group {
162 u8 group_data[8]; 162 u8 group_data[8];
163}; 163};
164 164
165/**
166 * struct drm_framebuffer_funcs - framebuffer hooks
167 */
165struct drm_framebuffer_funcs { 168struct drm_framebuffer_funcs {
166 /* note: use drm_framebuffer_remove() */ 169 /**
170 * @destroy:
171 *
172 * Clean up framebuffer resources, specifically also unreference the
173 * backing storage. The core guarantees to call this function for every
174 * framebuffer successfully created by ->fb_create() in
175 * &drm_mode_config_funcs.
176 */
167 void (*destroy)(struct drm_framebuffer *framebuffer); 177 void (*destroy)(struct drm_framebuffer *framebuffer);
178
179 /**
180 * @create_handle:
181 *
182 * Create a buffer handle in the driver-specific buffer manager (either
183 * GEM or TTM) valid for the passed-in struct &drm_file. This is used by
184 * the core to implement the GETFB IOCTL, which returns (for
185 * sufficiently priviledged user) also a native buffer handle. This can
186 * be used for seamless transitions between modesetting clients by
187 * copying the current screen contents to a private buffer and blending
188 * between that and the new contents.
189 *
190 * RETURNS:
191 *
192 * 0 on success or a negative error code on failure.
193 */
168 int (*create_handle)(struct drm_framebuffer *fb, 194 int (*create_handle)(struct drm_framebuffer *fb,
169 struct drm_file *file_priv, 195 struct drm_file *file_priv,
170 unsigned int *handle); 196 unsigned int *handle);
171 /* 197 /**
172 * Optional callback for the dirty fb ioctl. 198 * @dirty:
173 * 199 *
174 * Userspace can notify the driver via this callback 200 * Optional callback for the dirty fb IOCTL.
175 * that a area of the framebuffer has changed and should
176 * be flushed to the display hardware.
177 * 201 *
178 * See documentation in drm_mode.h for the struct 202 * Userspace can notify the driver via this callback that an area of the
179 * drm_mode_fb_dirty_cmd for more information as all 203 * framebuffer has changed and should be flushed to the display
180 * the semantics and arguments have a one to one mapping 204 * hardware. This can also be used internally, e.g. by the fbdev
181 * on this function. 205 * emulation, though that's not the case currently.
206 *
207 * See documentation in drm_mode.h for the struct drm_mode_fb_dirty_cmd
208 * for more information as all the semantics and arguments have a one to
209 * one mapping on this function.
210 *
211 * RETURNS:
212 *
213 * 0 on success or a negative error code on failure.
182 */ 214 */
183 int (*dirty)(struct drm_framebuffer *framebuffer, 215 int (*dirty)(struct drm_framebuffer *framebuffer,
184 struct drm_file *file_priv, unsigned flags, 216 struct drm_file *file_priv, unsigned flags,
@@ -627,7 +659,7 @@ struct drm_crtc_funcs {
627 * @atomic_get_property: 659 * @atomic_get_property:
628 * 660 *
629 * Reads out the decoded driver-private property. This is used to 661 * Reads out the decoded driver-private property. This is used to
630 * implement the GETCRTC ioctl. 662 * implement the GETCRTC IOCTL.
631 * 663 *
632 * Do not call this function directly, use 664 * Do not call this function directly, use
633 * drm_atomic_crtc_get_property() instead. 665 * drm_atomic_crtc_get_property() instead.
@@ -670,7 +702,7 @@ struct drm_crtc_funcs {
670 * @properties: property tracking for this CRTC 702 * @properties: property tracking for this CRTC
671 * @state: current atomic state for this CRTC 703 * @state: current atomic state for this CRTC
672 * @acquire_ctx: per-CRTC implicit acquire context used by atomic drivers for 704 * @acquire_ctx: per-CRTC implicit acquire context used by atomic drivers for
673 * legacy ioctls 705 * legacy IOCTLs
674 * 706 *
675 * Each CRTC may have one or more connectors associated with it. This structure 707 * Each CRTC may have one or more connectors associated with it. This structure
676 * allows the CRTC to be controlled. 708 * allows the CRTC to be controlled.
@@ -724,7 +756,7 @@ struct drm_crtc {
724 struct drm_crtc_state *state; 756 struct drm_crtc_state *state;
725 757
726 /* 758 /*
727 * For legacy crtc ioctls so that atomic drivers can get at the locking 759 * For legacy crtc IOCTLs so that atomic drivers can get at the locking
728 * acquire context. 760 * acquire context.
729 */ 761 */
730 struct drm_modeset_acquire_ctx *acquire_ctx; 762 struct drm_modeset_acquire_ctx *acquire_ctx;
@@ -968,7 +1000,7 @@ struct drm_connector_funcs {
968 * @atomic_get_property: 1000 * @atomic_get_property:
969 * 1001 *
970 * Reads out the decoded driver-private property. This is used to 1002 * Reads out the decoded driver-private property. This is used to
971 * implement the GETCONNECTOR ioctl. 1003 * implement the GETCONNECTOR IOCTL.
972 * 1004 *
973 * Do not call this function directly, use 1005 * Do not call this function directly, use
974 * drm_atomic_connector_get_property() instead. 1006 * drm_atomic_connector_get_property() instead.
@@ -1269,7 +1301,7 @@ struct drm_plane_funcs {
1269 * @disable_plane: 1301 * @disable_plane:
1270 * 1302 *
1271 * This is the legacy entry point to disable the plane. The DRM core 1303 * This is the legacy entry point to disable the plane. The DRM core
1272 * calls this method in response to a DRM_IOCTL_MODE_SETPLANE ioctl call 1304 * calls this method in response to a DRM_IOCTL_MODE_SETPLANE IOCTL call
1273 * with the frame buffer ID set to 0. Disabled planes must not be 1305 * with the frame buffer ID set to 0. Disabled planes must not be
1274 * processed by the CRTC. 1306 * processed by the CRTC.
1275 * 1307 *
@@ -1413,7 +1445,7 @@ struct drm_plane_funcs {
1413 * @atomic_get_property: 1445 * @atomic_get_property:
1414 * 1446 *
1415 * Reads out the decoded driver-private property. This is used to 1447 * Reads out the decoded driver-private property. This is used to
1416 * implement the GETPLANE ioctl. 1448 * implement the GETPLANE IOCTL.
1417 * 1449 *
1418 * Do not call this function directly, use 1450 * Do not call this function directly, use
1419 * drm_atomic_plane_get_property() instead. 1451 * drm_atomic_plane_get_property() instead.
@@ -1628,7 +1660,7 @@ struct drm_bridge {
1628 * struct drm_atomic_state - the global state object for atomic updates 1660 * struct drm_atomic_state - the global state object for atomic updates
1629 * @dev: parent DRM device 1661 * @dev: parent DRM device
1630 * @allow_modeset: allow full modeset 1662 * @allow_modeset: allow full modeset
1631 * @legacy_cursor_update: hint to enforce legacy cursor ioctl semantics 1663 * @legacy_cursor_update: hint to enforce legacy cursor IOCTL semantics
1632 * @planes: pointer to array of plane pointers 1664 * @planes: pointer to array of plane pointers
1633 * @plane_states: pointer to array of plane states pointers 1665 * @plane_states: pointer to array of plane states pointers
1634 * @crtcs: pointer to array of CRTC pointers 1666 * @crtcs: pointer to array of CRTC pointers
@@ -1716,7 +1748,7 @@ struct drm_mode_config_funcs {
1716 * @mutex: mutex protecting KMS related lists and structures 1748 * @mutex: mutex protecting KMS related lists and structures
1717 * @connection_mutex: ww mutex protecting connector state and routing 1749 * @connection_mutex: ww mutex protecting connector state and routing
1718 * @acquire_ctx: global implicit acquire context used by atomic drivers for 1750 * @acquire_ctx: global implicit acquire context used by atomic drivers for
1719 * legacy ioctls 1751 * legacy IOCTLs
1720 * @idr_mutex: mutex for KMS ID allocation and management 1752 * @idr_mutex: mutex for KMS ID allocation and management
1721 * @crtc_idr: main KMS ID tracking object 1753 * @crtc_idr: main KMS ID tracking object
1722 * @fb_lock: mutex to protect fb state and lists 1754 * @fb_lock: mutex to protect fb state and lists