[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1386079669-3995-2-git-send-email-b.brezillon@overkiz.com>
Date: Tue, 3 Dec 2013 15:07:47 +0100
From: Boris BREZILLON <b.brezillon@...rkiz.com>
To: Douglas Gilbert <dgilbert@...erlog.com>,
Nicolas Ferre <nicolas.ferre@...el.com>,
Tomasz Figa <tomasz.figa@...il.com>,
Alan Stern <stern@...land.harvard.edu>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Grant Likely <grant.likely@...aro.org>, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
Boris BREZILLON <b.brezillon@...rkiz.com>
Subject: [PATCH 1/3] usb: ohci-at91: fix irq and iomem resource retrieval
When using dt resources retrieval (interrupts and reg properties) there is
no predefined order for these resources in the platform dev resource
table.
Retrieve resources using the platform_get_resource function instead of
direct resource table entries to avoid resource type mismatch.
Signed-off-by: Boris BREZILLON <b.brezillon@...rkiz.com>
Tested-by: Robert Nelson <robertcnelson@...il.com>
---
drivers/usb/host/ohci-at91.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 418444e..7aec6ca 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -136,23 +136,26 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
struct ohci_hcd *ohci;
int retval;
struct usb_hcd *hcd = NULL;
+ struct device *dev = &pdev->dev;
+ struct resource *mem_r, *irq_r;
- if (pdev->num_resources != 2) {
- pr_debug("hcd probe: invalid num_resources");
+ mem_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!mem_r) {
+ dev_dbg(dev, "hcd probe: missing memory resource\n");
return -ENODEV;
}
- if ((pdev->resource[0].flags != IORESOURCE_MEM)
- || (pdev->resource[1].flags != IORESOURCE_IRQ)) {
- pr_debug("hcd probe: invalid resource type\n");
+ irq_r = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ if (!irq_r) {
+ dev_dbg(dev, "hcd probe: missing irq resource\n");
return -ENODEV;
}
hcd = usb_create_hcd(driver, &pdev->dev, "at91");
if (!hcd)
return -ENOMEM;
- hcd->rsrc_start = pdev->resource[0].start;
- hcd->rsrc_len = resource_size(&pdev->resource[0]);
+ hcd->rsrc_start = mem_r->start;
+ hcd->rsrc_len = resource_size(mem_r);
if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
pr_debug("request_mem_region failed\n");
@@ -199,7 +202,7 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
ohci->num_ports = board->ports;
at91_start_hc(pdev);
- retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_SHARED);
+ retval = usb_add_hcd(hcd, irq_r->start, IRQF_SHARED);
if (retval == 0)
return retval;
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists