Currently the driver matches the platform framebuffer device registered by sysfb through driver name, "vesa-framebuffer", this is a little confusing since this driver registers a DRM device, instead of a framebuffer.
Moreover, we have a driver with the same name, enabled by CONFIG_FB_VESA, that acts as a consumer of vesa-framebuffer as well. They cannot be both loaded into the kernel. Making these two drivers coexist is sometimes useful, e.g., a distribution may want to build fbcon into the kernel image for debugging purpose, but keep the whole DRM subsystem enabled as module. In such case vesadrm could serve as a solution for running DRM-specific userspace programs on platforms with only VESA VBIOS available. Let's rename the driver as "vesa-display" to avoid possible confusion. A platform_device_id table is introduced to match "vesa-framebuffer" devices. Signed-off-by: Yao Zi <zi...@disroot.org> --- drivers/gpu/drm/sysfb/vesadrm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sysfb/vesadrm.c b/drivers/gpu/drm/sysfb/vesadrm.c index 90615e9ac86b..16635dc3d5cc 100644 --- a/drivers/gpu/drm/sysfb/vesadrm.c +++ b/drivers/gpu/drm/sysfb/vesadrm.c @@ -3,6 +3,7 @@ #include <linux/aperture.h> #include <linux/ioport.h> #include <linux/limits.h> +#include <linux/mod_devicetable.h> #include <linux/platform_device.h> #include <linux/screen_info.h> @@ -517,10 +518,17 @@ static void vesadrm_remove(struct platform_device *pdev) drm_dev_unplug(dev); } +static const struct platform_device_id vesadrm_platform_id[] = { + { "vesa-framebuffer" }, + { }, +}; +MODULE_DEVICE_TABLE(platform, vesadrm_platform_id); + static struct platform_driver vesadrm_platform_driver = { .driver = { - .name = "vesa-framebuffer", + .name = "vesa-display", }, + .id_table = vesadrm_platform_id, .probe = vesadrm_probe, .remove = vesadrm_remove, }; -- 2.50.1