10/25/2011 06:46 PM, Jesse Barnes ? ?: [snip] > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 8020798..d7f03aa 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -44,6 +44,7 @@ struct drm_framebuffer; > #define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0 > #define DRM_MODE_OBJECT_FB 0xfbfbfbfb > #define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb > +#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee > > struct drm_mode_object { > uint32_t id; > @@ -278,6 +279,7 @@ struct drm_crtc; > struct drm_connector; > struct drm_encoder; > struct drm_pending_vblank_event; > +struct drm_plane; > > /** > * drm_crtc_funcs - control CRTCs for a given device > @@ -536,6 +538,58 @@ struct drm_connector { > }; > > /** > + * drm_plane_funcs - driver plane control functions > + * @update_plane: update the plane configuration > + */ > +struct drm_plane_funcs { > + int (*update_plane)(struct drm_plane *plane, > + struct drm_crtc *crtc, struct drm_framebuffer *fb, > + int crtc_x, int crtc_y, > + unsigned int crtc_w, unsigned int crtc_h, > + uint32_t src_x, uint32_t src_y, > + uint32_t src_w, uint32_t src_h); > + int (*disable_plane)(struct drm_plane *plane); > +};
How about add destroy() function and call it in drm_mode_config_cleanup()?