From: Greg Kroah-Hartman Date: Mon, 6 Nov 2023 12:19:45 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: v4.14.329~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=051f0e25ecf78ee5a662e15004c894a1a1927c62;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: alsa-usb-audio-add-quirk-flag-to-enable-native-dsd-for-mcintosh-devices.patch pci-prevent-xhci-driver-from-claiming-amd-vangogh-usb3-drd-device.patch tty-8250-add-brainboxes-oxford-semiconductor-based-quirks.patch tty-8250-add-support-for-additional-brainboxes-px-cards.patch tty-8250-add-support-for-additional-brainboxes-uc-cards.patch tty-8250-add-support-for-brainboxes-up-cards.patch tty-8250-add-support-for-intashield-is-100.patch tty-8250-add-support-for-intashield-ix-cards.patch tty-8250-fix-port-count-of-px-257.patch tty-8250-fix-up-px-803-px-857.patch tty-8250-remove-uc-257-and-uc-431.patch tty-n_gsm-fix-race-condition-in-status-line-change-on-dead-connections.patch usb-raw-gadget-properly-handle-interrupted-requests.patch usb-storage-set-1.50-as-the-lower-bcddevice-for-older-super-top-compatibility.patch usb-typec-tcpm-fix-null-pointer-dereference-in-tcpm_pd_svdm.patch --- diff --git a/queue-6.1/alsa-usb-audio-add-quirk-flag-to-enable-native-dsd-for-mcintosh-devices.patch b/queue-6.1/alsa-usb-audio-add-quirk-flag-to-enable-native-dsd-for-mcintosh-devices.patch new file mode 100644 index 00000000000..5913253e8bc --- /dev/null +++ b/queue-6.1/alsa-usb-audio-add-quirk-flag-to-enable-native-dsd-for-mcintosh-devices.patch @@ -0,0 +1,33 @@ +From 99248c8902f505ec064cf2b0f74629016f2f4c82 Mon Sep 17 00:00:00 2001 +From: Max McCarthy +Date: Tue, 24 Oct 2023 12:30:19 +0000 +Subject: ALSA: usb-audio: add quirk flag to enable native DSD for McIntosh devices + +From: Max McCarthy + +commit 99248c8902f505ec064cf2b0f74629016f2f4c82 upstream. + +McIntosh devices supporting native DSD require the feature to be +explicitly exposed. Add a flag that fixes an issue where DSD audio was +defaulting to DSD over PCM instead of delivering raw DSD data. + +Signed-off-by: Max McCarthy +Cc: +Link: https://lore.kernel.org/r/BL0PR13MB4433226005162D186A8DFF4AD6DFA@BL0PR13MB4433.namprd13.prod.outlook.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/usb/quirks.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/usb/quirks.c ++++ b/sound/usb/quirks.c +@@ -2218,6 +2218,8 @@ static const struct usb_audio_quirk_flag + QUIRK_FLAG_DSD_RAW), + VENDOR_FLG(0x2ab6, /* T+A devices */ + QUIRK_FLAG_DSD_RAW), ++ VENDOR_FLG(0x2afd, /* McIntosh Laboratory, Inc. */ ++ QUIRK_FLAG_DSD_RAW), + VENDOR_FLG(0x2d87, /* Cayin device */ + QUIRK_FLAG_DSD_RAW), + VENDOR_FLG(0x3336, /* HEM devices */ diff --git a/queue-6.1/pci-prevent-xhci-driver-from-claiming-amd-vangogh-usb3-drd-device.patch b/queue-6.1/pci-prevent-xhci-driver-from-claiming-amd-vangogh-usb3-drd-device.patch new file mode 100644 index 00000000000..60b9c879d4f --- /dev/null +++ b/queue-6.1/pci-prevent-xhci-driver-from-claiming-amd-vangogh-usb3-drd-device.patch @@ -0,0 +1,71 @@ +From 7e6f3b6d2c352b5fde37ce3fed83bdf6172eebd4 Mon Sep 17 00:00:00 2001 +From: Vicki Pfau +Date: Wed, 27 Sep 2023 13:22:12 -0700 +Subject: PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device + +From: Vicki Pfau + +commit 7e6f3b6d2c352b5fde37ce3fed83bdf6172eebd4 upstream. + +The AMD VanGogh SoC contains a DesignWare USB3 Dual-Role Device that can be +operated as either a USB Host or a USB Device, similar to on the AMD Nolan +platform. + +be6646bfbaec ("PCI: Prevent xHCI driver from claiming AMD Nolan USB3 DRD +device") added a quirk to let the dwc3 driver claim the Nolan device since +it provides more specific support. + +Extend that quirk to include the VanGogh SoC USB3 device. + +Link: https://lore.kernel.org/r/20230927202212.2388216-1-vi@endrift.com +Signed-off-by: Vicki Pfau +[bhelgaas: include be6646bfbaec reference, add stable tag] +Signed-off-by: Bjorn Helgaas +Cc: stable@vger.kernel.org # v3.19+ +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/quirks.c | 8 +++++--- + include/linux/pci_ids.h | 1 + + 2 files changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -595,7 +595,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT + /* + * In the AMD NL platform, this device ([1022:7912]) has a class code of + * PCI_CLASS_SERIAL_USB_XHCI (0x0c0330), which means the xhci driver will +- * claim it. ++ * claim it. The same applies on the VanGogh platform device ([1022:163a]). + * + * But the dwc3 driver is a more specific driver for this device, and we'd + * prefer to use it instead of xhci. To prevent xhci from claiming the +@@ -603,7 +603,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT + * defines as "USB device (not host controller)". The dwc3 driver can then + * claim it based on its Vendor and Device ID. + */ +-static void quirk_amd_nl_class(struct pci_dev *pdev) ++static void quirk_amd_dwc_class(struct pci_dev *pdev) + { + u32 class = pdev->class; + +@@ -613,7 +613,9 @@ static void quirk_amd_nl_class(struct pc + class, pdev->class); + } + DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_NL_USB, +- quirk_amd_nl_class); ++ quirk_amd_dwc_class); ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VANGOGH_USB, ++ quirk_amd_dwc_class); + + /* + * Synopsys USB 3.x host HAPS platform has a class code of +--- a/include/linux/pci_ids.h ++++ b/include/linux/pci_ids.h +@@ -568,6 +568,7 @@ + #define PCI_DEVICE_ID_AMD_19H_M60H_DF_F3 0x14e3 + #define PCI_DEVICE_ID_AMD_19H_M70H_DF_F3 0x14f3 + #define PCI_DEVICE_ID_AMD_19H_M78H_DF_F3 0x12fb ++#define PCI_DEVICE_ID_AMD_VANGOGH_USB 0x163a + #define PCI_DEVICE_ID_AMD_CNB17H_F3 0x1703 + #define PCI_DEVICE_ID_AMD_LANCE 0x2000 + #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 diff --git a/queue-6.1/r8152-rename-rtl8152_unplug-to-rtl8152_inaccessible.patch b/queue-6.1/r8152-rename-rtl8152_unplug-to-rtl8152_inaccessible.patch deleted file mode 100644 index 91196a3ff46..00000000000 --- a/queue-6.1/r8152-rename-rtl8152_unplug-to-rtl8152_inaccessible.patch +++ /dev/null @@ -1,457 +0,0 @@ -From affd72461635cea5a2c3bbfb9ed2e0a14766a4b9 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 20 Oct 2023 14:06:58 -0700 -Subject: r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE - -From: Douglas Anderson - -[ Upstream commit 715f67f33af45ce2cc3a5b1ef133cc8c8e7787b0 ] - -Whenever the RTL8152_UNPLUG is set that just tells the driver that all -accesses will fail and we should just immediately bail. A future patch -will use this same concept at a time when the driver hasn't actually -been unplugged but is about to be reset. Rename the flag in -preparation for the future patch. - -This is a no-op change and just a search and replace. - -Signed-off-by: Douglas Anderson -Reviewed-by: Grant Grundler -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin ---- - drivers/net/usb/r8152.c | 96 ++++++++++++++++++++--------------------- - 1 file changed, 48 insertions(+), 48 deletions(-) - -diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index 345e341d22338..76792269222ea 100644 ---- a/drivers/net/usb/r8152.c -+++ b/drivers/net/usb/r8152.c -@@ -763,7 +763,7 @@ enum rtl_register_content { - - /* rtl8152 flags */ - enum rtl8152_flags { -- RTL8152_UNPLUG = 0, -+ RTL8152_INACCESSIBLE = 0, - RTL8152_SET_RX_MODE, - WORK_ENABLE, - RTL8152_LINK_CHG, -@@ -1244,7 +1244,7 @@ int set_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data) - static void rtl_set_unplug(struct r8152 *tp) - { - if (tp->udev->state == USB_STATE_NOTATTACHED) { -- set_bit(RTL8152_UNPLUG, &tp->flags); -+ set_bit(RTL8152_INACCESSIBLE, &tp->flags); - smp_mb__after_atomic(); - } - } -@@ -1255,7 +1255,7 @@ static int generic_ocp_read(struct r8152 *tp, u16 index, u16 size, - u16 limit = 64; - int ret = 0; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - /* both size and indix must be 4 bytes align */ -@@ -1299,7 +1299,7 @@ static int generic_ocp_write(struct r8152 *tp, u16 index, u16 byteen, - u16 byteen_start, byteen_end, byen; - u16 limit = 512; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - /* both size and indix must be 4 bytes align */ -@@ -1529,7 +1529,7 @@ static int read_mii_word(struct net_device *netdev, int phy_id, int reg) - struct r8152 *tp = netdev_priv(netdev); - int ret; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - if (phy_id != R8152_PHY_ID) -@@ -1545,7 +1545,7 @@ void write_mii_word(struct net_device *netdev, int phy_id, int reg, int val) - { - struct r8152 *tp = netdev_priv(netdev); - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (phy_id != R8152_PHY_ID) -@@ -1750,7 +1750,7 @@ static void read_bulk_callback(struct urb *urb) - if (!tp) - return; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (!test_bit(WORK_ENABLE, &tp->flags)) -@@ -1842,7 +1842,7 @@ static void write_bulk_callback(struct urb *urb) - if (!test_bit(WORK_ENABLE, &tp->flags)) - return; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (!skb_queue_empty(&tp->tx_queue)) -@@ -1863,7 +1863,7 @@ static void intr_callback(struct urb *urb) - if (!test_bit(WORK_ENABLE, &tp->flags)) - return; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - switch (status) { -@@ -2607,7 +2607,7 @@ static void bottom_half(struct tasklet_struct *t) - { - struct r8152 *tp = from_tasklet(tp, t, tx_tl); - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (!test_bit(WORK_ENABLE, &tp->flags)) -@@ -2650,7 +2650,7 @@ int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags) - int ret; - - /* The rx would be stopped, so skip submitting */ -- if (test_bit(RTL8152_UNPLUG, &tp->flags) || -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags) || - !test_bit(WORK_ENABLE, &tp->flags) || !netif_carrier_ok(tp->netdev)) - return 0; - -@@ -3050,7 +3050,7 @@ static int rtl_enable(struct r8152 *tp) - - static int rtl8152_enable(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - set_tx_qlen(tp); -@@ -3137,7 +3137,7 @@ static int rtl8153_enable(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - set_tx_qlen(tp); -@@ -3169,7 +3169,7 @@ static void rtl_disable(struct r8152 *tp) - u32 ocp_data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - return; - } -@@ -3623,7 +3623,7 @@ static u16 r8153_phy_status(struct r8152 *tp, u16 desired) - } - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - break; - } - -@@ -3655,7 +3655,7 @@ static void r8153b_ups_en(struct r8152 *tp, bool enable) - int i; - - for (i = 0; i < 500; i++) { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) & - AUTOLOAD_DONE) -@@ -3697,7 +3697,7 @@ static void r8153c_ups_en(struct r8152 *tp, bool enable) - int i; - - for (i = 0; i < 500; i++) { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) & - AUTOLOAD_DONE) -@@ -4062,8 +4062,8 @@ static int rtl_phy_patch_request(struct r8152 *tp, bool request, bool wait) - for (i = 0; wait && i < 5000; i++) { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -- break; -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) -+ return -ENODEV; - - usleep_range(1000, 2000); - ocp_data = ocp_reg_read(tp, OCP_PHY_PATCH_STAT); -@@ -6026,7 +6026,7 @@ static int rtl8156_enable(struct r8152 *tp) - u32 ocp_data; - u16 speed; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - r8156_fc_parameter(tp); -@@ -6084,7 +6084,7 @@ static int rtl8156b_enable(struct r8152 *tp) - u32 ocp_data; - u16 speed; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - set_tx_qlen(tp); -@@ -6270,7 +6270,7 @@ static int rtl8152_set_speed(struct r8152 *tp, u8 autoneg, u32 speed, u8 duplex, - - static void rtl8152_up(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8152_aldps_en(tp, false); -@@ -6280,7 +6280,7 @@ static void rtl8152_up(struct r8152 *tp) - - static void rtl8152_down(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - return; - } -@@ -6295,7 +6295,7 @@ static void rtl8153_up(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153_u1u2en(tp, false); -@@ -6335,7 +6335,7 @@ static void rtl8153_down(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - return; - } -@@ -6356,7 +6356,7 @@ static void rtl8153b_up(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_u1u2en(tp, false); -@@ -6380,7 +6380,7 @@ static void rtl8153b_down(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - return; - } -@@ -6417,7 +6417,7 @@ static void rtl8153c_up(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_u1u2en(tp, false); -@@ -6498,7 +6498,7 @@ static void rtl8156_up(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_u1u2en(tp, false); -@@ -6571,7 +6571,7 @@ static void rtl8156_down(struct r8152 *tp) - { - u32 ocp_data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - return; - } -@@ -6709,7 +6709,7 @@ static void rtl_work_func_t(struct work_struct *work) - /* If the device is unplugged or !netif_running(), the workqueue - * doesn't need to wake the device, and could return directly. - */ -- if (test_bit(RTL8152_UNPLUG, &tp->flags) || !netif_running(tp->netdev)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags) || !netif_running(tp->netdev)) - return; - - if (usb_autopm_get_interface(tp->intf) < 0) -@@ -6748,7 +6748,7 @@ static void rtl_hw_phy_work_func_t(struct work_struct *work) - { - struct r8152 *tp = container_of(work, struct r8152, hw_phy_work.work); - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (usb_autopm_get_interface(tp->intf) < 0) -@@ -6875,7 +6875,7 @@ static int rtl8152_close(struct net_device *netdev) - netif_stop_queue(netdev); - - res = usb_autopm_get_interface(tp->intf); -- if (res < 0 || test_bit(RTL8152_UNPLUG, &tp->flags)) { -+ if (res < 0 || test_bit(RTL8152_INACCESSIBLE, &tp->flags)) { - rtl_drop_queued_tx(tp); - rtl_stop_rx(tp); - } else { -@@ -6908,7 +6908,7 @@ static void r8152b_init(struct r8152 *tp) - u32 ocp_data; - u16 data; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - data = r8152_mdio_read(tp, MII_BMCR); -@@ -6952,7 +6952,7 @@ static void r8153_init(struct r8152 *tp) - u16 data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153_u1u2en(tp, false); -@@ -6963,7 +6963,7 @@ static void r8153_init(struct r8152 *tp) - break; - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - break; - } - -@@ -7092,7 +7092,7 @@ static void r8153b_init(struct r8152 *tp) - u16 data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_u1u2en(tp, false); -@@ -7103,7 +7103,7 @@ static void r8153b_init(struct r8152 *tp) - break; - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - break; - } - -@@ -7174,7 +7174,7 @@ static void r8153c_init(struct r8152 *tp) - u16 data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_u1u2en(tp, false); -@@ -7194,7 +7194,7 @@ static void r8153c_init(struct r8152 *tp) - break; - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - } - -@@ -8023,7 +8023,7 @@ static void r8156_init(struct r8152 *tp) - u16 data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_ECM_OP); -@@ -8044,7 +8044,7 @@ static void r8156_init(struct r8152 *tp) - break; - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - } - -@@ -8119,7 +8119,7 @@ static void r8156b_init(struct r8152 *tp) - u16 data; - int i; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_ECM_OP); -@@ -8153,7 +8153,7 @@ static void r8156b_init(struct r8152 *tp) - break; - - msleep(20); -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - } - -@@ -9219,7 +9219,7 @@ static int rtl8152_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) - struct mii_ioctl_data *data = if_mii(rq); - int res; - -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return -ENODEV; - - res = usb_autopm_get_interface(tp->intf); -@@ -9321,7 +9321,7 @@ static const struct net_device_ops rtl8152_netdev_ops = { - - static void rtl8152_unload(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - if (tp->version != RTL_VER_01) -@@ -9330,7 +9330,7 @@ static void rtl8152_unload(struct r8152 *tp) - - static void rtl8153_unload(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153_power_cut_en(tp, false); -@@ -9338,7 +9338,7 @@ static void rtl8153_unload(struct r8152 *tp) - - static void rtl8153b_unload(struct r8152 *tp) - { -- if (test_bit(RTL8152_UNPLUG, &tp->flags)) -+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) - return; - - r8153b_power_cut_en(tp, false); --- -2.42.0 - diff --git a/queue-6.1/series b/queue-6.1/series index 49ab61d54be..c3630c11ff3 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -34,7 +34,6 @@ drm-amdgpu-reserve-fences-for-vm-update.patch net-chelsio-cxgb4-add-an-error-code-check-in-t4_load.patch r8152-check-for-unplug-in-rtl_phy_patch_request.patch r8152-check-for-unplug-in-r8153b_ups_en-r8153c_ups_e.patch -r8152-rename-rtl8152_unplug-to-rtl8152_inaccessible.patch powerpc-mm-fix-boot-crash-with-flatmem.patch io_uring-kiocb_done-should-not-trust-ki_pos-if-read-.patch ceph_wait_on_conflict_unlink-grab-reference-before-d.patch @@ -43,3 +42,18 @@ perf-evlist-avoid-frequency-mode-for-the-dummy-event.patch x86-kvm-svm-always-update-the-x2avic-msr-interception.patch mm-mempolicy-fix-set_mempolicy_home_node-previous-vma-pointer.patch mmap-fix-error-paths-with-dup_anon_vma.patch +alsa-usb-audio-add-quirk-flag-to-enable-native-dsd-for-mcintosh-devices.patch +pci-prevent-xhci-driver-from-claiming-amd-vangogh-usb3-drd-device.patch +usb-storage-set-1.50-as-the-lower-bcddevice-for-older-super-top-compatibility.patch +usb-typec-tcpm-fix-null-pointer-dereference-in-tcpm_pd_svdm.patch +usb-raw-gadget-properly-handle-interrupted-requests.patch +tty-n_gsm-fix-race-condition-in-status-line-change-on-dead-connections.patch +tty-8250-remove-uc-257-and-uc-431.patch +tty-8250-add-support-for-additional-brainboxes-uc-cards.patch +tty-8250-add-support-for-brainboxes-up-cards.patch +tty-8250-add-support-for-intashield-is-100.patch +tty-8250-fix-port-count-of-px-257.patch +tty-8250-fix-up-px-803-px-857.patch +tty-8250-add-support-for-additional-brainboxes-px-cards.patch +tty-8250-add-support-for-intashield-ix-cards.patch +tty-8250-add-brainboxes-oxford-semiconductor-based-quirks.patch diff --git a/queue-6.1/tty-8250-add-brainboxes-oxford-semiconductor-based-quirks.patch b/queue-6.1/tty-8250-add-brainboxes-oxford-semiconductor-based-quirks.patch new file mode 100644 index 00000000000..19fe67d4396 --- /dev/null +++ b/queue-6.1/tty-8250-add-brainboxes-oxford-semiconductor-based-quirks.patch @@ -0,0 +1,184 @@ +From e4876dacaca46a1b09f9b417480924ab12019a5b Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:17 +0100 +Subject: tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks + +From: Cameron Williams + +commit e4876dacaca46a1b09f9b417480924ab12019a5b upstream. + +Some of the later revisions of the Brainboxes PX cards are based +on the Oxford Semiconductor chipset. Due to the chip's unique setup +these cards need to be initialised. +Previously these were tested against a reference card with the same broken +baudrate on another PC, cancelling out the effect. With this patch they +work and can transfer/receive find against an FTDI-based device. + +Add all of the cards which require this setup to the quirks table. +Thanks to Maciej W. Rozycki for clarification on this chip. + +Fixes: ef5a03a26c87 ("tty: 8250: Add support for Brainboxes PX cards.") +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB7899D222A4AB2A4E8C57108FC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 147 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 147 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -2447,6 +2447,153 @@ static struct pci_serial_quirk pci_seria + .init = pci_oxsemi_tornado_init, + .setup = pci_oxsemi_tornado_setup, + }, ++ /* ++ * Brainboxes devices - all Oxsemi based ++ */ ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4027, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4028, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4029, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4019, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4016, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4015, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x400A, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x400E, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x400C, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x400B, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x400F, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4010, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4011, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x401D, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x401E, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4013, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4017, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, ++ { ++ .vendor = PCI_VENDOR_ID_INTASHIELD, ++ .device = 0x4018, ++ .subvendor = PCI_ANY_ID, ++ .subdevice = PCI_ANY_ID, ++ .init = pci_oxsemi_tornado_init, ++ .setup = pci_oxsemi_tornado_setup, ++ }, + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = 0x8811, diff --git a/queue-6.1/tty-8250-add-support-for-additional-brainboxes-px-cards.patch b/queue-6.1/tty-8250-add-support-for-additional-brainboxes-px-cards.patch new file mode 100644 index 00000000000..52c09e059f0 --- /dev/null +++ b/queue-6.1/tty-8250-add-support-for-additional-brainboxes-px-cards.patch @@ -0,0 +1,78 @@ +From 9604884e592cd04ead024c9737c67a77f175cab9 Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:15 +0100 +Subject: tty: 8250: Add support for additional Brainboxes PX cards + +From: Cameron Williams + +commit 9604884e592cd04ead024c9737c67a77f175cab9 upstream. + +Add support for some more of the Brainboxes PX (PCIe) range +of serial cards, namely +PX-275/PX-279, PX-475 (serial port, not LPT), PX-820, +PX-803/PX-857 (additional ID). + +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB78996BEC353FB346FC35444BC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -5207,6 +5207,13 @@ static const struct pci_device_id serial + 0, 0, + pbn_oxsemi_4_15625000 }, + /* ++ * Brainboxes PX-275/279 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0E41, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_8_115200 }, ++ /* + * Brainboxes PX-310 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x400E, +@@ -5253,17 +5260,39 @@ static const struct pci_device_id serial + 0, 0, + pbn_oxsemi_4_15625000 }, + /* ++ * Brainboxes PX-475 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x401D, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_1_15625000 }, ++ /* + * Brainboxes PX-803/PX-857 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x4009, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_b0_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x4018, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_2_15625000 }, + { PCI_VENDOR_ID_INTASHIELD, 0x401E, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_oxsemi_2_15625000 }, + /* ++ * Brainboxes PX-820 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x4002, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b0_4_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x4013, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_4_15625000 }, ++ /* + * Brainboxes PX-846 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x4008, diff --git a/queue-6.1/tty-8250-add-support-for-additional-brainboxes-uc-cards.patch b/queue-6.1/tty-8250-add-support-for-additional-brainboxes-uc-cards.patch new file mode 100644 index 00000000000..c949012c2c9 --- /dev/null +++ b/queue-6.1/tty-8250-add-support-for-additional-brainboxes-uc-cards.patch @@ -0,0 +1,122 @@ +From c563db486db7d245c0e2f319443417ae8e692f7f Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:09 +0100 +Subject: tty: 8250: Add support for additional Brainboxes UC cards + +From: Cameron Williams + +commit c563db486db7d245c0e2f319443417ae8e692f7f upstream. + +Add device IDs for some more Brainboxes UC cards, namely +UC-235/UC-246, UC-253/UC-734, UC-302, UC-313, UC-346, UC-357, +UC-607 and UC-836. + +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB789969998A6C3FAFCD95C85DC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 57 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -4958,6 +4958,17 @@ static const struct pci_device_id serial + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_b2_1_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0AA2, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_1_115200 }, ++ /* ++ * Brainboxes UC-253/UC-734 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0CA1, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, + /* + * Brainboxes UC-260/271/701/756 + */ +@@ -4990,6 +5001,14 @@ static const struct pci_device_id serial + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x08E2, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x08E3, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, + /* + * Brainboxes UC-310 + */ +@@ -5000,6 +5019,14 @@ static const struct pci_device_id serial + /* + * Brainboxes UC-313 + */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x08A1, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x08A2, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, + { PCI_VENDOR_ID_INTASHIELD, 0x08A3, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +@@ -5014,6 +5041,10 @@ static const struct pci_device_id serial + /* + * Brainboxes UC-346 + */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0B01, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_4_115200 }, + { PCI_VENDOR_ID_INTASHIELD, 0x0B02, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +@@ -5025,6 +5056,10 @@ static const struct pci_device_id serial + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0A82, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, + { PCI_VENDOR_ID_INTASHIELD, 0x0A83, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +@@ -5043,6 +5078,28 @@ static const struct pci_device_id serial + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, + pbn_b2_4_115200 }, ++ /* ++ * Brainboxes UC-607 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x09A1, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x09A2, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x09A3, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ /* ++ * Brainboxes UC-836 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0D41, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_4_115200 }, + /* + * Brainboxes PX-101 + */ diff --git a/queue-6.1/tty-8250-add-support-for-brainboxes-up-cards.patch b/queue-6.1/tty-8250-add-support-for-brainboxes-up-cards.patch new file mode 100644 index 00000000000..984cddbab8b --- /dev/null +++ b/queue-6.1/tty-8250-add-support-for-brainboxes-up-cards.patch @@ -0,0 +1,89 @@ +From 2c6fec1e1532f15350be7e14ba6b88a39d289fe4 Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:10 +0100 +Subject: tty: 8250: Add support for Brainboxes UP cards + +From: Cameron Williams + +commit 2c6fec1e1532f15350be7e14ba6b88a39d289fe4 upstream. + +Add support for the Brainboxes UP (powered PCI) range of +cards, namely UP-189, UP-200, UP-869 and UP-880. + +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB7899B5B59FF3D8587E88C117C4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 60 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -5101,6 +5101,66 @@ static const struct pci_device_id serial + 0, 0, + pbn_b2_4_115200 }, + /* ++ * Brainboxes UP-189 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0AC1, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0AC2, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0AC3, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ /* ++ * Brainboxes UP-200 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0B21, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0B22, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0B23, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ /* ++ * Brainboxes UP-869 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C01, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C02, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C03, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ /* ++ * Brainboxes UP-880 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C21, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C22, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ { PCI_VENDOR_ID_INTASHIELD, 0x0C23, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_b2_2_115200 }, ++ /* + * Brainboxes PX-101 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x4005, diff --git a/queue-6.1/tty-8250-add-support-for-intashield-is-100.patch b/queue-6.1/tty-8250-add-support-for-intashield-is-100.patch new file mode 100644 index 00000000000..3dd03188993 --- /dev/null +++ b/queue-6.1/tty-8250-add-support-for-intashield-is-100.patch @@ -0,0 +1,34 @@ +From 4d994e3cf1b541ff32dfb03fbbc60eea68f9645b Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:11 +0100 +Subject: tty: 8250: Add support for Intashield IS-100 + +From: Cameron Williams + +commit 4d994e3cf1b541ff32dfb03fbbc60eea68f9645b upstream. + +Add support for the Intashield IS-100 1 port serial card. + +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB7899A0E0CDAA505AF5A874CDC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -4932,6 +4932,12 @@ static const struct pci_device_id serial + pbn_b1_bt_1_115200 }, + + /* ++ * IntaShield IS-100 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x0D60, ++ PCI_ANY_ID, PCI_ANY_ID, 0, 0, ++ pbn_b2_1_115200 }, ++ /* + * IntaShield IS-200 + */ + { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS200, diff --git a/queue-6.1/tty-8250-add-support-for-intashield-ix-cards.patch b/queue-6.1/tty-8250-add-support-for-intashield-ix-cards.patch new file mode 100644 index 00000000000..91904932b97 --- /dev/null +++ b/queue-6.1/tty-8250-add-support-for-intashield-ix-cards.patch @@ -0,0 +1,49 @@ +From 62d2ec2ded278c7512d91ca7bf8eb9bac46baf90 Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:16 +0100 +Subject: tty: 8250: Add support for Intashield IX cards + +From: Cameron Williams + +commit 62d2ec2ded278c7512d91ca7bf8eb9bac46baf90 upstream. + +Add support for the IX-100, IX-200 and IX-400 serial cards. + +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB7899614E5837E82A03272A4BC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -4949,6 +4949,27 @@ static const struct pci_device_id serial + { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS400, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0dc0 */ + pbn_b2_4_115200 }, ++ /* ++ * IntaShield IX-100 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x4027, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_1_15625000 }, ++ /* ++ * IntaShield IX-200 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x4028, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_2_15625000 }, ++ /* ++ * IntaShield IX-400 ++ */ ++ { PCI_VENDOR_ID_INTASHIELD, 0x4029, ++ PCI_ANY_ID, PCI_ANY_ID, ++ 0, 0, ++ pbn_oxsemi_4_15625000 }, + /* Brainboxes Devices */ + /* + * Brainboxes UC-101 diff --git a/queue-6.1/tty-8250-fix-port-count-of-px-257.patch b/queue-6.1/tty-8250-fix-port-count-of-px-257.patch new file mode 100644 index 00000000000..b6de4cc5e95 --- /dev/null +++ b/queue-6.1/tty-8250-fix-port-count-of-px-257.patch @@ -0,0 +1,31 @@ +From d0ff5b24c2f112f29dea4c38b3bac9597b1be9ba Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:12 +0100 +Subject: tty: 8250: Fix port count of PX-257 + +From: Cameron Williams + +commit d0ff5b24c2f112f29dea4c38b3bac9597b1be9ba upstream. + +The port count of the PX-257 Rev3 is actually 2, not 4. + +Fixes: ef5a03a26c87 ("tty: 8250: Add support for Brainboxes PX cards.") +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB7899C804D9F04E727B5A0E8FC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -5198,7 +5198,7 @@ static const struct pci_device_id serial + { PCI_VENDOR_ID_INTASHIELD, 0x4015, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +- pbn_oxsemi_4_15625000 }, ++ pbn_oxsemi_2_15625000 }, + /* + * Brainboxes PX-260/PX-701 + */ diff --git a/queue-6.1/tty-8250-fix-up-px-803-px-857.patch b/queue-6.1/tty-8250-fix-up-px-803-px-857.patch new file mode 100644 index 00000000000..67a8fbe56f8 --- /dev/null +++ b/queue-6.1/tty-8250-fix-up-px-803-px-857.patch @@ -0,0 +1,43 @@ +From ee61337b934c99c2611e0a945d592019b2e00c82 Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:13 +0100 +Subject: tty: 8250: Fix up PX-803/PX-857 + +From: Cameron Williams + +commit ee61337b934c99c2611e0a945d592019b2e00c82 upstream. + +The PX-803/PX-857 are variants of each other, add a note. +Additionally fix up the port counts for the card (2, not 1). + +Fixes: ef5a03a26c87 ("tty: 8250: Add support for Brainboxes PX cards.") +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB789978C8ED872FB4B014E132C4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -5253,16 +5253,16 @@ static const struct pci_device_id serial + 0, 0, + pbn_oxsemi_4_15625000 }, + /* +- * Brainboxes PX-803 ++ * Brainboxes PX-803/PX-857 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x4009, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +- pbn_b0_1_115200 }, ++ pbn_b0_2_115200 }, + { PCI_VENDOR_ID_INTASHIELD, 0x401E, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, +- pbn_oxsemi_1_15625000 }, ++ pbn_oxsemi_2_15625000 }, + /* + * Brainboxes PX-846 + */ diff --git a/queue-6.1/tty-8250-remove-uc-257-and-uc-431.patch b/queue-6.1/tty-8250-remove-uc-257-and-uc-431.patch new file mode 100644 index 00000000000..ad7dbac7b65 --- /dev/null +++ b/queue-6.1/tty-8250-remove-uc-257-and-uc-431.patch @@ -0,0 +1,50 @@ +From 33092fb3af51deb80849e90a17bada44bbcde6b3 Mon Sep 17 00:00:00 2001 +From: Cameron Williams +Date: Fri, 20 Oct 2023 17:03:08 +0100 +Subject: tty: 8250: Remove UC-257 and UC-431 + +From: Cameron Williams + +commit 33092fb3af51deb80849e90a17bada44bbcde6b3 upstream. + +The UC-257 is a serial + LPT card, so remove it from this driver. +A patch has been submitted to add it to parport_serial instead. + +Additionaly, the UC-431 does not use this card ID, only the UC-420 +does. The 431 is a 3-port card and there is no generic 3-port configuration +available, so remove reference to it from this driver. + +Fixes: 152d1afa834c ("tty: Add support for Brainboxes UC cards.") +Cc: stable@vger.kernel.org +Signed-off-by: Cameron Williams +Link: https://lore.kernel.org/r/DU0PR02MB78995ADF7394C74AD4CF3357C4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_pci.c | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +--- a/drivers/tty/serial/8250/8250_pci.c ++++ b/drivers/tty/serial/8250/8250_pci.c +@@ -4959,13 +4959,6 @@ static const struct pci_device_id serial + 0, 0, + pbn_b2_1_115200 }, + /* +- * Brainboxes UC-257 +- */ +- { PCI_VENDOR_ID_INTASHIELD, 0x0861, +- PCI_ANY_ID, PCI_ANY_ID, +- 0, 0, +- pbn_b2_2_115200 }, +- /* + * Brainboxes UC-260/271/701/756 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x0D21, +@@ -5044,7 +5037,7 @@ static const struct pci_device_id serial + 0, 0, + pbn_b2_4_115200 }, + /* +- * Brainboxes UC-420/431 ++ * Brainboxes UC-420 + */ + { PCI_VENDOR_ID_INTASHIELD, 0x0921, + PCI_ANY_ID, PCI_ANY_ID, diff --git a/queue-6.1/tty-n_gsm-fix-race-condition-in-status-line-change-on-dead-connections.patch b/queue-6.1/tty-n_gsm-fix-race-condition-in-status-line-change-on-dead-connections.patch new file mode 100644 index 00000000000..67647a7a65d --- /dev/null +++ b/queue-6.1/tty-n_gsm-fix-race-condition-in-status-line-change-on-dead-connections.patch @@ -0,0 +1,43 @@ +From 3a75b205de43365f80a33b98ec9289785da56243 Mon Sep 17 00:00:00 2001 +From: Daniel Starke +Date: Thu, 26 Oct 2023 07:58:43 +0200 +Subject: tty: n_gsm: fix race condition in status line change on dead connections + +From: Daniel Starke + +commit 3a75b205de43365f80a33b98ec9289785da56243 upstream. + +gsm_cleanup_mux() cleans up the gsm by closing all DLCIs, stopping all +timers, removing the virtual tty devices and clearing the data queues. +This procedure, however, may cause subsequent changes of the virtual modem +status lines of a DLCI. More data is being added the outgoing data queue +and the deleted kick timer is restarted to handle this. At this point many +resources have already been removed by the cleanup procedure. Thus, a +kernel panic occurs. + +Fix this by proving in gsm_modem_update() that the cleanup procedure has +not been started and the mux is still alive. + +Note that writing to a virtual tty is already protected by checks against +the DLCI specific connection state. + +Fixes: c568f7086c6e ("tty: n_gsm: fix missing timer to handle stalled links") +Cc: stable +Signed-off-by: Daniel Starke +Link: https://lore.kernel.org/r/20231026055844.3127-1-daniel.starke@siemens.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/n_gsm.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/tty/n_gsm.c ++++ b/drivers/tty/n_gsm.c +@@ -3404,6 +3404,8 @@ static int gsm_modem_upd_via_msc(struct + + static int gsm_modem_update(struct gsm_dlci *dlci, u8 brk) + { ++ if (dlci->gsm->dead) ++ return -EL2HLT; + if (dlci->adaption == 2) { + /* Send convergence layer type 2 empty data frame. */ + gsm_modem_upd_via_data(dlci, brk); diff --git a/queue-6.1/usb-raw-gadget-properly-handle-interrupted-requests.patch b/queue-6.1/usb-raw-gadget-properly-handle-interrupted-requests.patch new file mode 100644 index 00000000000..8444170f0c2 --- /dev/null +++ b/queue-6.1/usb-raw-gadget-properly-handle-interrupted-requests.patch @@ -0,0 +1,108 @@ +From e8033bde451eddfb9b1bbd6e2d848c1b5c277222 Mon Sep 17 00:00:00 2001 +From: Andrey Konovalov +Date: Thu, 26 Oct 2023 22:01:12 +0200 +Subject: usb: raw-gadget: properly handle interrupted requests + +From: Andrey Konovalov + +commit e8033bde451eddfb9b1bbd6e2d848c1b5c277222 upstream. + +Currently, if a USB request that was queued by Raw Gadget is interrupted +(via a signal), wait_for_completion_interruptible returns -ERESTARTSYS. +Raw Gadget then attempts to propagate this value to userspace as a return +value from its ioctls. However, when -ERESTARTSYS is returned by a syscall +handler, the kernel internally restarts the syscall. + +This doesn't allow userspace applications to interrupt requests queued by +Raw Gadget (which is required when the emulated device is asked to switch +altsettings). It also violates the implied interface of Raw Gadget that a +single ioctl must only queue a single USB request. + +Instead, make Raw Gadget do what GadgetFS does: check whether the request +was interrupted (dequeued with status == -ECONNRESET) and report -EINTR to +userspace. + +Fixes: f2c2e717642c ("usb: gadget: add raw-gadget interface") +Cc: stable +Signed-off-by: Andrey Konovalov +Link: https://lore.kernel.org/r/0db45b1d7cc466e3d4d1ab353f61d63c977fbbc5.1698350424.git.andreyknvl@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/gadget/legacy/raw_gadget.c | 26 ++++++++++++++++---------- + 1 file changed, 16 insertions(+), 10 deletions(-) + +--- a/drivers/usb/gadget/legacy/raw_gadget.c ++++ b/drivers/usb/gadget/legacy/raw_gadget.c +@@ -663,12 +663,12 @@ static int raw_process_ep0_io(struct raw + if (WARN_ON(in && dev->ep0_out_pending)) { + ret = -ENODEV; + dev->state = STATE_DEV_FAILED; +- goto out_done; ++ goto out_unlock; + } + if (WARN_ON(!in && dev->ep0_in_pending)) { + ret = -ENODEV; + dev->state = STATE_DEV_FAILED; +- goto out_done; ++ goto out_unlock; + } + + dev->req->buf = data; +@@ -683,7 +683,7 @@ static int raw_process_ep0_io(struct raw + "fail, usb_ep_queue returned %d\n", ret); + spin_lock_irqsave(&dev->lock, flags); + dev->state = STATE_DEV_FAILED; +- goto out_done; ++ goto out_queue_failed; + } + + ret = wait_for_completion_interruptible(&dev->ep0_done); +@@ -692,13 +692,16 @@ static int raw_process_ep0_io(struct raw + usb_ep_dequeue(dev->gadget->ep0, dev->req); + wait_for_completion(&dev->ep0_done); + spin_lock_irqsave(&dev->lock, flags); +- goto out_done; ++ if (dev->ep0_status == -ECONNRESET) ++ dev->ep0_status = -EINTR; ++ goto out_interrupted; + } + + spin_lock_irqsave(&dev->lock, flags); +- ret = dev->ep0_status; + +-out_done: ++out_interrupted: ++ ret = dev->ep0_status; ++out_queue_failed: + dev->ep0_urb_queued = false; + out_unlock: + spin_unlock_irqrestore(&dev->lock, flags); +@@ -1067,7 +1070,7 @@ static int raw_process_ep_io(struct raw_ + "fail, usb_ep_queue returned %d\n", ret); + spin_lock_irqsave(&dev->lock, flags); + dev->state = STATE_DEV_FAILED; +- goto out_done; ++ goto out_queue_failed; + } + + ret = wait_for_completion_interruptible(&done); +@@ -1076,13 +1079,16 @@ static int raw_process_ep_io(struct raw_ + usb_ep_dequeue(ep->ep, ep->req); + wait_for_completion(&done); + spin_lock_irqsave(&dev->lock, flags); +- goto out_done; ++ if (ep->status == -ECONNRESET) ++ ep->status = -EINTR; ++ goto out_interrupted; + } + + spin_lock_irqsave(&dev->lock, flags); +- ret = ep->status; + +-out_done: ++out_interrupted: ++ ret = ep->status; ++out_queue_failed: + ep->urb_queued = false; + out_unlock: + spin_unlock_irqrestore(&dev->lock, flags); diff --git a/queue-6.1/usb-storage-set-1.50-as-the-lower-bcddevice-for-older-super-top-compatibility.patch b/queue-6.1/usb-storage-set-1.50-as-the-lower-bcddevice-for-older-super-top-compatibility.patch new file mode 100644 index 00000000000..d64aad644da --- /dev/null +++ b/queue-6.1/usb-storage-set-1.50-as-the-lower-bcddevice-for-older-super-top-compatibility.patch @@ -0,0 +1,32 @@ +From 0e3139e6543b241b3e65956a55c712333bef48ac Mon Sep 17 00:00:00 2001 +From: LihaSika +Date: Fri, 27 Oct 2023 20:28:04 +0300 +Subject: usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility + +From: LihaSika + +commit 0e3139e6543b241b3e65956a55c712333bef48ac upstream. + +Change lower bcdDevice value for "Super Top USB 2.0 SATA BRIDGE" to match +1.50. I have such an older device with bcdDevice=1.50 and it will not work +otherwise. + +Cc: stable@vger.kernel.org +Signed-off-by: Liha Sikanen +Link: https://lore.kernel.org/r/ccf7d12a-8362-4916-b3e0-f4150f54affd@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/storage/unusual_cypress.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/storage/unusual_cypress.h ++++ b/drivers/usb/storage/unusual_cypress.h +@@ -19,7 +19,7 @@ UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x + "Cypress ISD-300LP", + USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), + +-UNUSUAL_DEV( 0x14cd, 0x6116, 0x0160, 0x0160, ++UNUSUAL_DEV( 0x14cd, 0x6116, 0x0150, 0x0160, + "Super Top", + "USB 2.0 SATA BRIDGE", + USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), diff --git a/queue-6.1/usb-typec-tcpm-fix-null-pointer-dereference-in-tcpm_pd_svdm.patch b/queue-6.1/usb-typec-tcpm-fix-null-pointer-dereference-in-tcpm_pd_svdm.patch new file mode 100644 index 00000000000..db28827d918 --- /dev/null +++ b/queue-6.1/usb-typec-tcpm-fix-null-pointer-dereference-in-tcpm_pd_svdm.patch @@ -0,0 +1,49 @@ +From 4987daf86c152ff882d51572d154ad12e4ff3a4b Mon Sep 17 00:00:00 2001 +From: Jimmy Hu +Date: Fri, 20 Oct 2023 01:21:32 +0000 +Subject: usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm() + +From: Jimmy Hu + +commit 4987daf86c152ff882d51572d154ad12e4ff3a4b upstream. + +It is possible that typec_register_partner() returns ERR_PTR on failure. +When port->partner is an error, a NULL pointer dereference may occur as +shown below. + +[91222.095236][ T319] typec port0: failed to register partner (-17) +... +[91225.061491][ T319] Unable to handle kernel NULL pointer dereference +at virtual address 000000000000039f +[91225.274642][ T319] pc : tcpm_pd_data_request+0x310/0x13fc +[91225.274646][ T319] lr : tcpm_pd_data_request+0x298/0x13fc +[91225.308067][ T319] Call trace: +[91225.308070][ T319] tcpm_pd_data_request+0x310/0x13fc +[91225.308073][ T319] tcpm_pd_rx_handler+0x100/0x9e8 +[91225.355900][ T319] kthread_worker_fn+0x178/0x58c +[91225.355902][ T319] kthread+0x150/0x200 +[91225.355905][ T319] ret_from_fork+0x10/0x30 + +Add a check for port->partner to avoid dereferencing a NULL pointer. + +Fixes: 5e1d4c49fbc8 ("usb: typec: tcpm: Determine common SVDM Version") +Cc: stable@vger.kernel.org +Signed-off-by: Jimmy Hu +Link: https://lore.kernel.org/r/20231020012132.100960-1-hhhuuu@google.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/typec/tcpm/tcpm.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/typec/tcpm/tcpm.c ++++ b/drivers/usb/typec/tcpm/tcpm.c +@@ -1616,6 +1616,9 @@ static int tcpm_pd_svdm(struct tcpm_port + if (PD_VDO_VID(p[0]) != USB_SID_PD) + break; + ++ if (IS_ERR_OR_NULL(port->partner)) ++ break; ++ + if (PD_VDO_SVDM_VER(p[0]) < svdm_version) { + typec_partner_set_svdm_version(port->partner, + PD_VDO_SVDM_VER(p[0]));