All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ikjoon Jang <ikjn@chromium.org>
Cc: Chunfeng Yun <chunfeng.yun@mediatek.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	<linux-usb@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Nicolas Boichat <drinkcat@chromium.org>,
	Eddie Hung <eddie.hung@mediatek.com>
Subject: [PATCH 03/17] usb: xhci-mtk: get the microframe boundary for ESIT
Date: Fri, 5 Mar 2021 17:02:41 +0800	[thread overview]
Message-ID: <1614934975-15188-3-git-send-email-chunfeng.yun@mediatek.com> (raw)
In-Reply-To: <1614934975-15188-1-git-send-email-chunfeng.yun@mediatek.com>

Tune the boundary for FS/LS ESIT due to CS:
For ISOC out-ep, the controller starts transfer data after
the first SS; for others, the data is already transfered
before the last CS.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
 drivers/usb/host/xhci-mtk-sch.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index 8950d1f10a7f..e3b18dfca874 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -513,22 +513,35 @@ static void update_sch_tt(struct usb_device *udev,
 		list_del(&sch_ep->tt_endpoint);
 }
 
+static u32 get_esit_boundary(struct mu3h_sch_ep_info *sch_ep)
+{
+	u32 boundary = sch_ep->esit;
+
+	if (sch_ep->sch_tt) { /* LS/FS with TT */
+		/* tune for CS */
+		if (sch_ep->ep_type != ISOC_OUT_EP)
+			boundary += 1;
+		else if (boundary > 1) /* normally esit >= 8 for FS/LS */
+			boundary -= 1;
+	}
+
+	return boundary;
+}
+
 static int check_sch_bw(struct usb_device *udev,
 	struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep)
 {
 	u32 offset;
-	u32 esit;
 	u32 min_bw;
 	u32 min_index;
 	u32 worst_bw;
 	u32 bw_boundary;
+	u32 esit_boundary;
 	u32 min_num_budget;
 	u32 min_cs_count;
 	bool tt_offset_ok = false;
 	int ret;
 
-	esit = sch_ep->esit;
-
 	/*
 	 * Search through all possible schedule microframes.
 	 * and find a microframe where its worst bandwidth is minimum.
@@ -537,7 +550,8 @@ static int check_sch_bw(struct usb_device *udev,
 	min_index = 0;
 	min_cs_count = sch_ep->cs_count;
 	min_num_budget = sch_ep->num_budget_microframes;
-	for (offset = 0; offset < esit; offset++) {
+	esit_boundary = get_esit_boundary(sch_ep);
+	for (offset = 0; offset < sch_ep->esit; offset++) {
 		if (is_fs_or_ls(udev->speed)) {
 			ret = check_sch_tt(udev, sch_ep, offset);
 			if (ret)
@@ -546,7 +560,7 @@ static int check_sch_bw(struct usb_device *udev,
 				tt_offset_ok = true;
 		}
 
-		if ((offset + sch_ep->num_budget_microframes) > sch_ep->esit)
+		if ((offset + sch_ep->num_budget_microframes) > esit_boundary)
 			break;
 
 		worst_bw = get_max_bw(sch_bw, sch_ep, offset);
-- 
2.18.0


WARNING: multiple messages have this Message-ID (diff)
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ikjoon Jang <ikjn@chromium.org>
Cc: Chunfeng Yun <chunfeng.yun@mediatek.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	<linux-usb@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	 <linux-kernel@vger.kernel.org>,
	Nicolas Boichat <drinkcat@chromium.org>,
	Eddie Hung <eddie.hung@mediatek.com>
Subject: [PATCH 03/17] usb: xhci-mtk: get the microframe boundary for ESIT
Date: Fri, 5 Mar 2021 17:02:41 +0800	[thread overview]
Message-ID: <1614934975-15188-3-git-send-email-chunfeng.yun@mediatek.com> (raw)
In-Reply-To: <1614934975-15188-1-git-send-email-chunfeng.yun@mediatek.com>

Tune the boundary for FS/LS ESIT due to CS:
For ISOC out-ep, the controller starts transfer data after
the first SS; for others, the data is already transfered
before the last CS.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
 drivers/usb/host/xhci-mtk-sch.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index 8950d1f10a7f..e3b18dfca874 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -513,22 +513,35 @@ static void update_sch_tt(struct usb_device *udev,
 		list_del(&sch_ep->tt_endpoint);
 }
 
+static u32 get_esit_boundary(struct mu3h_sch_ep_info *sch_ep)
+{
+	u32 boundary = sch_ep->esit;
+
+	if (sch_ep->sch_tt) { /* LS/FS with TT */
+		/* tune for CS */
+		if (sch_ep->ep_type != ISOC_OUT_EP)
+			boundary += 1;
+		else if (boundary > 1) /* normally esit >= 8 for FS/LS */
+			boundary -= 1;
+	}
+
+	return boundary;
+}
+
 static int check_sch_bw(struct usb_device *udev,
 	struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep)
 {
 	u32 offset;
-	u32 esit;
 	u32 min_bw;
 	u32 min_index;
 	u32 worst_bw;
 	u32 bw_boundary;
+	u32 esit_boundary;
 	u32 min_num_budget;
 	u32 min_cs_count;
 	bool tt_offset_ok = false;
 	int ret;
 
-	esit = sch_ep->esit;
-
 	/*
 	 * Search through all possible schedule microframes.
 	 * and find a microframe where its worst bandwidth is minimum.
@@ -537,7 +550,8 @@ static int check_sch_bw(struct usb_device *udev,
 	min_index = 0;
 	min_cs_count = sch_ep->cs_count;
 	min_num_budget = sch_ep->num_budget_microframes;
-	for (offset = 0; offset < esit; offset++) {
+	esit_boundary = get_esit_boundary(sch_ep);
+	for (offset = 0; offset < sch_ep->esit; offset++) {
 		if (is_fs_or_ls(udev->speed)) {
 			ret = check_sch_tt(udev, sch_ep, offset);
 			if (ret)
@@ -546,7 +560,7 @@ static int check_sch_bw(struct usb_device *udev,
 				tt_offset_ok = true;
 		}
 
-		if ((offset + sch_ep->num_budget_microframes) > sch_ep->esit)
+		if ((offset + sch_ep->num_budget_microframes) > esit_boundary)
 			break;
 
 		worst_bw = get_max_bw(sch_bw, sch_ep, offset);
-- 
2.18.0
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Ikjoon Jang <ikjn@chromium.org>
Cc: Chunfeng Yun <chunfeng.yun@mediatek.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	<linux-usb@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	 <linux-kernel@vger.kernel.org>,
	Nicolas Boichat <drinkcat@chromium.org>,
	Eddie Hung <eddie.hung@mediatek.com>
Subject: [PATCH 03/17] usb: xhci-mtk: get the microframe boundary for ESIT
Date: Fri, 5 Mar 2021 17:02:41 +0800	[thread overview]
Message-ID: <1614934975-15188-3-git-send-email-chunfeng.yun@mediatek.com> (raw)
In-Reply-To: <1614934975-15188-1-git-send-email-chunfeng.yun@mediatek.com>

Tune the boundary for FS/LS ESIT due to CS:
For ISOC out-ep, the controller starts transfer data after
the first SS; for others, the data is already transfered
before the last CS.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
 drivers/usb/host/xhci-mtk-sch.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/host/xhci-mtk-sch.c b/drivers/usb/host/xhci-mtk-sch.c
index 8950d1f10a7f..e3b18dfca874 100644
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
@@ -513,22 +513,35 @@ static void update_sch_tt(struct usb_device *udev,
 		list_del(&sch_ep->tt_endpoint);
 }
 
+static u32 get_esit_boundary(struct mu3h_sch_ep_info *sch_ep)
+{
+	u32 boundary = sch_ep->esit;
+
+	if (sch_ep->sch_tt) { /* LS/FS with TT */
+		/* tune for CS */
+		if (sch_ep->ep_type != ISOC_OUT_EP)
+			boundary += 1;
+		else if (boundary > 1) /* normally esit >= 8 for FS/LS */
+			boundary -= 1;
+	}
+
+	return boundary;
+}
+
 static int check_sch_bw(struct usb_device *udev,
 	struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep)
 {
 	u32 offset;
-	u32 esit;
 	u32 min_bw;
 	u32 min_index;
 	u32 worst_bw;
 	u32 bw_boundary;
+	u32 esit_boundary;
 	u32 min_num_budget;
 	u32 min_cs_count;
 	bool tt_offset_ok = false;
 	int ret;
 
-	esit = sch_ep->esit;
-
 	/*
 	 * Search through all possible schedule microframes.
 	 * and find a microframe where its worst bandwidth is minimum.
@@ -537,7 +550,8 @@ static int check_sch_bw(struct usb_device *udev,
 	min_index = 0;
 	min_cs_count = sch_ep->cs_count;
 	min_num_budget = sch_ep->num_budget_microframes;
-	for (offset = 0; offset < esit; offset++) {
+	esit_boundary = get_esit_boundary(sch_ep);
+	for (offset = 0; offset < sch_ep->esit; offset++) {
 		if (is_fs_or_ls(udev->speed)) {
 			ret = check_sch_tt(udev, sch_ep, offset);
 			if (ret)
@@ -546,7 +560,7 @@ static int check_sch_bw(struct usb_device *udev,
 				tt_offset_ok = true;
 		}
 
-		if ((offset + sch_ep->num_budget_microframes) > sch_ep->esit)
+		if ((offset + sch_ep->num_budget_microframes) > esit_boundary)
 			break;
 
 		worst_bw = get_max_bw(sch_bw, sch_ep, offset);
-- 
2.18.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-03-05  9:04 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-05  9:02 [PATCH 01/17] usb: xhci-mtk: remove or operator for setting schedule parameters Chunfeng Yun
2021-03-05  9:02 ` Chunfeng Yun
2021-03-05  9:02 ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 02/17] usb: xhci-mtk: improve bandwidth scheduling with TT Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` Chunfeng Yun [this message]
2021-03-05  9:02   ` [PATCH 03/17] usb: xhci-mtk: get the microframe boundary for ESIT Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:13   ` Sergei Shtylyov
2021-03-05  9:13     ` Sergei Shtylyov
2021-03-05  9:13     ` Sergei Shtylyov
2021-03-05  9:16     ` Greg Kroah-Hartman
2021-03-05  9:16       ` Greg Kroah-Hartman
2021-03-05  9:16       ` Greg Kroah-Hartman
2021-03-08  1:57     ` Chunfeng Yun
2021-03-08  1:57       ` Chunfeng Yun
2021-03-08  1:57       ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 04/17] usb: xhci-mtk: add only one extra CS for FS/LS INTR Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 05/17] usb: xhci-mtk: use @sch_tt to check whether need do TT schedule Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 06/17] usb: xhci-mtk: add a function to (un)load bandwidth info Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 07/17] usb: xhci-mtk: add a function to get bandwidth boundary Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 08/17] usb: xhci-mtk: remove unnecessary members of mu3h_sch_tt struct Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 09/17] usb: xhci-mtk: use clear type instead of void Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 10/17] usb: xhci-mtk: add a member @speed in mu3h_sch_ep_info struct Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 11/17] usb: xhci-mtk: use @tt_info to check the FS/LS device is under a HS hub Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 12/17] usb: xhci-mtk: rebuild the way to get bandwidth domain Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 13/17] usb: xhci-mtk: add some schedule error number Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 14/17] usb: xhci-mtk: remove declaration of xhci_mtk_setup() Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 15/17] usb: xhci-mtk: support to build xhci-mtk-hcd.ko Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-07 16:00   ` Greg Kroah-Hartman
2021-03-07 16:00     ` Greg Kroah-Hartman
2021-03-07 16:00     ` Greg Kroah-Hartman
2021-03-08 11:13     ` Mathias Nyman
2021-03-08 11:13       ` Mathias Nyman
2021-03-08 11:13       ` Mathias Nyman
2021-03-05  9:02 ` [PATCH 16/17] usb: common: add function to get interval expressed in us unit Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05 15:33   ` Alan Stern
2021-03-05 15:33     ` Alan Stern
2021-03-05 15:33     ` Alan Stern
2021-03-05 15:47     ` Greg Kroah-Hartman
2021-03-05 15:47       ` Greg Kroah-Hartman
2021-03-05 15:47       ` Greg Kroah-Hartman
2021-03-08  2:02       ` Chunfeng Yun
2021-03-08  2:02         ` Chunfeng Yun
2021-03-08  2:02         ` Chunfeng Yun
2021-03-08  1:58     ` Chunfeng Yun
2021-03-08  1:58       ` Chunfeng Yun
2021-03-08  1:58       ` Chunfeng Yun
2021-03-05  9:02 ` [PATCH 17/17] usb: xhci-mtk: print debug info of endpoint interval Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun
2021-03-05  9:02   ` Chunfeng Yun

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=1614934975-15188-3-git-send-email-chunfeng.yun@mediatek.com \
    --to=chunfeng.yun@mediatek.com \
    --cc=drinkcat@chromium.org \
    --cc=eddie.hung@mediatek.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ikjn@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=matthias.bgg@gmail.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.