mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-17 08:01:36 +00:00
9659373f55
infrastructure: patch-aa and patch-ac both patch the same file: ${WRKSRC}/sys/dev/ltmdm/ltmdmsio.c.
197 lines
4.9 KiB
Plaintext
197 lines
4.9 KiB
Plaintext
--- 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
|
|
|
|
+#if __FreeBSD_version >= 500000
|
|
+#include <dev/pci/pcireg.h>
|
|
+#include <dev/pci/pcivar.h>
|
|
+#else
|
|
#include <pci/pcireg.h>
|
|
#include <pci/pcivar.h>
|
|
+#endif
|
|
|
|
#include <machine/clock.h>
|
|
|
|
@@ -88,7 +99,9 @@
|
|
|
|
#include <machine/resource.h>
|
|
|
|
-#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
|
|
|
|
#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
|
|
|
|
|
|
#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
|
|
|
|
u_long bytes_in; /* statistics */
|
|
u_long bytes_out;
|
|
@@ -352,6 +369,7 @@
|
|
#endif
|
|
|
|
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
|
|
|
|
/*
|
|
* initialize the device registers as follows:
|
|
@@ -1685,7 +1730,9 @@
|
|
s = splfunc();
|
|
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
|
|
+#endif
|
|
|
|
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);
|
|
}
|
|
}
|
|
+#endif
|
|
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
|
|
|
|
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
|