diff --git a/src/device/pnp_device.c b/src/device/pnp_device.c index ba05c82d5e..5600231207 100644 --- a/src/device/pnp_device.c +++ b/src/device/pnp_device.c @@ -386,10 +386,13 @@ void pnp_enable_devices(struct device *base_dev, struct device_operations *ops, if (dev->ops) continue; - if (info[i].ops == 0) - dev->ops = ops; - else + /* use LDN-specific ops override from corresponding pnp_info + entry if not NULL */ + if (info[i].ops) dev->ops = info[i].ops; + /* else use device ops */ + else + dev->ops = ops; get_resources(dev, &info[i]); } diff --git a/src/include/device/pnp.h b/src/include/device/pnp.h index e3839c6e71..d7530131d9 100644 --- a/src/include/device/pnp.h +++ b/src/include/device/pnp.h @@ -31,7 +31,7 @@ extern struct device_operations pnp_ops; /* PNP helper operations */ struct pnp_info { - struct device_operations *ops; + struct device_operations *ops; /* LDN-specific ops override */ unsigned int function; /* Must be at least 16 bits (virtual LDNs)! */ unsigned int flags; #define PNP_IO0 0x000001