linux_dsm_epyc7002/drivers/usb/renesas_usbhs
Yoshihiro Shimoda 7c87f4ea3f usb: renesas_usbhs: Clear PIPECFG for re-enabling pipe with other EPNUM
commit b1d25e6ee57c2605845595b6c61340d734253eb3 upstream.

According to the datasheet, this controller has a restriction
which "set an endpoint number so that combinations of the DIR bit and
the EPNUM bits do not overlap.". However, since the udc core driver is
possible to assign a bulk pipe as an interrupt endpoint, an endpoint
number may not match the pipe number. After that, when user rebinds
another gadget driver, this driver broke the restriction because
the driver didn't clear any configuration in usb_ep_disable().

Example:
 # modprobe g_ncm
 Then, EP3 = pipe 3, EP4 = pipe 4, EP5 = pipe 6
 # rmmod g_ncm
 # modprobe g_hid
 Then, EP3 = pipe 6, EP4 = pipe 7.
 So, pipe 3 and pipe 6 are set as EP3.

So, clear PIPECFG register in usbhs_pipe_free().

Fixes: dfb87b8bfe ("usb: renesas_usbhs: gadget: fix re-enabling pipe without re-connecting")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/1615168538-26101-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-03-17 17:06:29 +01:00
..
common.c usb: renesas_usbhs: Switch to GPIO descriptor 2019-12-30 20:37:42 +01:00
common.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00
fifo.c usb: renesas_usbhs: Clear pipe running flag in usbhs_pkt_pop() 2021-02-10 09:29:10 +01:00
fifo.h usb: renesas_usbhs: getting residue from callback_result 2020-06-24 17:14:44 +02:00
Kconfig usb: remove redundant 'default n' from Kconfig-s 2019-05-21 10:06:22 +02:00
Makefile usb: renesas_usbhs: Add support for RZ/A2 2019-05-21 10:25:59 +02:00
mod_gadget.c usb: Use fallthrough pseudo-keyword 2020-07-10 08:55:17 +02:00
mod_host.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
mod.c usb: renesas_usbhs: enable DVSE interrupt 2019-10-04 14:16:54 +02:00
mod.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00
pipe.c usb: renesas_usbhs: Clear PIPECFG for re-enabling pipe with other EPNUM 2021-03-17 17:06:29 +01:00
pipe.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00
rcar2.c phy: for 5.6 2020-01-17 07:52:26 +01:00
rcar2.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00
rcar3.c usb: renesas_usbhs: Use renesas_usbhs_platform_info on of_device_id.data 2019-06-26 10:33:09 +08:00
rcar3.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00
rza2.c phy: core: Add consumer device link support 2020-01-08 12:48:47 +05:30
rza.c usb: renesas_usbhs: Use renesas_usbhs_platform_info on of_device_id.data 2019-06-26 10:33:09 +08:00
rza.h usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-04-23 15:28:14 +02:00