From 745c447579326d26a239676173854065fae1a197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 27 May 2020 17:29:45 +0200 Subject: bcm27xx: remove linux 4.19 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- ...-align_buf-for-small-IN-control-transfers.patch | 59 ---------------------- 1 file changed, 59 deletions(-) delete mode 100644 target/linux/bcm27xx/patches-4.19/950-0667-dwc_otg-use-align_buf-for-small-IN-control-transfers.patch (limited to 'target/linux/bcm27xx/patches-4.19/950-0667-dwc_otg-use-align_buf-for-small-IN-control-transfers.patch') diff --git a/target/linux/bcm27xx/patches-4.19/950-0667-dwc_otg-use-align_buf-for-small-IN-control-transfers.patch b/target/linux/bcm27xx/patches-4.19/950-0667-dwc_otg-use-align_buf-for-small-IN-control-transfers.patch deleted file mode 100644 index fbfef019b0..0000000000 --- a/target/linux/bcm27xx/patches-4.19/950-0667-dwc_otg-use-align_buf-for-small-IN-control-transfers.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 0c6190fa3cfeafd773b51b751a473d6775c23309 Mon Sep 17 00:00:00 2001 -From: P33M <2474547+P33M@users.noreply.github.com> -Date: Wed, 14 Aug 2019 14:35:50 +0100 -Subject: [PATCH] dwc_otg: use align_buf for small IN control transfers - (#3150) - -The hardware will do a 4-byte write to memory on any IN packet received -that is between 1 and 3 bytes long. This tramples memory in the uvcvideo -driver, as it uses a sequence of 1- and 2-byte control transfers to -query the min/max/range/step of each individual camera control and -gives us buffers that are offsets into a struct. - -Catch small control transfers in the data phase and use the align_buf -to bounce the correct number of bytes into the URB's buffer. - -In general, short packets on non-control endpoints should be OK as URBs -should have enough buffer space for a wMaxPacket size transfer. - -See: https://github.com/raspberrypi/linux/issues/3148 - -Signed-off-by: Jonathan Bell ---- - drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - ---- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -@@ -1182,6 +1182,7 @@ static void assign_and_init_hc(dwc_otg_h - dwc_otg_qtd_t *qtd; - dwc_otg_hcd_urb_t *urb; - void* ptr = NULL; -+ uint16_t wLength; - uint32_t intr_enable; - unsigned long flags; - gintmsk_data_t gintmsk = { .d32 = 0, }; -@@ -1293,6 +1294,23 @@ static void assign_and_init_hc(dwc_otg_h - break; - case DWC_OTG_CONTROL_DATA: - DWC_DEBUGPL(DBG_HCDV, " Control data transaction\n"); -+ /* -+ * Hardware bug: small IN packets with length < 4 -+ * cause a 4-byte write to memory. We can only catch -+ * the case where we know a short packet is going to be -+ * returned in a control transfer, as the length is -+ * specified in the setup packet. This is only an issue -+ * for drivers that insist on packing a device's various -+ * properties into a struct and querying them one at a -+ * time (uvcvideo). -+ * Force the use of align_buf so that the subsequent -+ * memcpy puts the right number of bytes in the URB's -+ * buffer. -+ */ -+ wLength = ((uint16_t *)urb->setup_packet)[3]; -+ if (hc->ep_is_in && wLength < 4) -+ ptr = hc->xfer_buff; -+ - hc->data_pid_start = qtd->data_toggle; - break; - case DWC_OTG_CONTROL_STATUS: -- cgit v1.2.3