summarylogtreecommitdiffstats
path: root/0000-Kernel-4-15-timers.patch
diff options
context:
space:
mode:
authorChris Severance2018-06-05 00:23:20 -0400
committerChris Severance2018-06-05 00:23:20 -0400
commit303829ddc99b1d6924ee8b01b2fe63afe8a47d1a (patch)
tree452221c81d776fe22c1c0059c31d2cdacf47ef98 /0000-Kernel-4-15-timers.patch
parentff38857ec1dfcdc8c936c6e561b5de919d3f1571 (diff)
downloadaur-303829ddc99b1d6924ee8b01b2fe63afe8a47d1a.tar.gz
autu: Update to 2.0.4_3-1
Diffstat (limited to '0000-Kernel-4-15-timers.patch')
-rw-r--r--0000-Kernel-4-15-timers.patch143
1 files changed, 143 insertions, 0 deletions
diff --git a/0000-Kernel-4-15-timers.patch b/0000-Kernel-4-15-timers.patch
new file mode 100644
index 000000000000..7f2a788e3866
--- /dev/null
+++ b/0000-Kernel-4-15-timers.patch
@@ -0,0 +1,143 @@
+diff -pNaru5 snx_V2.0.4.3.orig-0000/driver/snx_common.h snx_V2.0.4.3/driver/snx_common.h
+--- snx_V2.0.4.3.orig-0000/driver/snx_common.h 2018-06-04 09:18:05.640354280 -0400
++++ snx_V2.0.4.3/driver/snx_common.h 2018-06-04 09:18:05.657020853 -0400
+@@ -893,10 +893,11 @@ static inline void snx_ser_insert_char
+ /*******************************************************
+ sunix serial port struct
+ *******************************************************/
+ struct sunix_ser_port
+ {
++ /* port must be first */
+ struct snx_ser_port port;
+ struct timer_list timer;
+ struct list_head list;
+
+ unsigned int capabilities;
+diff -pNaru5 snx_V2.0.4.3.orig-0000/driver/snx_ieee1284.c snx_V2.0.4.3/driver/snx_ieee1284.c
+--- snx_V2.0.4.3.orig-0000/driver/snx_ieee1284.c 2009-11-02 13:53:54.000000000 -0500
++++ snx_V2.0.4.3/driver/snx_ieee1284.c 2018-06-04 09:18:05.657020853 -0400
+@@ -8,31 +8,53 @@ static void sunix_parport_ieee1284_wakeu
+
+
+ static struct snx_parport *port_from_cookie[SNX_PAR_TOTAL_MAX];
+
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+ static void sunix_timeout_waiting_on_port(unsigned long cookie)
+ {
++#else
++struct sp_timer_list {
++ struct timer_list tl;
++ unsigned long cookie;
++};
++
++static void sunix_timeout_waiting_on_port(struct timer_list *ptr)
++{
++ struct sp_timer_list *sptl = (struct sp_timer_list *) ptr;
++ unsigned long cookie = sptl->cookie;
++#endif
+ sunix_parport_ieee1284_wakeup(port_from_cookie[cookie % SNX_PAR_TOTAL_MAX]);
+ }
+
+
+ int sunix_parport_wait_event(struct snx_parport *port, signed long timeout)
+ {
+ int ret;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+ struct timer_list timer;
++#else
++ struct sp_timer_list snx_timer_ch;
++#endif
+
+ if (!port->physport->cad->timeout)
+ {
+ return 1;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+ init_timer (&timer);
+- timer.expires = jiffies + timeout;
+ timer.function = sunix_timeout_waiting_on_port;
+- port_from_cookie[port->number % PARPORT_MAX] = port;
+ timer.data = port->number;
++#else
++#define timer (snx_timer_ch.tl)
++ timer_setup(&timer,sunix_timeout_waiting_on_port,0);
++ snx_timer_ch.cookie = port->number;
++#endif
++ timer.expires = jiffies + timeout;
++ port_from_cookie[port->number % PARPORT_MAX] = port;
+
+ add_timer (&timer);
+ ret = down_interruptible(&port->physport->ieee1284.irq);
+
+
+@@ -41,10 +63,11 @@ int sunix_parport_wait_event(struct snx_
+ ret = 1;
+ }
+
+ return ret;
+ }
++#undef timer
+
+
+ int sunix_parport_poll_peripheral(struct snx_parport *port, unsigned char mask, unsigned char result, int usec)
+ {
+ int count = usec / 5 + 2;
+diff -pNaru5 snx_V2.0.4.3.orig-0000/driver/snx_serial.c snx_V2.0.4.3/driver/snx_serial.c
+--- snx_V2.0.4.3.orig-0000/driver/snx_serial.c 2017-10-13 02:54:10.000000000 -0400
++++ snx_V2.0.4.3/driver/snx_serial.c 2018-06-04 09:19:55.559736715 -0400
+@@ -132,11 +132,15 @@ static void sunix_ser_enable_ms(
+ static void sunix_ser_break_ctl(struct snx_ser_port *, int);
+ static int sunix_ser_startup(struct snx_ser_port *);
+ static void sunix_ser_shutdown(struct snx_ser_port *);
+ static unsigned int sunix_ser_get_divisor(struct snx_ser_port *, unsigned int);
+ static void sunix_ser_set_termios(struct snx_ser_port *, struct SNXTERMIOS *, struct SNXTERMIOS *);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0))
+ static void sunix_ser_timeout(unsigned long);
++#else
++static void sunix_ser_timeout(struct timer_list *);
++#endif
+
+
+ static _INLINE_ void sunix_ser_receive_chars(struct sunix_ser_port *, unsigned char *);
+ static _INLINE_ void sunix_ser_transmit_chars(struct sunix_ser_port *);
+ static _INLINE_ void sunix_ser_check_modem_status(struct sunix_ser_port *, unsigned char);
+@@ -4415,13 +4419,19 @@ static void sunix_ser_set_termios(struct
+
+ spin_unlock_irqrestore(&sp->port.lock, flags);
+ }
+
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0))
+ static void sunix_ser_timeout(unsigned long data)
+ {
+ struct sunix_ser_port *sp = (struct sunix_ser_port *)data;
++#else
++static void sunix_ser_timeout(struct timer_list *tl)
++{
++ struct sunix_ser_port *sp = from_timer(sp,tl,timer);
++#endif
+ unsigned int timeout;
+ unsigned int iir;
+
+ iir = READ_UART_IIR(sp);
+
+@@ -5054,13 +5064,17 @@ extern int sunix_ser_register_ports(stru
+
+ sp->port.line = i;
+
+ if (sp->port.iobase)
+ {
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0))
+ init_timer(&sp->timer);
+
+ sp->timer.function = sunix_ser_timeout;
++#else
++ timer_setup(&sp->timer,sunix_ser_timeout,0);
++#endif
+
+ sp->mcr_mask = ~0;
+ sp->mcr_force = 0;
+
+ ret = sunix_ser_add_one_port(drv, &sp->port);