diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2021-04-12 15:10:41 +0200 |
---|---|---|
committer | Thomas Zimmermann <tzimmermann@suse.de> | 2021-04-14 09:00:04 +0200 |
commit | 2916059147ea38f76787d7b38dee883da2e9def2 (patch) | |
tree | ef39697149594663b0bd00e61b8b9732b4817956 /include/drm/drm_aperture.h | |
parent | d510c88cfbb294d2b1e2d0b71576e9b79d0e2e83 (diff) | |
download | linux-stable-2916059147ea38f76787d7b38dee883da2e9def2.tar.gz linux-stable-2916059147ea38f76787d7b38dee883da2e9def2.tar.bz2 linux-stable-2916059147ea38f76787d7b38dee883da2e9def2.zip |
drm/aperture: Add infrastructure for aperture ownership
Platform devices might operate on firmware framebuffers, such as VESA
or EFI. Before a native driver for the graphics hardware can take over
the device, it has to remove any platform driver that operates on the
firmware framebuffer. Aperture helpers provide the infrastructure for
native drivers to remove the generic ones.
For now, this only concerns generic fbdev drivers. Code for removing
these is provided by drm_fb_helper_remove_conflicting_framebuffers() et
al. Simply wrap these functions for now. At a later point, code can be
added for generic DRM drivers to acquire firmware framebuffers.
v2:
* fix docs for drm_aperture_remove_framebuffers()
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210412131043.5787-2-tzimmermann@suse.de
Diffstat (limited to 'include/drm/drm_aperture.h')
-rw-r--r-- | include/drm/drm_aperture.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/drm/drm_aperture.h b/include/drm/drm_aperture.h new file mode 100644 index 000000000000..23cc01647ed3 --- /dev/null +++ b/include/drm/drm_aperture.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: MIT */ + +#ifndef _DRM_APERTURE_H_ +#define _DRM_APERTURE_H_ + +#include <linux/types.h> + +struct pci_dev; + +int drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size, + bool primary, const char *name); + +int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const char *name); + +/** + * drm_aperture_remove_framebuffers - remove all existing framebuffers + * @primary: also kick vga16fb if present + * @name: requesting driver name + * + * This function removes all graphics device drivers. Use this function on systems + * that can have their framebuffer located anywhere in memory. + * + * Returns: + * 0 on success, or a negative errno code otherwise + */ +static inline int drm_aperture_remove_framebuffers(bool primary, const char *name) +{ + return drm_aperture_remove_conflicting_framebuffers(0, (resource_size_t)-1, primary, name); +} + +#endif |