From 61420d12f3ad5f81718827299b14daf4f729262f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 11 Sep 2005 13:55:23 +0000 Subject: [PATCH] Signal USB device arrivals to PnP manager svn path=/trunk/; revision=17800 --- reactos/drivers/usb/usbhub/usbhub.c | 1 + reactos/drivers/usb/usbport/hcd.h | 9 ++++++++- reactos/drivers/usb/usbport/hub.c | 1 + reactos/drivers/usb/usbport/usb.c | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/usb/usbhub/usbhub.c b/reactos/drivers/usb/usbhub/usbhub.c index e4d1ca0f996..e7aacf0deae 100644 --- a/reactos/drivers/usb/usbhub/usbhub.c +++ b/reactos/drivers/usb/usbhub/usbhub.c @@ -99,6 +99,7 @@ UsbhubAddDevice( IoDeleteDevice(Fdo); return Status; } + DeviceExtension->dev->dev.dev_ext = Pdo; DeviceExtension->IsFDO = TRUE; Fdo->Flags |= DO_POWER_PAGABLE; diff --git a/reactos/drivers/usb/usbport/hcd.h b/reactos/drivers/usb/usbport/hcd.h index 5b6a6a013f5..e2454de9c3c 100644 --- a/reactos/drivers/usb/usbport/hcd.h +++ b/reactos/drivers/usb/usbport/hcd.h @@ -453,7 +453,14 @@ extern void usbfs_cleanup(void); static inline void usbfs_add_bus(struct usb_bus *bus) {} static inline void usbfs_remove_bus(struct usb_bus *bus) {} -static inline void usbfs_add_device(struct usb_device *dev) {} +static inline void usbfs_add_device(struct usb_device *dev) +{ + if (dev->parent) + { + PDEVICE_OBJECT Pdo = (PDEVICE_OBJECT)dev->parent->dev.dev_ext; + IoInvalidateDeviceRelations(Pdo, BusRelations); + } +} static inline void usbfs_remove_device(struct usb_device *dev) {} static inline void usbfs_update_special (void) {} diff --git a/reactos/drivers/usb/usbport/hub.c b/reactos/drivers/usb/usbport/hub.c index e3732ff0dcc..a348315de77 100644 --- a/reactos/drivers/usb/usbport/hub.c +++ b/reactos/drivers/usb/usbport/hub.c @@ -1053,6 +1053,7 @@ static void hub_port_connect_change(struct usb_hub *hubstate, int port, /* Run it through the hoops (find a driver, etc) */ if (!usb_new_device(dev, &hub->dev)) { hub->children[port] = dev; + usbfs_add_device(dev); goto done; } diff --git a/reactos/drivers/usb/usbport/usb.c b/reactos/drivers/usb/usbport/usb.c index 5a4ba48ff40..f9b936f0b48 100644 --- a/reactos/drivers/usb/usbport/usb.c +++ b/reactos/drivers/usb/usbport/usb.c @@ -1259,7 +1259,7 @@ int usb_new_device(struct usb_device *dev, struct device *parent) usb_create_driverfs_intf_files (interface); } /* add a /proc/bus/usb entry */ - usbfs_add_device(dev); + //usbfs_add_device(dev); return 0; fail: