From ac295df336b0cc8f58cfabe9385dd1a2c089a543 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 13 Jan 2025 11:00:30 +0100 Subject: [PATCH] 6.1-stable patches 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-6.1/series | 7 ++ ...iio-ad9832-correct-phase-range-check.patch | 54 +++++++++++ ...iio-ad9834-correct-phase-range-check.patch | 55 ++++++++++++ ...c3-gadget-fix-writing-nyet-threshold.patch | 59 ++++++++++++ ...p210x-add-phoenix-contact-ups-device.patch | 90 +++++++++++++++++++ ...-serial-option-add-meig-smart-srm815.patch | 66 ++++++++++++++ ...al-option-add-neoway-n723-ea-support.patch | 62 +++++++++++++ ...-add-max-sectors-quirk-for-nokia-208.patch | 66 ++++++++++++++ 8 files changed, 459 insertions(+) create mode 100644 queue-6.1/staging-iio-ad9832-correct-phase-range-check.patch create mode 100644 queue-6.1/staging-iio-ad9834-correct-phase-range-check.patch create mode 100644 queue-6.1/usb-dwc3-gadget-fix-writing-nyet-threshold.patch create mode 100644 queue-6.1/usb-serial-cp210x-add-phoenix-contact-ups-device.patch create mode 100644 queue-6.1/usb-serial-option-add-meig-smart-srm815.patch create mode 100644 queue-6.1/usb-serial-option-add-neoway-n723-ea-support.patch create mode 100644 queue-6.1/usb-storage-add-max-sectors-quirk-for-nokia-208.patch diff --git a/queue-6.1/series b/queue-6.1/series index 4cc37d6cb33..d5132df7207 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -53,3 +53,10 @@ drm-amd-display-increase-max_surfaces-to-the-value-supported-by-hw.patch dm-verity-fec-fix-rs-fec-repair-for-roots-unaligned-to-block-size-take-2.patch bpf-add-mem_write-attribute.patch bpf-fix-overloading-of-mem_uninit-s-meaning.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-6.1/staging-iio-ad9832-correct-phase-range-check.patch b/queue-6.1/staging-iio-ad9832-correct-phase-range-check.patch new file mode 100644 index 00000000000..d125fb862d9 --- /dev/null +++ b/queue-6.1/staging-iio-ad9832-correct-phase-range-check.patch @@ -0,0 +1,54 @@ +From 4636e859ebe0011f41e35fa79bab585b8004e9a3 Mon Sep 17 00:00:00 2001 +From: Zicheng Qu +Date: Thu, 7 Nov 2024 01:10:15 +0000 +Subject: staging: iio: ad9832: Correct phase range check + +From: Zicheng Qu + +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 +Link: https://patch.msgid.link/20241107011015.2472600-3-quzicheng@huawei.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + 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-6.1/staging-iio-ad9834-correct-phase-range-check.patch b/queue-6.1/staging-iio-ad9834-correct-phase-range-check.patch new file mode 100644 index 00000000000..c9bb732a0ef --- /dev/null +++ b/queue-6.1/staging-iio-ad9834-correct-phase-range-check.patch @@ -0,0 +1,55 @@ +From c0599762f0c7e260b99c6b7bceb8eae69b804c94 Mon Sep 17 00:00:00 2001 +From: Zicheng Qu +Date: Thu, 7 Nov 2024 01:10:14 +0000 +Subject: staging: iio: ad9834: Correct phase range check + +From: Zicheng Qu + +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 +Reviewed-by: Dan Carpenter +Link: https://patch.msgid.link/20241107011015.2472600-2-quzicheng@huawei.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -131,7 +131,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-6.1/usb-dwc3-gadget-fix-writing-nyet-threshold.patch b/queue-6.1/usb-dwc3-gadget-fix-writing-nyet-threshold.patch new file mode 100644 index 00000000000..1657fd77337 --- /dev/null +++ b/queue-6.1/usb-dwc3-gadget-fix-writing-nyet-threshold.patch @@ -0,0 +1,59 @@ +From 01ea6bf5cb58b20cc1bd159f0cf74a76cf04bb69 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Draszik?= +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 + +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 +Acked-by: Thinh Nguyen +Link: https://lore.kernel.org/r/20241209-dwc3-nyet-fix-v2-1-02755683345b@linaro.org +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -447,6 +447,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 +@@ -4056,8 +4056,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-6.1/usb-serial-cp210x-add-phoenix-contact-ups-device.patch b/queue-6.1/usb-serial-cp210x-add-phoenix-contact-ups-device.patch new file mode 100644 index 00000000000..5fc79ffc0e5 --- /dev/null +++ b/queue-6.1/usb-serial-cp210x-add-phoenix-contact-ups-device.patch @@ -0,0 +1,90 @@ +From 854eee93bd6e3dca619d47087af4d65b2045828e Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Wed, 8 Jan 2025 11:24:36 +0100 +Subject: USB: serial: cp210x: add Phoenix Contact UPS Device + +From: Johan Hovold + +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 + 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 +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/cp210x.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -223,6 +223,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-6.1/usb-serial-option-add-meig-smart-srm815.patch b/queue-6.1/usb-serial-option-add-meig-smart-srm815.patch new file mode 100644 index 00000000000..c1ae7e8930b --- /dev/null +++ b/queue-6.1/usb-serial-option-add-meig-smart-srm815.patch @@ -0,0 +1,66 @@ +From c1947d244f807b1f95605b75a4059e7b37b5dcc3 Mon Sep 17 00:00:00 2001 +From: Chukun Pan +Date: Sun, 15 Dec 2024 18:00:27 +0800 +Subject: USB: serial: option: add MeiG Smart SRM815 + +From: Chukun Pan + +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 +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 +Signed-off-by: Greg Kroah-Hartman +--- + 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-6.1/usb-serial-option-add-neoway-n723-ea-support.patch b/queue-6.1/usb-serial-option-add-neoway-n723-ea-support.patch new file mode 100644 index 00000000000..519cb06ff5d --- /dev/null +++ b/queue-6.1/usb-serial-option-add-neoway-n723-ea-support.patch @@ -0,0 +1,62 @@ +From f5b435be70cb126866fa92ffc6f89cda9e112c75 Mon Sep 17 00:00:00 2001 +From: Michal Hrusecky +Date: Tue, 7 Jan 2025 17:08:29 +0100 +Subject: USB: serial: option: add Neoway N723-EA support + +From: Michal Hrusecky + +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 +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + 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-6.1/usb-storage-add-max-sectors-quirk-for-nokia-208.patch b/queue-6.1/usb-storage-add-max-sectors-quirk-for-nokia-208.patch new file mode 100644 index 00000000000..603d260ee58 --- /dev/null +++ b/queue-6.1/usb-storage-add-max-sectors-quirk-for-nokia-208.patch @@ -0,0 +1,66 @@ +From cdef30e0774802df2f87024d68a9d86c3b99ca2a Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 1 Jan 2025 22:22:06 +0100 +Subject: usb-storage: Add max sectors quirk for Nokia 208 + +From: Lubomir Rintel + +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 +Cc: stable +Acked-by: Alan Stern +Link: https://lore.kernel.org/r/20250101212206.2386207-1-lkundrak@v3.sk +Signed-off-by: Greg Kroah-Hartman +--- + 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 , 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", -- 2.47.3