summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Severance2023-01-28 16:06:20 -0500
committerChris Severance2023-01-28 16:06:20 -0500
commit6f943f82e658c3b36f3ffd348e74b27821eb5dcc (patch)
tree520379484fce2bd3fb4ad3a9a087506c4369a633
parent5823f0e2433a632c454fc1a4b6a2db92fd73ab3a (diff)
downloadaur-6f943f82e658c3b36f3ffd348e74b27821eb5dcc.tar.gz
autu: Update to 1.3.29-7
-rw-r--r--.SRCINFO14
-rw-r--r--0008-kernel-6.1-remove-TTY_MAGIC.patch359
-rw-r--r--0009-kernel-5.17-change-PDE_DATA.patch67
-rw-r--r--0010-kernel-6.1-INIT_C_CC-termios_internal.patch17
-rw-r--r--0011-kernel-6.0-set_termios-const-ktermios.patch35
-rw-r--r--PKGBUILD50
6 files changed, 533 insertions, 9 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 76105a8cde8f..8d754cd91027 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = digi-dgnc
pkgdesc = tty driver for Digi Neo and legacy ClassicBoard PCI PCIe RS-232 serial port
pkgver = 1.3.29
- pkgrel = 6
+ pkgrel = 7
url = https://www.digi.com/
install = digi-dgnc-install.sh
arch = i686
@@ -21,6 +21,10 @@ pkgbase = digi-dgnc
source = 0005-kernel-5.13-dropped-tty_check_change.patch
source = 0006-kernel-5.14-task_struct.state-unsigned-tty.patch
source = 0007-kernel-5.15-alloc_tty_driver-put_tty_driver.patch
+ source = 0008-kernel-6.1-remove-TTY_MAGIC.patch
+ source = 0009-kernel-5.17-change-PDE_DATA.patch
+ source = 0010-kernel-6.1-INIT_C_CC-termios_internal.patch
+ source = 0011-kernel-6.0-set_termios-const-ktermios.patch
md5sums = 6171349852f6d02228d6e30c79b7a434
md5sums = a171e9ea1a4ff8340c3c58b303632edf
md5sums = 6c16c3c24c79fb558bcf27f780829c75
@@ -30,6 +34,10 @@ pkgbase = digi-dgnc
md5sums = 10ba960da22684d2da89872df1d822cc
md5sums = 89de6a694ecf827a3358bcd8aea03a6a
md5sums = 58d75d8f86830d09ba8754d4e03a6a9d
+ md5sums = 7ceda3eaa776322b2042de8d159535ea
+ md5sums = 9371ea6968666c58413a463fcf341d1f
+ md5sums = 53bcd11e5e4acbd0466b3ffdda3b263b
+ md5sums = 6475487a9415d3dc7ece9dd888cec92c
sha256sums = e121a31569e3e1f156caeed70742971ec32fef598429ef647bde98f56aa048f5
sha256sums = 625bb794d31690b45ad7469f811e7422dac938cf8e9b777aba4d97b60b3c6eae
sha256sums = 88d5a8589dca55ca98089dfa4570aa1fbde1095957d0788ad710a27b348c2f4f
@@ -39,5 +47,9 @@ pkgbase = digi-dgnc
sha256sums = 13257318895327e7438f7f357c5dc7d67310ec0468802df083815414d4743805
sha256sums = dcedb22e0f3fb0c8197630b38217f86c5468d065ab2d67708c16c17351d6944e
sha256sums = 0693e13442749c40a338320cca72dd8aad23678ea7cae035e6bab01a40640c44
+ sha256sums = 718e5104ff4caf153757dd2f8c143402d2c175fd838cfc5db3f47618efd40230
+ sha256sums = b5000b9bb68ae8ddc173b666ead6d60fa329aa4d5d96636af4717a131827748c
+ sha256sums = c0786d12440da829f0a57ca9e7f2c3114edbd88213bb66687ac84730ee7c8ed1
+ sha256sums = ab4921079d2a4ee3316bbea3bcb3ff7844d8ced73b6b4327d3c580088bc511b1
pkgname = digi-dgnc
diff --git a/0008-kernel-6.1-remove-TTY_MAGIC.patch b/0008-kernel-6.1-remove-TTY_MAGIC.patch
new file mode 100644
index 000000000000..4d079b09d820
--- /dev/null
+++ b/0008-kernel-6.1-remove-TTY_MAGIC.patch
@@ -0,0 +1,359 @@
+diff -pNaru5 a/driver/2.6.27/dgnc_cls.c b/driver/2.6.27/dgnc_cls.c
+--- a/driver/2.6.27/dgnc_cls.c 2017-10-21 10:39:21.000000000 -0400
++++ b/driver/2.6.27/dgnc_cls.c 2023-01-28 14:36:56.298578571 -0500
+@@ -482,11 +482,11 @@ static void cls_param(struct tty_struct
+ int quot = 0;
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return;
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+@@ -979,11 +979,11 @@ static int cls_drain(struct tty_struct *
+ ulong lock_flags;
+ struct channel_t *ch;
+ struct un_t *un;
+ int rc = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return (-ENXIO);
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+diff -pNaru5 a/driver/2.6.27/dgnc_neo.c b/driver/2.6.27/dgnc_neo.c
+--- a/driver/2.6.27/dgnc_neo.c 2017-10-21 10:39:21.000000000 -0400
++++ b/driver/2.6.27/dgnc_neo.c 2023-01-28 14:36:49.068942864 -0500
+@@ -656,11 +656,11 @@ static void neo_param(struct tty_struct
+ int quot = 0;
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return;
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+@@ -1432,11 +1432,11 @@ static int neo_drain(struct tty_struct *
+ ulong lock_flags;
+ struct channel_t *ch;
+ struct un_t *un;
+ int rc = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return (-ENXIO);
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+diff -pNaru5 a/driver/2.6.27/dgnc_neo_II.c b/driver/2.6.27/dgnc_neo_II.c
+--- a/driver/2.6.27/dgnc_neo_II.c 2017-10-21 10:39:21.000000000 -0400
++++ b/driver/2.6.27/dgnc_neo_II.c 2023-01-28 14:37:01.024996046 -0500
+@@ -531,11 +531,11 @@ static void neo_II_param(struct tty_stru
+ int quot = 0;
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return;
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+@@ -1166,11 +1166,11 @@ static int neo_II_drain(struct tty_struc
+ ulong lock_flags;
+ struct channel_t *ch;
+ struct un_t *un;
+ int rc = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC) {
++ if (!tty || !tty->ldisc) {
+ return (-ENXIO);
+ }
+
+ un = (struct un_t *) tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+diff -pNaru5 a/driver/2.6.27/dgnc_tty.c b/driver/2.6.27/dgnc_tty.c
+--- a/driver/2.6.27/dgnc_tty.c 2023-01-28 14:28:53.575256967 -0500
++++ b/driver/2.6.27/dgnc_tty.c 2023-01-28 14:36:29.533153640 -0500
+@@ -783,18 +783,18 @@ void dgnc_input(struct channel_t *ch)
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
+ if (!tp || (tp->magic != TTY_MAGIC) || !(ch->ch_tun.un_flags & UN_ISOPEN) ||
+ !(tp->termios->c_cflag & CREAD) || (ch->ch_tun.un_flags & UN_CLOSING))
+ #else
+- if (!tp || (tp->magic != TTY_MAGIC) || !(ch->ch_tun.un_flags & UN_ISOPEN) ||
++ if (!tp || !tp->ldisc || !(ch->ch_tun.un_flags & UN_ISOPEN) ||
+ !(tp->termios.c_cflag & CREAD) || (ch->ch_tun.un_flags & UN_CLOSING))
+ #endif
+ {
+
+ DPR_READ(("input. dropping %d bytes on port %d...\n", data_len, ch->ch_portnum));
+- DPR_READ(("input. tp: %p tp->magic: %x MAGIC:%x ch flags: %x\n",
+- tp, tp ? tp->magic : 0, TTY_MAGIC, ch->ch_tun.un_flags));
++ DPR_READ(("input. tp: %p ch flags: %x\n",
++ tp, ch->ch_tun.un_flags));
+
+ ch->ch_r_head = tail;
+
+ /* Force queue flow control to be released, if needed */
+ dgnc_check_queue_flow_control(ch);
+@@ -1686,11 +1686,11 @@ static int dgnc_block_til_ready(struct t
+ struct un_t *un = NULL;
+ ulong lock_flags;
+ uint old_flags = 0;
+ int sleep_on_un_flags = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGNC_CHANNEL_MAGIC) {
++ if (!tty || !tty->ldisc || !file || !ch || ch->magic != DGNC_CHANNEL_MAGIC) {
+ return (-ENXIO);
+ }
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC) {
+@@ -1848,11 +1848,11 @@ static int dgnc_block_til_ready(struct t
+ */
+ static void dgnc_tty_hangup(struct tty_struct *tty)
+ {
+ struct un_t *un;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -1879,11 +1879,11 @@ static void dgnc_tty_close(struct tty_st
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+ int rc = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -2466,11 +2466,11 @@ static int dgnc_tty_tiocmget(struct tty_
+ struct un_t *un;
+ int result = -EIO;
+ uchar mstat = 0;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return result;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return result;
+@@ -2525,11 +2525,11 @@ static int dgnc_tty_tiocmset(struct tty_
+ struct channel_t *ch;
+ struct un_t *un;
+ int ret = -EIO;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return ret;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return ret;
+@@ -2584,11 +2584,11 @@ static int dgnc_tty_send_break(struct tt
+ struct channel_t *ch;
+ struct un_t *un;
+ int ret = -EIO;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return ret;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return ret;
+@@ -2637,11 +2637,11 @@ static void dgnc_tty_wait_until_sent(str
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ int rc;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -2673,11 +2673,11 @@ static void dgnc_tty_send_xchar(struct t
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -2782,11 +2782,11 @@ static int dgnc_set_modem_info(struct tt
+ struct un_t *un;
+ int ret = -ENXIO;
+ unsigned int arg = 0;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return ret;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return ret;
+@@ -2880,11 +2880,11 @@ static int dgnc_tty_digigeta(struct tty_
+ ulong lock_flags;
+
+ if (!retinfo)
+ return (-EFAULT);
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return (-EFAULT);
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return (-EFAULT);
+@@ -2922,11 +2922,11 @@ static int dgnc_tty_digiseta(struct tty_
+ struct digi_t new_digi;
+ ulong lock_flags;
+
+ DPR_IOCTL(("DIGI_SETA start\n"));
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return (-EFAULT);
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return (-EFAULT);
+@@ -3003,11 +3003,11 @@ static void dgnc_tty_set_termios(struct
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ unsigned long lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3049,11 +3049,11 @@ static void dgnc_tty_throttle(struct tty
+ {
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags = 0;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3078,11 +3078,11 @@ static void dgnc_tty_unthrottle(struct t
+ {
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3108,11 +3108,11 @@ static void dgnc_tty_start(struct tty_st
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3142,11 +3142,11 @@ static void dgnc_tty_stop(struct tty_str
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3189,11 +3189,11 @@ static void dgnc_tty_flush_chars(struct
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3228,11 +3228,11 @@ static void dgnc_tty_flush_buffer(struct
+ {
+ struct channel_t *ch;
+ struct un_t *un;
+ ulong lock_flags;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return;
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return;
+@@ -3298,11 +3298,11 @@ dgnc_tty_ioctl(struct tty_struct *tty, u
+ struct un_t *un;
+ int rc;
+ ulong lock_flags;
+ void __user *uarg = (void __user *) arg;
+
+- if (!tty || tty->magic != TTY_MAGIC)
++ if (!tty || !tty->ldisc)
+ return (-ENODEV);
+
+ un = tty->driver_data;
+ if (!un || un->magic != DGNC_UNIT_MAGIC)
+ return (-ENODEV);
diff --git a/0009-kernel-5.17-change-PDE_DATA.patch b/0009-kernel-5.17-change-PDE_DATA.patch
new file mode 100644
index 000000000000..d2c1002be18f
--- /dev/null
+++ b/0009-kernel-5.17-change-PDE_DATA.patch
@@ -0,0 +1,67 @@
+diff -pNaru5 a/driver/2.6.27/dgnc_proc.c b/driver/2.6.27/dgnc_proc.c
+--- a/driver/2.6.27/dgnc_proc.c 2023-01-28 14:46:11.117123311 -0500
++++ b/driver/2.6.27/dgnc_proc.c 2023-01-28 14:52:09.647326130 -0500
+@@ -400,11 +400,15 @@ static int dgnc_gen_proc_open(struct ino
+ goto done;
+ }
+
+ entry = (struct dgnc_proc_entry *) de->data;
+ #else /* >=3,10,0 */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+ entry = (struct dgnc_proc_entry *) PDE_DATA(file_inode(file));
++#else
++ entry = pde_data(file_inode(file));
++#endif
+ #endif
+ if (!entry) {
+ ret = -ENXIO;
+ goto done;
+ }
+@@ -448,11 +452,15 @@ static int dgnc_gen_proc_close(struct in
+ if (!de || !de->data)
+ goto done;
+
+ entry = (struct dgnc_proc_entry *) de->data;
+ #else /* >=3,10,0 */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+ entry = (struct dgnc_proc_entry *) PDE_DATA(file_inode(file));
++#else
++ entry = pde_data(file_inode(file));
++#endif
+ #endif
+
+ if (!entry)
+ goto done;
+
+@@ -490,11 +498,15 @@ static ssize_t dgnc_gen_proc_read(struct
+ if (!de || !de->data)
+ return -ENXIO;
+
+ entry = (struct dgnc_proc_entry *) de->data;
+ #else /* >=3,10,0 */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+ entry = (struct dgnc_proc_entry *) PDE_DATA(file_inode(file));
++#else
++ entry = pde_data(file_inode(file));
++#endif
+ #endif
+
+ if (!entry)
+ return -ENXIO;
+
+@@ -534,11 +546,15 @@ static ssize_t dgnc_gen_proc_write(struc
+ if (!de || !de->data)
+ return -ENXIO;
+
+ entry = (struct dgnc_proc_entry *) de->data;
+ #else /* >=3,10,0 */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+ entry = (struct dgnc_proc_entry *) PDE_DATA(file_inode(file));
++#else
++ entry = pde_data(file_inode(file));
++#endif
+ #endif
+
+ if (!entry)
+ return -ENXIO;
+
diff --git a/0010-kernel-6.1-INIT_C_CC-termios_internal.patch b/0010-kernel-6.1-INIT_C_CC-termios_internal.patch
new file mode 100644
index 000000000000..f6d9178ec163
--- /dev/null
+++ b/0010-kernel-6.1-INIT_C_CC-termios_internal.patch
@@ -0,0 +1,17 @@
+diff -pNaru5 a/driver/2.6.27/dgnc_tty.c b/driver/2.6.27/dgnc_tty.c
+--- a/driver/2.6.27/dgnc_tty.c 2023-01-28 15:38:17.005198782 -0500
++++ b/driver/2.6.27/dgnc_tty.c 2023-01-28 15:42:22.631445123 -0500
+@@ -54,10 +54,13 @@
+ #include <linux/serial_reg.h>
+ #include <linux/slab.h>
+ #include <linux/delay.h> /* For udelay */
+ #include <asm/uaccess.h> /* For copy_from_user/copy_to_user */
+ #include <linux/pci.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
++#include <linux/termios_internal.h>
++#endif
+
+ #include "dgnc_driver.h"
+ #include "dgnc_kcompat.h"
+ #include "dgnc_tty.h"
+ #include "dgnc_types.h"
diff --git a/0011-kernel-6.0-set_termios-const-ktermios.patch b/0011-kernel-6.0-set_termios-const-ktermios.patch
new file mode 100644
index 000000000000..8db4ce693efe
--- /dev/null
+++ b/0011-kernel-6.0-set_termios-const-ktermios.patch
@@ -0,0 +1,35 @@
+diff -pNaru5 a/driver/2.6.27/dgnc_tty.c b/driver/2.6.27/dgnc_tty.c
+--- a/driver/2.6.27/dgnc_tty.c 2023-01-28 15:45:44.006164787 -0500
++++ b/driver/2.6.27/dgnc_tty.c 2023-01-28 15:48:09.570243005 -0500
+@@ -152,11 +152,15 @@ static int dgnc_tty_tiocmget(struct tty_
+ static int dgnc_tty_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear);
+ #endif
+ static int dgnc_tty_send_break(struct tty_struct *tty, int msec);
+ static void dgnc_tty_wait_until_sent(struct tty_struct *tty, int timeout);
+ static int dgnc_tty_write(struct tty_struct *tty, const unsigned char *buf, int count);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,0,0)
+ static void dgnc_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios);
++#else
++static void dgnc_tty_set_termios(struct tty_struct *tty, const struct ktermios *old_termios);
++#endif
+ static void dgnc_tty_send_xchar(struct tty_struct *tty, char ch);
+
+
+ static const struct tty_operations dgnc_tty_ops = {
+ .open = dgnc_tty_open,
+@@ -2999,11 +3003,15 @@ static int dgnc_tty_digiseta(struct tty_
+
+
+ /*
+ * dgnc_set_termios()
+ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,0,0)
+ static void dgnc_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
++#else
++static void dgnc_tty_set_termios(struct tty_struct *tty, const struct ktermios *old_termios)
++#endif
+ {
+ struct board_t *bd;
+ struct channel_t *ch;
+ struct un_t *un;
+ unsigned long lock_flags;
diff --git a/PKGBUILD b/PKGBUILD
index 072afc5f1b62..e5da14ea1193 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,8 +5,12 @@
# Digi bug: change literal "dgnc" to DRVSTR or PROCSTR
# Digi bug: viewing /proc/dgnc/0/[0-9]/sniff hangs terminal
+# Digi bug: multiple PCI cards not fully supported. Some cards may be non functional. Boot over and over to get them all to work.
+# Digi bug: Non functional in 5.15 even with just one card
# Stopped working after kernel version 5.14.0: /dev/ttyn1a: No such device or address
+# also works not well in 5.10. rmmod modprobe doesn't fix it. Must reboot over and over until it's fixed.
+# Pretty much dead
_opt_DKMS=1 # This can be toggled between installs
_opt_defaultmode="0660" # default: 0600
@@ -19,10 +23,11 @@ pkgname='digi-dgnc'
#_pkgver='1.3-28'; _dl='40002369_G.tgz'
_pkgver='1.3-29'; _dl='40002369_H.src.rpm'
pkgver="${_pkgver//-/.}"
-pkgrel='6'
+pkgrel='7'
pkgdesc='tty driver for Digi Neo and legacy ClassicBoard PCI PCIe RS-232 serial port'
arch=('i686' 'x86_64')
url='https://www.digi.com/'
+# https://hub.digi.com/support/products/infrastructure-management/
license=('GPL')
options=('!strip' '!buildflags')
install="${pkgname}-install.sh"
@@ -37,6 +42,10 @@ source=(
'0005-kernel-5.13-dropped-tty_check_change.patch'
'0006-kernel-5.14-task_struct.state-unsigned-tty.patch'
'0007-kernel-5.15-alloc_tty_driver-put_tty_driver.patch'
+ '0008-kernel-6.1-remove-TTY_MAGIC.patch'
+ '0009-kernel-5.17-change-PDE_DATA.patch'
+ '0010-kernel-6.1-INIT_C_CC-termios_internal.patch'
+ '0011-kernel-6.0-set_termios-const-ktermios.patch'
)
md5sums=('6171349852f6d02228d6e30c79b7a434'
'a171e9ea1a4ff8340c3c58b303632edf'
@@ -46,7 +55,11 @@ md5sums=('6171349852f6d02228d6e30c79b7a434'
'44b0a7b0ab4dbe661b822fcba9423121'
'10ba960da22684d2da89872df1d822cc'
'89de6a694ecf827a3358bcd8aea03a6a'
- '58d75d8f86830d09ba8754d4e03a6a9d')
+ '58d75d8f86830d09ba8754d4e03a6a9d'
+ '7ceda3eaa776322b2042de8d159535ea'
+ '9371ea6968666c58413a463fcf341d1f'
+ '53bcd11e5e4acbd0466b3ffdda3b263b'
+ '6475487a9415d3dc7ece9dd888cec92c')
sha256sums=('e121a31569e3e1f156caeed70742971ec32fef598429ef647bde98f56aa048f5'
'625bb794d31690b45ad7469f811e7422dac938cf8e9b777aba4d97b60b3c6eae'
'88d5a8589dca55ca98089dfa4570aa1fbde1095957d0788ad710a27b348c2f4f'
@@ -55,7 +68,11 @@ sha256sums=('e121a31569e3e1f156caeed70742971ec32fef598429ef647bde98f56aa048f5'
'f215451df4a01f0875a53425b6d8452c344f19b61b59b821f8c949b1b276c022'
'13257318895327e7438f7f357c5dc7d67310ec0468802df083815414d4743805'
'dcedb22e0f3fb0c8197630b38217f86c5468d065ab2d67708c16c17351d6944e'
- '0693e13442749c40a338320cca72dd8aad23678ea7cae035e6bab01a40640c44')
+ '0693e13442749c40a338320cca72dd8aad23678ea7cae035e6bab01a40640c44'
+ '718e5104ff4caf153757dd2f8c143402d2c175fd838cfc5db3f47618efd40230'
+ 'b5000b9bb68ae8ddc173b666ead6d60fa329aa4d5d96636af4717a131827748c'
+ 'c0786d12440da829f0a57ca9e7f2c3114edbd88213bb66687ac84730ee7c8ed1'
+ 'ab4921079d2a4ee3316bbea3bcb3ff7844d8ced73b6b4327d3c580088bc511b1')
if [ "${_opt_DKMS}" -ne 0 ]; then
depends+=('linux' 'dkms' 'linux-headers')
@@ -109,25 +126,42 @@ prepare() {
#cp -pr driver/2.6.27{,.orig}; false
#diff -pNaru5 driver/2.6.27{.orig,} > '0003-kernel-5.6--proc_dir_entry-proc_ops.patch'
- patch -Nbup0 -i "${srcdir}/0003-kernel-5.6--proc_dir_entry-proc_ops.patch"
+ patch -Nup0 -i "${srcdir}/0003-kernel-5.6--proc_dir_entry-proc_ops.patch"
#rm -f driver/2.6.27/*.orig; cp -pr driver/2.6.27{,.orig}; false
#diff -pNaru5 driver/2.6.27{.orig,} > '0004-kernel-5.12-MODULE_SUPPORTED_DEVICE.patch'
- patch -Nbup0 -i "${srcdir}/0004-kernel-5.12-MODULE_SUPPORTED_DEVICE.patch"
+ patch -Nup0 -i "${srcdir}/0004-kernel-5.12-MODULE_SUPPORTED_DEVICE.patch"
#rm -f driver/2.6.27/*.orig; cp -pr driver/2.6.27{,.orig}; false
#diff -pNaru5 driver/2.6.27{.orig,} > '0005-kernel-5.13-dropped-tty_check_change.patch'
- patch -Nbup0 -i "${srcdir}/0005-kernel-5.13-dropped-tty_check_change.patch"
+ patch -Nup0 -i "${srcdir}/0005-kernel-5.13-dropped-tty_check_change.patch"
#rm -f driver/2.6.27/*.orig; cp -pr driver/2.6.27{,.orig}; false
#diff -pNaru5 driver/2.6.27{.orig,} > '0006-kernel-5.14-task_struct.state-unsigned-tty.patch'
- patch -Nbup0 -i "${srcdir}/0006-kernel-5.14-task_struct.state-unsigned-tty.patch"
+ patch -Nup0 -i "${srcdir}/0006-kernel-5.14-task_struct.state-unsigned-tty.patch"
# http://lkml.iu.edu/hypermail/linux/kernel/2107.2/08799.html [PATCH 5/8] tty: drop alloc_tty_driver
# http://lkml.iu.edu/hypermail/linux/kernel/2107.2/08801.html [PATCH 7/8] tty: drop put_tty_driver
#rm -f driver/2.6.27/*.orig; cp -pr driver/2.6.27{,.orig}; false
#diff -pNaru5 driver/2.6.27{.orig,} > '0007-kernel-5.15-alloc_tty_driver-put_tty_driver.patch'
- patch -Nbup0 -i "${srcdir}/0007-kernel-5.15-alloc_tty_driver-put_tty_driver.patch"
+ patch -Nup0 -i "${srcdir}/0007-kernel-5.15-alloc_tty_driver-put_tty_driver.patch"
+
+ # https://lore.kernel.org/lkml/723478a270a3858f27843cbec621df4d5d44efcc.1663288066.git.nabijaczleweli@nabijaczleweli.xyz/T/
+ # cd ..; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0008-kernel-6.1-remove-TTY_MAGIC.patch'
+ patch -Nup1 -i "${srcdir}/0008-kernel-6.1-remove-TTY_MAGIC.patch"
+
+ # cd ..; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0009-kernel-5.17-change-PDE_DATA.patch'
+ patch -Nup1 -i "${srcdir}/0009-kernel-5.17-change-PDE_DATA.patch"
+
+ #cd ..; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0010-kernel-6.1-INIT_C_CC-termios_internal.patch'
+ patch -Nup1 -i "${srcdir}/0010-kernel-6.1-INIT_C_CC-termios_internal.patch"
+
+ # cd ..; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0011-kernel-6.0-set_termios-const-ktermios.patch'
+ patch -Nup1 -i "${srcdir}/0011-kernel-6.0-set_termios-const-ktermios.patch"
# Version check
local _ver