usb: dwc3: Drop unneeded calls to platform_get_resource_byname()
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 20 Dec 2021 01:04:08 +0000 (01:04 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 Dec 2021 07:51:57 +0000 (08:51 +0100)
Drop unneeded calls to platform_get_resource_byname() from
dwc3_host_init(). dwc3_host_init() already calls dwc3_host_get_irq()
which gets the irq number, just use this to get the IRQ resource data
and fill the xhci_resources[1]

Reviewed-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://lore.kernel.org/r/20211220010411.12075-4-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/host.c

index f29a264..eda8719 100644 (file)
@@ -8,32 +8,55 @@
  */
 
 #include <linux/acpi.h>
+#include <linux/irq.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 
 #include "core.h"
 
+static void dwc3_host_fill_xhci_irq_res(struct dwc3 *dwc,
+                                       int irq, char *name)
+{
+       struct platform_device *pdev = to_platform_device(dwc->dev);
+       struct device_node *np = dev_of_node(&pdev->dev);
+
+       dwc->xhci_resources[1].start = irq;
+       dwc->xhci_resources[1].end = irq;
+       dwc->xhci_resources[1].flags = IORESOURCE_IRQ | irq_get_trigger_type(irq);
+       if (!name && np)
+               dwc->xhci_resources[1].name = of_node_full_name(pdev->dev.of_node);
+       else
+               dwc->xhci_resources[1].name = name;
+}
+
 static int dwc3_host_get_irq(struct dwc3 *dwc)
 {
        struct platform_device  *dwc3_pdev = to_platform_device(dwc->dev);
        int irq;
 
        irq = platform_get_irq_byname_optional(dwc3_pdev, "host");
-       if (irq > 0)
+       if (irq > 0) {
+               dwc3_host_fill_xhci_irq_res(dwc, irq, "host");
                goto out;
+       }
 
        if (irq == -EPROBE_DEFER)
                goto out;
 
        irq = platform_get_irq_byname_optional(dwc3_pdev, "dwc_usb3");
-       if (irq > 0)
+       if (irq > 0) {
+               dwc3_host_fill_xhci_irq_res(dwc, irq, "dwc_usb3");
                goto out;
+       }
 
        if (irq == -EPROBE_DEFER)
                goto out;
 
        irq = platform_get_irq(dwc3_pdev, 0);
-       if (irq > 0)
+       if (irq > 0) {
+               dwc3_host_fill_xhci_irq_res(dwc, irq, NULL);
                goto out;
+       }
 
        if (!irq)
                irq = -EINVAL;
@@ -47,28 +70,12 @@ int dwc3_host_init(struct dwc3 *dwc)
        struct property_entry   props[4];
        struct platform_device  *xhci;
        int                     ret, irq;
-       struct resource         *res;
-       struct platform_device  *dwc3_pdev = to_platform_device(dwc->dev);
        int                     prop_idx = 0;
 
        irq = dwc3_host_get_irq(dwc);
        if (irq < 0)
                return irq;
 
-       res = platform_get_resource_byname(dwc3_pdev, IORESOURCE_IRQ, "host");
-       if (!res)
-               res = platform_get_resource_byname(dwc3_pdev, IORESOURCE_IRQ,
-                               "dwc_usb3");
-       if (!res)
-               res = platform_get_resource(dwc3_pdev, IORESOURCE_IRQ, 0);
-       if (!res)
-               return -ENOMEM;
-
-       dwc->xhci_resources[1].start = irq;
-       dwc->xhci_resources[1].end = irq;
-       dwc->xhci_resources[1].flags = res->flags;
-       dwc->xhci_resources[1].name = res->name;
-
        xhci = platform_device_alloc("xhci-hcd", PLATFORM_DEVID_AUTO);
        if (!xhci) {
                dev_err(dwc->dev, "couldn't allocate xHCI device\n");