Re: [RFC 08/15] usb: Refactor irq enabling out of usb_add_hcd()

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

 



Hello.

I wrote:

Refactor out the code in usb_add_hcd() to request the IRQ line for the
HCD.  This will only need to be called once for the two xHCI roothubs, so
it's easier to refactor it into a function, rather than wrapping the long
if-else block into another if statement.

Signed-off-by: Sarah Sharp<sarah.a.sharp@xxxxxxxxxxxxxxx>
[...]

diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 02ce408..fda5a11 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -2197,6 +2197,44 @@ void usb_put_hcd (struct usb_hcd *hcd)
  }
  EXPORT_SYMBOL_GPL(usb_put_hcd);

+static int usb_hcd_request_irqs(struct usb_hcd *hcd,
+        unsigned int irqnum, unsigned long irqflags)
+{
+    int retval;
+
+    if (hcd->driver->irq) {
+
+        /* IRQF_DISABLED doesn't work as advertised when used together
+         * with IRQF_SHARED. As usb_hcd_irq() will always disable
+         * interrupts we can remove it here.
+         */
+        if (irqflags & IRQF_SHARED)
+            irqflags &= ~IRQF_DISABLED;
+
+        snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
+                hcd->driver->description, hcd->self.busnum);
+        if ((retval = request_irq(irqnum,&usb_hcd_irq, irqflags,

IIRC, checkpatch.pl complains about assignment being a part of the *if* operator...

   Indeed:

ERROR: do not use assignment in if condition
#35: FILE: drivers/usb/core/hcd.c:2216:
+		if ((retval = request_irq(irqnum, &usb_hcd_irq, irqflags,

WARNING: line over 80 characters
#38: FILE: drivers/usb/core/hcd.c:2219:
+					"request interrupt %d failed\n", irqnum);

total: 1 errors, 1 warnings, 83 lines checked

WBR, Sergei

--
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