drm/fb_helper: Support framebuffers in I/O memory
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 3 Nov 2020 09:30:15 +0000 (10:30 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 9 Nov 2020 08:20:00 +0000 (09:20 +0100)
commit222ec45f4c69dfa8cd02c72928147ac06dffffa2
tree8d308eeaecb657f1924c06503d55591f8f0ffc4e
parentb4e7090c242ec64bfa77a69ea7c3cceba21c7a65
drm/fb_helper: Support framebuffers in I/O memory

At least sparc64 requires I/O-specific access to framebuffers. This
patch updates the fbdev console accordingly.

For drivers with direct access to the framebuffer memory, the callback
functions in struct fb_ops test for the type of memory and call the rsp
fb_sys_ of fb_cfb_ functions. Read and write operations are implemented
internally by DRM's fbdev helper.

For drivers that employ a shadow buffer, fbdev's blit function retrieves
the framebuffer address as struct dma_buf_map, and uses dma_buf_map
interfaces to access the buffer.

The bochs driver on sparc64 uses a workaround to flag the framebuffer as
I/O memory and avoid a HW exception. With the introduction of struct
dma_buf_map, this is not required any longer. The patch removes the rsp
code from both, bochs and fbdev.

v7:
* use min_t(size_t,) (kernel test robot)
* return the number of bytes read/written, if any (fbdev testcase)
v5:
* implement fb_read/fb_write internally (Daniel, Sam)
v4:
* move dma_buf_map changes into separate patch (Daniel)
* TODO list: comment on fbdev updates (Daniel)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Tested-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201103093015.1063-11-tzimmermann@suse.de
Documentation/gpu/todo.rst
drivers/gpu/drm/bochs/bochs_kms.c
drivers/gpu/drm/drm_fb_helper.c
include/drm/drm_mode_config.h