]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Jan 2025 10:00:07 +0000 (11:00 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Jan 2025 10:00:07 +0000 (11:00 +0100)
added patches:
staging-iio-ad9832-correct-phase-range-check.patch
staging-iio-ad9834-correct-phase-range-check.patch
usb-dwc3-gadget-fix-writing-nyet-threshold.patch
usb-serial-cp210x-add-phoenix-contact-ups-device.patch
usb-serial-option-add-meig-smart-srm815.patch
usb-serial-option-add-neoway-n723-ea-support.patch
usb-storage-add-max-sectors-quirk-for-nokia-208.patch

queue-5.10/series
queue-5.10/staging-iio-ad9832-correct-phase-range-check.patch [new file with mode: 0644]
queue-5.10/staging-iio-ad9834-correct-phase-range-check.patch [new file with mode: 0644]
queue-5.10/usb-dwc3-gadget-fix-writing-nyet-threshold.patch [new file with mode: 0644]
queue-5.10/usb-serial-cp210x-add-phoenix-contact-ups-device.patch [new file with mode: 0644]
queue-5.10/usb-serial-option-add-meig-smart-srm815.patch [new file with mode: 0644]
queue-5.10/usb-serial-option-add-neoway-n723-ea-support.patch [new file with mode: 0644]
queue-5.10/usb-storage-add-max-sectors-quirk-for-nokia-208.patch [new file with mode: 0644]

index 273276439c6caf11cd22781792f8312daa3240c3..968f2e0c99d3c02e55909b621491cf0136fb3adc 100644 (file)
@@ -28,3 +28,10 @@ acpi-resource-add-asus-vivobook-x1504vap-to-irq1_level_low_skip_override.patch
 drm-amd-display-increase-max_surfaces-to-the-value-supported-by-hw.patch
 scripts-sorttable-fix-orc_sort_cmp-to-maintain-symmetry-and-transitivity.patch
 md-raid5-fix-atomicity-violation-in-raid5_cache_count.patch
+usb-serial-option-add-meig-smart-srm815.patch
+usb-serial-option-add-neoway-n723-ea-support.patch
+staging-iio-ad9834-correct-phase-range-check.patch
+staging-iio-ad9832-correct-phase-range-check.patch
+usb-storage-add-max-sectors-quirk-for-nokia-208.patch
+usb-serial-cp210x-add-phoenix-contact-ups-device.patch
+usb-dwc3-gadget-fix-writing-nyet-threshold.patch
diff --git a/queue-5.10/staging-iio-ad9832-correct-phase-range-check.patch b/queue-5.10/staging-iio-ad9832-correct-phase-range-check.patch
new file mode 100644 (file)
index 0000000..d125fb8
--- /dev/null
@@ -0,0 +1,54 @@
+From 4636e859ebe0011f41e35fa79bab585b8004e9a3 Mon Sep 17 00:00:00 2001
+From: Zicheng Qu <quzicheng@huawei.com>
+Date: Thu, 7 Nov 2024 01:10:15 +0000
+Subject: staging: iio: ad9832: Correct phase range check
+
+From: Zicheng Qu <quzicheng@huawei.com>
+
+commit 4636e859ebe0011f41e35fa79bab585b8004e9a3 upstream.
+
+User Perspective:
+When a user sets the phase value, the ad9832_write_phase() is called.
+The phase register has a 12-bit resolution, so the valid range is 0 to
+4095. If the phase offset value of 4096 is input, it effectively exactly
+equals 0 in the lower 12 bits, meaning no offset.
+
+Reasons for the Change:
+1) Original Condition (phase > BIT(AD9832_PHASE_BITS)):
+This condition allows a phase value equal to 2^12, which is 4096.
+However, this value exceeds the valid 12-bit range, as the maximum valid
+phase value should be 4095.
+2) Modified Condition (phase >= BIT(AD9832_PHASE_BITS)):
+Ensures that the phase value is within the valid range, preventing
+invalid datafrom being written.
+
+Impact on Subsequent Logic: st->data = cpu_to_be16(addr | phase):
+If the phase value is 2^12, i.e., 4096 (0001 0000 0000 0000), and addr
+is AD9832_REG_PHASE0 (1100 0000 0000 0000), then addr | phase results in
+1101 0000 0000 0000, occupying DB12. According to the section of WRITING
+TO A PHASE REGISTER in the datasheet, the MSB 12 PHASE0 bits should be
+DB11. The original condition leads to incorrect DB12 usage, which
+contradicts the datasheet and could pose potential issues for future
+updates if DB12 is used in such related cases.
+
+Fixes: ea707584bac1 ("Staging: IIO: DDS: AD9832 / AD9835 driver")
+Cc: stable@vger.kernel.org
+Signed-off-by: Zicheng Qu <quzicheng@huawei.com>
+Link: https://patch.msgid.link/20241107011015.2472600-3-quzicheng@huawei.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/staging/iio/frequency/ad9832.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/iio/frequency/ad9832.c
++++ b/drivers/staging/iio/frequency/ad9832.c
+@@ -158,7 +158,7 @@ static int ad9832_write_frequency(struct
+ static int ad9832_write_phase(struct ad9832_state *st,
+                             unsigned long addr, unsigned long phase)
+ {
+-      if (phase > BIT(AD9832_PHASE_BITS))
++      if (phase >= BIT(AD9832_PHASE_BITS))
+               return -EINVAL;
+       st->phase_data[0] = cpu_to_be16((AD9832_CMD_PHA8BITSW << CMD_SHIFT) |
diff --git a/queue-5.10/staging-iio-ad9834-correct-phase-range-check.patch b/queue-5.10/staging-iio-ad9834-correct-phase-range-check.patch
new file mode 100644 (file)
index 0000000..e206ee5
--- /dev/null
@@ -0,0 +1,55 @@
+From c0599762f0c7e260b99c6b7bceb8eae69b804c94 Mon Sep 17 00:00:00 2001
+From: Zicheng Qu <quzicheng@huawei.com>
+Date: Thu, 7 Nov 2024 01:10:14 +0000
+Subject: staging: iio: ad9834: Correct phase range check
+
+From: Zicheng Qu <quzicheng@huawei.com>
+
+commit c0599762f0c7e260b99c6b7bceb8eae69b804c94 upstream.
+
+User Perspective:
+When a user sets the phase value, the ad9834_write_phase() is called.
+The phase register has a 12-bit resolution, so the valid range is 0 to
+4095. If the phase offset value of 4096 is input, it effectively exactly
+equals 0 in the lower 12 bits, meaning no offset.
+
+Reasons for the Change:
+1) Original Condition (phase > BIT(AD9834_PHASE_BITS)):
+This condition allows a phase value equal to 2^12, which is 4096.
+However, this value exceeds the valid 12-bit range, as the maximum valid
+phase value should be 4095.
+2) Modified Condition (phase >= BIT(AD9834_PHASE_BITS)):
+Ensures that the phase value is within the valid range, preventing
+invalid datafrom being written.
+
+Impact on Subsequent Logic: st->data = cpu_to_be16(addr | phase):
+If the phase value is 2^12, i.e., 4096 (0001 0000 0000 0000), and addr
+is AD9834_REG_PHASE0 (1100 0000 0000 0000), then addr | phase results in
+1101 0000 0000 0000, occupying DB12. According to the section of WRITING
+TO A PHASE REGISTER in the datasheet, the MSB 12 PHASE0 bits should be
+DB11. The original condition leads to incorrect DB12 usage, which
+contradicts the datasheet and could pose potential issues for future
+updates if DB12 is used in such related cases.
+
+Fixes: 12b9d5bf76bf ("Staging: IIO: DDS: AD9833 / AD9834 driver")
+Cc: stable@vger.kernel.org
+Signed-off-by: Zicheng Qu <quzicheng@huawei.com>
+Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
+Link: https://patch.msgid.link/20241107011015.2472600-2-quzicheng@huawei.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/staging/iio/frequency/ad9834.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/iio/frequency/ad9834.c
++++ b/drivers/staging/iio/frequency/ad9834.c
+@@ -132,7 +132,7 @@ static int ad9834_write_frequency(struct
+ static int ad9834_write_phase(struct ad9834_state *st,
+                             unsigned long addr, unsigned long phase)
+ {
+-      if (phase > BIT(AD9834_PHASE_BITS))
++      if (phase >= BIT(AD9834_PHASE_BITS))
+               return -EINVAL;
+       st->data = cpu_to_be16(addr | phase);
diff --git a/queue-5.10/usb-dwc3-gadget-fix-writing-nyet-threshold.patch b/queue-5.10/usb-dwc3-gadget-fix-writing-nyet-threshold.patch
new file mode 100644 (file)
index 0000000..b4cd6d4
--- /dev/null
@@ -0,0 +1,59 @@
+From 01ea6bf5cb58b20cc1bd159f0cf74a76cf04bb69 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@linaro.org>
+Date: Mon, 9 Dec 2024 11:49:53 +0000
+Subject: usb: dwc3: gadget: fix writing NYET threshold
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: AndrĂ© Draszik <andre.draszik@linaro.org>
+
+commit 01ea6bf5cb58b20cc1bd159f0cf74a76cf04bb69 upstream.
+
+Before writing a new value to the register, the old value needs to be
+masked out for the new value to be programmed as intended, because at
+least in some cases the reset value of that field is 0xf (max value).
+
+At the moment, the dwc3 core initialises the threshold to the maximum
+value (0xf), with the option to override it via a DT. No upstream DTs
+seem to override it, therefore this commit doesn't change behaviour for
+any upstream platform. Nevertheless, the code should be fixed to have
+the desired outcome.
+
+Do so.
+
+Fixes: 80caf7d21adc ("usb: dwc3: add lpm erratum support")
+Cc: stable@vger.kernel.org # 5.10+ (needs adjustment for 5.4)
+Signed-off-by: AndrĂ© Draszik <andre.draszik@linaro.org>
+Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
+Link: https://lore.kernel.org/r/20241209-dwc3-nyet-fix-v2-1-02755683345b@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/dwc3/core.h   |    1 +
+ drivers/usb/dwc3/gadget.c |    4 +++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/dwc3/core.h
++++ b/drivers/usb/dwc3/core.h
+@@ -422,6 +422,7 @@
+ #define DWC3_DCTL_TRGTULST_SS_INACT   (DWC3_DCTL_TRGTULST(6))
+ /* These apply for core versions 1.94a and later */
++#define DWC3_DCTL_NYET_THRES_MASK     (0xf << 20)
+ #define DWC3_DCTL_NYET_THRES(n)               (((n) & 0xf) << 20)
+ #define DWC3_DCTL_KEEP_CONNECT                BIT(19)
+--- a/drivers/usb/dwc3/gadget.c
++++ b/drivers/usb/dwc3/gadget.c
+@@ -3519,8 +3519,10 @@ static void dwc3_gadget_conndone_interru
+               WARN_ONCE(DWC3_VER_IS_PRIOR(DWC3, 240A) && dwc->has_lpm_erratum,
+                               "LPM Erratum not available on dwc3 revisions < 2.40a\n");
+-              if (dwc->has_lpm_erratum && !DWC3_VER_IS_PRIOR(DWC3, 240A))
++              if (dwc->has_lpm_erratum && !DWC3_VER_IS_PRIOR(DWC3, 240A)) {
++                      reg &= ~DWC3_DCTL_NYET_THRES_MASK;
+                       reg |= DWC3_DCTL_NYET_THRES(dwc->lpm_nyet_threshold);
++              }
+               dwc3_gadget_dctl_write_safe(dwc, reg);
+       } else {
diff --git a/queue-5.10/usb-serial-cp210x-add-phoenix-contact-ups-device.patch b/queue-5.10/usb-serial-cp210x-add-phoenix-contact-ups-device.patch
new file mode 100644 (file)
index 0000000..6f742ea
--- /dev/null
@@ -0,0 +1,90 @@
+From 854eee93bd6e3dca619d47087af4d65b2045828e Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Wed, 8 Jan 2025 11:24:36 +0100
+Subject: USB: serial: cp210x: add Phoenix Contact UPS Device
+
+From: Johan Hovold <johan@kernel.org>
+
+commit 854eee93bd6e3dca619d47087af4d65b2045828e upstream.
+
+Phoenix Contact sells UPS Quint devices [1] with a custom datacable [2]
+that embeds a Silicon Labs converter:
+
+Bus 001 Device 003: ID 1b93:1013 Silicon Labs Phoenix Contact UPS Device
+Device Descriptor:
+  bLength                18
+  bDescriptorType         1
+  bcdUSB               2.00
+  bDeviceClass            0
+  bDeviceSubClass         0
+  bDeviceProtocol         0
+  bMaxPacketSize0        64
+  idVendor           0x1b93
+  idProduct          0x1013
+  bcdDevice            1.00
+  iManufacturer           1 Silicon Labs
+  iProduct                2 Phoenix Contact UPS Device
+  iSerial                 3 <redacted>
+  bNumConfigurations    1
+  Configuration Descriptor:
+    bLength                 9
+    bDescriptorType         2
+    wTotalLength       0x0020
+    bNumInterfaces          1
+    bConfigurationValue     1
+    iConfiguration          0
+    bmAttributes         0x80
+      (Bus Powered)
+    MaxPower              100mA
+    Interface Descriptor:
+      bLength                 9
+      bDescriptorType         4
+      bInterfaceNumber        0
+      bAlternateSetting       0
+      bNumEndpoints           2
+      bInterfaceClass       255 Vendor Specific Class
+      bInterfaceSubClass      0
+      bInterfaceProtocol      0
+      iInterface              2 Phoenix Contact UPS Device
+      Endpoint Descriptor:
+        bLength                 7
+        bDescriptorType         5
+        bEndpointAddress     0x01  EP 1 OUT
+        bmAttributes            2
+          Transfer Type            Bulk
+          Synch Type               None
+          Usage Type               Data
+        wMaxPacketSize     0x0040  1x 64 bytes
+        bInterval               0
+      Endpoint Descriptor:
+        bLength                 7
+        bDescriptorType         5
+        bEndpointAddress     0x82  EP 2 IN
+        bmAttributes            2
+          Transfer Type            Bulk
+          Synch Type               None
+          Usage Type               Data
+        wMaxPacketSize     0x0040  1x 64 bytes
+        bInterval               0
+
+[1] https://www.phoenixcontact.com/en-pc/products/power-supply-unit-quint-ps-1ac-24dc-10-2866763
+[2] https://www.phoenixcontact.com/en-il/products/data-cable-preassembled-ifs-usb-datacable-2320500
+
+Reported-by: Giuseppe Corbelli <giuseppe.corbelli@antaresvision.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/serial/cp210x.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -227,6 +227,7 @@ static const struct usb_device_id id_tab
+       { USB_DEVICE(0x19CF, 0x3000) }, /* Parrot NMEA GPS Flight Recorder */
+       { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
+       { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */
++      { USB_DEVICE(0x1B93, 0x1013) }, /* Phoenix Contact UPS Device */
+       { USB_DEVICE(0x1BA4, 0x0002) }, /* Silicon Labs 358x factory default */
+       { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
+       { USB_DEVICE(0x1D6F, 0x0010) }, /* Seluxit ApS RF Dongle */
diff --git a/queue-5.10/usb-serial-option-add-meig-smart-srm815.patch b/queue-5.10/usb-serial-option-add-meig-smart-srm815.patch
new file mode 100644 (file)
index 0000000..c1ae7e8
--- /dev/null
@@ -0,0 +1,66 @@
+From c1947d244f807b1f95605b75a4059e7b37b5dcc3 Mon Sep 17 00:00:00 2001
+From: Chukun Pan <amadeus@jmu.edu.cn>
+Date: Sun, 15 Dec 2024 18:00:27 +0800
+Subject: USB: serial: option: add MeiG Smart SRM815
+
+From: Chukun Pan <amadeus@jmu.edu.cn>
+
+commit c1947d244f807b1f95605b75a4059e7b37b5dcc3 upstream.
+
+It looks like SRM815 shares ID with SRM825L.
+
+T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
+D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
+P:  Vendor=2dee ProdID=4d22 Rev= 4.14
+S:  Manufacturer=MEIG
+S:  Product=LTE-A Module
+S:  SerialNumber=123456
+C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
+E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
+E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
+E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
+E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
+Link: https://lore.kernel.org/lkml/20241215100027.1970930-1-amadeus@jmu.edu.cn/
+Link: https://lore.kernel.org/all/4333b4d0-281f-439d-9944-5570cbc4971d@gmail.com/
+Cc: stable@vger.kernel.org
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/serial/option.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -621,7 +621,7 @@ static void option_instat_callback(struc
+ /* MeiG Smart Technology products */
+ #define MEIGSMART_VENDOR_ID                   0x2dee
+-/* MeiG Smart SRM825L based on Qualcomm 315 */
++/* MeiG Smart SRM815/SRM825L based on Qualcomm 315 */
+ #define MEIGSMART_PRODUCT_SRM825L             0x4d22
+ /* MeiG Smart SLM320 based on UNISOC UIS8910 */
+ #define MEIGSMART_PRODUCT_SLM320              0x4d41
+@@ -2405,6 +2405,7 @@ static const struct usb_device_id option
+       { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM770A, 0xff, 0, 0) },
++      { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0, 0) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x30) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x40) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x60) },
diff --git a/queue-5.10/usb-serial-option-add-neoway-n723-ea-support.patch b/queue-5.10/usb-serial-option-add-neoway-n723-ea-support.patch
new file mode 100644 (file)
index 0000000..519cb06
--- /dev/null
@@ -0,0 +1,62 @@
+From f5b435be70cb126866fa92ffc6f89cda9e112c75 Mon Sep 17 00:00:00 2001
+From: Michal Hrusecky <michal.hrusecky@turris.com>
+Date: Tue, 7 Jan 2025 17:08:29 +0100
+Subject: USB: serial: option: add Neoway N723-EA support
+
+From: Michal Hrusecky <michal.hrusecky@turris.com>
+
+commit f5b435be70cb126866fa92ffc6f89cda9e112c75 upstream.
+
+Update the USB serial option driver to support Neoway N723-EA.
+
+ID 2949:8700 Marvell Mobile Composite Device Bus
+
+T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
+D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
+P:  Vendor=2949 ProdID=8700 Rev= 1.00
+S:  Manufacturer=Marvell
+S:  Product=Mobile Composite Device Bus
+S:  SerialNumber=200806006809080000
+C:* #Ifs= 5 Cfg#= 1 Atr=c0 MxPwr=500mA
+A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
+I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
+E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
+E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
+E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
+E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0e(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
+E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
+E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+Tested successfully connecting to the Internet via rndis interface after
+dialing via AT commands on If#=4 or If#=6.
+
+Not sure of the purpose of the other serial interface.
+
+Signed-off-by: Michal Hrusecky <michal.hrusecky@turris.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/serial/option.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -2413,6 +2413,7 @@ static const struct usb_device_id option
+         .driver_info = NCTRL(1) },
+       { USB_DEVICE_INTERFACE_CLASS(0x1bbb, 0x0640, 0xff),                     /* TCL IK512 ECM */
+         .driver_info = NCTRL(3) },
++      { USB_DEVICE_INTERFACE_CLASS(0x2949, 0x8700, 0xff) },                   /* Neoway N723-EA */
+       { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/queue-5.10/usb-storage-add-max-sectors-quirk-for-nokia-208.patch b/queue-5.10/usb-storage-add-max-sectors-quirk-for-nokia-208.patch
new file mode 100644 (file)
index 0000000..603d260
--- /dev/null
@@ -0,0 +1,66 @@
+From cdef30e0774802df2f87024d68a9d86c3b99ca2a Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lrintel@redhat.com>
+Date: Wed, 1 Jan 2025 22:22:06 +0100
+Subject: usb-storage: Add max sectors quirk for Nokia 208
+
+From: Lubomir Rintel <lrintel@redhat.com>
+
+commit cdef30e0774802df2f87024d68a9d86c3b99ca2a upstream.
+
+This fixes data corruption when accessing the internal SD card in mass
+storage mode.
+
+I am actually not too sure why. I didn't figure a straightforward way to
+reproduce the issue, but i seem to get garbage when issuing a lot (over 50)
+of large reads (over 120 sectors) are done in a quick succession. That is,
+time seems to matter here -- larger reads are fine if they are done with
+some delay between them.
+
+But I'm not great at understanding this sort of things, so I'll assume
+the issue other, smarter, folks were seeing with similar phones is the
+same problem and I'll just put my quirk next to theirs.
+
+The "Software details" screen on the phone is as follows:
+
+  V 04.06
+  07-08-13
+  RM-849
+  (c) Nokia
+
+TL;DR version of the device descriptor:
+
+  idVendor           0x0421 Nokia Mobile Phones
+  idProduct          0x06c2
+  bcdDevice            4.06
+  iManufacturer           1 Nokia
+  iProduct                2 Nokia 208
+
+The patch assumes older firmwares are broken too (I'm unable to test, but
+no biggie if they aren't I guess), and I have no idea if newer firmware
+exists.
+
+Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
+Cc: stable <stable@kernel.org>
+Acked-by: Alan Stern <stern@rowland.harvard.edu>
+Link: https://lore.kernel.org/r/20250101212206.2386207-1-lkundrak@v3.sk
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/storage/unusual_devs.h |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/usb/storage/unusual_devs.h
++++ b/drivers/usb/storage/unusual_devs.h
+@@ -255,6 +255,13 @@ UNUSUAL_DEV(  0x0421, 0x06aa, 0x1110, 0x
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+               US_FL_MAX_SECTORS_64 ),
++/* Added by Lubomir Rintel <lkundrak@v3.sk>, a very fine chap */
++UNUSUAL_DEV(  0x0421, 0x06c2, 0x0000, 0x0406,
++              "Nokia",
++              "Nokia 208",
++              USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++              US_FL_MAX_SECTORS_64 ),
++
+ #ifdef NO_SDDR09
+ UNUSUAL_DEV(  0x0436, 0x0005, 0x0100, 0x0100,
+               "Microtech",