diff options
Diffstat (limited to 'drivers/usb/core')
| -rw-r--r-- | drivers/usb/core/hcd.c | 8 | ||||
| -rw-r--r-- | drivers/usb/core/usb-acpi.c | 8 | 
2 files changed, 15 insertions, 1 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 99b34a30354..f9ec44cbb82 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2412,6 +2412,14 @@ int usb_hcd_is_primary_hcd(struct usb_hcd *hcd)  }  EXPORT_SYMBOL_GPL(usb_hcd_is_primary_hcd); +int usb_hcd_find_raw_port_number(struct usb_hcd *hcd, int port1) +{ +	if (!hcd->driver->find_raw_port_number) +		return port1; + +	return hcd->driver->find_raw_port_number(hcd, port1); +} +  static int usb_hcd_request_irqs(struct usb_hcd *hcd,  		unsigned int irqnum, unsigned long irqflags)  { diff --git a/drivers/usb/core/usb-acpi.c b/drivers/usb/core/usb-acpi.c index b6f4bad3f75..255c14464bf 100644 --- a/drivers/usb/core/usb-acpi.c +++ b/drivers/usb/core/usb-acpi.c @@ -15,6 +15,7 @@  #include <linux/kernel.h>  #include <linux/acpi.h>  #include <linux/pci.h> +#include <linux/usb/hcd.h>  #include <acpi/acpi_bus.h>  #include "usb.h" @@ -188,8 +189,13 @@ static int usb_acpi_find_device(struct device *dev, acpi_handle *handle)  		 * connected to.  		 */  		if (!udev->parent) { -			*handle = acpi_get_child(DEVICE_ACPI_HANDLE(&udev->dev), +			struct usb_hcd *hcd = bus_to_hcd(udev->bus); +			int raw_port_num; + +			raw_port_num = usb_hcd_find_raw_port_number(hcd,  				port_num); +			*handle = acpi_get_child(DEVICE_ACPI_HANDLE(&udev->dev), +				raw_port_num);  			if (!*handle)  				return -ENODEV;  		} else {  |