From: Caesar Wang <caesar.upstream@gmail.com>
To: Yunzhi Li <lyz@rock-chips.com>
Cc: John.Youn@synopsys.com, dianders@chromium.org,
jwerner@google.com, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org, wulf@rock-chips.com,
kever.yang@rock-chips.com, frank.wang@rock-chips.com,
huangtao@rock-chips.com
Subject: Re: [PATCH] usb: dwc2: hcd: fix periodic transfer schedule sequence
Date: Tue, 17 Nov 2015 06:41:17 +0800 [thread overview]
Message-ID: <564A5B8D.4010905@gmail.com> (raw)
In-Reply-To: <1447687532-4820-1-git-send-email-lyz@rock-chips.com>
Hi,
在 2015年11月16日 23:25, Yunzhi Li 写道:
> When checking dwc2 host channel interrupts, handle qh in
> periodic_sched_queued list at first, then we could make sure CSPLIT
> packets scheduled in the same order as SSPLIT packets.
>
> Signed-off-by: Yunzhi Li <lyz@rock-chips.com>
This patch can fix some usb issues on my hand machine.
Says:
(1) The usb hub can't normal work (KB, mouse ...) when SB
headset/Speaker is connected to USB2.0 travel HUB.
(2) The music have the wonder noise when we are use some usb speak.
......
So, you can free add my test tag:
Tested-by: Caesar Wang <wxt@rock-chips.com>
> ---
> drivers/usb/dwc2/hcd_intr.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
> index bda0b21..e8e8970 100644
> --- a/drivers/usb/dwc2/hcd_intr.c
> +++ b/drivers/usb/dwc2/hcd_intr.c
> @@ -2115,6 +2115,8 @@ static void dwc2_hc_intr(struct dwc2_hsotg *hsotg)
> {
> u32 haint;
> int i;
> + int hc_num;
> + struct dwc2_qh *qh, *qh_tmp;
>
> haint = dwc2_readl(hsotg->regs + HAINT);
> if (dbg_perio()) {
> @@ -2123,6 +2125,26 @@ static void dwc2_hc_intr(struct dwc2_hsotg *hsotg)
> dev_vdbg(hsotg->dev, "HAINT=%08x\n", haint);
> }
>
> + /*
> + * According to USB 2.0 spec section 11.18.8, a host must
> + * issue complete-split transactions in a microframe for a
> + * set of full-/low-speed endpoints in the same relative
> + * order as the start-splits were issued in a microframe for.
> + * So here we should at first picking up host channels
> + * from periodic_sched_queued list and checking if there is
> + * any start-split have already finished then schedule
> + * complete-split in the same order.
> + */
> + list_for_each_entry_safe(qh, qh_tmp,
> + &hsotg->periodic_sched_queued,
> + qh_list_entry) {
> + hc_num = qh->channel->hc_num;
> + if (haint & (1 << hc_num)) {
> + dwc2_hc_n_intr(hsotg, hc_num);
> + haint &= ~(1 << hc_num);
> + }
> + }
> +
> for (i = 0; i < hsotg->core_params->host_channels; i++) {
> if (haint & (1 << i))
> dwc2_hc_n_intr(hsotg, i);
next prev parent reply other threads:[~2015-11-16 22:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-16 15:25 [PATCH] usb: dwc2: hcd: fix periodic transfer schedule sequence Yunzhi Li
2015-11-16 18:27 ` Doug Anderson
2015-11-16 22:41 ` Caesar Wang [this message]
2016-01-21 0:23 ` Doug Anderson
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=564A5B8D.4010905@gmail.com \
--to=caesar.upstream@gmail.com \
--cc=John.Youn@synopsys.com \
--cc=dianders@chromium.org \
--cc=frank.wang@rock-chips.com \
--cc=huangtao@rock-chips.com \
--cc=jwerner@google.com \
--cc=kever.yang@rock-chips.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lyz@rock-chips.com \
--cc=wulf@rock-chips.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.