diff options
author | Javier Martinez Canillas <javierm@redhat.com> | 2021-12-22 09:28:27 +0100 |
---|---|---|
committer | Javier Martinez Canillas <javierm@redhat.com> | 2022-01-19 18:40:18 +0100 |
commit | 09f137c320633d08b263c54c0782e91d55a6c09f (patch) | |
tree | 61720a46bb892ea8008e33444798ffabccb5b0a8 /include/drm/drm_module.h | |
parent | drm/hisilicon/hibmc: Replace module initialization with DRM helpers (diff) | |
download | linux-09f137c320633d08b263c54c0782e91d55a6c09f.tar.xz linux-09f137c320633d08b263c54c0782e91d55a6c09f.zip |
drm: Provide platform module-init macro
Provide a helper macro to register platform DRM drivers. The new
macro behaves like module_platform_driver() with an additional
test if DRM modesetting has been enabled.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20211222082831.196562-7-javierm@redhat.com
Diffstat (limited to 'include/drm/drm_module.h')
-rw-r--r-- | include/drm/drm_module.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/drm/drm_module.h b/include/drm/drm_module.h index eb3fd7bcbec9..4db1ae03d9a5 100644 --- a/include/drm/drm_module.h +++ b/include/drm/drm_module.h @@ -4,6 +4,7 @@ #define DRM_MODULE_H #include <linux/pci.h> +#include <linux/platform_device.h> #include <drm/drm_drv.h> @@ -92,4 +93,33 @@ drm_pci_unregister_driver_if_modeset(struct pci_driver *pci_drv, int modeset) module_driver(__pci_drv, drm_pci_register_driver_if_modeset, \ drm_pci_unregister_driver_if_modeset, __modeset) +/* + * Platform drivers + */ + +static inline int __init +drm_platform_driver_register(struct platform_driver *platform_drv) +{ + if (drm_firmware_drivers_only()) + return -ENODEV; + + return platform_driver_register(platform_drv); +} + +/** + * drm_module_platform_driver - Register a DRM driver for platform devices + * @__platform_drv: the platform driver structure + * + * Registers a DRM driver for devices on the platform bus. The helper + * macro behaves like module_platform_driver() but tests the state of + * drm_firmware_drivers_only(). For more complex module initialization, + * use module_init() and module_exit() directly. + * + * Each module may only use this macro once. Calling it replaces + * module_init() and module_exit(). + */ +#define drm_module_platform_driver(__platform_drv) \ + module_driver(__platform_drv, drm_platform_driver_register, \ + platform_driver_unregister) + #endif |