-diff --git a/Documentation/pps/Makefile b/Documentation/pps/Makefile
-new file mode 100644
-index 0000000..a2660a2
--- /dev/null
+++ b/Documentation/pps/Makefile
@@ -0,0 +1,27 @@
+clean :
+ rm -f *.o *~ core .depend
+ rm -f ${TARGETS}
-diff --git a/Documentation/pps/pps.txt b/Documentation/pps/pps.txt
-new file mode 100644
-index 0000000..9538925
--- /dev/null
+++ b/Documentation/pps/pps.txt
@@ -0,0 +1,170 @@
+
+Please, note that to compile userland programs you need the file timepps.h
+(see Documentation/pps/).
-diff --git a/Documentation/pps/ppsctl.c b/Documentation/pps/ppsctl.c
-new file mode 100644
-index 0000000..83fd08a
--- /dev/null
+++ b/Documentation/pps/ppsctl.c
@@ -0,0 +1,62 @@
+
+ return 0;
+}
-diff --git a/Documentation/pps/ppsfind b/Documentation/pps/ppsfind
-new file mode 100755
-index 0000000..93c0e17
--- /dev/null
+++ b/Documentation/pps/ppsfind
@@ -0,0 +1,17 @@
+done
+
+exit 0
-diff --git a/Documentation/pps/ppstest.c b/Documentation/pps/ppstest.c
-new file mode 100644
-index 0000000..d125ffa
--- /dev/null
+++ b/Documentation/pps/ppstest.c
@@ -0,0 +1,151 @@
+
+ return 0;
+}
-diff --git a/Documentation/pps/timepps.h b/Documentation/pps/timepps.h
-new file mode 100644
-index 0000000..28ebf4c
--- /dev/null
+++ b/Documentation/pps/timepps.h
@@ -0,0 +1,193 @@
+}
+
+#endif /* _SYS_TIMEPPS_H_ */
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 9a91d9e..f45e974 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3011,6 +3011,13 @@ P: James Chapman
PREEMPTIBLE KERNEL
P: Robert Love
M: rml@tech9.net
-diff --git a/drivers/Kconfig b/drivers/Kconfig
-index 3e1c442..bffc48e 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -52,6 +52,8 @@ source "drivers/i2c/Kconfig"
source "drivers/w1/Kconfig"
source "drivers/power/Kconfig"
-diff --git a/drivers/Makefile b/drivers/Makefile
-index f0878b2..2e84e49 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -63,6 +63,7 @@ obj-$(CONFIG_INPUT) += input/
obj-$(CONFIG_W1) += w1/
obj-$(CONFIG_POWER_SUPPLY) += power/
obj-$(CONFIG_HWMON) += hwmon/
-diff --git a/drivers/char/lp.c b/drivers/char/lp.c
-index 62051f8..e0a8364 100644
--- a/drivers/char/lp.c
+++ b/drivers/char/lp.c
@@ -746,6 +746,27 @@ static struct console lpcons = {
/* --- initialisation code ------------------------------------- */
static int parport_nr[LP_NO] = { [0 ... LP_NO-1] = LP_PARPORT_UNSPEC };
-@@ -817,6 +838,38 @@ static int lp_register(int nr, struct parport *port)
+@@ -817,6 +838,38 @@ static int lp_register(int nr, struct pa
}
#endif
return 0;
}
-@@ -860,6 +913,14 @@ static void lp_detach (struct parport *port)
+@@ -860,6 +913,14 @@ static void lp_detach (struct parport *p
console_registered = NULL;
}
#endif /* CONFIG_LP_CONSOLE */
}
static struct parport_driver lp_driver = {
-diff --git a/drivers/pps/Kconfig b/drivers/pps/Kconfig
-new file mode 100644
-index 0000000..bfe6621
--- /dev/null
+++ b/drivers/pps/Kconfig
@@ -0,0 +1,34 @@
+source drivers/pps/clients/Kconfig
+
+endmenu
-diff --git a/drivers/pps/Makefile b/drivers/pps/Makefile
-new file mode 100644
-index 0000000..d8ec308
--- /dev/null
+++ b/drivers/pps/Makefile
@@ -0,0 +1,11 @@
+ifeq ($(CONFIG_PPS_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-diff --git a/drivers/pps/clients/Kconfig b/drivers/pps/clients/Kconfig
-new file mode 100644
-index 0000000..09ba5c3
--- /dev/null
+++ b/drivers/pps/clients/Kconfig
@@ -0,0 +1,38 @@
+ with the interrupt pin of your parallel port.
+
+endif
-diff --git a/drivers/pps/clients/Makefile b/drivers/pps/clients/Makefile
-new file mode 100644
-index 0000000..f3c1e39
--- /dev/null
+++ b/drivers/pps/clients/Makefile
@@ -0,0 +1,9 @@
+ifeq ($(CONFIG_PPS_DEBUG),y)
+EXTRA_CFLAGS += -DDEBUG
+endif
-diff --git a/drivers/pps/clients/ktimer.c b/drivers/pps/clients/ktimer.c
-new file mode 100644
-index 0000000..4d613ab
--- /dev/null
+++ b/drivers/pps/clients/ktimer.c
@@ -0,0 +1,114 @@
+MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
+MODULE_DESCRIPTION("dummy PPS source by using a kernel timer (just for debug)");
+MODULE_LICENSE("GPL");
-diff --git a/drivers/pps/kapi.c b/drivers/pps/kapi.c
-new file mode 100644
-index 0000000..67290d5
--- /dev/null
+++ b/drivers/pps/kapi.c
@@ -0,0 +1,271 @@
+ spin_unlock_irqrestore(&idr_lock, flags);
+}
+EXPORT_SYMBOL(pps_event);
-diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c
-new file mode 100644
-index 0000000..52de2f1
--- /dev/null
+++ b/drivers/pps/pps.c
@@ -0,0 +1,332 @@
+MODULE_AUTHOR("Rodolfo Giometti <giometti@linux.it>");
+MODULE_DESCRIPTION("LinuxPPS support (RFC 2783) - ver. " PPS_VERSION);
+MODULE_LICENSE("GPL");
-diff --git a/drivers/pps/sysfs.c b/drivers/pps/sysfs.c
-new file mode 100644
-index 0000000..8541be7
--- /dev/null
+++ b/drivers/pps/sysfs.c
@@ -0,0 +1,124 @@
+
+ return 0;
+}
-diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
-index f94109c..a5e83f8 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
-@@ -2118,6 +2118,8 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2118,6 +2118,8 @@ serial8250_set_termios(struct uart_port
up->ier |= UART_IER_MSI;
if (up->capabilities & UART_CAP_UUE)
up->ier |= UART_IER_UUE | UART_IER_RTOIE;
serial_out(up, UART_IER, up->ier);
-diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
-index a055f58..a40b87c 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -33,6 +33,7 @@
#include <asm/irq.h>
#include <asm/uaccess.h>
-@@ -633,6 +634,54 @@ static int uart_get_info(struct uart_state *state,
+@@ -633,6 +634,54 @@ static int uart_get_info(struct uart_sta
return 0;
}
static int uart_set_info(struct uart_state *state,
struct serial_struct __user *newinfo)
{
-@@ -807,11 +856,19 @@ static int uart_set_info(struct uart_state *state,
+@@ -807,11 +856,19 @@ static int uart_set_info(struct uart_sta
(port->flags & UPF_LOW_LATENCY) ? 1 : 0;
check_and_exit:
old_custom_divisor != port->custom_divisor) {
/*
* If they're setting up a custom divisor or speed,
-@@ -2110,6 +2167,12 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
+@@ -2110,6 +2167,12 @@ uart_configure_port(struct uart_driver *
port->ops->config_port(port, flags);
}
if (port->type != PORT_UNKNOWN) {
unsigned long flags;
-@@ -2359,6 +2422,12 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port)
+@@ -2359,6 +2422,12 @@ int uart_remove_one_port(struct uart_dri
mutex_unlock(&state->mutex);
/*
* Remove the devices from the tty layer
*/
tty_unregister_device(drv->tty_driver, port->line);
-diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index 818cc3a..0a9394f 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -295,6 +295,7 @@ unifdef-y += pmu.h
unifdef-y += ptrace.h
unifdef-y += qnx4_fs.h
unifdef-y += quota.h
-diff --git a/include/linux/parport.h b/include/linux/parport.h
-index 9cdd694..549de6e 100644
--- a/include/linux/parport.h
+++ b/include/linux/parport.h
@@ -100,6 +100,7 @@ typedef enum {
};
#define DEFAULT_SPIN_TIME 500 /* us */
-@@ -517,6 +523,12 @@ extern int parport_daisy_select (struct parport *port, int daisy, int mode);
+@@ -517,6 +523,12 @@ extern int parport_daisy_select (struct
/* Lowlevel drivers _can_ call this support function to handle irqs. */
static __inline__ void parport_generic_irq(int irq, struct parport *port)
{
parport_ieee1284_interrupt (irq, port);
read_lock(&port->cad_lock);
if (port->cad && port->cad->irq_func)
-diff --git a/include/linux/pps.h b/include/linux/pps.h
-new file mode 100644
-index 0000000..5bdb593
--- /dev/null
+++ b/include/linux/pps.h
@@ -0,0 +1,196 @@
+#endif /* __KERNEL__ */
+
+#endif /* _PPS_H_ */
-diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
-index 09d17b0..f9aefad 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -157,6 +157,7 @@
struct mutex mutex;
};
-@@ -476,13 +485,22 @@ uart_handle_dcd_change(struct uart_port *port, unsigned int status)
+@@ -476,13 +485,22 @@ uart_handle_dcd_change(struct uart_port
{
struct uart_info *info = port->info;