From: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> To: Felipe Balbi <balbi@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Shuah Khan <shuah@kernel.org>, Alan Stern <stern@rowland.harvard.edu>, Johan Hovold <johan@kernel.org>, Jaejoong Kim <climbbb.kim@gmail.com>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, Roger Quadros <rogerq@ti.com>, Manu Gautam <mgautam@codeaurora.org>, <martin.petersen@oracle.com>, Bart Van Assche <bvanassche@acm.org>, Mike Christie <mchristi@redhat.com>, Matthew Wilcox <willy@infradead.org>, Colin Ian King <colin.king@canonical.com> Cc: <linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <v.anuragkumar@gmail.com>, Thinh Nguyen <thinhn@synopsys.com>, Tejas Joglekar <tejas.joglekar@synopsys.com>, Ajay Yugalkishore Pandey <APANDEY@xilinx.com>, Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> Subject: [PATCH v7 05/10] usb: dwc3: make controller clear transfer resources after complete Date: Sat, 1 Dec 2018 16:43:26 +0530 [thread overview] Message-ID: <1543662811-5194-6-git-send-email-anurag.kumar.vulisha@xilinx.com> (raw) In-Reply-To: <1543662811-5194-1-git-send-email-anurag.kumar.vulisha@xilinx.com> To start transfer with another stream id, controller needs to free previously allocated transfer resource. This will be automatically done by the controller at the time of XferComplete Event. This patch updates the code to issue XferComplete event once all transfers are done by setting LST bit in the ctrl field of the last TRB. Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> --- Changes in v7: 1. Reverted to dep->stream_capable from dep->endpoint.stream_capable Changes in v6: 1. Used dep->endpoint.stream_capable instead of dep->stream_capable flag Changes in v5: 1. None Changes in v4: 1. None Changes in v3: 1. Added the changes suggested by "Thinh Nguyen" Changes in v2: 1. None --- drivers/usb/dwc3/gadget.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 3171c24..3edfc0b 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -579,7 +579,8 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action) if (usb_ss_max_streams(comp_desc) && usb_endpoint_xfer_bulk(desc)) { params.param1 |= DWC3_DEPCFG_STREAM_CAPABLE - | DWC3_DEPCFG_STREAM_EVENT_EN; + | DWC3_DEPCFG_STREAM_EVENT_EN + | DWC3_DEPCFG_XFER_COMPLETE_EN; dep->stream_capable = true; } @@ -1005,6 +1006,15 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb, if (chain) trb->ctrl |= DWC3_TRB_CTRL_CHN; + /* + * To issue start transfer on another stream, controller need to free + * previously acquired transfer resource. Setting the LST bit in + * last TRB makes the controller clear transfer resource for that + * endpoint, allowing to start another stream on that endpoint. + */ + else if (dep->stream_capable) + trb->ctrl |= DWC3_TRB_CTRL_LST; + if (usb_endpoint_xfer_bulk(dep->endpoint.desc) && dep->stream_capable) trb->ctrl |= DWC3_TRB_CTRL_SID_SOFN(stream_id); @@ -2276,7 +2286,7 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_SHORT && !chain) return 1; - if (event->status & DEPEVT_STATUS_IOC) + if (event->status & (DEPEVT_STATUS_IOC | DEPEVT_STATUS_LST)) return 1; return 0; @@ -2487,6 +2497,11 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, } switch (event->endpoint_event) { + case DWC3_DEPEVT_XFERCOMPLETE: + if (!dep->stream_capable) + break; + dep->flags &= ~DWC3_EP_TRANSFER_STARTED; + /* Fall Through */ case DWC3_DEPEVT_XFERINPROGRESS: dwc3_gadget_endpoint_transfer_in_progress(dep, event); break; @@ -2505,7 +2520,6 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, if (event->status == DEPEVT_STREAMEVT_FOUND) dwc3_endpoint_stream_event(dwc, event); - case DWC3_DEPEVT_XFERCOMPLETE: case DWC3_DEPEVT_RXTXFIFOEVT: break; } -- 2.1.1
WARNING: multiple messages have this Message-ID (diff)
From: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> To: Felipe Balbi <balbi@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Shuah Khan <shuah@kernel.org>, Alan Stern <stern@rowland.harvard.edu>, Johan Hovold <johan@kernel.org>, Jaejoong Kim <climbbb.kim@gmail.com>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, Roger Quadros <rogerq@ti.com>, Manu Gautam <mgautam@codeaurora.org>, martin.petersen@oracle.com, Bart Van Assche <bvanassche@acm.org>, Mike Christie <mchristi@redhat.com>, Matthew Wilcox <willy@infradead.org>, Colin Ian King <colin.king@canonical.com> Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, v.anuragkumar@gmail.com, Thinh Nguyen <thinhn@synopsys.com>, Tejas Joglekar <tejas.joglekar@synopsys.com>, Ajay Yugalkishore Pandey <APANDEY@xilinx.com>, Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> Subject: [v7,05/10] usb: dwc3: make controller clear transfer resources after complete Date: Sat, 1 Dec 2018 16:43:26 +0530 [thread overview] Message-ID: <1543662811-5194-6-git-send-email-anurag.kumar.vulisha@xilinx.com> (raw) To start transfer with another stream id, controller needs to free previously allocated transfer resource. This will be automatically done by the controller at the time of XferComplete Event. This patch updates the code to issue XferComplete event once all transfers are done by setting LST bit in the ctrl field of the last TRB. Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> --- Changes in v7: 1. Reverted to dep->stream_capable from dep->endpoint.stream_capable Changes in v6: 1. Used dep->endpoint.stream_capable instead of dep->stream_capable flag Changes in v5: 1. None Changes in v4: 1. None Changes in v3: 1. Added the changes suggested by "Thinh Nguyen" Changes in v2: 1. None --- drivers/usb/dwc3/gadget.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 3171c24..3edfc0b 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -579,7 +579,8 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action) if (usb_ss_max_streams(comp_desc) && usb_endpoint_xfer_bulk(desc)) { params.param1 |= DWC3_DEPCFG_STREAM_CAPABLE - | DWC3_DEPCFG_STREAM_EVENT_EN; + | DWC3_DEPCFG_STREAM_EVENT_EN + | DWC3_DEPCFG_XFER_COMPLETE_EN; dep->stream_capable = true; } @@ -1005,6 +1006,15 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb, if (chain) trb->ctrl |= DWC3_TRB_CTRL_CHN; + /* + * To issue start transfer on another stream, controller need to free + * previously acquired transfer resource. Setting the LST bit in + * last TRB makes the controller clear transfer resource for that + * endpoint, allowing to start another stream on that endpoint. + */ + else if (dep->stream_capable) + trb->ctrl |= DWC3_TRB_CTRL_LST; + if (usb_endpoint_xfer_bulk(dep->endpoint.desc) && dep->stream_capable) trb->ctrl |= DWC3_TRB_CTRL_SID_SOFN(stream_id); @@ -2276,7 +2286,7 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_SHORT && !chain) return 1; - if (event->status & DEPEVT_STATUS_IOC) + if (event->status & (DEPEVT_STATUS_IOC | DEPEVT_STATUS_LST)) return 1; return 0; @@ -2487,6 +2497,11 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, } switch (event->endpoint_event) { + case DWC3_DEPEVT_XFERCOMPLETE: + if (!dep->stream_capable) + break; + dep->flags &= ~DWC3_EP_TRANSFER_STARTED; + /* Fall Through */ case DWC3_DEPEVT_XFERINPROGRESS: dwc3_gadget_endpoint_transfer_in_progress(dep, event); break; @@ -2505,7 +2520,6 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, if (event->status == DEPEVT_STREAMEVT_FOUND) dwc3_endpoint_stream_event(dwc, event); - case DWC3_DEPEVT_XFERCOMPLETE: case DWC3_DEPEVT_RXTXFIFOEVT: break; }
next prev parent reply other threads:[~2018-12-01 11:14 UTC|newest] Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-12-01 11:13 [PATCH v7 00/10] usb: dwc3: Fix broken BULK stream support to dwc3 gadget driver Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 01/10] usb: gadget: udc: Add timer support for usb requests Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-02 16:36 ` [PATCH v7 01/10] " Alan Stern 2018-12-02 16:36 ` [v7,01/10] " Alan Stern 2018-12-03 10:23 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-03 10:23 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-03 14:51 ` [PATCH v7 01/10] " Alan Stern 2018-12-03 14:51 ` [v7,01/10] " Alan Stern 2018-12-03 16:05 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-03 16:05 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-03 23:08 ` [PATCH v7 01/10] " Alan Stern 2018-12-03 23:08 ` [v7,01/10] " Alan Stern 2018-12-04 16:18 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-04 16:18 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-04 16:46 ` [PATCH v7 01/10] " Alan Stern 2018-12-04 16:46 ` [v7,01/10] " Alan Stern 2018-12-04 19:07 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-04 19:07 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-04 19:28 ` [PATCH v7 01/10] " Alan Stern 2018-12-04 19:28 ` [v7,01/10] " Alan Stern 2018-12-05 15:43 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-05 15:43 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-07 6:05 ` [PATCH v7 01/10] " Felipe Balbi 2018-12-07 6:05 ` [v7,01/10] " Felipe Balbi 2018-12-07 17:09 ` [PATCH v7 01/10] " Alan Stern 2018-12-07 17:09 ` [v7,01/10] " Alan Stern 2018-12-12 15:11 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2018-12-12 15:11 ` [v7,01/10] " Anurag Kumar Vulisha 2019-01-04 14:17 ` [PATCH v7 01/10] " Anurag Kumar Vulisha 2019-01-04 14:17 ` [v7,01/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 02/10] usb: gadget: function: tcm: Add timeout for stream capable endpoints Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,02/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 03/10] usb: dwc3: gadget: handle stream events Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,03/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 04/10] usb: dwc3: update stream id in depcmd Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,04/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` Anurag Kumar Vulisha [this message] 2018-12-01 11:13 ` [v7,05/10] usb: dwc3: make controller clear transfer resources after complete Anurag Kumar Vulisha 2018-12-05 9:01 ` [PATCH v7 05/10] " Felipe Balbi 2018-12-05 9:01 ` [v7,05/10] " Felipe Balbi 2018-12-05 19:05 ` [PATCH v7 05/10] " Anurag Kumar Vulisha 2018-12-05 19:05 ` [v7,05/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 06/10] usb: dwc3: don't issue no-op trb for stream capable endpoints Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,06/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 07/10] usb: dwc3: check for requests in started list " Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,07/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 08/10] usb: dwc3: Correct the logic for checking TRB full in __dwc3_prepare_one_trb() Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,08/10] " Anurag Kumar Vulisha 2018-12-01 11:13 ` [PATCH v7 09/10] usb: dwc3: Check for IOC/LST bit in both event->status and TRB->ctrl fields Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,09/10] " Anurag Kumar Vulisha 2018-12-05 9:07 ` [PATCH v7 09/10] " Felipe Balbi 2018-12-05 9:07 ` [v7,09/10] " Felipe Balbi 2018-12-05 19:01 ` [PATCH v7 09/10] " Anurag Kumar Vulisha 2018-12-05 19:01 ` [v7,09/10] " Anurag Kumar Vulisha 2018-12-07 6:11 ` [PATCH v7 09/10] " Felipe Balbi 2018-12-07 6:11 ` [v7,09/10] " Felipe Balbi 2018-12-08 19:03 ` [PATCH v7 09/10] " Anurag Kumar Vulisha 2018-12-08 19:03 ` [v7,09/10] " Anurag Kumar Vulisha 2018-12-10 6:54 ` [PATCH v7 09/10] " Felipe Balbi 2018-12-10 6:54 ` [v7,09/10] " Felipe Balbi 2018-12-10 8:56 ` [PATCH v7 09/10] " Anurag Kumar Vulisha 2018-12-10 8:56 ` [v7,09/10] " Anurag Kumar Vulisha 2018-12-10 9:03 ` [PATCH v7 09/10] " Felipe Balbi 2018-12-10 9:03 ` [v7,09/10] " Felipe Balbi 2018-12-01 11:13 ` [PATCH v7 10/10] usb: dwc3: Check MISSED ISOC bit only for ISOC endpoints Anurag Kumar Vulisha 2018-12-01 11:13 ` [v7,10/10] " Anurag Kumar Vulisha
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=1543662811-5194-6-git-send-email-anurag.kumar.vulisha@xilinx.com \ --to=anurag.kumar.vulisha@xilinx.com \ --cc=APANDEY@xilinx.com \ --cc=balbi@kernel.org \ --cc=benh@kernel.crashing.org \ --cc=bvanassche@acm.org \ --cc=climbbb.kim@gmail.com \ --cc=colin.king@canonical.com \ --cc=gregkh@linuxfoundation.org \ --cc=johan@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-usb@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=mchristi@redhat.com \ --cc=mgautam@codeaurora.org \ --cc=rogerq@ti.com \ --cc=shuah@kernel.org \ --cc=stern@rowland.harvard.edu \ --cc=tejas.joglekar@synopsys.com \ --cc=thinhn@synopsys.com \ --cc=v.anuragkumar@gmail.com \ --cc=willy@infradead.org \ /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: linkBe 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.