diff mbox series

[v7,1/5] usb: hci: add hc_driver as argument for usb_hcd_pci_probe

Message ID 20200323101121.243906-2-vkoul@kernel.org (mailing list archive)
State Superseded
Headers show
Series usb: xhci: Add support for Renesas USB controllers | expand

Commit Message

Vinod Koul March 23, 2020, 10:11 a.m. UTC
usb_hcd_pci_probe expects users to call this with driver_data set as
hc_driver, that limits the possibility of using the driver_data for
driver data.

Add hc_driver as argument to usb_hcd_pci_probe and modify the callers
ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the
driver_data used

Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci.
Couldn't compile uhci

Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
---
 drivers/usb/core/hcd-pci.c  |  7 ++++---
 drivers/usb/host/ehci-pci.c |  6 ++----
 drivers/usb/host/ohci-pci.c |  9 ++++++---
 drivers/usb/host/uhci-pci.c |  8 ++++++--
 drivers/usb/host/xhci-pci.c | 14 +++++---------
 include/linux/usb/hcd.h     |  3 ++-
 6 files changed, 25 insertions(+), 22 deletions(-)

Comments

kernel test robot March 23, 2020, 2:49 p.m. UTC | #1
Hi Vinod,

I love your patch! Yet something to improve:

[auto build test ERROR on v5.6-rc7]
[also build test ERROR on next-20200323]
[cannot apply to usb/usb-testing]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447
base:    16fbf79b0f83bc752cee8589279f1ebfe57b3b6e
config: x86_64-defconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46)
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/usb/host/uhci-hcd.c:847:
>> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
           return usb_hcd_pci_probe(dev, id, &uhci_driver);
                                             ^~~~~~~~~~~~
   include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here
                                struct hc_driver *driver);
                                                  ^
   1 error generated.

vim +297 drivers/usb/host/uhci-pci.c

   294	
   295	static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
   296	{
 > 297		return usb_hcd_pci_probe(dev, id, &uhci_driver);
   298	}
   299	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Alan Stern March 23, 2020, 3:25 p.m. UTC | #2
On Mon, 23 Mar 2020, Vinod Koul wrote:

> usb_hcd_pci_probe expects users to call this with driver_data set as
> hc_driver, that limits the possibility of using the driver_data for
> driver data.
> 
> Add hc_driver as argument to usb_hcd_pci_probe and modify the callers
> ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the
> driver_data used
> 
> Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci.
> Couldn't compile uhci
> 
> Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com>
> Signed-off-by: Vinod Koul <vkoul@kernel.org>
> ---
>  drivers/usb/core/hcd-pci.c  |  7 ++++---
>  drivers/usb/host/ehci-pci.c |  6 ++----
>  drivers/usb/host/ohci-pci.c |  9 ++++++---
>  drivers/usb/host/uhci-pci.c |  8 ++++++--
>  drivers/usb/host/xhci-pci.c | 14 +++++---------
>  include/linux/usb/hcd.h     |  3 ++-
>  6 files changed, 25 insertions(+), 22 deletions(-)

For all but the xHCI parts:

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Vinod Koul March 23, 2020, 3:34 p.m. UTC | #3
On 23-03-20, 22:49, kbuild test robot wrote:
> Hi Vinod,
> 
> I love your patch! Yet something to improve:

Thanks for the report.

> [auto build test ERROR on v5.6-rc7]
> [also build test ERROR on next-20200323]
> [cannot apply to usb/usb-testing]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
> 
> url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447
> base:    16fbf79b0f83bc752cee8589279f1ebfe57b3b6e
> config: x86_64-defconfig (attached as .config)
> compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46)
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         COMPILER=clang make.cross ARCH=x86_64 
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>    In file included from drivers/usb/host/uhci-hcd.c:847:
> >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
>            return usb_hcd_pci_probe(dev, id, &uhci_driver);
>                                              ^~~~~~~~~~~~
>    include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here
>                                 struct hc_driver *driver);

I need to drop the const qualifiers for uhci_driver, I have checked that
and will send v8 with this fix
Vinod Koul March 23, 2020, 3:37 p.m. UTC | #4
On 23-03-20, 11:25, Alan Stern wrote:
> On Mon, 23 Mar 2020, Vinod Koul wrote:
> 
> > usb_hcd_pci_probe expects users to call this with driver_data set as
> > hc_driver, that limits the possibility of using the driver_data for
> > driver data.
> > 
> > Add hc_driver as argument to usb_hcd_pci_probe and modify the callers
> > ehci/ohci/xhci/uhci to pass hc_driver as argument and freeup the
> > driver_data used
> > 
> > Tested xhci driver on Dragon-board RB3, compile tested ehci and ohci.
> > Couldn't compile uhci
> > 
> > Suggested-by: Mathias Nyman <mathias.nyman@linux.intel.com>
> > Signed-off-by: Vinod Koul <vkoul@kernel.org>
> > ---
> >  drivers/usb/core/hcd-pci.c  |  7 ++++---
> >  drivers/usb/host/ehci-pci.c |  6 ++----
> >  drivers/usb/host/ohci-pci.c |  9 ++++++---
> >  drivers/usb/host/uhci-pci.c |  8 ++++++--
> >  drivers/usb/host/xhci-pci.c | 14 +++++---------
> >  include/linux/usb/hcd.h     |  3 ++-
> >  6 files changed, 25 insertions(+), 22 deletions(-)
> 
> For all but the xHCI parts:
> 
> Acked-by: Alan Stern <stern@rowland.harvard.edu>

Alan, Thanks for the quick ack. I will send v8 with your ack on first
patch (that touches *hci )

Thanks
Alan Stern March 23, 2020, 3:48 p.m. UTC | #5
On Mon, 23 Mar 2020, Vinod Koul wrote:

> On 23-03-20, 22:49, kbuild test robot wrote:
> > Hi Vinod,
> > 
> > I love your patch! Yet something to improve:
> 
> Thanks for the report.
> 
> > [auto build test ERROR on v5.6-rc7]
> > [also build test ERROR on next-20200323]
> > [cannot apply to usb/usb-testing]
> > [if your patch is applied to the wrong git tree, please drop us a note to help
> > improve the system. BTW, we also suggest to use '--base' option to specify the
> > base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
> > 
> > url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447
> > base:    16fbf79b0f83bc752cee8589279f1ebfe57b3b6e
> > config: x86_64-defconfig (attached as .config)
> > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46)
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         # save the attached .config to linux build tree
> >         COMPILER=clang make.cross ARCH=x86_64 
> > 
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@intel.com>
> > 
> > All errors (new ones prefixed by >>):
> > 
> >    In file included from drivers/usb/host/uhci-hcd.c:847:
> > >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> >            return usb_hcd_pci_probe(dev, id, &uhci_driver);
> >                                              ^~~~~~~~~~~~
> >    include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here
> >                                 struct hc_driver *driver);
> 
> I need to drop the const qualifiers for uhci_driver, I have checked that
> and will send v8 with this fix

No, don't remove the qualifier for uhci_driver.  Instead, change 
usb_hcd_pci_probe(): make driver a pointer to const.

Alan Stern
Vinod Koul March 23, 2020, 4:11 p.m. UTC | #6
On 23-03-20, 11:48, Alan Stern wrote:
> On Mon, 23 Mar 2020, Vinod Koul wrote:
> 
> > On 23-03-20, 22:49, kbuild test robot wrote:
> > > Hi Vinod,
> > > 
> > > I love your patch! Yet something to improve:
> > 
> > Thanks for the report.
> > 
> > > [auto build test ERROR on v5.6-rc7]
> > > [also build test ERROR on next-20200323]
> > > [cannot apply to usb/usb-testing]
> > > [if your patch is applied to the wrong git tree, please drop us a note to help
> > > improve the system. BTW, we also suggest to use '--base' option to specify the
> > > base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
> > > 
> > > url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447
> > > base:    16fbf79b0f83bc752cee8589279f1ebfe57b3b6e
> > > config: x86_64-defconfig (attached as .config)
> > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 006244152d6c7dd6a390ff89b236cc7801834b46)
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         # save the attached .config to linux build tree
> > >         COMPILER=clang make.cross ARCH=x86_64 
> > > 
> > > If you fix the issue, kindly add following tag
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > > 
> > > All errors (new ones prefixed by >>):
> > > 
> > >    In file included from drivers/usb/host/uhci-hcd.c:847:
> > > >> drivers/usb/host/uhci-pci.c:297:36: error: passing 'const struct hc_driver *' to parameter of type 'struct hc_driver *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> > >            return usb_hcd_pci_probe(dev, id, &uhci_driver);
> > >                                              ^~~~~~~~~~~~
> > >    include/linux/usb/hcd.h:483:27: note: passing argument to parameter 'driver' here
> > >                                 struct hc_driver *driver);
> > 
> > I need to drop the const qualifiers for uhci_driver, I have checked that
> > and will send v8 with this fix
> 
> No, don't remove the qualifier for uhci_driver.  Instead, change 
> usb_hcd_pci_probe(): make driver a pointer to const.

Thanks that is indeed a better idea.

Will send v8 shortly
kernel test robot March 23, 2020, 7:30 p.m. UTC | #7
Hi Vinod,

I love your patch! Perhaps something to improve:

[auto build test WARNING on v5.6-rc7]
[also build test WARNING on next-20200323]
[cannot apply to usb/usb-testing]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/usb-xhci-Add-support-for-Renesas-USB-controllers/20200323-203447
base:    16fbf79b0f83bc752cee8589279f1ebfe57b3b6e
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-5) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from drivers/usb/host/uhci-hcd.c:847:0:
   drivers/usb/host/uhci-pci.c: In function 'uhci_pci_probe':
>> drivers/usb/host/uhci-pci.c:297:36: warning: passing argument 3 of 'usb_hcd_pci_probe' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     return usb_hcd_pci_probe(dev, id, &uhci_driver);
                                       ^
   In file included from drivers/usb/host/uhci-hcd.c:42:0:
   include/linux/usb/hcd.h:481:12: note: expected 'struct hc_driver *' but argument is of type 'const struct hc_driver *'
    extern int usb_hcd_pci_probe(struct pci_dev *dev,
               ^~~~~~~~~~~~~~~~~

vim +297 drivers/usb/host/uhci-pci.c

   294	
   295	static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
   296	{
 > 297		return usb_hcd_pci_probe(dev, id, &uhci_driver);
   298	}
   299	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
index f0a259937da8..b0a3400f836f 100644
--- a/drivers/usb/core/hcd-pci.c
+++ b/drivers/usb/core/hcd-pci.c
@@ -159,6 +159,7 @@  static void ehci_wait_for_companions(struct pci_dev *pdev, struct usb_hcd *hcd,
  * usb_hcd_pci_probe - initialize PCI-based HCDs
  * @dev: USB Host Controller being probed
  * @id: pci hotplug id connecting controller to HCD framework
+ * @driver: USB HC driver handle
  * Context: !in_interrupt()
  *
  * Allocates basic PCI resources for this USB host controller, and
@@ -169,9 +170,9 @@  static void ehci_wait_for_companions(struct pci_dev *pdev, struct usb_hcd *hcd,
  *
  * Return: 0 if successful.
  */
-int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
+int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id,
+		      struct hc_driver *driver)
 {
-	struct hc_driver	*driver;
 	struct usb_hcd		*hcd;
 	int			retval;
 	int			hcd_irq = 0;
@@ -181,7 +182,7 @@  int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 
 	if (!id)
 		return -EINVAL;
-	driver = (struct hc_driver *)id->driver_data;
+
 	if (!driver)
 		return -EINVAL;
 
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index b0882c13a1d1..daaddfbbf797 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -360,23 +360,21 @@  static int ehci_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
 	if (is_bypassed_id(pdev))
 		return -ENODEV;
-	return usb_hcd_pci_probe(pdev, id);
+	return usb_hcd_pci_probe(pdev, id, &ehci_pci_hc_driver);
 }
 
 static void ehci_pci_remove(struct pci_dev *pdev)
 {
 	pci_clear_mwi(pdev);
-	usb_hcd_pci_remove(pdev);	
+	usb_hcd_pci_remove(pdev);
 }
 
 /* PCI driver selection metadata; PCI hotplugging uses this */
 static const struct pci_device_id pci_ids [] = { {
 	/* handle any USB 2.0 EHCI controller */
 	PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0),
-	.driver_data =	(unsigned long) &ehci_pci_hc_driver,
 	}, {
 	PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_USB_HOST),
-	.driver_data = (unsigned long) &ehci_pci_hc_driver,
 	},
 	{ /* end: all zeroes */ }
 };
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index f4e13a3fddee..78b0d84c7675 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -277,21 +277,24 @@  static const struct ohci_driver_overrides pci_overrides __initconst = {
 static const struct pci_device_id pci_ids[] = { {
 	/* handle any USB OHCI controller */
 	PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0),
-	.driver_data =	(unsigned long) &ohci_pci_hc_driver,
 	}, {
 	/* The device in the ConneXT I/O hub has no class reg */
 	PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_USB_OHCI),
-	.driver_data =	(unsigned long) &ohci_pci_hc_driver,
 	}, { /* end: all zeroes */ }
 };
 MODULE_DEVICE_TABLE (pci, pci_ids);
 
+static int ohci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
+{
+	return usb_hcd_pci_probe(dev, id, &ohci_pci_hc_driver);
+}
+
 /* pci driver glue; this is a "new style" PCI driver module */
 static struct pci_driver ohci_pci_driver = {
 	.name =		(char *) hcd_name,
 	.id_table =	pci_ids,
 
-	.probe =	usb_hcd_pci_probe,
+	.probe =	ohci_pci_probe,
 	.remove =	usb_hcd_pci_remove,
 	.shutdown =	usb_hcd_pci_shutdown,
 
diff --git a/drivers/usb/host/uhci-pci.c b/drivers/usb/host/uhci-pci.c
index 0fa3d72bae26..d59b9257c52b 100644
--- a/drivers/usb/host/uhci-pci.c
+++ b/drivers/usb/host/uhci-pci.c
@@ -287,17 +287,21 @@  static const struct hc_driver uhci_driver = {
 static const struct pci_device_id uhci_pci_ids[] = { {
 	/* handle any USB UHCI controller */
 	PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0),
-	.driver_data =	(unsigned long) &uhci_driver,
 	}, { /* end: all zeroes */ }
 };
 
 MODULE_DEVICE_TABLE(pci, uhci_pci_ids);
 
+static int uhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
+{
+	return usb_hcd_pci_probe(dev, id, &uhci_driver);
+}
+
 static struct pci_driver uhci_pci_driver = {
 	.name =		(char *)hcd_name,
 	.id_table =	uhci_pci_ids,
 
-	.probe =	usb_hcd_pci_probe,
+	.probe =	uhci_pci_probe,
 	.remove =	usb_hcd_pci_remove,
 	.shutdown =	uhci_shutdown,
 
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 4917c5b033fa..a19752178216 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -316,11 +316,8 @@  static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 {
 	int retval;
 	struct xhci_hcd *xhci;
-	struct hc_driver *driver;
 	struct usb_hcd *hcd;
 
-	driver = (struct hc_driver *)id->driver_data;
-
 	/* Prevent runtime suspending between USB-2 and USB-3 initialization */
 	pm_runtime_get_noresume(&dev->dev);
 
@@ -330,7 +327,7 @@  static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	 * to say USB 2.0, but I'm not sure what the implications would be in
 	 * the other parts of the HCD code.
 	 */
-	retval = usb_hcd_pci_probe(dev, id);
+	retval = usb_hcd_pci_probe(dev, id, &xhci_pci_hc_driver);
 
 	if (retval)
 		goto put_runtime_pm;
@@ -338,8 +335,8 @@  static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	/* USB 2.0 roothub is stored in the PCI device now. */
 	hcd = dev_get_drvdata(&dev->dev);
 	xhci = hcd_to_xhci(hcd);
-	xhci->shared_hcd = usb_create_shared_hcd(driver, &dev->dev,
-				pci_name(dev), hcd);
+	xhci->shared_hcd = usb_create_shared_hcd(&xhci_pci_hc_driver, &dev->dev,
+						 pci_name(dev), hcd);
 	if (!xhci->shared_hcd) {
 		retval = -ENOMEM;
 		goto dealloc_usb2_hcd;
@@ -536,10 +533,9 @@  static void xhci_pci_shutdown(struct usb_hcd *hcd)
 /*-------------------------------------------------------------------------*/
 
 /* PCI driver selection metadata; PCI hotplugging uses this */
-static const struct pci_device_id pci_ids[] = { {
+static const struct pci_device_id pci_ids[] = {
 	/* handle any USB 3.0 xHCI controller */
-	PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0),
-	.driver_data =	(unsigned long) &xhci_pci_hc_driver,
+	{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0),
 	},
 	{ /* end: all zeroes */ }
 };
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index 712b2a603645..7823a06f6692 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -479,7 +479,8 @@  extern void usb_hcd_platform_shutdown(struct platform_device *dev);
 struct pci_dev;
 struct pci_device_id;
 extern int usb_hcd_pci_probe(struct pci_dev *dev,
-				const struct pci_device_id *id);
+			     const struct pci_device_id *id,
+			     struct hc_driver *driver);
 extern void usb_hcd_pci_remove(struct pci_dev *dev);
 extern void usb_hcd_pci_shutdown(struct pci_dev *dev);