linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP
@ 2021-08-13  6:30 Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 2/7] usb: mtu3: use @mult for HS isoc or intr Chunfeng Yun
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov, stable

Due to HS function is disabled when set as FS, need restore
it when set as SS/SSP.

Fixes: dc4c1aa7eae9 ("usb: mtu3: add ->udc_set_speed()")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix invalid email format for stable
v2: no changes
---
 drivers/usb/mtu3/mtu3_core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c
index 562f4357831e..6403f01947b2 100644
--- a/drivers/usb/mtu3/mtu3_core.c
+++ b/drivers/usb/mtu3/mtu3_core.c
@@ -227,11 +227,13 @@ static void mtu3_set_speed(struct mtu3 *mtu, enum usb_device_speed speed)
 		mtu3_setbits(mbase, U3D_POWER_MANAGEMENT, HS_ENABLE);
 		break;
 	case USB_SPEED_SUPER:
+		mtu3_setbits(mbase, U3D_POWER_MANAGEMENT, HS_ENABLE);
 		mtu3_clrbits(mtu->ippc_base, SSUSB_U3_CTRL(0),
 			     SSUSB_U3_PORT_SSP_SPEED);
 		break;
 	case USB_SPEED_SUPER_PLUS:
-			mtu3_setbits(mtu->ippc_base, SSUSB_U3_CTRL(0),
+		mtu3_setbits(mbase, U3D_POWER_MANAGEMENT, HS_ENABLE);
+		mtu3_setbits(mtu->ippc_base, SSUSB_U3_CTRL(0),
 			     SSUSB_U3_PORT_SSP_SPEED);
 		break;
 	default:
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 2/7] usb: mtu3: use @mult for HS isoc or intr
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 3/7] usb: mtu3: fix the wrong HS mult value Chunfeng Yun
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov, stable

For HS isoc or intr, should use @mult but not @burst
to save mult value.

Fixes: 4d79e042ed8b ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix invalid email format for stable
v2: new patch, split from [2/6] suggested by Felipe
---
 drivers/usb/mtu3/mtu3_gadget.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/mtu3/mtu3_gadget.c b/drivers/usb/mtu3/mtu3_gadget.c
index 5e21ba05ebf0..635ad277cb13 100644
--- a/drivers/usb/mtu3/mtu3_gadget.c
+++ b/drivers/usb/mtu3/mtu3_gadget.c
@@ -92,7 +92,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
 				usb_endpoint_xfer_int(desc)) {
 			interval = desc->bInterval;
 			interval = clamp_val(interval, 1, 16) - 1;
-			burst = (max_packet & GENMASK(12, 11)) >> 11;
+			mult = (max_packet & GENMASK(12, 11)) >> 11;
 		}
 		break;
 	default:
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 3/7] usb: mtu3: fix the wrong HS mult value
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 2/7] usb: mtu3: use @mult for HS isoc or intr Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 4/7] usb: cdnsp: fix the wrong mult value for HS isoc or intr Chunfeng Yun
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov, stable

usb_endpoint_maxp() returns actual max packet size, @mult will
always be zero, fix it by using usb_endpoint_maxp_mult() instead
to get mult.

Fixes: 4d79e042ed8b ("usb: mtu3: add support for usb3.1 IP")
Cc: stable@vger.kernel.org
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix invalid email format for stable
v2: split two patch [v2 2/7],[v2 3/7] suggested by Felipe
---
 drivers/usb/mtu3/mtu3_gadget.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/mtu3/mtu3_gadget.c b/drivers/usb/mtu3/mtu3_gadget.c
index 635ad277cb13..a399fd84c71f 100644
--- a/drivers/usb/mtu3/mtu3_gadget.c
+++ b/drivers/usb/mtu3/mtu3_gadget.c
@@ -64,14 +64,12 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
 	u32 interval = 0;
 	u32 mult = 0;
 	u32 burst = 0;
-	int max_packet;
 	int ret;
 
 	desc = mep->desc;
 	comp_desc = mep->comp_desc;
 	mep->type = usb_endpoint_type(desc);
-	max_packet = usb_endpoint_maxp(desc);
-	mep->maxp = max_packet & GENMASK(10, 0);
+	mep->maxp = usb_endpoint_maxp(desc);
 
 	switch (mtu->g.speed) {
 	case USB_SPEED_SUPER:
@@ -92,7 +90,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
 				usb_endpoint_xfer_int(desc)) {
 			interval = desc->bInterval;
 			interval = clamp_val(interval, 1, 16) - 1;
-			mult = (max_packet & GENMASK(12, 11)) >> 11;
+			mult = usb_endpoint_maxp_mult(desc) - 1;
 		}
 		break;
 	default:
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 4/7] usb: cdnsp: fix the wrong mult value for HS isoc or intr
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 2/7] usb: mtu3: use @mult for HS isoc or intr Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 3/7] usb: mtu3: fix the wrong HS mult value Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 5/7] usb: gadget: tegra-xudc: " Chunfeng Yun
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov, stable

usb_endpoint_maxp() only returns the bit[10:0] of wMaxPacketSize
of endpoint descriptor, not include bit[12:11] anymore, so use
usb_endpoint_maxp_mult() instead.

Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
Cc: stable@vger.kernel.org
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix invalid email format for stable
v2: add fixes, cc suggested by Felipe
---
 drivers/usb/cdns3/cdnsp-mem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/cdns3/cdnsp-mem.c b/drivers/usb/cdns3/cdnsp-mem.c
index a47948a1623f..ad9aee3f1e39 100644
--- a/drivers/usb/cdns3/cdnsp-mem.c
+++ b/drivers/usb/cdns3/cdnsp-mem.c
@@ -882,7 +882,7 @@ static u32 cdnsp_get_endpoint_max_burst(struct usb_gadget *g,
 	if (g->speed == USB_SPEED_HIGH &&
 	    (usb_endpoint_xfer_isoc(pep->endpoint.desc) ||
 	     usb_endpoint_xfer_int(pep->endpoint.desc)))
-		return (usb_endpoint_maxp(pep->endpoint.desc) & 0x1800) >> 11;
+		return usb_endpoint_maxp_mult(pep->endpoint.desc) - 1;
 
 	return 0;
 }
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 5/7] usb: gadget: tegra-xudc: fix the wrong mult value for HS isoc or intr
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
                   ` (2 preceding siblings ...)
  2021-08-13  6:30 ` [PATCH v3 4/7] usb: cdnsp: fix the wrong mult value for HS isoc or intr Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp Chunfeng Yun
  2021-08-13  6:30 ` [PATCH v3 7/7] usb: gadget: " Chunfeng Yun
  5 siblings, 0 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov, stable

usb_endpoint_maxp() only returns the bit[10:0] of wMaxPacketSize
of endpoint descriptor, not includes bit[12:11] anymore, so use
usb_endpoint_maxp_mult() instead.
Meanwhile no need AND 0x7ff when get maxp, remove it.

Fixes: 49db427232fe ("usb: gadget: Add UDC driver for tegra XUSB device mode controller")
Cc: stable@vger.kernel.org
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix invalid email format for stable
v2:
  add fixes, cc;
  add acked-by felipe;
---
 drivers/usb/gadget/udc/tegra-xudc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/udc/tegra-xudc.c b/drivers/usb/gadget/udc/tegra-xudc.c
index a54d1cef17db..40a7417e7ae4 100644
--- a/drivers/usb/gadget/udc/tegra-xudc.c
+++ b/drivers/usb/gadget/udc/tegra-xudc.c
@@ -1610,7 +1610,7 @@ static void tegra_xudc_ep_context_setup(struct tegra_xudc_ep *ep)
 	u16 maxpacket, maxburst = 0, esit = 0;
 	u32 val;
 
-	maxpacket = usb_endpoint_maxp(desc) & 0x7ff;
+	maxpacket = usb_endpoint_maxp(desc);
 	if (xudc->gadget.speed == USB_SPEED_SUPER) {
 		if (!usb_endpoint_xfer_control(desc))
 			maxburst = comp_desc->bMaxBurst;
@@ -1621,7 +1621,7 @@ static void tegra_xudc_ep_context_setup(struct tegra_xudc_ep *ep)
 		   (usb_endpoint_xfer_int(desc) ||
 		    usb_endpoint_xfer_isoc(desc))) {
 		if (xudc->gadget.speed == USB_SPEED_HIGH) {
-			maxburst = (usb_endpoint_maxp(desc) >> 11) & 0x3;
+			maxburst = usb_endpoint_maxp_mult(desc) - 1;
 			if (maxburst == 0x3) {
 				dev_warn(xudc->dev,
 					 "invalid endpoint maxburst\n");
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
                   ` (3 preceding siblings ...)
  2021-08-13  6:30 ` [PATCH v3 5/7] usb: gadget: tegra-xudc: " Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  2021-08-15  7:24   ` Florian Fainelli
  2021-08-13  6:30 ` [PATCH v3 7/7] usb: gadget: " Chunfeng Yun
  5 siblings, 1 reply; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov

usb_endpoint_maxp() already returns actual max packet size, no need
to AND 0x7ff.

Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix typo suggested by Sergei
v2: add acked-by felipe
---
 drivers/usb/gadget/udc/bdc/bdc_cmd.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/gadget/udc/bdc/bdc_cmd.c b/drivers/usb/gadget/udc/bdc/bdc_cmd.c
index 995f79c79f96..67887316a1a6 100644
--- a/drivers/usb/gadget/udc/bdc/bdc_cmd.c
+++ b/drivers/usb/gadget/udc/bdc/bdc_cmd.c
@@ -153,7 +153,6 @@ int bdc_config_ep(struct bdc *bdc, struct bdc_ep *ep)
 	si = clamp_val(si, 1, 16) - 1;
 
 	mps = usb_endpoint_maxp(desc);
-	mps &= 0x7ff;
 	param2 |= mps << MP_SHIFT;
 	param2 |= usb_endpoint_type(desc) << EPT_SHIFT;
 
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 7/7] usb: gadget: remove unnecessary AND operation when get ep maxp
  2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
                   ` (4 preceding siblings ...)
  2021-08-13  6:30 ` [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp Chunfeng Yun
@ 2021-08-13  6:30 ` Chunfeng Yun
  5 siblings, 0 replies; 8+ messages in thread
From: Chunfeng Yun @ 2021-08-13  6:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Chunfeng Yun, Matthias Brugger, Christophe JAILLET,
	Yang Yingliang, Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov

usb_endpoint_maxp() already returns actual max packet size, no need
to AND 0x7ff.

Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v3: fix typo suggested by Sergei
v2: add acked-by felipe
---
 include/linux/usb/gadget.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 75c7538e350a..f181c84310b6 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -491,7 +491,7 @@ extern char *usb_get_gadget_udc_name(void);
  */
 static inline size_t usb_ep_align(struct usb_ep *ep, size_t len)
 {
-	int max_packet_size = (size_t)usb_endpoint_maxp(ep->desc) & 0x7ff;
+	int max_packet_size = (size_t)usb_endpoint_maxp(ep->desc);
 
 	return round_up(len, max_packet_size);
 }
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp
  2021-08-13  6:30 ` [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp Chunfeng Yun
@ 2021-08-15  7:24   ` Florian Fainelli
  0 siblings, 0 replies; 8+ messages in thread
From: Florian Fainelli @ 2021-08-15  7:24 UTC (permalink / raw)
  To: Chunfeng Yun, Greg Kroah-Hartman, Felipe Balbi
  Cc: Pawel Laszczak, Al Cooper, Thierry Reding, Jonathan Hunter,
	Matthias Brugger, Christophe JAILLET, Yang Yingliang,
	Rikard Falkeborn, linux-usb, linux-kernel,
	bcm-kernel-feedback-list, linux-tegra, linux-arm-kernel,
	linux-mediatek, Eddie Hung, Sergei Shtylyov



On 8/13/2021 8:30 AM, Chunfeng Yun wrote:
> usb_endpoint_maxp() already returns actual max packet size, no need
> to AND 0x7ff.
> 
> Acked-by: Felipe Balbi <balbi@kernel.org>
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-08-15  7:24 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-13  6:30 [PATCH v3 1/7] usb: mtu3: restore HS function when set SS/SSP Chunfeng Yun
2021-08-13  6:30 ` [PATCH v3 2/7] usb: mtu3: use @mult for HS isoc or intr Chunfeng Yun
2021-08-13  6:30 ` [PATCH v3 3/7] usb: mtu3: fix the wrong HS mult value Chunfeng Yun
2021-08-13  6:30 ` [PATCH v3 4/7] usb: cdnsp: fix the wrong mult value for HS isoc or intr Chunfeng Yun
2021-08-13  6:30 ` [PATCH v3 5/7] usb: gadget: tegra-xudc: " Chunfeng Yun
2021-08-13  6:30 ` [PATCH v3 6/7] usb: gadget: bdc: remove unnecessary AND operation when get ep maxp Chunfeng Yun
2021-08-15  7:24   ` Florian Fainelli
2021-08-13  6:30 ` [PATCH v3 7/7] usb: gadget: " Chunfeng Yun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).