summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO44
-rw-r--r--0000-kernel-4.11-signal_pending.patch17
-rw-r--r--0001-kernel-5.6-proc_dir_entry-proc_ops.patch32
-rw-r--r--0002-kernel-4.7-async-initialized.patch18
-rw-r--r--0003-kernel-5.12-tty-low_latency.patch31
-rw-r--r--0004-tty_unregister_driver-void.patch32
-rw-r--r--0005-kernel-5.14-unsigned-tty-flow-tty.patch47
-rw-r--r--0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch44
-rw-r--r--0007-kernel-6.0-serial_UART_XMIT_SIZE.patch18
-rw-r--r--0008-kernel-6.0-set_termios-const-ktermios.patch18
-rw-r--r--0009-kernel-6.6-struct-tty_operations-write-size_t.patch21
-rw-r--r--PKGBUILD149
12 files changed, 436 insertions, 35 deletions
diff --git a/.SRCINFO b/.SRCINFO
index dfcc0a8a8a67..fc5d73940458 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,10 +1,8 @@
-# Generated by mksrcinfo v8
-# Tue Jul 25 02:10:46 UTC 2017
pkgbase = perle-serial
pkgdesc = kernel module driver for Perle UltraPort SI Express PCI-RAS modem SPEED LE multi I/O serial parallel RS-232 422 485 port
- pkgver = 3.9.0_14
- pkgrel = 1
- url = http://downloads.comtrol.com/html/RPuPCI_drivers.htm
+ pkgver = 3.9.2.4
+ pkgrel = 6
+ url = https://www.perle.com/downloads/mp_speedle.shtml
install = perle-serial-install.sh
arch = i686
arch = x86_64
@@ -19,8 +17,38 @@ pkgbase = perle-serial
depends = dkms
depends = linux-headers
backup = etc/perle-serial-setultrap.sh
- source = https://www.perle.com//downloads/drivers/ultraport/linux/perle-serial-3.9.0-14.tgz
- sha256sums = 7ded341fe93f76fc5d607a3888ac0407e78c9165ad8fb297ec9e375269e72f8b
+ source = https://www.perle.com/downloads/drivers/ultraport/linux/perle-serial-3.9.2-4.tgz
+ source = 0000-kernel-4.11-signal_pending.patch
+ source = 0001-kernel-5.6-proc_dir_entry-proc_ops.patch
+ source = 0002-kernel-4.7-async-initialized.patch
+ source = 0003-kernel-5.12-tty-low_latency.patch
+ source = 0004-tty_unregister_driver-void.patch
+ source = 0005-kernel-5.14-unsigned-tty-flow-tty.patch
+ source = 0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch
+ source = 0007-kernel-6.0-serial_UART_XMIT_SIZE.patch
+ source = 0008-kernel-6.0-set_termios-const-ktermios.patch
+ source = 0009-kernel-6.6-struct-tty_operations-write-size_t.patch
+ md5sums = 85e9617af62fcab55c684fa8e4b26987
+ md5sums = 52f87acfeb5f5820a74ad6aa74d18acf
+ md5sums = 6dac46dc8f094dd8f8b760a68414bd0b
+ md5sums = f97869736f93fb70b9f034106697c0a2
+ md5sums = d85366f7566046dbd580850fbfa640e0
+ md5sums = 7d7c57fc3a46599aebede7f940c5c5a8
+ md5sums = 47a81ca7f524a3e86abb72ae872bac74
+ md5sums = 128ee03b62d13384a249f6f6244d0214
+ md5sums = 3058470a7727ad05608a292d4850e052
+ md5sums = ac437dd477d593c042af2752d1dfaf33
+ md5sums = b83c590138dcb1c23ad523bcbeb7ad72
+ sha256sums = d9d61a941ecfd2ff41d5450557eb9071d934497dbd10229e97c8f88b48cb9a58
+ sha256sums = 691e0d8d348ab9f19f0398ff79e0d4780d5110e3dd11acf3261e3f73b2983ea1
+ sha256sums = 31e0d244d22b16d2c0b783e38bac2d96a53cbe0ce14f2fe11142a8691ce952aa
+ sha256sums = 8dcb2c32d641cef471fe45db1e122492a82b3439c55be8c530758d519eeae289
+ sha256sums = 3e2b44baf4d8e29ce5e084485f0882a8f06a1d1b045a93ffa5cdd2f8112d1bfa
+ sha256sums = 7c0c4af907e68a2641beffd20bf487b47cf58ca79dea45276b5046fe81f436bc
+ sha256sums = 0c942db9e9a5f41873cc2ba6edae3372da672e8f82ea5c1266a2c905d4373319
+ sha256sums = 4c9e99b780353f270b96e57cd25e4ebf8e3058fa44105422ada42eb87cf798b2
+ sha256sums = 517e2aa68ee91bf2d8c0d6896dee2367cbc29f98ed5a3eb8392ca32028cd9b84
+ sha256sums = 9780f642f30b0870c78864418f5a46bc189f27249eba312bec91538f622c2334
+ sha256sums = 9c93b5166e4b13b7a2cc39868dc578a621bbe07d7295a4d10d89328cf264d055
pkgname = perle-serial
-
diff --git a/0000-kernel-4.11-signal_pending.patch b/0000-kernel-4.11-signal_pending.patch
new file mode 100644
index 000000000000..d356aca2430d
--- /dev/null
+++ b/0000-kernel-4.11-signal_pending.patch
@@ -0,0 +1,17 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0000/pparport26/pparport_pc.c perle-serial-3.9.2/pparport26/pparport_pc.c
+--- perle-serial-3.9.2.orig-0000/pparport26/pparport_pc.c 2018-06-05 21:24:34.315840847 -0400
++++ perle-serial-3.9.2/pparport26/pparport_pc.c 2018-06-05 21:24:10.199248040 -0400
+@@ -66,10 +66,13 @@
+ #include <asm/dma.h>
+ #include <asm/uaccess.h>
+
+ #include <linux/parport.h>
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
++#include <linux/sched/signal.h>
++#endif
+
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
+ #define __devinit
+ #define __devinitdata
+ #define __devexit
diff --git a/0001-kernel-5.6-proc_dir_entry-proc_ops.patch b/0001-kernel-5.6-proc_dir_entry-proc_ops.patch
new file mode 100644
index 000000000000..c76a2ebce6cf
--- /dev/null
+++ b/0001-kernel-5.6-proc_dir_entry-proc_ops.patch
@@ -0,0 +1,32 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0001/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0001/pserial/perle-serial.c 2018-03-26 14:58:05.000000000 -0400
++++ perle-serial-3.9.2/pserial/perle-serial.c 2020-05-21 01:14:50.996007456 -0400
+@@ -463,19 +463,28 @@ static struct proc_dir_entry *ps_proc_fi
+ static int ps_read_proc(struct seq_file *m, void *v);
+ static int ps_open_proc(struct inode *inode, struct file *file)
+ {
+ return single_open(file, ps_read_proc, NULL);
+ }
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
++static const struct proc_ops ps_proc_fops = {
++ .proc_open = ps_open_proc,
++ .proc_read = seq_read,
++ .proc_lseek = seq_lseek,
++ .proc_release = single_release,
++};
++#else
+ static const struct file_operations ps_proc_fops = {
+ .owner = THIS_MODULE,
+ .open = ps_open_proc,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ };
+ #endif
+ #endif
++#endif
+
+ static inline int ps_paranoia_check(struct ps_async_struct *info,
+ struct tty_struct *tty, const char *routine)
+ {
+ #ifdef SERIAL_PARANOIA_CHECK
diff --git a/0002-kernel-4.7-async-initialized.patch b/0002-kernel-4.7-async-initialized.patch
new file mode 100644
index 000000000000..03a177bad8f1
--- /dev/null
+++ b/0002-kernel-4.7-async-initialized.patch
@@ -0,0 +1,18 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0002/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0002/pserial/perle-serial.c 2021-09-14 11:10:48.772141908 -0400
++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:10:59.679207370 -0400
+@@ -70,10 +70,14 @@
+ * SERIAL_PARANOIA_CHECK
+ * Check the magic number for the async_structure where
+ * ever possible.
+ */
+
++#undef __KERNEL__
++#include <linux/tty_flags.h>
++#define __KERNEL__ 1
++
+ #include <linux/version.h>
+ #if ! defined (LINUX_VERSION_CODE)
+ #error "Kernel version is not set"
+ #endif
+
diff --git a/0003-kernel-5.12-tty-low_latency.patch b/0003-kernel-5.12-tty-low_latency.patch
new file mode 100644
index 000000000000..e2d22d7cca06
--- /dev/null
+++ b/0003-kernel-5.12-tty-low_latency.patch
@@ -0,0 +1,31 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0003/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0003/pserial/perle-serial.c 2021-09-14 11:15:23.675520937 -0400
++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:19:15.647322399 -0400
+@@ -2446,11 +2446,13 @@ static int set_serial_info(struct ps_asy
+ info->flags = ((state->flags & ~ASYNC_INTERNAL_FLAGS) |
+ (info->flags & ASYNC_INTERNAL_FLAGS));
+ state->custom_divisor = new_serial.custom_divisor;
+ state->close_delay = new_serial.close_delay * HZ/100;
+ state->closing_wait = new_serial.closing_wait * HZ/100;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0)
+ TTY_LOW_LATENCY(info->tty) = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0;
++#endif
+ info->xmit_fifo_size = state->xmit_fifo_size =
+ new_serial.xmit_fifo_size;
+
+ if ((state->type != PORT_UNKNOWN) && state->port) {
+ /* UltraPort 16 SI uses 16 bytes per port */
+@@ -3626,11 +3628,13 @@ static int ps_open(struct tty_struct *tt
+ printk("ps_open %s%d, count = %d\n", tty->driver->name, info->line,
+ info->state->count);
+ #endif
+ #endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0)
+ TTY_LOW_LATENCY(info->tty) = (info->flags & ASYNC_LOW_LATENCY) ? 1 : 0;
++#endif
+
+ /*
+ * This relies on lock_kernel() stuff so wants tidying for 2.5
+ */
+ if (!tmp_buf) {
diff --git a/0004-tty_unregister_driver-void.patch b/0004-tty_unregister_driver-void.patch
new file mode 100644
index 000000000000..17aad89be682
--- /dev/null
+++ b/0004-tty_unregister_driver-void.patch
@@ -0,0 +1,32 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0004/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0004/pserial/perle-serial.c 2021-09-14 11:26:40.756869474 -0400
++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:26:52.547298877 -0400
+@@ -5201,26 +5201,23 @@ void ps_unregister_serial(int line)
+ }
+
+ static void __exit ps_fini(void)
+ {
+ // unsigned long flags;
+- int e1;
+ int i;
+ struct ps_async_struct *info;
+
+ printk(KERN_INFO "Unloading %s: version %s\n", serial_name, serial_version);
+ #ifdef USE_PS_TIMER
+ del_timer_sync(&serial_timer);
+ #endif
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+ remove_bh( PERLE_SERIAL_BH );
+- if ((e1 = tty_unregister_driver(&serial_driver)))
+- printk("serial: failed to unregister Perle's serial driver (%d)\n", e1);
++ tty_unregister_driver(&serial_driver);
+ #else
+- if ((e1 = tty_unregister_driver(serial_driver)))
+- printk("serial: failed to unregister Perle's serial driver (%d)\n", e1);
++ tty_unregister_driver(serial_driver);
+ put_tty_driver(serial_driver);
+ #endif
+ for (i = 0; i < NR_PORTS; i++) {
+ if ((info = ps_table[i].info)) {
+ // if (info->state->XRflatreg) // This code causes oops. Remove for now plus all other Sleep calls.
diff --git a/0005-kernel-5.14-unsigned-tty-flow-tty.patch b/0005-kernel-5.14-unsigned-tty-flow-tty.patch
new file mode 100644
index 000000000000..7b08e33116d8
--- /dev/null
+++ b/0005-kernel-5.14-unsigned-tty-flow-tty.patch
@@ -0,0 +1,47 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0005/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0005/pserial/perle-serial.c 2021-09-14 11:28:43.064657062 -0400
++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-09-14 11:31:16.193566625 -0400
+@@ -947,10 +947,14 @@ static _INLINE_ void receive_chars(struc
+ #else
+ tty_flip_buffer_push(tty);
+ #endif
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0))
++#define stopped flow.stopped /* tty->stopped */
++#endif
++
+ static _INLINE_ void transmit_chars(struct ps_async_struct *info, int *intr_done)
+ {
+ int count;
+
+ /* echo suppression logic */
+@@ -2195,20 +2199,28 @@ static int ps_write(struct tty_struct *
+ }
+ #endif // > 2.6.10
+
+
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0))
++static unsigned int ps_write_room(struct tty_struct *tty)
++#else
+ static int ps_write_room(struct tty_struct *tty)
++#endif
+ {
+ struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data;
+
+ if (ps_paranoia_check(info, tty, "ps_write_room"))
+ return 0;
+ return CIRC_SPACE(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0))
++static unsigned int ps_chars_in_buffer(struct tty_struct *tty)
++#else
+ static int ps_chars_in_buffer(struct tty_struct *tty)
++#endif
+ {
+ struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data;
+
+ if (ps_paranoia_check(info, tty, "ps_chars_in_buffer"))
+ return 0;
diff --git a/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch b/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch
new file mode 100644
index 000000000000..f701c0d4dd39
--- /dev/null
+++ b/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch
@@ -0,0 +1,44 @@
+diff -pNaru5 perle-serial-3.9.2.orig-0006/pserial/perle-serial.c perle-serial-3.9.2/pserial/perle-serial.c
+--- perle-serial-3.9.2.orig-0006/pserial/perle-serial.c 2021-11-20 16:06:52.656295643 -0500
++++ perle-serial-3.9.2/pserial/perle-serial.c 2021-11-20 16:08:20.147780960 -0500
+@@ -4986,12 +4986,12 @@ static int __init ps_init(void)
+ {
+ panic("Couldn't register Perle's serial driver\n");
+ }
+
+ #else // At least 2.5.0 kernel.
+- serial_driver = alloc_tty_driver(NR_PORTS);
+- if (!serial_driver){
++ serial_driver = tty_alloc_driver(NR_PORTS,0);
++ if (IS_ERR(serial_driver)){
+ printk(KERN_ERR "Couldn't allocate Perle serial driver\n");
+ return -ENOMEM;
+ }
+ serial_driver->owner = THIS_MODULE;
+ serial_driver->driver_name = "perle-serial";
+@@ -5006,11 +5006,11 @@ static int __init ps_init(void)
+ serial_driver->flags = TTY_DRIVER_REAL_RAW ;
+
+ tty_set_operations(serial_driver, &ps_ops);
+ if( (rc = tty_register_driver(serial_driver)) < 0 )
+ {
+- put_tty_driver(serial_driver);
++ tty_driver_kref_put(serial_driver);
+ printk(KERN_ERR "Couldn't register Perle serial driver\n");
+ return rc;
+ }
+
+ #endif
+@@ -5226,11 +5226,11 @@ static void __exit ps_fini(void)
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+ remove_bh( PERLE_SERIAL_BH );
+ tty_unregister_driver(&serial_driver);
+ #else
+ tty_unregister_driver(serial_driver);
+- put_tty_driver(serial_driver);
++ tty_driver_kref_put(serial_driver);
+ #endif
+ for (i = 0; i < NR_PORTS; i++) {
+ if ((info = ps_table[i].info)) {
+ // if (info->state->XRflatreg) // This code causes oops. Remove for now plus all other Sleep calls.
+ // ps_resetSLEEP(info); /* reset sleep mode for Exar uarts */
diff --git a/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch b/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch
new file mode 100644
index 000000000000..6e21b0e8c281
--- /dev/null
+++ b/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch
@@ -0,0 +1,18 @@
+diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c
+--- a/pserial/perle-serial.c 2023-01-29 04:08:09.639903778 -0500
++++ b/pserial/perle-serial.c 2023-01-29 04:12:12.648878696 -0500
+@@ -176,10 +176,14 @@
+ #include <linux/serial.h>
+ #include <linux/serial_reg.h>
+ #endif
+ #endif
+ #include <asm/serial.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,0,0)
++#include <linux/serial_core.h>
++#define SERIAL_XMIT_SIZE UART_XMIT_SIZE
++#endif
+ #include <linux/errno.h>
+ #include <linux/signal.h>
+ #include <linux/sched.h>
+ #include <linux/timer.h>
+ #include <linux/interrupt.h>
diff --git a/0008-kernel-6.0-set_termios-const-ktermios.patch b/0008-kernel-6.0-set_termios-const-ktermios.patch
new file mode 100644
index 000000000000..6b9aa983a7d6
--- /dev/null
+++ b/0008-kernel-6.0-set_termios-const-ktermios.patch
@@ -0,0 +1,18 @@
+diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c
+--- a/pserial/perle-serial.c 2023-01-29 04:15:33.238149934 -0500
++++ b/pserial/perle-serial.c 2023-01-29 04:17:17.041142672 -0500
+@@ -3153,11 +3153,13 @@ static int ps_ioctl(struct tty_struct *t
+ return -ENOIOCTLCMD;
+ }
+ return 0;
+ }
+
+-#if (LINUX_VERSION_CODE > 0x20612) // 2.6.18
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
++static void ps_set_termios(struct tty_struct *tty, const struct ktermios *old_termios)
++#elif (LINUX_VERSION_CODE > 0x20612) // 2.6.18
+ static void ps_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
+ #else
+ static void ps_set_termios(struct tty_struct *tty, struct termios *old_termios)
+ #endif
+ {
diff --git a/0009-kernel-6.6-struct-tty_operations-write-size_t.patch b/0009-kernel-6.6-struct-tty_operations-write-size_t.patch
new file mode 100644
index 000000000000..dbd8b090bcd5
--- /dev/null
+++ b/0009-kernel-6.6-struct-tty_operations-write-size_t.patch
@@ -0,0 +1,21 @@
+diff -pNaru5 a/pserial/perle-serial.c b/pserial/perle-serial.c
+--- a/pserial/perle-serial.c 2023-12-19 00:14:42.357856502 -0500
++++ b/pserial/perle-serial.c 2023-12-19 00:14:51.337954324 -0500
+@@ -2158,12 +2158,17 @@ static int ps_write(struct tty_struct *
+ }
+
+ #else // linux kernel is at least 2.6.10 - write prototype has "from_user"
+ // removed from parameter list.
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,6,0)
+ static int ps_write(struct tty_struct * tty,
+ const unsigned char *buf, int count)
++#else
++static ssize_t ps_write(struct tty_struct * tty,
++ const unsigned char *buf, size_t count)
++#endif
+ {
+ int c, ret = 0;
+ struct ps_async_struct *info = (struct ps_async_struct *)tty->driver_data;
+ unsigned long flags;
+
diff --git a/PKGBUILD b/PKGBUILD
index 2dade02fd961..401487bfafdb 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,6 +3,10 @@
_opt_DKMS=1 # This can be toggled between installs
_opt_PARALLEL=0 # 0 for SPEED without parallel port, 1 to enable parallel support
+#export KERNELRELEASE="$(basename $(dirname /usr/lib/modules/6.6.*/modules.alias))"
+
+# Todo: /dev/ttyPS* should be created dynamically instead of all at once
+
# See /etc/perle-serial-setultrap.sh for persistent port modes
# Perle Ultraport 1 2 4 8 8i 16
@@ -74,19 +78,54 @@ _opt_PARALLEL=0 # 0 for SPEED without parallel port, 1 to enable parallel
set -u
pkgname='perle-serial'
-pkgver='3.9.0_14'
-pkgrel='1'
+#_pkgver='3.9.0-14'
+_pkgver='3.9.2-4'
+pkgver="${_pkgver//-/.}"
+pkgrel='6'
pkgdesc='kernel module driver for Perle UltraPort SI Express PCI-RAS modem SPEED LE multi I/O serial parallel RS-232 422 485 port'
arch=('i686' 'x86_64')
-url='http://downloads.comtrol.com/html/RPuPCI_drivers.htm'
+url='https://www.perle.com/downloads/mp_speedle.shtml'
license=('GPL')
depends=('awk')
makedepends=('gzip' 'findutils' 'sed' 'diffutils' 'patch')
backup=('etc/perle-serial-setultrap.sh')
install="${pkgname}-install.sh"
-_srcdir="${pkgname}-${pkgver%%_*}"
-source=("https://www.perle.com//downloads/drivers/ultraport/linux/perle-serial-${pkgver//_/-}.tgz")
-sha256sums=('7ded341fe93f76fc5d607a3888ac0407e78c9165ad8fb297ec9e375269e72f8b')
+_srcdir="${pkgname}-${_pkgver%%-*}"
+source=(
+ "https://www.perle.com/downloads/drivers/ultraport/linux/perle-serial-${_pkgver}.tgz"
+ '0000-kernel-4.11-signal_pending.patch'
+ '0001-kernel-5.6-proc_dir_entry-proc_ops.patch'
+ '0002-kernel-4.7-async-initialized.patch'
+ '0003-kernel-5.12-tty-low_latency.patch'
+ '0004-tty_unregister_driver-void.patch'
+ '0005-kernel-5.14-unsigned-tty-flow-tty.patch'
+ '0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch'
+ '0007-kernel-6.0-serial_UART_XMIT_SIZE.patch'
+ '0008-kernel-6.0-set_termios-const-ktermios.patch'
+ '0009-kernel-6.6-struct-tty_operations-write-size_t.patch'
+)
+md5sums=('85e9617af62fcab55c684fa8e4b26987'
+ '52f87acfeb5f5820a74ad6aa74d18acf'
+ '6dac46dc8f094dd8f8b760a68414bd0b'
+ 'f97869736f93fb70b9f034106697c0a2'
+ 'd85366f7566046dbd580850fbfa640e0'
+ '7d7c57fc3a46599aebede7f940c5c5a8'
+ '47a81ca7f524a3e86abb72ae872bac74'
+ '128ee03b62d13384a249f6f6244d0214'
+ '3058470a7727ad05608a292d4850e052'
+ 'ac437dd477d593c042af2752d1dfaf33'
+ 'b83c590138dcb1c23ad523bcbeb7ad72')
+sha256sums=('d9d61a941ecfd2ff41d5450557eb9071d934497dbd10229e97c8f88b48cb9a58'
+ '691e0d8d348ab9f19f0398ff79e0d4780d5110e3dd11acf3261e3f73b2983ea1'
+ '31e0d244d22b16d2c0b783e38bac2d96a53cbe0ce14f2fe11142a8691ce952aa'
+ '8dcb2c32d641cef471fe45db1e122492a82b3439c55be8c530758d519eeae289'
+ '3e2b44baf4d8e29ce5e084485f0882a8f06a1d1b045a93ffa5cdd2f8112d1bfa'
+ '7c0c4af907e68a2641beffd20bf487b47cf58ca79dea45276b5046fe81f436bc'
+ '0c942db9e9a5f41873cc2ba6edae3372da672e8f82ea5c1266a2c905d4373319'
+ '4c9e99b780353f270b96e57cd25e4ebf8e3058fa44105422ada42eb87cf798b2'
+ '517e2aa68ee91bf2d8c0d6896dee2367cbc29f98ed5a3eb8392ca32028cd9b84'
+ '9780f642f30b0870c78864418f5a46bc189f27249eba312bec91538f622c2334'
+ '9c93b5166e4b13b7a2cc39868dc578a621bbe07d7295a4d10d89328cf264d055')
_opt_SERIAL=1 # This is for bug testing dkms only. All cards have serial ports so this should always be enabled.
@@ -147,22 +186,90 @@ prepare() {
sed -e "s|__DATE__|\"${_dt}\"|g" -e "s|__TIME__|\"${_tm}\"|g" -i 'pparport26/pparport_pc.c'
# Improve install
+ #cp -p 'pserial/Makefile'{,.Arch}
+ #cp -p 'pparport26/Makefile'{,.Arch}
sed -e 's:lib/:usr/lib/:g' \
- -e '# Forgot to clean a few things' \
- -e '/\*\.o\.cmd/ s:^.*$:& *.symvers *.order *.mod.c .*.ko.cmd .*.o.d\n\trm -rf .tmp_versions:g' \
+ -e '# Forgot to clean a few things and some new files for gcc8' \
+ -e '/\*\.o\.cmd/ s:^.*$:& *.symvers *.order *.mod.c .*.ko.cmd .*.o.d .cache.mk\n\trm -rf .tmp_versions:g' \
+ -e '# Switch SUBDIRS= to M= for Kernel 5.4' \
+ -e 's:SUBDIRS=:M=$(PWD) &:g' \
+ -e '/^KERNEL_/ s:shell uname -r:shell echo "$(KERNELRELEASE)":g' \
+ -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \
+ -e 's:shell uname -r:KERNELRELEASE:g' \
+ -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \
+ -e '# Fix by changing the detection var.' \
+ -e '# SUBDIRS makes more sense to me because I can see it in the Makefile!' \
+ -e 's:^ifeq (\$(KERNELRELEASE),):ifeq (\$(SUBDIRS),):g' \
+ -e '# Disable stuff only used for make install' \
+ -e '/^base =/,/^$/ d' \
+ -e '# Disable non kernel utilities' \
+ -e 's:^#UTILS:# &:g' \
+ -e '# Move utils to separate target' \
+ -e '/^\s*all:/ s:$(UTILS).*$::g' \
+ -e 's@^install:@utils: $(UTILS)\n\n&@g' \
+ -e '1i KERNELRELEASE?=$(shell uname -r)' \
-i 'pserial/Makefile' 'pparport26/Makefile'
+ ! test -s 'pserial/Makefile.Arch' || echo "${}"
+ ! test -s 'pparport26/Makefile.Arch' || echo "${}"
+
+ # Patch
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0000}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0000,} > '0000-kernel-4.11-signal_pending.patch'
+ patch -Nup1 -i "${srcdir}/0000-kernel-4.11-signal_pending.patch"
+
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0001}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0001,} > '0001-kernel-5.6-proc_dir_entry-proc_ops.patch'
+ patch -Nup1 -i "${srcdir}/0001-kernel-5.6-proc_dir_entry-proc_ops.patch"
+
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0002}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0002,} > '0002-kernel-4.7-async-initialized.patch'
+ patch -Nup1 -i "${srcdir}/0002-kernel-4.7-async-initialized.patch"
+
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0003}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0003,} > '0003-kernel-5.12-tty-low_latency.patch'
+ patch -Nup1 -i "${srcdir}/0003-kernel-5.12-tty-low_latency.patch"
+
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0004}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0004,} > '0004-tty_unregister_driver-void.patch'
+ patch -Nup1 -i "${srcdir}/0004-tty_unregister_driver-void.patch"
+
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0005}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0005,} > '0005-kernel-5.14-unsigned-tty-flow-tty.patch'
+ patch -Nup1 -i "${srcdir}/0005-kernel-5.14-unsigned-tty-flow-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
+ #cp -pr "${srcdir}/${_srcdir}"{,.orig-0006}; false
+ #diff -pNaru5 perle-serial-3.9.2{.orig-0006,} > '0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch'
+ patch -Nup1 -i "${srcdir}/0006-kernel-5.15-alloc_tty_driver-put_tty_driver.patch"
+
+ # https://lore.kernel.org/linux-arm-kernel/6fb33489-946f-ad92-df35-7f608420bc7@linux.intel.com/T/
+ #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0007-kernel-6.0-serial_UART_XMIT_SIZE.patch'
+ patch -Nup1 -i "${srcdir}/0007-kernel-6.0-serial_UART_XMIT_SIZE.patch"
+
+ # https://lore.kernel.org/linux-arm-kernel/20220816115739.10928-9-ilpo.jarvinen@linux.intel.com/T/
+ #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0008-kernel-6.0-set_termios-const-ktermios.patch'
+ patch -Nup1 -i "${srcdir}/0008-kernel-6.0-set_termios-const-ktermios.patch"
+
+ #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false
+ # diff -pNaru5 'a' 'b' > '0009-kernel-6.6-struct-tty_operations-write-size_t.patch'
+ patch -Nup1 -i "${srcdir}/0009-kernel-6.6-struct-tty_operations-write-size_t.patch"
+
set +u
}
build() {
set -u
cd "${_srcdir}"
- if [ "${_opt_PARALLEL}" -ne 0 ]; then
+ # Always build both so we know when patches are needed
+ #if [ "${_opt_PARALLEL}" -ne 0 ]; then
make -C 'pparport26' -s -j1
- fi
- if [ "${_opt_SERIAL}" -ne 0 ]; then
- make -C 'pserial' -s -j1 # too small for parallel make
- fi
+ #fi
+ #if [ "${_opt_SERIAL}" -ne 0 ]; then
+ make -C 'pserial' -s -j1 all utils # too small for parallel make
+ #fi
set +u
}
@@ -184,7 +291,7 @@ package() {
fi
if [ "${_opt_SERIAL}" -ne 0 ]; then
make -C 'pserial' -s -j1 DESTDIR="${pkgdir}/" PERLE_DIR="${srcdir}/${_srcdir}" rpm_install
- # Cat fight!
+ # Cat fight to add head and tail to existing file
cat <(cat << EOF
#!/usr/bin/sh
@@ -201,7 +308,7 @@ EOF
) > "${pkgdir}/etc/perle-serial-setultrap.sh"
sed -e 's:/bin/:/usr/bin/:g' -e 's:/usr/usr/:/usr/:g' -i "${pkgdir}/etc/perle-serial-setultrap.sh"
chmod 744 "${pkgdir}/etc/perle-serial-setultrap.sh"
- rm -r "${pkgdir}/UNKONWN" "${pkgdir}/etc/init.d"
+ rm -rf "${pkgdir}/UNKONWN" "${pkgdir}/etc/init.d"
# Install persistent settings service
install -Dm644 <(cat << EOF
# Automatically generated by ${pkgname}-${pkgver} PKGBUILD from Arch Linux AUR
@@ -292,18 +399,6 @@ EOF
fi
# sed 'a' can't add leading tabs so we add them here. It's also handy because this guarantees tabs not spaces.
sed -e 's:^make:\t&:g' -i "${_dkms}/Makefile"
- sed -e '/^KERNEL_/ s:shell uname -r:shell echo "$(KERNELRELEASE)":g' \
- -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \
- -e 's:shell uname -r:KERNELRELEASE:g' \
- -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \
- -e '# Fix by changing the detection var.' \
- -e '# SUBDIRS makes more sense to me because I can see it in the Makefile!' \
- -e 's:^ifeq (\$(KERNELRELEASE),):ifeq (\$(SUBDIRS),):g' \
- -e '# Disable stuff only used for make install' \
- -e '/^base =/,/^$/ d' \
- -e '# Disable non kernel utilities' \
- -e 's:^UTILS:# &:g' \
- -i "${_dkms}"/*/'Makefile'
rm "${_dkms}"/*/*.sh "${_dkms}"/*/rc.*
if [ "${_opt_SERIAL}" -ne 0 ]; then
make -s -C "${_dkms}/pserial" clean KERNELRELEASE="$(uname -r)"