Commit 18bc074c authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/fbdev: Clean up fbdev documentation



Rewrite some docs that are not up-to-date any longer. Remove the TODO
item for fbdev-generic conversion, as the helper has been replaced. Make
documentation for DMA, SHMEM and TTM emulation available.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240419083331.7761-44-tzimmermann@suse.de
parent aae4682e
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -110,15 +110,21 @@ fbdev Helper Functions Reference
.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
   :doc: fbdev helpers

.. kernel-doc:: include/drm/drm_fb_helper.h
   :internal:
.. kernel-doc:: drivers/gpu/drm/drm_fbdev_dma.c
   :export:

.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
.. kernel-doc:: drivers/gpu/drm/drm_fbdev_shmem.c
   :export:

.. kernel-doc:: drivers/gpu/drm/drm_fbdev_ttm.c
   :export:

.. kernel-doc:: include/drm/drm_fb_helper.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
   :export:

format Helper Functions Reference
=================================

+0 −13
Original line number Diff line number Diff line
@@ -243,19 +243,6 @@ Contact: Maintainer of the driver you plan to convert

Level: Intermediate

Convert drivers to use drm_fbdev_generic_setup()
------------------------------------------------

Most drivers can use drm_fbdev_generic_setup(). Driver have to implement
atomic modesetting and GEM vmap support. Historically, generic fbdev emulation
expected the framebuffer in system memory or system-like memory. By employing
struct iosys_map, drivers with frambuffers in I/O memory can be supported
as well.

Contact: Maintainer of the driver you plan to convert

Level: Intermediate

Reimplement functions in drm_fbdev_fb_ops without fbdev
-------------------------------------------------------

+1 −1
Original line number Diff line number Diff line
@@ -346,7 +346,7 @@ void drm_minor_release(struct drm_minor *minor)
 *		if (ret)
 *			return ret;
 *
 *		drm_fbdev_generic_setup(drm, 32);
 *		drm_fbdev_{...}_setup(drm, 32);
 *
 *		return 0;
 *	}
+2 −9
Original line number Diff line number Diff line
@@ -85,12 +85,8 @@ static DEFINE_MUTEX(kernel_fb_helper_lock);
 * The fb helper functions are useful to provide an fbdev on top of a drm kernel
 * mode setting driver. They can be used mostly independently from the crtc
 * helper functions used by many drivers to implement the kernel mode setting
 * interfaces.
 *
 * Drivers that support a dumb buffer with a virtual address and mmap support,
 * should try out the generic fbdev emulation using drm_fbdev_generic_setup().
 * It will automatically set up deferred I/O if the driver requires a shadow
 * buffer.
 * interfaces. Drivers that use one of the shared memory managers, TTM, SHMEM,
 * DMA, should instead use the corresponding fbdev emulation.
 *
 * Existing fbdev implementations should restore the fbdev console by using
 * drm_fb_helper_lastclose() as their &drm_driver.lastclose callback.
@@ -126,9 +122,6 @@ static DEFINE_MUTEX(kernel_fb_helper_lock);
 * atomic context. If drm_fb_helper_deferred_io() is used as the deferred_io
 * callback it will also schedule dirty_work with the damage collected from the
 * mmap page writes.
 *
 * Deferred I/O is not compatible with SHMEM. Such drivers should request an
 * fbdev shadow buffer and call drm_fbdev_generic_setup() instead.
 */

static void drm_fb_helper_restore_lut_atomic(struct drm_crtc *crtc)
+2 −2
Original line number Diff line number Diff line
@@ -106,8 +106,8 @@ struct drm_mode_config_funcs {
	 * Drivers implementing fbdev emulation use drm_kms_helper_hotplug_event()
	 * to call this hook to inform the fbdev helper of output changes.
	 *
	 * This hook is deprecated, drivers should instead use
	 * drm_fbdev_generic_setup() which takes care of any necessary
	 * This hook is deprecated, drivers should instead implement fbdev
	 * support with struct drm_client, which takes care of any necessary
	 * hotplug event forwarding already without further involvement by
	 * the driver.
	 */