summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--comms/ltmdm/Makefile2
-rw-r--r--comms/ltmdm/files/patch-aa411
2 files changed, 174 insertions, 239 deletions
diff --git a/comms/ltmdm/Makefile b/comms/ltmdm/Makefile
index b67dd64b0fbc..061743df25bc 100644
--- a/comms/ltmdm/Makefile
+++ b/comms/ltmdm/Makefile
@@ -7,7 +7,7 @@
PORTNAME= ltmdm
PORTVERSION= 1.4
-PORTREVISION= 8
+PORTREVISION= 7
CATEGORIES= comms
MASTER_SITES= http://www.dons.net.au/~darius/ \
http://soupnazi.org/FreeBSD/ports/distfiles/
diff --git a/comms/ltmdm/files/patch-aa b/comms/ltmdm/files/patch-aa
index 6296858fa0e1..675388144e4f 100644
--- a/comms/ltmdm/files/patch-aa
+++ b/comms/ltmdm/files/patch-aa
@@ -1,261 +1,196 @@
---- sys/dev/ltmdm/ltmdmsio.c.orig Thu Jul 22 13:05:17 2004
-+++ sys/dev/ltmdm/ltmdmsio.c Thu Jul 22 13:06:49 2004
-@@ -245,7 +245,9 @@
- u_char last_modem_status; /* last MSR read by intr handler */
- u_char prev_modem_status; /* last MSR handled by high level */
-
-+#if __FreeBSD_version < 502119
- u_char hotchar; /* ldisc-specific char to be handled ASAP */
+--- sys/dev/ltmdm/ltmdmsio.c.orig Mon Mar 11 18:47:31 2002
++++ sys/dev/ltmdm/ltmdmsio.c Sat Feb 21 20:56:45 2004
+@@ -60,7 +60,9 @@
+ #include <sys/proc.h>
+ #include <sys/module.h>
+ #include <sys/conf.h>
++#if __FreeBSD_version < 500101
+ #include <sys/dkstat.h>
++#endif
+ #include <sys/fcntl.h>
+ #include <sys/interrupt.h>
+ #include <sys/kernel.h>
+@@ -69,12 +71,21 @@
+ #include <machine/bus.h>
+ #include <sys/rman.h>
+ #if __FreeBSD_version >= 500000
++#if __FreeBSD_version < 500034 /* < 20020426 */
+ #include <sys/timetc.h>
+ #endif
++#endif
++#ifdef ENABLE_PPS
+ #include <sys/timepps.h>
+#endif
- u_char *ibuf; /* start of input buffer */
- u_char *ibufend; /* end of input buffer */
- u_char *ibufold; /* old input buffer, to be freed */
-@@ -285,7 +287,11 @@
- struct resource *iores[6];
- struct resource *irqres;
- void *cookie;
-+#if __FreeBSD_version > 502115
-+ struct cdev *devs[6];
+
++#if __FreeBSD_version >= 500000
++#include <dev/pci/pcireg.h>
++#include <dev/pci/pcivar.h>
+#else
- dev_t devs[6];
+ #include <pci/pcireg.h>
+ #include <pci/pcivar.h>
+#endif
- /*
- * Data area for output buffers. Someday we should build the output
-@@ -1478,11 +1484,17 @@
+ #include <machine/clock.h>
- s = splfunc();
- if (tp) {
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_close)(tp, FNONBLOCK);
-+#else
- (*linesw[tp->t_line].l_close)(tp, FNONBLOCK);
-+#endif
- disc_optim(tp, &tp->t_termios, com);
- comstop(tp, FREAD | FWRITE);
- comhardclose(com);
-+#if __FreeBSD_version > 502122
- ttyclose(tp);
-+#endif
- }
- vxdPortClose();
- siosettimeout();
-@@ -1515,7 +1527,11 @@
- }
+@@ -88,7 +99,9 @@
- static int
-+#if __FreeBSD_version > 502115
-+sioopen(struct cdev *dev, int flag, int mode, struct proc *p)
-+#else
- sioopen(dev_t dev, int flag, int mode, struct proc *p)
-+#endif
- {
- struct com_s *com;
- int error;
-@@ -1655,7 +1671,11 @@
- * the true carrier.
- */
- if (com->prev_modem_status & MSR_DCD || mynor & CALLOUT_MASK)
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_modem)(tp, 1);
-+#else
- (*linesw[tp->t_line].l_modem)(tp, 1);
-+#endif
- }
- /*
- * Wait for DCD if necessary.
-@@ -1671,7 +1691,11 @@
- goto out;
- goto open_top;
- }
-+#if __FreeBSD_version > 502112
-+ error = (*linesw[tp->t_line]->l_open)(dev, tp);
-+#else
- error = (*linesw[tp->t_line].l_open)(dev, tp);
-+#endif
- disc_optim(tp, &tp->t_termios, com);
- if (tp->t_state & TS_ISOPEN && mynor & CALLOUT_MASK)
- com->active_out = TRUE;
-@@ -1684,7 +1708,11 @@
- }
+ #include <machine/resource.h>
- static int
-+#if __FreeBSD_version > 502115
-+sioclose(struct cdev *dev, int flag, int mode, struct proc *p)
-+#else
- sioclose(dev_t dev, int flag, int mode, struct proc *p)
-+#endif
- {
- struct com_s *com;
- int mynor;
-@@ -1699,11 +1727,17 @@
- return (ENODEV);
- tp = com->tp;
- s = splfunc();
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_close)(tp, flag);
-+#else
- (*linesw[tp->t_line].l_close)(tp, flag);
-+#endif
- disc_optim(tp, &tp->t_termios, com);
- comstop(tp, FREAD | FWRITE);
- comhardclose(com);
-+#if __FreeBSD_version > 502122
- ttyclose(tp);
-+#endif
- siosettimeout();
- splx(s);
- if (com->gone) {
-@@ -1771,7 +1805,11 @@
- }
+-#if __FreeBSD_version >= 500027 /* >= 20011022 */
++#if __FreeBSD_version >= 501107 /* >= 20030917 */
++#include <dev/ic/ns16550.h>
++#elif __FreeBSD_version >= 500027 /* >= 20011022 */
+ #include <dev/sio/sioreg.h>
+ #else
+ #include <isa/sioreg.h>
+@@ -124,9 +137,11 @@
+ #endif
- static int
-+#if __FreeBSD_version > 502115
-+sioread(struct cdev *dev, struct uio *uio, int flag)
-+#else
- sioread(dev_t dev, struct uio *uio, int flag)
-+#endif
- {
- int mynor;
- struct com_s *com;
-@@ -1782,11 +1820,19 @@
- com = com_addr(MINOR_TO_UNIT(mynor));
- if (com == NULL || com->gone)
- return (ENODEV);
-+#if __FreeBSD_version > 502112
-+ return ((*linesw[com->tp->t_line]->l_read)(com->tp, uio, flag));
-+#else
- return ((*linesw[com->tp->t_line].l_read)(com->tp, uio, flag));
+ #if __FreeBSD_version >= 500023 /* >= 20010912 */
+-#define proc thread /* temporary hack: struct proc -> stuct thread */
++#define proc thread /* XXX struct proc -> stuct thread */
++#if __FreeBSD_version < 500033 /* < 20020401 */
+ #define suser(p) suser_td(p)
+ #endif
+#endif
- }
- static int
-+#if __FreeBSD_version > 502115
-+siowrite(struct cdev *dev, struct uio *uio, int flag)
-+#else
- siowrite(dev_t dev, struct uio *uio, int flag)
-+#endif
- {
- int mynor;
- struct com_s *com;
-@@ -1801,7 +1847,11 @@
- if (com == NULL || com->gone)
- return (ENODEV);
-+#if __FreeBSD_version > 502112
-+ return ((*linesw[com->tp->t_line]->l_write)(com->tp, uio, flag));
-+#else
- return ((*linesw[com->tp->t_line].l_write)(com->tp, uio, flag));
+ #define LOTS_OF_EVENTS 64 /* helps separate urgent events from input */
+@@ -256,7 +271,9 @@
+ bool_t do_dcd_timestamp;
+ struct timeval timestamp;
+ struct timeval dcd_timestamp;
++#ifdef ENABLE_PPS
+ struct pps_state pps;
+#endif
- }
- static void
-@@ -1907,7 +1957,11 @@
- if (line_status & LSR_PE)
- recv_data |= TTY_PE;
- }
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_rint)(recv_data, tp);
-+#else
- (*linesw[tp->t_line].l_rint)(recv_data, tp);
-+#endif
- lt_disable_intr();
- } while (buf < com->iptr);
- }
-@@ -2006,7 +2060,11 @@
- recv_data = 0;
- }
- ++com->bytes_in;
-+#if __FreeBSD_version > 502118
-+ if (com->tp->t_hotchar != 0 && recv_data == com->tp->t_hotchar)
-+#else
- if (com->hotchar != 0 && recv_data == com->hotchar)
-+#endif
- setsofttty();
- ioptr = com->iptr;
- if (ioptr >= com->ibufend)
-@@ -2111,7 +2169,11 @@
- }
+ u_long bytes_in; /* statistics */
+ u_long bytes_out;
+@@ -352,6 +369,7 @@
+ #endif
- static int
-+#if __FreeBSD_version > 502115
-+sioioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct proc *p)
-+#else
- sioioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
-+#endif
- {
- struct com_s *com;
- int error;
-@@ -2192,7 +2254,11 @@
- if (lt->c_ospeed != 0)
- dt->c_ospeed = tp->t_ospeed;
- }
-+#if __FreeBSD_version > 502112
-+ error = (*linesw[tp->t_line]->l_ioctl)(tp, cmd, data, flag, p);
-+#else
- error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag, p);
+ static struct cdevsw sio_cdevsw = {
++#if __FreeBSD_version < 500105
+ /* open */ sioopen,
+ /* close */ sioclose,
+ /* read */ sioread,
+@@ -361,7 +379,11 @@
+ /* mmap */ nommap,
+ /* strategy */ nostrategy,
+ /* name */ driver_name,
++#ifdef MAJOR_AUTO
++ /* maj */ MAJOR_AUTO,
++#else
+ /* maj */ CDEV_MAJOR,
++#endif
+ /* dump */ nodump,
+ /* psize */ nopsize,
+ #if __FreeBSD_version < 430000
+@@ -373,10 +395,30 @@
+ /* bmaj */ -1,
+ /* kqfilter */ ttykqfilter,
+ #else /* __FreeBSD_version >= 500000 */
+- /* flags */ D_TTY | D_KQFILTER,
++ /* flags */ D_TTY,
+ /* kqfilter */ ttykqfilter,
+ #endif
+ #endif
++#else
++ .d_open = sioopen,
++ .d_close = sioclose,
++ .d_read = sioread,
++ .d_write = siowrite,
++ .d_ioctl = sioioctl,
++ .d_name = driver_name,
++#ifdef MAJOR_AUTO
++ .d_maj = MAJOR_AUTO,
++#else
++ .d_maj = CDEV_MAJOR,
++#endif
++ .d_kqfilter = ttykqfilter,
++#if __FreeBSD_version >= 502102
++ .d_flags = D_TTY | D_NEEDGIANT,
++ .d_version = D_VERSION
++#else
++ .d_poll = ttypoll,
++#endif
++#endif
+ };
+
+ static u_int com_events; /* input chars + weighted output completions */
+@@ -1295,8 +1337,11 @@
+ DPRINTF(1,(" x_chip_version = %d\n", x_chip_version));
+
+ com->flags = flags;
++
++#ifdef ENABLE_PPS
+ com->pps.ppscap = PPS_CAPTUREASSERT | PPS_CAPTURECLEAR;
+ pps_init(&com->pps);
+#endif
- if (error != ENOIOCTL)
- return (error);
+
+ /*
+ * initialize the device registers as follows:
+@@ -1685,7 +1730,9 @@
s = splfunc();
-@@ -2247,10 +2313,12 @@
- com->do_timestamp = TRUE;
- *(struct timeval *)data = com->timestamp;
- break;
-+#if __FreeBSD_version < 502119
- case TIOCDCDTIMESTAMP:
- com->do_dcd_timestamp = TRUE;
- *(struct timeval *)data = com->dcd_timestamp;
- break;
+ com->do_timestamp = FALSE;
+ com->do_dcd_timestamp = FALSE;
++#ifdef ENABLE_PPS
+ com->pps.ppsparam.mode = 0;
++#endif
+ write_vuart_port(UART_CFCR, com->cfcr_image &= ~CFCR_SBREAK);
+ {
+ write_vuart_port(UART_IER, 0);
+@@ -1894,23 +1941,34 @@
+ u_char recv_data;
+ u_char int_ctl;
+ u_char int_ctl_new;
++#ifdef ENABLE_PPS
++#if __FreeBSD_version < 500034
+ struct timecounter *tc;
+ u_int count;
+#endif
- default:
- splx(s);
- #ifdef ENABLE_PPS
-@@ -2317,8 +2385,13 @@
- com->state &= ~CS_CHECKMSR;
- lt_enable_intr();
- if (delta_modem_status & MSR_DCD)
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_modem)
-+ (tp, com->prev_modem_status & MSR_DCD);
-+#else
- (*linesw[tp->t_line].l_modem)
- (tp, com->prev_modem_status & MSR_DCD);
+#endif
- }
- if (com->state & CS_ODONE) {
- lt_disable_intr();
-@@ -2330,7 +2403,11 @@
- sio_busycheck_handle = timeout(siobusycheck, com, hz / 100);
- com->extra_state |= CSE_BUSYCHECK;
+
+ int_ctl = read_vuart_port(UART_IER);
+ int_ctl_new = int_ctl;
+
+ while (!com->gone) {
++#ifdef ENABLE_PPS
+ if (com->pps.ppsparam.mode & PPS_CAPTUREBOTH) {
+ modem_status = read_vuart_port(UART_MSR);
+ if ((modem_status ^ com->last_modem_status) & MSR_DCD) {
++#if __FreeBSD_version < 500034
+ tc = timecounter;
+ count = tc->tc_get_timecount(tc);
+ pps_event(&com->pps, tc, count,
++#else
++ pps_capture(&com->pps);
++ pps_event(&com->pps,
++#endif
+ (modem_status & MSR_DCD) ?
+ PPS_CAPTUREASSERT : PPS_CAPTURECLEAR);
}
-+#if __FreeBSD_version > 502112
-+ (*linesw[tp->t_line]->l_start)(tp);
-+#else
- (*linesw[tp->t_line].l_start)(tp);
-+#endif
}
- if (com_events == 0)
- break;
-@@ -2829,11 +2906,21 @@
- && (!(t->c_iflag & PARMRK)
- || (t->c_iflag & (IGNPAR | IGNBRK)) == (IGNPAR | IGNBRK))
- && !(t->c_lflag & (ECHO | ICANON | IEXTEN | ISIG | PENDIN))
-+#if __FreeBSD_version > 502112
-+ && linesw[tp->t_line]->l_rint == ttyinput)
-+#else
- && linesw[tp->t_line].l_rint == ttyinput)
+#endif
- tp->t_state |= TS_CAN_BYPASS_L_RINT;
- else
- tp->t_state &= ~TS_CAN_BYPASS_L_RINT;
-+#if __FreeBSD_version > 502112
-+#if __FreeBSD_version < 502119
-+ com->hotchar = linesw[tp->t_line]->l_hotchar;
-+#endif
-+#else
- com->hotchar = linesw[tp->t_line].l_hotchar;
+ line_status = read_vuart_port(UART_LSR);
+
+ /* input event? (check first to help avoid overruns) */
+@@ -2195,7 +2253,9 @@
+ break;
+ default:
+ splx(s);
++#ifdef ENABLE_PPS
+ error = pps_ioctl(cmd, data, &com->pps);
+#endif
- }
+ if (error == ENODEV)
+ error = ENOTTY;
+ return (error);
+@@ -2796,7 +2856,7 @@
+ #endif
- #ifdef KLD_MODULE
+ DRIVER_MODULE(ltmdm, pci, ltmdm_pci_driver, ltmdm_devclass, ltmdm_event, 0);
+-#if 0
++#if 1
+ #if __FreeBSD_version >= 500000
+ DRIVER_MODULE(ltmdm, cardbus, ltmdm_pci_driver, ltmdm_devclass, ltmdm_event, 0);
+ #endif