Re: [PATCH v3] usb: ohci-at91: fix irq and iomem resource retrieval
Hi Boris, On Thursday 05 of December 2013 10:50:13 Boris BREZILLON wrote: > When using dt resources retrieval (interrupts and reg properties) there is > no predefined order for these resources in the platform dev resources > 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 > Acked-by: Nicolas Ferre > Signed-off-by: Alan Stern > --- > Changes since v2: > - split the patch series to isolate the urgent fix provided by this patch > > Changes since v1: > - none > > 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 = >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); You could have simply used platform_get_irq() here, but I guess it's just a matter of preference, so: Reviewed-by: Tomasz Figa Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3] 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 resources 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 Acked-by: Nicolas Ferre Signed-off-by: Alan Stern --- Changes since v2: - split the patch series to isolate the urgent fix provided by this patch Changes since v1: - none 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 = >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, >dev, "at91"); if (!hcd) return -ENOMEM; - hcd->rsrc_start = pdev->resource[0].start; - hcd->rsrc_len = resource_size(>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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3] 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 resources 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.brezil...@overkiz.com Acked-by: Nicolas Ferre nicolas.fe...@atmel.com Signed-off-by: Alan Stern st...@rowland.harvard.edu --- Changes since v2: - split the patch series to isolate the urgent fix provided by this patch Changes since v1: - none 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] usb: ohci-at91: fix irq and iomem resource retrieval
Hi Boris, On Thursday 05 of December 2013 10:50:13 Boris BREZILLON wrote: When using dt resources retrieval (interrupts and reg properties) there is no predefined order for these resources in the platform dev resources 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.brezil...@overkiz.com Acked-by: Nicolas Ferre nicolas.fe...@atmel.com Signed-off-by: Alan Stern st...@rowland.harvard.edu --- Changes since v2: - split the patch series to isolate the urgent fix provided by this patch Changes since v1: - none 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); You could have simply used platform_get_irq() here, but I guess it's just a matter of preference, so: Reviewed-by: Tomasz Figa tomasz.f...@gmail.com Best regards, Tomasz -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/