[RESEND PATCH 14/15] usb: dwc2: pci: Update pci portion of the dwc2 driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Dinh Nguyen <dinguyen@xxxxxxxxxx>

Update pci portion of the dwc2 driver to call the appropriate init functions
for host, gadget, and dual-role.

Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxx>
---
 drivers/usb/dwc2/pci.c |   28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/dwc2/pci.c b/drivers/usb/dwc2/pci.c
index c291fca..69bd27a 100644
--- a/drivers/usb/dwc2/pci.c
+++ b/drivers/usb/dwc2/pci.c
@@ -102,7 +102,14 @@ static void dwc2_driver_remove(struct pci_dev *dev)
 {
 	struct dwc2_hsotg *hsotg = pci_get_drvdata(dev);
 
-	dwc2_hcd_remove(hsotg);
+	if (IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL))
+		s3c_hsotg_remove(hsotg);
+	else if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
+		dwc2_hcd_remove(hsotg);
+	else { /* dual role */
+		s3c_hsotg_remove(hsotg);
+		dwc2_hcd_remove(hsotg);
+	}
 	pci_disable_device(dev);
 }
 
@@ -141,13 +148,30 @@ static int dwc2_driver_probe(struct pci_dev *dev,
 
 	pci_set_master(dev);
 
-	retval = dwc2_hcd_init(hsotg, dev->irq, &dwc2_module_params);
+	if (IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)) {
+		retval = dwc2_gadget_init(hsotg, dev->irq);
+		if (retval)
+			return retval;
+		retval = dwc2_hcd_init(hsotg, dev->irq, &dwc2_module_params);
+		if (retval)
+			return retval;
+	} else if (IS_ENABLED(CONFIG_USB_DWC2_HOST)) {
+		retval = dwc2_hcd_init(hsotg, dev->irq, &dwc2_module_params);
+		if (retval)
+			return retval;
+	} else if (IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL)) {
+		retval = dwc2_gadget_init(hsotg, dev->irq);
+		if (retval)
+			return retval;
+	}
+
 	if (retval) {
 		pci_disable_device(dev);
 		return retval;
 	}
 
 	pci_set_drvdata(dev, hsotg);
+	spin_lock_init(&hsotg->lock);
 
 	return retval;
 }
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux