提交 cd70469d 编写于 作者: F Felipe Balbi 提交者: Greg Kroah-Hartman

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: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 444aa7fa
...@@ -2352,7 +2352,7 @@ static int usb_hcd_request_irqs(struct usb_hcd *hcd, ...@@ -2352,7 +2352,7 @@ static int usb_hcd_request_irqs(struct usb_hcd *hcd,
"io mem" : "io base", "io mem" : "io base",
(unsigned long long)hcd->rsrc_start); (unsigned long long)hcd->rsrc_start);
} else { } else {
hcd->irq = -1; hcd->irq = 0;
if (hcd->rsrc_start) if (hcd->rsrc_start)
dev_info(hcd->self.controller, "%s 0x%08llx\n", dev_info(hcd->self.controller, "%s 0x%08llx\n",
(hcd->driver->flags & HCD_MEMORY) ? (hcd->driver->flags & HCD_MEMORY) ?
...@@ -2508,7 +2508,7 @@ int usb_add_hcd(struct usb_hcd *hcd, ...@@ -2508,7 +2508,7 @@ int usb_add_hcd(struct usb_hcd *hcd,
clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
del_timer_sync(&hcd->rh_timer); del_timer_sync(&hcd->rh_timer);
err_hcd_driver_start: 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); free_irq(irqnum, hcd);
err_request_irq: err_request_irq:
err_hcd_driver_setup: err_hcd_driver_setup:
...@@ -2573,7 +2573,7 @@ void usb_remove_hcd(struct usb_hcd *hcd) ...@@ -2573,7 +2573,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
del_timer_sync(&hcd->rh_timer); del_timer_sync(&hcd->rh_timer);
if (usb_hcd_is_primary_hcd(hcd)) { if (usb_hcd_is_primary_hcd(hcd)) {
if (hcd->irq >= 0) if (hcd->irq > 0)
free_irq(hcd->irq, hcd); free_irq(hcd->irq, hcd);
} }
......
...@@ -899,7 +899,7 @@ static void ohci_stop (struct usb_hcd *hcd) ...@@ -899,7 +899,7 @@ static void ohci_stop (struct usb_hcd *hcd)
ohci_usb_reset (ohci); ohci_usb_reset (ohci);
ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
free_irq(hcd->irq, hcd); free_irq(hcd->irq, hcd);
hcd->irq = -1; hcd->irq = 0;
if (quirk_zfmicro(ohci)) if (quirk_zfmicro(ohci))
del_timer(&ohci->unlink_watchdog); del_timer(&ohci->unlink_watchdog);
......
...@@ -2396,7 +2396,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) ...@@ -2396,7 +2396,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
/* FIXME when MSI-X is supported and there are multiple vectors */ /* FIXME when MSI-X is supported and there are multiple vectors */
/* Clear the MSI-X event interrupt status */ /* Clear the MSI-X event interrupt status */
if (hcd->irq != -1) { if (hcd->irq) {
u32 irq_pending; u32 irq_pending;
/* Acknowledge the PCI interrupt */ /* Acknowledge the PCI interrupt */
irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending); irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
......
...@@ -224,13 +224,13 @@ static void xhci_free_irq(struct xhci_hcd *xhci) ...@@ -224,13 +224,13 @@ static void xhci_free_irq(struct xhci_hcd *xhci)
int ret; int ret;
/* return if using legacy interrupt */ /* return if using legacy interrupt */
if (xhci_to_hcd(xhci)->irq >= 0) if (xhci_to_hcd(xhci)->irq > 0)
return; return;
ret = xhci_free_msi(xhci); ret = xhci_free_msi(xhci);
if (!ret) if (!ret)
return; return;
if (pdev->irq >= 0) if (pdev->irq > 0)
free_irq(pdev->irq, xhci_to_hcd(xhci)); free_irq(pdev->irq, xhci_to_hcd(xhci));
return; return;
...@@ -341,7 +341,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd) ...@@ -341,7 +341,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd)
/* unregister the legacy interrupt */ /* unregister the legacy interrupt */
if (hcd->irq) if (hcd->irq)
free_irq(hcd->irq, hcd); free_irq(hcd->irq, hcd);
hcd->irq = -1; hcd->irq = 0;
ret = xhci_setup_msix(xhci); ret = xhci_setup_msix(xhci);
if (ret) if (ret)
...@@ -349,7 +349,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd) ...@@ -349,7 +349,7 @@ static int xhci_try_enable_msi(struct usb_hcd *hcd)
ret = xhci_setup_msi(xhci); ret = xhci_setup_msi(xhci);
if (!ret) if (!ret)
/* hcd->irq is -1, we have MSI */ /* hcd->irq is 0, we have MSI */
return 0; return 0;
if (!pdev->irq) { if (!pdev->irq) {
......
...@@ -1987,7 +1987,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) ...@@ -1987,7 +1987,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
musb->xceiv->otg->default_a = 1; musb->xceiv->otg->default_a = 1;
musb->xceiv->state = OTG_STATE_A_IDLE; 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; hcd->self.uses_pio_for_control = 1;
dev_dbg(musb->controller, "%s mode, status %d, devctl %02x %c\n", 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, ...@@ -1957,7 +1957,7 @@ static int musb_gadget_start(struct usb_gadget *g,
* handles power budgeting ... this way also * handles power budgeting ... this way also
* ensures HdrcStart is indirectly called. * 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) { if (retval < 0) {
dev_dbg(musb->controller, "add_hcd failed, %d\n", retval); dev_dbg(musb->controller, "add_hcd failed, %d\n", retval);
goto err2; goto err2;
......
...@@ -127,7 +127,7 @@ struct usb_hcd { ...@@ -127,7 +127,7 @@ struct usb_hcd {
unsigned authorized_default:1; unsigned authorized_default:1;
unsigned has_tt:1; /* Integrated TT in root hub */ unsigned has_tt:1; /* Integrated TT in root hub */
int irq; /* irq allocated */ unsigned int irq; /* irq allocated */
void __iomem *regs; /* device memory/io */ void __iomem *regs; /* device memory/io */
u64 rsrc_start; /* memory/io resource start */ u64 rsrc_start; /* memory/io resource start */
u64 rsrc_len; /* memory/io resource length */ u64 rsrc_len; /* memory/io resource length */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册