Message ID | 1483044517-5770-14-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Daniel, Thank you for the patch. On Thursday 29 Dec 2016 21:48:34 Daniel Vetter wrote: > I just learned that &struct_name.member_name works and looks pretty > even. It doesn't (yet) link to the member directly though, which would > be really good for big structures or vfunc tables (where the > per-member kerneldoc tends to be long). > > Also some minor drive-by polish where it makes sense, I read a lot > of docs ... > > Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > --- > drivers/gpu/drm/drm_fb_cma_helper.c | 24 ++++++++++++------------ > drivers/gpu/drm/drm_gem_cma_helper.c | 16 ++++++++-------- > 2 files changed, 20 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c > b/drivers/gpu/drm/drm_fb_cma_helper.c index ec081727cd5a..0a0ac77b464b > 100644 > --- a/drivers/gpu/drm/drm_fb_cma_helper.c > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c > @@ -48,14 +48,14 @@ struct drm_fbdev_cma { > * Provides helper functions for creating a cma (contiguous memory > allocator) > * backed framebuffer. > * > - * drm_fb_cma_create() is used in the &drm_mode_config_funcs ->fb_create > + * drm_fb_cma_create() is used in the &drm_mode_config_funcs.fb_create > * callback function to create a cma backed framebuffer. > * > * An fbdev framebuffer backed by cma is also available by calling > * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down. > - * If the &drm_framebuffer_funcs ->dirty callback is set, fb_deferred_io > - * will be set up automatically. dirty() is called by > - * drm_fb_helper_deferred_io() in process context (struct delayed_work). > + * If the &drm_framebuffer_funcs.dirty callback is set, fb_deferred_io will > be > + * set up automatically. &drm_framebuffer_funcs.dirty is called by > + * drm_fb_helper_deferred_io() in process context (&struct delayed_work). > * > * Example fbdev deferred io code:: > * > @@ -155,16 +155,16 @@ static struct drm_fb_cma *drm_fb_cma_alloc(struct > drm_device *dev, > > /** > * drm_fb_cma_create_with_funcs() - helper function for the > - * &drm_mode_config_funcs ->fb_create > - * callback function > + * &drm_mode_config_funcs.fb_create > + * callback > * @dev: DRM device > * @file_priv: drm file for the ioctl call > * @mode_cmd: metadata from the userspace fb creation request > * @funcs: vtable to be used for the new framebuffer object > * > * This can be used to set &drm_framebuffer_funcs for drivers that need the > - * dirty() callback. Use drm_fb_cma_create() if you don't need to change > - * &drm_framebuffer_funcs. > + * &drm_framebuffer_funcs.dirty callback. Use drm_fb_cma_create() if you > don't > + * need to change &drm_framebuffer_funcs. > */ > struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device > *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd, > @@ -221,14 +221,14 @@ struct drm_framebuffer > *drm_fb_cma_create_with_funcs(struct drm_device *dev, > EXPORT_SYMBOL_GPL(drm_fb_cma_create_with_funcs); > > /** > - * drm_fb_cma_create() - &drm_mode_config_funcs ->fb_create callback > function > + * drm_fb_cma_create() - &drm_mode_config_funcs.fb_create callback function > * @dev: DRM device > * @file_priv: drm file for the ioctl call > * @mode_cmd: metadata from the userspace fb creation request > * > * If your hardware has special alignment or pitch requirements these > should be > * checked before calling this function. Use drm_fb_cma_create_with_funcs() > if > - * you need to set &drm_framebuffer_funcs ->dirty. > + * you need to set &drm_framebuffer_funcs.dirty. > */ > struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev, > struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) > @@ -264,7 +264,7 @@ EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj); > * @plane: Which plane > * @state: Plane state attach fence to > * > - * This should be put into prepare_fb hook of &struct > drm_plane_helper_funcs . > + * This should be set as the &struct drm_plane_helper_funcs.prepare_fb > hook. > * > * This function checks if the plane FB has an dma-buf attached, extracts > * the exclusive fence and attaches it to plane state for the atomic helper > @@ -491,7 +491,7 @@ static const struct drm_fb_helper_funcs > drm_fb_cma_helper_funcs = { * @preferred_bpp: Preferred bits per pixel for > the device > * @num_crtc: Number of CRTCs > * @max_conn_count: Maximum number of connectors > - * @funcs: fb helper functions, in particular fb_probe() > + * @funcs: fb helper functions, in particular a custom dirty() callback Doesn't this belong to a different patch ? > * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR. > */ > diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c > b/drivers/gpu/drm/drm_gem_cma_helper.c index 1d6c335584ec..6ec2d8096b2c > 100644 > --- a/drivers/gpu/drm/drm_gem_cma_helper.c > +++ b/drivers/gpu/drm/drm_gem_cma_helper.c > @@ -177,7 +177,7 @@ drm_gem_cma_create_with_handle(struct drm_file > *file_priv, > * This function frees the backing memory of the CMA GEM object, cleans up > the > * GEM object state and frees the memory used to store the object itself. > * Drivers using the CMA helpers should set this as their DRM driver's > - * ->gem_free_object() callback. > + * &drm_driver.gem_free_object callback. How about s/DRM driver's // here and below ? It's kind of redundant now that you reference drm_driver directly, and some of the functions already don't mention "DRM driver's" in their documentation. Apart from that, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > */ > void drm_gem_cma_free_object(struct drm_gem_object *gem_obj) > { > @@ -207,7 +207,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_free_object); > * This aligns the pitch and size arguments to the minimum required. This > is * an internal helper that can be wrapped by a driver to account for > hardware * with more specific alignment requirements. It should not be used > directly - * as the ->dumb_create() callback in a DRM driver. > + * as the &drm_driver.dumb_create callback in a DRM driver. > * > * Returns: > * 0 on success or a negative error code on failure. > @@ -240,7 +240,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create_internal); > * This function computes the pitch of the dumb buffer and rounds it up to > an * integer number of bytes per pixel. Drivers for hardware that doesn't > have * any additional restrictions on the pitch can directly use this > function as - * their ->dumb_create() callback. > + * their &drm_driver.dumb_create callback. > * > * For hardware with additional restrictions, drivers can adjust the fields > * set up by userspace and pass the IOCTL data along to the > @@ -274,7 +274,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create); > * > * This function look up an object by its handle and returns the fake mmap > * offset associated with it. Drivers using the CMA helpers should set this > - * as their DRM driver's ->dumb_map_offset() callback. > + * as their DRM driver's &drm_driver.dumb_map_offset callback. > * > * Returns: > * 0 on success or a negative error code on failure. > @@ -391,7 +391,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_describe); > * > * This function exports a scatter/gather table suitable for PRIME usage by > * calling the standard DMA mapping API. Drivers using the CMA helpers > should - * set this as their DRM driver's ->gem_prime_get_sg_table() > callback. + * set this as their DRM driver's > &drm_driver.gem_prime_get_sg_table callback. * > * Returns: > * A pointer to the scatter/gather table of pinned pages or NULL on > failure. @@ -430,7 +430,7 @@ > EXPORT_SYMBOL_GPL(drm_gem_cma_prime_get_sg_table); * another driver. > Imported buffers must be physically contiguous in memory * (i.e. the > scatter/gather table must contain a single entry). Drivers that * use the > CMA helpers should set this as their DRM driver's > - * ->gem_prime_import_sg_table() callback. > + * &drm_driver.gem_prime_import_sg_table callback. > * > * Returns: > * A pointer to a newly created GEM object or an ERR_PTR-encoded negative > @@ -496,7 +496,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_mmap); > * virtual address space. Since the CMA buffers are already mapped into the > * kernel virtual address space this simply returns the cached virtual * > address. Drivers using the CMA helpers should set this as their DRM - * > driver's ->gem_prime_vmap() callback. > + * driver's &drm_driver.gem_prime_vmap callback. > * > * Returns: > * The kernel virtual address of the CMA GEM object's backing store. > @@ -518,7 +518,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_vmap); > * This function removes a buffer exported via DRM PRIME from the kernel's > * virtual address space. This is a no-op because CMA buffers cannot be > * unmapped from kernel space. Drivers using the CMA helpers should set > this - * as their DRM driver's ->gem_prime_vunmap() callback. > + * as their DRM driver's &drm_driver.gem_prime_vunmap callback. > */ > void drm_gem_cma_prime_vunmap(struct drm_gem_object *obj, void *vaddr) > {
On Fri, Dec 30, 2016 at 04:11:44PM +0200, Laurent Pinchart wrote: > Hi Daniel, > > Thank you for the patch. > > On Thursday 29 Dec 2016 21:48:34 Daniel Vetter wrote: > > I just learned that &struct_name.member_name works and looks pretty > > even. It doesn't (yet) link to the member directly though, which would > > be really good for big structures or vfunc tables (where the > > per-member kerneldoc tends to be long). > > > > Also some minor drive-by polish where it makes sense, I read a lot > > of docs ... > > > > Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > Cc: Chris Wilson <chris@chris-wilson.co.uk> > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > > --- > > drivers/gpu/drm/drm_fb_cma_helper.c | 24 ++++++++++++------------ > > drivers/gpu/drm/drm_gem_cma_helper.c | 16 ++++++++-------- > > 2 files changed, 20 insertions(+), 20 deletions(-) > > > > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c > > b/drivers/gpu/drm/drm_fb_cma_helper.c index ec081727cd5a..0a0ac77b464b > > 100644 > > --- a/drivers/gpu/drm/drm_fb_cma_helper.c > > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c > > @@ -48,14 +48,14 @@ struct drm_fbdev_cma { > > * Provides helper functions for creating a cma (contiguous memory > > allocator) > > * backed framebuffer. > > * > > - * drm_fb_cma_create() is used in the &drm_mode_config_funcs ->fb_create > > + * drm_fb_cma_create() is used in the &drm_mode_config_funcs.fb_create > > * callback function to create a cma backed framebuffer. > > * > > * An fbdev framebuffer backed by cma is also available by calling > > * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down. > > - * If the &drm_framebuffer_funcs ->dirty callback is set, fb_deferred_io > > - * will be set up automatically. dirty() is called by > > - * drm_fb_helper_deferred_io() in process context (struct delayed_work). > > + * If the &drm_framebuffer_funcs.dirty callback is set, fb_deferred_io will > > be > > + * set up automatically. &drm_framebuffer_funcs.dirty is called by > > + * drm_fb_helper_deferred_io() in process context (&struct delayed_work). > > * > > * Example fbdev deferred io code:: > > * > > @@ -155,16 +155,16 @@ static struct drm_fb_cma *drm_fb_cma_alloc(struct > > drm_device *dev, > > > > /** > > * drm_fb_cma_create_with_funcs() - helper function for the > > - * &drm_mode_config_funcs ->fb_create > > - * callback function > > + * &drm_mode_config_funcs.fb_create > > + * callback > > * @dev: DRM device > > * @file_priv: drm file for the ioctl call > > * @mode_cmd: metadata from the userspace fb creation request > > * @funcs: vtable to be used for the new framebuffer object > > * > > * This can be used to set &drm_framebuffer_funcs for drivers that need the > > - * dirty() callback. Use drm_fb_cma_create() if you don't need to change > > - * &drm_framebuffer_funcs. > > + * &drm_framebuffer_funcs.dirty callback. Use drm_fb_cma_create() if you > > don't > > + * need to change &drm_framebuffer_funcs. > > */ > > struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device > > *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd, > > @@ -221,14 +221,14 @@ struct drm_framebuffer > > *drm_fb_cma_create_with_funcs(struct drm_device *dev, > > EXPORT_SYMBOL_GPL(drm_fb_cma_create_with_funcs); > > > > /** > > - * drm_fb_cma_create() - &drm_mode_config_funcs ->fb_create callback > > function > > + * drm_fb_cma_create() - &drm_mode_config_funcs.fb_create callback function > > * @dev: DRM device > > * @file_priv: drm file for the ioctl call > > * @mode_cmd: metadata from the userspace fb creation request > > * > > * If your hardware has special alignment or pitch requirements these > > should be > > * checked before calling this function. Use drm_fb_cma_create_with_funcs() > > if > > - * you need to set &drm_framebuffer_funcs ->dirty. > > + * you need to set &drm_framebuffer_funcs.dirty. > > */ > > struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev, > > struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) > > @@ -264,7 +264,7 @@ EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj); > > * @plane: Which plane > > * @state: Plane state attach fence to > > * > > - * This should be put into prepare_fb hook of &struct > > drm_plane_helper_funcs . > > + * This should be set as the &struct drm_plane_helper_funcs.prepare_fb > > hook. > > * > > * This function checks if the plane FB has an dma-buf attached, extracts > > * the exclusive fence and attaches it to plane state for the atomic helper > > @@ -491,7 +491,7 @@ static const struct drm_fb_helper_funcs > > drm_fb_cma_helper_funcs = { * @preferred_bpp: Preferred bits per pixel for > > the device > > * @num_crtc: Number of CRTCs > > * @max_conn_count: Maximum number of connectors > > - * @funcs: fb helper functions, in particular fb_probe() > > + * @funcs: fb helper functions, in particular a custom dirty() callback > > Doesn't this belong to a different patch ? Yup, that shoudl have been in the previous cma patch. I moved it while applying. > > > * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR. > > */ > > diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c > > b/drivers/gpu/drm/drm_gem_cma_helper.c index 1d6c335584ec..6ec2d8096b2c > > 100644 > > --- a/drivers/gpu/drm/drm_gem_cma_helper.c > > +++ b/drivers/gpu/drm/drm_gem_cma_helper.c > > @@ -177,7 +177,7 @@ drm_gem_cma_create_with_handle(struct drm_file > > *file_priv, > > * This function frees the backing memory of the CMA GEM object, cleans up > > the > > * GEM object state and frees the memory used to store the object itself. > > * Drivers using the CMA helpers should set this as their DRM driver's > > - * ->gem_free_object() callback. > > + * &drm_driver.gem_free_object callback. > > How about s/DRM driver's // here and below ? It's kind of redundant now that > you reference drm_driver directly, and some of the functions already don't > mention "DRM driver's" in their documentation. Yeah, good idea. I did that while applying, and in doing so noticed 3 more cases where we can replace a prose reference with a proper one. > Apart from that, > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks for the review, both cma patches applied. -Daniel
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c index ec081727cd5a..0a0ac77b464b 100644 --- a/drivers/gpu/drm/drm_fb_cma_helper.c +++ b/drivers/gpu/drm/drm_fb_cma_helper.c @@ -48,14 +48,14 @@ struct drm_fbdev_cma { * Provides helper functions for creating a cma (contiguous memory allocator) * backed framebuffer. * - * drm_fb_cma_create() is used in the &drm_mode_config_funcs ->fb_create + * drm_fb_cma_create() is used in the &drm_mode_config_funcs.fb_create * callback function to create a cma backed framebuffer. * * An fbdev framebuffer backed by cma is also available by calling * drm_fbdev_cma_init(). drm_fbdev_cma_fini() tears it down. - * If the &drm_framebuffer_funcs ->dirty callback is set, fb_deferred_io - * will be set up automatically. dirty() is called by - * drm_fb_helper_deferred_io() in process context (struct delayed_work). + * If the &drm_framebuffer_funcs.dirty callback is set, fb_deferred_io will be + * set up automatically. &drm_framebuffer_funcs.dirty is called by + * drm_fb_helper_deferred_io() in process context (&struct delayed_work). * * Example fbdev deferred io code:: * @@ -155,16 +155,16 @@ static struct drm_fb_cma *drm_fb_cma_alloc(struct drm_device *dev, /** * drm_fb_cma_create_with_funcs() - helper function for the - * &drm_mode_config_funcs ->fb_create - * callback function + * &drm_mode_config_funcs.fb_create + * callback * @dev: DRM device * @file_priv: drm file for the ioctl call * @mode_cmd: metadata from the userspace fb creation request * @funcs: vtable to be used for the new framebuffer object * * This can be used to set &drm_framebuffer_funcs for drivers that need the - * dirty() callback. Use drm_fb_cma_create() if you don't need to change - * &drm_framebuffer_funcs. + * &drm_framebuffer_funcs.dirty callback. Use drm_fb_cma_create() if you don't + * need to change &drm_framebuffer_funcs. */ struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd, @@ -221,14 +221,14 @@ struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device *dev, EXPORT_SYMBOL_GPL(drm_fb_cma_create_with_funcs); /** - * drm_fb_cma_create() - &drm_mode_config_funcs ->fb_create callback function + * drm_fb_cma_create() - &drm_mode_config_funcs.fb_create callback function * @dev: DRM device * @file_priv: drm file for the ioctl call * @mode_cmd: metadata from the userspace fb creation request * * If your hardware has special alignment or pitch requirements these should be * checked before calling this function. Use drm_fb_cma_create_with_funcs() if - * you need to set &drm_framebuffer_funcs ->dirty. + * you need to set &drm_framebuffer_funcs.dirty. */ struct drm_framebuffer *drm_fb_cma_create(struct drm_device *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) @@ -264,7 +264,7 @@ EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj); * @plane: Which plane * @state: Plane state attach fence to * - * This should be put into prepare_fb hook of &struct drm_plane_helper_funcs . + * This should be set as the &struct drm_plane_helper_funcs.prepare_fb hook. * * This function checks if the plane FB has an dma-buf attached, extracts * the exclusive fence and attaches it to plane state for the atomic helper @@ -491,7 +491,7 @@ static const struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = { * @preferred_bpp: Preferred bits per pixel for the device * @num_crtc: Number of CRTCs * @max_conn_count: Maximum number of connectors - * @funcs: fb helper functions, in particular fb_probe() + * @funcs: fb helper functions, in particular a custom dirty() callback * * Returns a newly allocated drm_fbdev_cma struct or a ERR_PTR. */ diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c index 1d6c335584ec..6ec2d8096b2c 100644 --- a/drivers/gpu/drm/drm_gem_cma_helper.c +++ b/drivers/gpu/drm/drm_gem_cma_helper.c @@ -177,7 +177,7 @@ drm_gem_cma_create_with_handle(struct drm_file *file_priv, * This function frees the backing memory of the CMA GEM object, cleans up the * GEM object state and frees the memory used to store the object itself. * Drivers using the CMA helpers should set this as their DRM driver's - * ->gem_free_object() callback. + * &drm_driver.gem_free_object callback. */ void drm_gem_cma_free_object(struct drm_gem_object *gem_obj) { @@ -207,7 +207,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_free_object); * This aligns the pitch and size arguments to the minimum required. This is * an internal helper that can be wrapped by a driver to account for hardware * with more specific alignment requirements. It should not be used directly - * as the ->dumb_create() callback in a DRM driver. + * as the &drm_driver.dumb_create callback in a DRM driver. * * Returns: * 0 on success or a negative error code on failure. @@ -240,7 +240,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create_internal); * This function computes the pitch of the dumb buffer and rounds it up to an * integer number of bytes per pixel. Drivers for hardware that doesn't have * any additional restrictions on the pitch can directly use this function as - * their ->dumb_create() callback. + * their &drm_driver.dumb_create callback. * * For hardware with additional restrictions, drivers can adjust the fields * set up by userspace and pass the IOCTL data along to the @@ -274,7 +274,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_create); * * This function look up an object by its handle and returns the fake mmap * offset associated with it. Drivers using the CMA helpers should set this - * as their DRM driver's ->dumb_map_offset() callback. + * as their DRM driver's &drm_driver.dumb_map_offset callback. * * Returns: * 0 on success or a negative error code on failure. @@ -391,7 +391,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_describe); * * This function exports a scatter/gather table suitable for PRIME usage by * calling the standard DMA mapping API. Drivers using the CMA helpers should - * set this as their DRM driver's ->gem_prime_get_sg_table() callback. + * set this as their DRM driver's &drm_driver.gem_prime_get_sg_table callback. * * Returns: * A pointer to the scatter/gather table of pinned pages or NULL on failure. @@ -430,7 +430,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_get_sg_table); * another driver. Imported buffers must be physically contiguous in memory * (i.e. the scatter/gather table must contain a single entry). Drivers that * use the CMA helpers should set this as their DRM driver's - * ->gem_prime_import_sg_table() callback. + * &drm_driver.gem_prime_import_sg_table callback. * * Returns: * A pointer to a newly created GEM object or an ERR_PTR-encoded negative @@ -496,7 +496,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_mmap); * virtual address space. Since the CMA buffers are already mapped into the * kernel virtual address space this simply returns the cached virtual * address. Drivers using the CMA helpers should set this as their DRM - * driver's ->gem_prime_vmap() callback. + * driver's &drm_driver.gem_prime_vmap callback. * * Returns: * The kernel virtual address of the CMA GEM object's backing store. @@ -518,7 +518,7 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_vmap); * This function removes a buffer exported via DRM PRIME from the kernel's * virtual address space. This is a no-op because CMA buffers cannot be * unmapped from kernel space. Drivers using the CMA helpers should set this - * as their DRM driver's ->gem_prime_vunmap() callback. + * as their DRM driver's &drm_driver.gem_prime_vunmap callback. */ void drm_gem_cma_prime_vunmap(struct drm_gem_object *obj, void *vaddr) {
I just learned that &struct_name.member_name works and looks pretty even. It doesn't (yet) link to the member directly though, which would be really good for big structures or vfunc tables (where the per-member kerneldoc tends to be long). Also some minor drive-by polish where it makes sense, I read a lot of docs ... Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- drivers/gpu/drm/drm_fb_cma_helper.c | 24 ++++++++++++------------ drivers/gpu/drm/drm_gem_cma_helper.c | 16 ++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-)