From: Roger Quadros <rogerq@ti.com>
To: Felipe Balbi <balbi@kernel.org>
Cc: tony@atomide.com, Joao.Pinto@synopsys.com,
sergei.shtylyov@cogentembedded.com, peter.chen@freescale.com,
jun.li@freescale.com, grygorii.strashko@ti.com,
yoshihiro.shimoda.uh@renesas.com, nsekhar@ti.com,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-omap@vger.kernel.org
Subject: Re: [PATCH v6 02/10] usb: dwc3: omap: Make the wrapper interrupt shared
Date: Mon, 11 Apr 2016 15:51:05 +0300 [thread overview]
Message-ID: <570B9DB9.8050807@ti.com> (raw)
In-Reply-To: <87h9f8ny14.fsf@intel.com>
On 11/04/16 15:13, Felipe Balbi wrote:
>
> Hi,
>
> Roger Quadros <rogerq@ti.com> writes:
>> The wrapper interrupt is shared with OTG core so mark it IRQF_SHARED.
>>
>> Use request_threaded_irq() to ensure that irqflags match for the
>> shared interrupt handlers. If we don't use request_treaded_irq() then
>> forced threaded irq will set IRQF_ONESHOT and this won't match with
>> the OTG irq handler.
>
> then it seems you need to _first_ fix the OTG IRQ handler. Why does it
There is no OTG irq handler yet.
> defer ? At a minimum, first switch to threaded IRQ handler, then (in
> another patch) switch to IRQF_SHARED
OK.
>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> ---
>> drivers/usb/dwc3/dwc3-omap.c | 12 +++++++++---
>> 1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
>> index 22e9606..51ca098 100644
>> --- a/drivers/usb/dwc3/dwc3-omap.c
>> +++ b/drivers/usb/dwc3/dwc3-omap.c
>> @@ -274,19 +274,25 @@ static irqreturn_t dwc3_omap_interrupt(int irq, void *_omap)
>> {
>> struct dwc3_omap *omap = _omap;
>> u32 reg;
>> + int ret = IRQ_NONE;
>>
>> reg = dwc3_omap_read_irqmisc_status(omap);
>>
>> + if (reg)
>> + ret = IRQ_HANDLED;
>
> you can avoid the local variable by returning early here.
How can we return early? we need to check irq0_status as well right?
>
> if (!reg)
> return IRQ_NONE;
>
>> if (reg & USBOTGSS_IRQMISC_DMADISABLECLR)
>> omap->dma_status = false;
>>
>> dwc3_omap_write_irqmisc_status(omap, reg);
>>
>> reg = dwc3_omap_read_irq0_status(omap);
>> + if (reg)
>> + ret = IRQ_HANDLED;
>
> and this check is probably unnecessary.
>
>> @@ -506,8 +512,8 @@ static int dwc3_omap_probe(struct platform_device *pdev)
>> reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
>> omap->dma_status = !!(reg & USBOTGSS_SYSCONFIG_DMADISABLE);
>>
>> - ret = devm_request_irq(dev, omap->irq, dwc3_omap_interrupt, 0,
>> - "dwc3-omap", omap);
>> + ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
>
> this switch to threaded IRQ is not part of $subject.
>
OK.
cheers,
-roger
WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@ti.com>
To: Felipe Balbi <balbi@kernel.org>
Cc: <tony@atomide.com>, <Joao.Pinto@synopsys.com>,
<sergei.shtylyov@cogentembedded.com>, <peter.chen@freescale.com>,
<jun.li@freescale.com>, <grygorii.strashko@ti.com>,
<yoshihiro.shimoda.uh@renesas.com>, <nsekhar@ti.com>,
<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-omap@vger.kernel.org>
Subject: Re: [PATCH v6 02/10] usb: dwc3: omap: Make the wrapper interrupt shared
Date: Mon, 11 Apr 2016 15:51:05 +0300 [thread overview]
Message-ID: <570B9DB9.8050807@ti.com> (raw)
In-Reply-To: <87h9f8ny14.fsf@intel.com>
On 11/04/16 15:13, Felipe Balbi wrote:
>
> Hi,
>
> Roger Quadros <rogerq@ti.com> writes:
>> The wrapper interrupt is shared with OTG core so mark it IRQF_SHARED.
>>
>> Use request_threaded_irq() to ensure that irqflags match for the
>> shared interrupt handlers. If we don't use request_treaded_irq() then
>> forced threaded irq will set IRQF_ONESHOT and this won't match with
>> the OTG irq handler.
>
> then it seems you need to _first_ fix the OTG IRQ handler. Why does it
There is no OTG irq handler yet.
> defer ? At a minimum, first switch to threaded IRQ handler, then (in
> another patch) switch to IRQF_SHARED
OK.
>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> ---
>> drivers/usb/dwc3/dwc3-omap.c | 12 +++++++++---
>> 1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
>> index 22e9606..51ca098 100644
>> --- a/drivers/usb/dwc3/dwc3-omap.c
>> +++ b/drivers/usb/dwc3/dwc3-omap.c
>> @@ -274,19 +274,25 @@ static irqreturn_t dwc3_omap_interrupt(int irq, void *_omap)
>> {
>> struct dwc3_omap *omap = _omap;
>> u32 reg;
>> + int ret = IRQ_NONE;
>>
>> reg = dwc3_omap_read_irqmisc_status(omap);
>>
>> + if (reg)
>> + ret = IRQ_HANDLED;
>
> you can avoid the local variable by returning early here.
How can we return early? we need to check irq0_status as well right?
>
> if (!reg)
> return IRQ_NONE;
>
>> if (reg & USBOTGSS_IRQMISC_DMADISABLECLR)
>> omap->dma_status = false;
>>
>> dwc3_omap_write_irqmisc_status(omap, reg);
>>
>> reg = dwc3_omap_read_irq0_status(omap);
>> + if (reg)
>> + ret = IRQ_HANDLED;
>
> and this check is probably unnecessary.
>
>> @@ -506,8 +512,8 @@ static int dwc3_omap_probe(struct platform_device *pdev)
>> reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
>> omap->dma_status = !!(reg & USBOTGSS_SYSCONFIG_DMADISABLE);
>>
>> - ret = devm_request_irq(dev, omap->irq, dwc3_omap_interrupt, 0,
>> - "dwc3-omap", omap);
>> + ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
>
> this switch to threaded IRQ is not part of $subject.
>
OK.
cheers,
-roger
next prev parent reply other threads:[~2016-04-11 12:51 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-11 11:34 [PATCH v6 00/10] usb: dwc3: add dual-role support Roger Quadros
2016-04-11 11:34 ` Roger Quadros
2016-04-11 11:34 ` [PATCH v6 01/10] usb: dwc3: core.h: add some register definitions Roger Quadros
2016-04-11 11:34 ` Roger Quadros
2016-04-11 11:34 ` [PATCH v6 02/10] usb: dwc3: omap: Make the wrapper interrupt shared Roger Quadros
2016-04-11 11:34 ` Roger Quadros
[not found] ` <1460374506-9779-3-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-11 12:13 ` Felipe Balbi
2016-04-11 12:13 ` Felipe Balbi
2016-04-11 12:51 ` Roger Quadros [this message]
2016-04-11 12:51 ` Roger Quadros
2016-04-11 12:58 ` Felipe Balbi
2016-04-11 13:15 ` Roger Quadros
2016-04-11 13:15 ` Roger Quadros
[not found] ` <570BA375.2040203-l0cyMroinI0@public.gmane.org>
2016-04-11 13:20 ` Felipe Balbi
2016-04-11 13:20 ` Felipe Balbi
2016-04-11 11:34 ` [PATCH v6 03/10] usb: dwc3: omap: Pass VBUS and ID events transparently Roger Quadros
2016-04-11 11:34 ` Roger Quadros
[not found] ` <1460374506-9779-4-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-11 12:18 ` Felipe Balbi
2016-04-11 12:18 ` Felipe Balbi
2016-04-11 13:03 ` Roger Quadros
2016-04-11 13:03 ` Roger Quadros
[not found] ` <570BA0B1.1060404-l0cyMroinI0@public.gmane.org>
2016-04-11 13:26 ` Felipe Balbi
2016-04-11 13:26 ` Felipe Balbi
2016-04-11 13:51 ` Roger Quadros
2016-04-11 13:51 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 04/10] usb: dwc3: omap: fix up error path on probe() Roger Quadros
2016-04-11 11:35 ` Roger Quadros
[not found] ` <1460374506-9779-5-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-11 12:20 ` Felipe Balbi
2016-04-11 12:20 ` Felipe Balbi
[not found] ` <87bn5gnxp9.fsf-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-04-11 13:09 ` Roger Quadros
2016-04-11 13:09 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 05/10] usb: dwc3: core: cleanup IRQ resources Roger Quadros
2016-04-11 11:35 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 06/10] usb: dwc3: add dual-role support Roger Quadros
2016-04-11 11:35 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 07/10] usb: dwc3: gadget: Fix suspend/resume during dual-role mode Roger Quadros
2016-04-11 11:35 ` Roger Quadros
[not found] ` <1460374506-9779-8-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2016-04-11 12:23 ` Felipe Balbi
2016-04-11 12:23 ` Felipe Balbi
2016-04-11 13:12 ` Roger Quadros
2016-04-11 13:12 ` Roger Quadros
[not found] ` <570BA2AA.8030308-l0cyMroinI0@public.gmane.org>
2016-04-11 13:26 ` Felipe Balbi
2016-04-11 13:26 ` Felipe Balbi
2016-04-11 13:53 ` Roger Quadros
2016-04-11 13:53 ` Roger Quadros
[not found] ` <570BAC4D.8010209-l0cyMroinI0@public.gmane.org>
2016-04-12 8:00 ` Felipe Balbi
2016-04-12 8:00 ` Felipe Balbi
2016-04-12 8:25 ` Roger Quadros
2016-04-12 8:25 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 08/10] usb: dwc3: core: fix PHY handling during suspend Roger Quadros
2016-04-11 11:35 ` Roger Quadros
2016-04-11 12:24 ` Felipe Balbi
2016-04-11 12:24 ` Felipe Balbi
[not found] ` <8760vonxin.fsf-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2016-04-11 13:13 ` Roger Quadros
2016-04-11 13:13 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 09/10] ARM: dts: dra7*-evm: Enable dual-role for usb1 Roger Quadros
2016-04-11 11:35 ` Roger Quadros
2016-04-11 11:35 ` [PATCH v6 10/10] ARM: dts: am43xx: Enable dual-role on USB1 Roger Quadros
2016-04-11 11:35 ` Roger Quadros
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=570B9DB9.8050807@ti.com \
--to=rogerq@ti.com \
--cc=Joao.Pinto@synopsys.com \
--cc=balbi@kernel.org \
--cc=grygorii.strashko@ti.com \
--cc=jun.li@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=peter.chen@freescale.com \
--cc=sergei.shtylyov@cogentembedded.com \
--cc=tony@atomide.com \
--cc=yoshihiro.shimoda.uh@renesas.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.