PNP: Fix ISAPNP to generate uevents to auto-load modules

Currently ISAPNP devices do not generate an uevent for udev to
auto-load the driver modules for Creative SoundBlaster or Gravis
UltraSound to just work.

Signed-off-by: René Rebe <rene@exactco.de>
[ rjw: Subject edits ]
Link: https://patch.msgid.link/20251118.145942.1445519082574147037.rene@exactco.de
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
René Rebe 2025-11-18 14:59:42 +01:00 committed by Rafael J. Wysocki
parent 6a23ae0a96
commit e96190da17
1 changed files with 19 additions and 0 deletions

View File

@ -150,6 +150,24 @@ static void pnp_device_shutdown(struct device *dev)
drv->shutdown(pnp_dev);
}
static int pnp_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct pnp_id *pos;
const struct pnp_dev *pnp_dev = to_pnp_dev(dev);
if (!dev)
return -ENODEV;
pos = pnp_dev->id;
while (pos) {
if (add_uevent_var(env, "MODALIAS=pnp:d%s", pos->id))
return -ENOMEM;
pos = pos->next;
}
return 0;
}
static int pnp_bus_match(struct device *dev, const struct device_driver *drv)
{
struct pnp_dev *pnp_dev = to_pnp_dev(dev);
@ -259,6 +277,7 @@ static const struct dev_pm_ops pnp_bus_dev_pm_ops = {
const struct bus_type pnp_bus_type = {
.name = "pnp",
.match = pnp_bus_match,
.uevent = pnp_uevent,
.probe = pnp_device_probe,
.remove = pnp_device_remove,
.shutdown = pnp_device_shutdown,