usb: core: hcd: make hcd->irq unsigned
There's really no point in having hcd->irq as a signed integer when we consider the fact that IRQ 0 means NO_IRQ. In order to avoid confusion, make hcd->irq unsigned and fix users who were passing -1 as the IRQ number to usb_add_hcd. Tested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
444aa7fa9b
commit
cd70469d08
|
@ -2352,7 +2352,7 @@ static int usb_hcd_request_irqs(struct usb_hcd *hcd,
|
|||
"io mem" : "io base",
|
||||
(unsigned long long)hcd->rsrc_start);
|
||||
} else {
|
||||
hcd->irq = -1;
|
||||
hcd->irq = 0;
|
||||
if (hcd->rsrc_start)
|
||||
dev_info(hcd->self.controller, "%s 0x%08llx\n",
|
||||
(hcd->driver->flags & HCD_MEMORY) ?
|
||||
|
@ -2508,7 +2508,7 @@ err_register_root_hub:
|
|||
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
|
||||
del_timer_sync(&hcd->rh_timer);
|
||||
err_hcd_driver_start:
|
||||
if (usb_hcd_is_primary_hcd(hcd) && hcd->irq >= 0)
|
||||
if (usb_hcd_is_primary_hcd(hcd) && hcd->irq > 0)
|
||||
free_irq(irqnum, hcd);
|
||||
err_request_irq:
|
||||
err_hcd_driver_setup:
|
||||
|
@ -2573,7 +2573,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
|
|||
del_timer_sync(&hcd->rh_timer);
|
||||
|
||||
if (usb_hcd_is_primary_hcd(hcd)) {
|
||||
if (hcd->irq >= 0)
|
||||
if (hcd->irq > 0)
|
||||
free_irq(hcd->irq, hcd);
|
||||
}
|
||||
|
||||
|
|
|
@ -899,7 +899,7 @@ static void ohci_stop (struct usb_hcd *hcd)
|
|||
ohci_usb_reset (ohci);
|
||||
ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
|
||||
free_irq(hcd->irq, hcd);
|
||||
hcd->irq = -1;
|
||||
hcd->irq = 0;
|
||||
|
||||
if (quirk_zfmicro(ohci))
|
||||
del_timer(&ohci->unlink_watchdog);
|
||||
|
|
|
@ -2396,7 +2396,7 @@ hw_died:
|
|||
/* FIXME when MSI-X is supported and there are multiple vectors */
|
||||
/* Clear the MSI-X event interrupt status */
|
||||
|
||||
if (hcd->irq != -1) {
|
||||
if (hcd->irq) {
|
||||
u32 irq_pending;
|
||||
/* Acknowledge the PCI interrupt */
|
||||
irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
|
||||
|
|
|
@ -224,13 +224,13 @@ static void xhci_free_irq(struct xhci_hcd *xhci)
|
|||
int ret;
|
||||
|
||||
/* return if using legacy interrupt */
|
||||
if (xhci_to_hcd(xhci)->irq >= 0)
|
||||
if (xhci_to_hcd(xhci)->irq > 0)
|
||||
return;
|
||||
|
||||
ret = xhci_free_msi(xhci);
|
||||
if (!ret)
|
||||
return;
|
||||
if (pdev->irq >= 0)
|
||||
if (pdev->irq > 0)
|
||||
free_irq(pdev->irq, xhci_to_hcd(xhci));
|
||||
|
||||
return;
|
||||
|
@ -341,7 +341,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd)
|
|||
/* unregister the legacy interrupt */
|
||||
if (hcd->irq)
|
||||
free_irq(hcd->irq, hcd);
|
||||
hcd->irq = -1;
|
||||
hcd->irq = 0;
|
||||
|
||||
ret = xhci_setup_msix(xhci);
|
||||
if (ret)
|
||||
|
@ -349,7 +349,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd)
|
|||
ret = xhci_setup_msi(xhci);
|
||||
|
||||
if (!ret)
|
||||
/* hcd->irq is -1, we have MSI */
|
||||
/* hcd->irq is 0, we have MSI */
|
||||
return 0;
|
||||
|
||||
if (!pdev->irq) {
|
||||
|
|
|
@ -1987,7 +1987,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
|||
musb->xceiv->otg->default_a = 1;
|
||||
musb->xceiv->state = OTG_STATE_A_IDLE;
|
||||
|
||||
status = usb_add_hcd(musb_to_hcd(musb), -1, 0);
|
||||
status = usb_add_hcd(musb_to_hcd(musb), 0, 0);
|
||||
|
||||
hcd->self.uses_pio_for_control = 1;
|
||||
dev_dbg(musb->controller, "%s mode, status %d, devctl %02x %c\n",
|
||||
|
|
|
@ -1957,7 +1957,7 @@ static int musb_gadget_start(struct usb_gadget *g,
|
|||
* handles power budgeting ... this way also
|
||||
* ensures HdrcStart is indirectly called.
|
||||
*/
|
||||
retval = usb_add_hcd(musb_to_hcd(musb), -1, 0);
|
||||
retval = usb_add_hcd(musb_to_hcd(musb), 0, 0);
|
||||
if (retval < 0) {
|
||||
dev_dbg(musb->controller, "add_hcd failed, %d\n", retval);
|
||||
goto err2;
|
||||
|
|
|
@ -127,7 +127,7 @@ struct usb_hcd {
|
|||
unsigned authorized_default:1;
|
||||
unsigned has_tt:1; /* Integrated TT in root hub */
|
||||
|
||||
int irq; /* irq allocated */
|
||||
unsigned int irq; /* irq allocated */
|
||||
void __iomem *regs; /* device memory/io */
|
||||
u64 rsrc_start; /* memory/io resource start */
|
||||
u64 rsrc_len; /* memory/io resource length */
|
||||
|
|
Loading…
Reference in a new issue