From 659af92cab639d0df62c7c849166b2f3544db6fd Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 9 Dec 2020 08:52:36 +0100 Subject: [PATCH] 4.4-stable patches added patches: alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch alsa-hda-realtek-add-new-codec-supported-for-alc897.patch tty-fix-pgrp-locking-in-tiocspgrp.patch usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch usb-serial-ch341-add-new-product-id-for-ch341a.patch usb-serial-ch341-sort-device-id-entries.patch usb-serial-kl5kusb105-fix-memleak-on-open.patch usb-serial-option-add-fibocom-nl668-variants.patch usb-serial-option-add-support-for-thales-cinterion-exs82.patch --- ...tion-to-enforce-preferred_dacs-pairs.patch | 70 ++++ ...k-add-new-codec-supported-for-alc897.patch | 39 +++ queue-4.4/series | 9 + .../tty-fix-pgrp-locking-in-tiocspgrp.patch | 44 +++ ...py-of-descriptors-for-userspace-copy.patch | 51 +++ ...-ch341-add-new-product-id-for-ch341a.patch | 35 ++ ...-serial-ch341-sort-device-id-entries.patch | 38 +++ ...erial-kl5kusb105-fix-memleak-on-open.patch | 48 +++ ...al-option-add-fibocom-nl668-variants.patch | 57 ++++ ...d-support-for-thales-cinterion-exs82.patch | 322 ++++++++++++++++++ 10 files changed, 713 insertions(+) create mode 100644 queue-4.4/alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch create mode 100644 queue-4.4/alsa-hda-realtek-add-new-codec-supported-for-alc897.patch create mode 100644 queue-4.4/tty-fix-pgrp-locking-in-tiocspgrp.patch create mode 100644 queue-4.4/usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch create mode 100644 queue-4.4/usb-serial-ch341-add-new-product-id-for-ch341a.patch create mode 100644 queue-4.4/usb-serial-ch341-sort-device-id-entries.patch create mode 100644 queue-4.4/usb-serial-kl5kusb105-fix-memleak-on-open.patch create mode 100644 queue-4.4/usb-serial-option-add-fibocom-nl668-variants.patch create mode 100644 queue-4.4/usb-serial-option-add-support-for-thales-cinterion-exs82.patch diff --git a/queue-4.4/alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch b/queue-4.4/alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch new file mode 100644 index 00000000000..aa89cb0736c --- /dev/null +++ b/queue-4.4/alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch @@ -0,0 +1,70 @@ +From 242d990c158d5b1dabd166516e21992baef5f26a Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 27 Nov 2020 15:11:03 +0100 +Subject: ALSA: hda/generic: Add option to enforce preferred_dacs pairs + +From: Takashi Iwai + +commit 242d990c158d5b1dabd166516e21992baef5f26a upstream. + +The generic parser accepts the preferred_dacs[] pairs as a hint for +assigning a DAC to each pin, but this hint doesn't work always +effectively. Currently it's merely a secondary choice after the trial +with the path index failed. This made sometimes it difficult to +assign DACs without mimicking the connection list and/or the badness +table. + +This patch adds a new flag, obey_preferred_dacs, that changes the +behavior of the parser. As its name stands, the parser obeys the +given preferred_dacs[] pairs by skipping the path index matching and +giving a high penalty if no DAC is assigned by the pairs. This mode +will help for assigning the fixed DACs forcibly from the codec +driver. + +Cc: +Link: https://lore.kernel.org/r/20201127141104.11041-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_generic.c | 12 ++++++++---- + sound/pci/hda/hda_generic.h | 1 + + 2 files changed, 9 insertions(+), 4 deletions(-) + +--- a/sound/pci/hda/hda_generic.c ++++ b/sound/pci/hda/hda_generic.c +@@ -1344,16 +1344,20 @@ static int try_assign_dacs(struct hda_co + struct nid_path *path; + hda_nid_t pin = pins[i]; + +- path = snd_hda_get_path_from_idx(codec, path_idx[i]); +- if (path) { +- badness += assign_out_path_ctls(codec, path); +- continue; ++ if (!spec->obey_preferred_dacs) { ++ path = snd_hda_get_path_from_idx(codec, path_idx[i]); ++ if (path) { ++ badness += assign_out_path_ctls(codec, path); ++ continue; ++ } + } + + dacs[i] = get_preferred_dac(codec, pin); + if (dacs[i]) { + if (is_dac_already_used(codec, dacs[i])) + badness += bad->shared_primary; ++ } else if (spec->obey_preferred_dacs) { ++ badness += BAD_NO_PRIMARY_DAC; + } + + if (!dacs[i]) +--- a/sound/pci/hda/hda_generic.h ++++ b/sound/pci/hda/hda_generic.h +@@ -229,6 +229,7 @@ struct hda_gen_spec { + unsigned int add_jack_modes:1; /* add i/o jack mode enum ctls */ + unsigned int power_down_unused:1; /* power down unused widgets */ + unsigned int dac_min_mute:1; /* minimal = mute for DACs */ ++ unsigned int obey_preferred_dacs:1; /* obey preferred_dacs assignment */ + + /* other internal flags */ + unsigned int no_analog:1; /* digital I/O only */ diff --git a/queue-4.4/alsa-hda-realtek-add-new-codec-supported-for-alc897.patch b/queue-4.4/alsa-hda-realtek-add-new-codec-supported-for-alc897.patch new file mode 100644 index 00000000000..1aac8e73c2f --- /dev/null +++ b/queue-4.4/alsa-hda-realtek-add-new-codec-supported-for-alc897.patch @@ -0,0 +1,39 @@ +From e5782a5d5054bf1e03cb7fbd87035037c2a22698 Mon Sep 17 00:00:00 2001 +From: Kailang Yang +Date: Fri, 27 Nov 2020 14:39:23 +0800 +Subject: ALSA: hda/realtek - Add new codec supported for ALC897 + +From: Kailang Yang + +commit e5782a5d5054bf1e03cb7fbd87035037c2a22698 upstream. + +Enable new codec supported for ALC897. + +Signed-off-by: Kailang Yang +Cc: +Link: https://lore.kernel.org/r/3b00520f304842aab8291eb8d9191bd8@realtek.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -378,6 +378,7 @@ static void alc_fill_eapd_coef(struct hd + alc_update_coef_idx(codec, 0x7, 1<<5, 0); + break; + case 0x10ec0892: ++ case 0x10ec0897: + alc_update_coef_idx(codec, 0x7, 1<<5, 0); + break; + case 0x10ec0899: +@@ -7342,6 +7343,7 @@ static const struct hda_device_id snd_hd + HDA_CODEC_ENTRY(0x10ec0888, "ALC888", patch_alc882), + HDA_CODEC_ENTRY(0x10ec0889, "ALC889", patch_alc882), + HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662), ++ HDA_CODEC_ENTRY(0x10ec0897, "ALC897", patch_alc662), + HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882), + HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882), + {} /* terminator */ diff --git a/queue-4.4/series b/queue-4.4/series index dd09bdd9eb9..5e8eeb3cfd9 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -13,3 +13,12 @@ powerpc-stop-exporting-__clear_user-which-is-now-inlined.patch btrfs-sysfs-init-devices-outside-of-the-chunk_mutex.patch vlan-consolidate-vlan-parsing-code-and-limit-max-par.patch geneve-pull-ip-header-before-ecn-decapsulation.patch +usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch +usb-serial-kl5kusb105-fix-memleak-on-open.patch +usb-serial-ch341-add-new-product-id-for-ch341a.patch +usb-serial-ch341-sort-device-id-entries.patch +usb-serial-option-add-fibocom-nl668-variants.patch +usb-serial-option-add-support-for-thales-cinterion-exs82.patch +tty-fix-pgrp-locking-in-tiocspgrp.patch +alsa-hda-realtek-add-new-codec-supported-for-alc897.patch +alsa-hda-generic-add-option-to-enforce-preferred_dacs-pairs.patch diff --git a/queue-4.4/tty-fix-pgrp-locking-in-tiocspgrp.patch b/queue-4.4/tty-fix-pgrp-locking-in-tiocspgrp.patch new file mode 100644 index 00000000000..b6ed20792dc --- /dev/null +++ b/queue-4.4/tty-fix-pgrp-locking-in-tiocspgrp.patch @@ -0,0 +1,44 @@ +From 54ffccbf053b5b6ca4f6e45094b942fab92a25fc Mon Sep 17 00:00:00 2001 +From: Jann Horn +Date: Thu, 3 Dec 2020 02:25:04 +0100 +Subject: tty: Fix ->pgrp locking in tiocspgrp() + +From: Jann Horn + +commit 54ffccbf053b5b6ca4f6e45094b942fab92a25fc upstream. + +tiocspgrp() takes two tty_struct pointers: One to the tty that userspace +passed to ioctl() (`tty`) and one to the TTY being changed (`real_tty`). +These pointers are different when ioctl() is called with a master fd. + +To properly lock real_tty->pgrp, we must take real_tty->ctrl_lock. + +This bug makes it possible for racing ioctl(TIOCSPGRP, ...) calls on +both sides of a PTY pair to corrupt the refcount of `struct pid`, +leading to use-after-free errors. + +Fixes: 47f86834bbd4 ("redo locking of tty->pgrp") +CC: stable@kernel.org +Signed-off-by: Jann Horn +Reviewed-by: Jiri Slaby +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/tty/tty_io.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/tty/tty_io.c ++++ b/drivers/tty/tty_io.c +@@ -2618,10 +2618,10 @@ static int tiocspgrp(struct tty_struct * + if (session_of_pgrp(pgrp) != task_session(current)) + goto out_unlock; + retval = 0; +- spin_lock_irq(&tty->ctrl_lock); ++ spin_lock_irq(&real_tty->ctrl_lock); + put_pid(real_tty->pgrp); + real_tty->pgrp = get_pid(pgrp); +- spin_unlock_irq(&tty->ctrl_lock); ++ spin_unlock_irq(&real_tty->ctrl_lock); + out_unlock: + rcu_read_unlock(); + return retval; diff --git a/queue-4.4/usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch b/queue-4.4/usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch new file mode 100644 index 00000000000..1650b562d40 --- /dev/null +++ b/queue-4.4/usb-gadget-f_fs-use-local-copy-of-descriptors-for-userspace-copy.patch @@ -0,0 +1,51 @@ +From a4b98a7512f18534ce33a7e98e49115af59ffa00 Mon Sep 17 00:00:00 2001 +From: Vamsi Krishna Samavedam +Date: Mon, 30 Nov 2020 12:34:53 -0800 +Subject: usb: gadget: f_fs: Use local copy of descriptors for userspace copy + +From: Vamsi Krishna Samavedam + +commit a4b98a7512f18534ce33a7e98e49115af59ffa00 upstream. + +The function may be unbound causing the ffs_ep and its descriptors +to be freed while userspace is in the middle of an ioctl requesting +the same descriptors. Avoid dangling pointer reference by first +making a local copy of desctiptors before releasing the spinlock. + +Fixes: c559a3534109 ("usb: gadget: f_fs: add ioctl returning ep descriptor") +Reviewed-by: Peter Chen +Signed-off-by: Vamsi Krishna Samavedam +Signed-off-by: Jack Pham +Cc: stable +Link: https://lore.kernel.org/r/20201130203453.28154-1-jackp@codeaurora.org +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/function/f_fs.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/usb/gadget/function/f_fs.c ++++ b/drivers/usb/gadget/function/f_fs.c +@@ -1034,7 +1034,7 @@ static long ffs_epfile_ioctl(struct file + case FUNCTIONFS_ENDPOINT_DESC: + { + int desc_idx; +- struct usb_endpoint_descriptor *desc; ++ struct usb_endpoint_descriptor desc1, *desc; + + switch (epfile->ffs->gadget->speed) { + case USB_SPEED_SUPER: +@@ -1046,10 +1046,12 @@ static long ffs_epfile_ioctl(struct file + default: + desc_idx = 0; + } ++ + desc = epfile->ep->descs[desc_idx]; ++ memcpy(&desc1, desc, desc->bLength); + + spin_unlock_irq(&epfile->ffs->eps_lock); +- ret = copy_to_user((void *)value, desc, sizeof(*desc)); ++ ret = copy_to_user((void *)value, &desc1, desc1.bLength); + if (ret) + ret = -EFAULT; + return ret; diff --git a/queue-4.4/usb-serial-ch341-add-new-product-id-for-ch341a.patch b/queue-4.4/usb-serial-ch341-add-new-product-id-for-ch341a.patch new file mode 100644 index 00000000000..289cc327998 --- /dev/null +++ b/queue-4.4/usb-serial-ch341-add-new-product-id-for-ch341a.patch @@ -0,0 +1,35 @@ +From 46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63 Mon Sep 17 00:00:00 2001 +From: Jan-Niklas Burfeind +Date: Thu, 3 Dec 2020 04:03:59 +0100 +Subject: USB: serial: ch341: add new Product ID for CH341A + +From: Jan-Niklas Burfeind + +commit 46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63 upstream. + +Add PID for CH340 that's found on a ch341 based Programmer made by keeyees. +The specific device that contains the serial converter is described +here: http://www.keeyees.com/a/Products/ej/36.html + +The driver works flawlessly as soon as the new PID (0x5512) is added to +it. + +Signed-off-by: Jan-Niklas Burfeind +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ch341.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/ch341.c ++++ b/drivers/usb/serial/ch341.c +@@ -73,6 +73,7 @@ static const struct usb_device_id id_tab + { USB_DEVICE(0x4348, 0x5523) }, + { USB_DEVICE(0x1a86, 0x7522) }, + { USB_DEVICE(0x1a86, 0x7523) }, ++ { USB_DEVICE(0x1a86, 0x5512) }, + { USB_DEVICE(0x1a86, 0x5523) }, + { }, + }; diff --git a/queue-4.4/usb-serial-ch341-sort-device-id-entries.patch b/queue-4.4/usb-serial-ch341-sort-device-id-entries.patch new file mode 100644 index 00000000000..400c07f0066 --- /dev/null +++ b/queue-4.4/usb-serial-ch341-sort-device-id-entries.patch @@ -0,0 +1,38 @@ +From bf193bfc12dbc3754fc8a6e0e1e3702f1af2f772 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 3 Dec 2020 10:11:59 +0100 +Subject: USB: serial: ch341: sort device-id entries + +From: Johan Hovold + +commit bf193bfc12dbc3754fc8a6e0e1e3702f1af2f772 upstream. + +Keep the device-id entries sorted to make it easier to add new ones in +the right spot. + +Reviewed-by: Greg Kroah-Hartman +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ch341.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/usb/serial/ch341.c ++++ b/drivers/usb/serial/ch341.c +@@ -70,11 +70,11 @@ + + + static const struct usb_device_id id_table[] = { +- { USB_DEVICE(0x4348, 0x5523) }, +- { USB_DEVICE(0x1a86, 0x7522) }, +- { USB_DEVICE(0x1a86, 0x7523) }, + { USB_DEVICE(0x1a86, 0x5512) }, + { USB_DEVICE(0x1a86, 0x5523) }, ++ { USB_DEVICE(0x1a86, 0x7522) }, ++ { USB_DEVICE(0x1a86, 0x7523) }, ++ { USB_DEVICE(0x4348, 0x5523) }, + { }, + }; + MODULE_DEVICE_TABLE(usb, id_table); diff --git a/queue-4.4/usb-serial-kl5kusb105-fix-memleak-on-open.patch b/queue-4.4/usb-serial-kl5kusb105-fix-memleak-on-open.patch new file mode 100644 index 00000000000..5bebda1dc0e --- /dev/null +++ b/queue-4.4/usb-serial-kl5kusb105-fix-memleak-on-open.patch @@ -0,0 +1,48 @@ +From 3f203f057edfcf6bd02c6b942799262bfcf31f73 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Fri, 4 Dec 2020 09:55:19 +0100 +Subject: USB: serial: kl5kusb105: fix memleak on open + +From: Johan Hovold + +commit 3f203f057edfcf6bd02c6b942799262bfcf31f73 upstream. + +Fix memory leak of control-message transfer buffer on successful open(). + +Fixes: 6774d5f53271 ("USB: serial: kl5kusb105: fix open error path") +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/kl5kusb105.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/drivers/usb/serial/kl5kusb105.c ++++ b/drivers/usb/serial/kl5kusb105.c +@@ -293,12 +293,12 @@ static int klsi_105_open(struct tty_str + priv->cfg.unknown2 = cfg->unknown2; + spin_unlock_irqrestore(&priv->lock, flags); + ++ kfree(cfg); ++ + /* READ_ON and urb submission */ + rc = usb_serial_generic_open(tty, port); +- if (rc) { +- retval = rc; +- goto err_free_cfg; +- } ++ if (rc) ++ return rc; + + rc = usb_control_msg(port->serial->dev, + usb_sndctrlpipe(port->serial->dev, 0), +@@ -341,8 +341,6 @@ err_disable_read: + KLSI_TIMEOUT); + err_generic_close: + usb_serial_generic_close(port); +-err_free_cfg: +- kfree(cfg); + + return retval; + } diff --git a/queue-4.4/usb-serial-option-add-fibocom-nl668-variants.patch b/queue-4.4/usb-serial-option-add-fibocom-nl668-variants.patch new file mode 100644 index 00000000000..c60c32e4e5b --- /dev/null +++ b/queue-4.4/usb-serial-option-add-fibocom-nl668-variants.patch @@ -0,0 +1,57 @@ +From 5e4d659b10fde14403adb2e215df4a3168fe8465 Mon Sep 17 00:00:00 2001 +From: Vincent Palatin +Date: Fri, 20 Nov 2020 10:28:28 +0100 +Subject: USB: serial: option: add Fibocom NL668 variants + +From: Vincent Palatin + +commit 5e4d659b10fde14403adb2e215df4a3168fe8465 upstream. + +Update the USB serial option driver support for the Fibocom NL668 Cat.4 +LTE modules as there are actually several different variants. +Got clarifications from Fibocom, there are distinct products: +- VID:PID 1508:1001, NL668 for IOT (no MBIM interface) +- VID:PID 2cb7:01a0, NL668-AM and NL652-EU are laptop M.2 cards (with + MBIM interfaces for Windows/Linux/Chrome OS), respectively for Americas + and Europe. + +usb-devices output for the laptop M.2 cards: +T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=ef(misc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=2cb7 ProdID=01a0 Rev=03.18 +S: Manufacturer=Fibocom Wireless Inc. +S: Product=Fibocom NL652-EU Modem +S: SerialNumber=0123456789ABCDEF +C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA +I: If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim +I: If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim +I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) +I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) +I: If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) + +Signed-off-by: Vincent Palatin +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 +@@ -2031,12 +2031,13 @@ static const struct usb_device_id option + .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, + { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */ + .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, +- { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 */ ++ { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ + .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, + { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */ + .driver_info = RSVD(4) | RSVD(5) }, + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ + .driver_info = RSVD(6) }, ++ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ + { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ diff --git a/queue-4.4/usb-serial-option-add-support-for-thales-cinterion-exs82.patch b/queue-4.4/usb-serial-option-add-support-for-thales-cinterion-exs82.patch new file mode 100644 index 00000000000..2d19239df3d --- /dev/null +++ b/queue-4.4/usb-serial-option-add-support-for-thales-cinterion-exs82.patch @@ -0,0 +1,322 @@ +From 6d6556c04ebaeaf4e7fa8b791c97e2a7c41b38a3 Mon Sep 17 00:00:00 2001 +From: Giacinto Cifelli +Date: Wed, 25 Nov 2020 15:53:04 +0100 +Subject: USB: serial: option: add support for Thales Cinterion EXS82 + +From: Giacinto Cifelli + +commit 6d6556c04ebaeaf4e7fa8b791c97e2a7c41b38a3 upstream. + +There is a single option port in this modem, and it is used as debug port. + +lsusb -v for this device: + +Bus 001 Device 002: ID 1e2d:006c +Device Descriptor: + bLength 18 + bDescriptorType 1 + bcdUSB 2.00 + bDeviceClass 239 Miscellaneous Device + bDeviceSubClass 2 ? + bDeviceProtocol 1 Interface Association + bMaxPacketSize0 64 + idVendor 0x1e2d + idProduct 0x006c + bcdDevice 0.00 + iManufacturer 4 + iProduct 3 + iSerial 5 + bNumConfigurations 1 + Configuration Descriptor: + bLength 9 + bDescriptorType 2 + wTotalLength 243 + bNumInterfaces 7 + bConfigurationValue 1 + iConfiguration 2 + bmAttributes 0xe0 + Self Powered + Remote Wakeup + MaxPower 500mA + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 255 Vendor Specific Class + bInterfaceSubClass 255 Vendor Specific Subclass + bInterfaceProtocol 255 Vendor Specific Protocol + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x81 EP 1 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Interface Association: + bLength 8 + bDescriptorType 11 + bFirstInterface 1 + bInterfaceCount 2 + bFunctionClass 2 Communications + bFunctionSubClass 2 Abstract (modem) + bFunctionProtocol 1 AT-commands (v.25ter) + iFunction 0 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 1 + bAlternateSetting 0 + bNumEndpoints 1 + bInterfaceClass 2 Communications + bInterfaceSubClass 2 Abstract (modem) + bInterfaceProtocol 1 AT-commands (v.25ter) + iInterface 0 + CDC Header: + bcdCDC 1.10 + CDC ACM: + bmCapabilities 0x02 + line coding and serial state + CDC Call Management: + bmCapabilities 0x03 + call management + use DataInterface + bDataInterface 2 + CDC Union: + bMasterInterface 1 + bSlaveInterface 2 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x82 EP 2 IN + bmAttributes 3 + Transfer Type Interrupt + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 5 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 2 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 10 CDC Data + bInterfaceSubClass 0 Unused + bInterfaceProtocol 0 + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x83 EP 3 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x02 EP 2 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Interface Association: + bLength 8 + bDescriptorType 11 + bFirstInterface 3 + bInterfaceCount 2 + bFunctionClass 2 Communications + bFunctionSubClass 2 Abstract (modem) + bFunctionProtocol 1 AT-commands (v.25ter) + iFunction 0 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 3 + bAlternateSetting 0 + bNumEndpoints 1 + bInterfaceClass 2 Communications + bInterfaceSubClass 2 Abstract (modem) + bInterfaceProtocol 1 AT-commands (v.25ter) + iInterface 0 + CDC Header: + bcdCDC 1.10 + CDC ACM: + bmCapabilities 0x02 + line coding and serial state + CDC Call Management: + bmCapabilities 0x03 + call management + use DataInterface + bDataInterface 4 + CDC Union: + bMasterInterface 3 + bSlaveInterface 4 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x84 EP 4 IN + bmAttributes 3 + Transfer Type Interrupt + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 5 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 4 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 10 CDC Data + bInterfaceSubClass 0 Unused + bInterfaceProtocol 0 + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x85 EP 5 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x03 EP 3 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Interface Association: + bLength 8 + bDescriptorType 11 + bFirstInterface 5 + bInterfaceCount 2 + bFunctionClass 2 Communications + bFunctionSubClass 2 Abstract (modem) + bFunctionProtocol 1 AT-commands (v.25ter) + iFunction 0 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 5 + bAlternateSetting 0 + bNumEndpoints 1 + bInterfaceClass 2 Communications + bInterfaceSubClass 6 Ethernet Networking + bInterfaceProtocol 0 + iInterface 0 + CDC Header: + bcdCDC 1.10 + CDC Ethernet: + iMacAddress 1 (??) + bmEthernetStatistics 0x00000000 + wMaxSegmentSize 16384 + wNumberMCFilters 0x0001 + bNumberPowerFilters 0 + CDC Union: + bMasterInterface 5 + bSlaveInterface 6 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x86 EP 6 IN + bmAttributes 3 + Transfer Type Interrupt + Synch Type None + Usage Type Data + wMaxPacketSize 0x0040 1x 64 bytes + bInterval 5 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 6 + bAlternateSetting 0 + bNumEndpoints 0 + bInterfaceClass 10 CDC Data + bInterfaceSubClass 0 Unused + bInterfaceProtocol 0 + iInterface 0 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 6 + bAlternateSetting 1 + bNumEndpoints 2 + bInterfaceClass 10 CDC Data + bInterfaceSubClass 0 Unused + bInterfaceProtocol 0 + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x87 EP 7 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x04 EP 4 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0200 1x 512 bytes + bInterval 0 + +Signed-off-by: Giacinto Cifelli +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -419,6 +419,7 @@ static void option_instat_callback(struc + #define CINTERION_PRODUCT_PH8 0x0053 + #define CINTERION_PRODUCT_AHXX 0x0055 + #define CINTERION_PRODUCT_PLXX 0x0060 ++#define CINTERION_PRODUCT_EXS82 0x006c + #define CINTERION_PRODUCT_PH8_2RMNET 0x0082 + #define CINTERION_PRODUCT_PH8_AUDIO 0x0083 + #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084 +@@ -1885,6 +1886,7 @@ static const struct usb_device_id option + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX_AUDIO, 0xff) }, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_CLS8, 0xff), + .driver_info = RSVD(0) | RSVD(4) }, ++ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EXS82, 0xff) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, + { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) }, -- 2.47.3