From patchwork Mon Dec 20 01:04:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Mahadev Lad X-Patchwork-Id: 526293 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E849EC433F5 for ; Mon, 20 Dec 2021 01:04:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237033AbhLTBEh (ORCPT ); Sun, 19 Dec 2021 20:04:37 -0500 Received: from relmlor2.renesas.com ([210.160.252.172]:1252 "EHLO relmlie6.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237029AbhLTBEg (ORCPT ); Sun, 19 Dec 2021 20:04:36 -0500 X-IronPort-AV: E=Sophos;i="5.88,219,1635174000"; d="scan'208";a="104485870" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 20 Dec 2021 10:04:35 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 8FA0E416745E; Mon, 20 Dec 2021 10:04:32 +0900 (JST) From: Lad Prabhakar To: Rob Herring , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Peter Chen , Pawel Laszczak , Roger Quadros , Aswath Govindraju , Felipe Balbi , Rui Miguel Silva , Bin Liu Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Lad Prabhakar Subject: [PATCH 2/6] usb: renesas_usbhs: Use platform_get_irq() to get the interrupt Date: Mon, 20 Dec 2021 01:04:07 +0000 Message-Id: <20211220010411.12075-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypasses the hierarchical setup and messes up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq(). Drop irqflags member from struct usbhs_priv as this driver is used by two non DT users sh7757lcr and ecovec24 which do not pass IORESOURCE_IRQ_SHAREABLE as part of their pdata. Along this drop the IRQF_SHARED flag handling in the code. Signed-off-by: Lad Prabhakar --- drivers/usb/renesas_usbhs/common.c | 14 +++++--------- drivers/usb/renesas_usbhs/common.h | 1 - drivers/usb/renesas_usbhs/mod.c | 14 +------------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index 3af91b2b8f76..96f3939a65e2 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c @@ -589,11 +589,11 @@ static int usbhs_probe(struct platform_device *pdev) { const struct renesas_usbhs_platform_info *info; struct usbhs_priv *priv; - struct resource *irq_res; struct device *dev = &pdev->dev; struct gpio_desc *gpiod; int ret; u32 tmp; + int irq; /* check device node */ if (dev_of_node(dev)) @@ -608,11 +608,9 @@ static int usbhs_probe(struct platform_device *pdev) } /* platform data */ - irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - if (!irq_res) { - dev_err(dev, "Not enough Renesas USB platform resources.\n"); - return -ENODEV; - } + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; /* usb private data */ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); @@ -669,9 +667,7 @@ static int usbhs_probe(struct platform_device *pdev) /* * priv settings */ - priv->irq = irq_res->start; - if (irq_res->flags & IORESOURCE_IRQ_SHAREABLE) - priv->irqflags = IRQF_SHARED; + priv->irq = irq; priv->pdev = pdev; INIT_DELAYED_WORK(&priv->notify_hotplug_work, usbhsc_notify_hotplug); spin_lock_init(usbhs_priv_to_lock(priv)); diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h index eb34d762a63d..3fb5bc94dc0d 100644 --- a/drivers/usb/renesas_usbhs/common.h +++ b/drivers/usb/renesas_usbhs/common.h @@ -252,7 +252,6 @@ struct usbhs_priv { void __iomem *base; unsigned int irq; - unsigned long irqflags; const struct renesas_usbhs_platform_callback *pfunc; struct renesas_usbhs_driver_param dparam; diff --git a/drivers/usb/renesas_usbhs/mod.c b/drivers/usb/renesas_usbhs/mod.c index b98112cefaa4..f2ea3e1412d2 100644 --- a/drivers/usb/renesas_usbhs/mod.c +++ b/drivers/usb/renesas_usbhs/mod.c @@ -142,7 +142,7 @@ int usbhs_mod_probe(struct usbhs_priv *priv) /* irq settings */ ret = devm_request_irq(dev, priv->irq, usbhs_interrupt, - priv->irqflags, dev_name(dev), priv); + 0, dev_name(dev), priv); if (ret) { dev_err(dev, "irq request err\n"); goto mod_init_gadget_err; @@ -219,18 +219,6 @@ static int usbhs_status_get_each_irq(struct usbhs_priv *priv, usbhs_unlock(priv, flags); /******************** spin unlock ******************/ - /* - * Check whether the irq enable registers and the irq status are set - * when IRQF_SHARED is set. - */ - if (priv->irqflags & IRQF_SHARED) { - if (!(intenb0 & state->intsts0) && - !(intenb1 & state->intsts1) && - !(state->bempsts) && - !(state->brdysts)) - return -EIO; - } - return 0; } From patchwork Mon Dec 20 01:04:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Mahadev Lad X-Patchwork-Id: 526292 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36EDDC433EF for ; Mon, 20 Dec 2021 01:04:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237053AbhLTBEr (ORCPT ); Sun, 19 Dec 2021 20:04:47 -0500 Received: from relmlor1.renesas.com ([210.160.252.171]:59820 "EHLO relmlie5.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237084AbhLTBEp (ORCPT ); Sun, 19 Dec 2021 20:04:45 -0500 X-IronPort-AV: E=Sophos;i="5.88,219,1635174000"; d="scan'208";a="104020236" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 20 Dec 2021 10:04:44 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 0FFD0416745E; Mon, 20 Dec 2021 10:04:41 +0900 (JST) From: Lad Prabhakar To: Rob Herring , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Peter Chen , Pawel Laszczak , Roger Quadros , Aswath Govindraju , Felipe Balbi , Rui Miguel Silva , Bin Liu Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Lad Prabhakar Subject: [PATCH 5/6] usb: cdns3: Use platform_get_irq_byname() to get the interrupt Date: Mon, 20 Dec 2021 01:04:10 +0000 Message-Id: <20211220010411.12075-6-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org platform_get_resource_byname(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypasses the hierarchical setup and messes up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq_byname(). Signed-off-by: Lad Prabhakar --- drivers/usb/cdns3/cdns3-plat.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/usb/cdns3/cdns3-plat.c b/drivers/usb/cdns3/cdns3-plat.c index 4d0f027e5bd3..dc068e940ed5 100644 --- a/drivers/usb/cdns3/cdns3-plat.c +++ b/drivers/usb/cdns3/cdns3-plat.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include @@ -65,13 +66,14 @@ static int cdns3_plat_probe(struct platform_device *pdev) platform_set_drvdata(pdev, cdns); - res = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "host"); - if (!res) { - dev_err(dev, "missing host IRQ\n"); - return -ENODEV; - } + ret = platform_get_irq_byname(pdev, "host"); + if (ret < 0) + return ret; - cdns->xhci_res[0] = *res; + cdns->xhci_res[0].start = ret; + cdns->xhci_res[0].end = ret; + cdns->xhci_res[0].flags = IORESOURCE_IRQ | irq_get_trigger_type(ret); + cdns->xhci_res[0].name = "host"; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "xhci"); if (!res) { From patchwork Mon Dec 20 01:04:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Mahadev Lad X-Patchwork-Id: 526291 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34264C433FE for ; Mon, 20 Dec 2021 01:04:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237097AbhLTBEw (ORCPT ); Sun, 19 Dec 2021 20:04:52 -0500 Received: from relmlor1.renesas.com ([210.160.252.171]:59820 "EHLO relmlie5.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237091AbhLTBEs (ORCPT ); Sun, 19 Dec 2021 20:04:48 -0500 X-IronPort-AV: E=Sophos;i="5.88,219,1635174000"; d="scan'208";a="104020246" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 20 Dec 2021 10:04:47 +0900 Received: from localhost.localdomain (unknown [10.226.36.204]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 33494416745E; Mon, 20 Dec 2021 10:04:45 +0900 (JST) From: Lad Prabhakar To: Rob Herring , Greg Kroah-Hartman , linux-usb@vger.kernel.org, Peter Chen , Pawel Laszczak , Roger Quadros , Aswath Govindraju , Felipe Balbi , Rui Miguel Silva , Bin Liu Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Lad Prabhakar Subject: [PATCH 6/6] usb: musb: dsps: Use platform_get_irq_byname() to get the interrupt Date: Mon, 20 Dec 2021 01:04:11 +0000 Message-Id: <20211220010411.12075-7-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20211220010411.12075-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org platform_get_resource_byname(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypasses the hierarchical setup and messes up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq_byname(). Signed-off-by: Lad Prabhakar --- drivers/usb/musb/musb_dsps.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index b5935834f9d2..f75cde0f2b43 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -15,6 +15,7 @@ */ #include +#include #include #include #include @@ -739,12 +740,14 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue, } resources[0] = *res; - res = platform_get_resource_byname(parent, IORESOURCE_IRQ, "mc"); - if (!res) { - dev_err(dev, "failed to get irq.\n"); - return -EINVAL; - } - resources[1] = *res; + ret = platform_get_irq_byname(parent, "mc"); + if (ret < 0) + return ret; + + resources[1].start = ret; + resources[1].end = ret; + resources[1].flags = IORESOURCE_IRQ | irq_get_trigger_type(ret); + resources[1].name = "mc"; /* allocate the child platform device */ musb = platform_device_alloc("musb-hdrc",