[LinuxPPS] test of 2.6.20-g15c540a8

Rodolfo Giometti giometti at enneenne.com
Fri Feb 23 09:45:00 CET 2007


Reviewing the code I suspect that the IRQ is not correctly set... can
you please add this debugging messages and report the results when you
use the setserial command?  I'd like to check if when setserial is
used the IRQ line is correctly enabled for DCD.

diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 543c7cb..9a7b089 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1999,13 +1999,18 @@ serial8250_set_termios(struct uart_port *port, struct kt
         * CTS flow control flag and modem status interrupts
         */
        up->ier &= ~UART_IER_MSI;
+printk("SETTING UART_IER\n");
        if (!(up->bugs & UART_BUG_NOMSR) &&
                        UART_ENABLE_MS(&up->port, termios->c_cflag))
                up->ier |= UART_IER_MSI;
        if (up->capabilities & UART_CAP_UUE)
                up->ier |= UART_IER_UUE | UART_IER_RTOIE;
        if (up->port.flags & UPF_HARDPPS_CD)
+{
+printk("ENABLE UART_IER_MSI IRQ\n");
                up->ier |= UART_IER_MSI;        /* enable interrupts */
+}
+printk("SETTING UART_IER AS %x\n", up->ier);
 
        serial_out(up, UART_IER, up->ier);
 
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index d1756c6..7aaf697 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -753,6 +753,7 @@ static int uart_set_info(struct uart_state *state,
                        goto exit;
                port->flags = ((port->flags & ~UPF_USR_MASK) |
                               (new_flags & UPF_USR_MASK));
+printk("FLAGS1 %x\n", port->flags);
                port->custom_divisor = new_serial.custom_divisor;
                goto check_and_exit;
        }
@@ -851,6 +852,7 @@ static int uart_set_info(struct uart_state *state,
        port->uartclk          = new_serial.baud_base * 16;
        port->flags            = (port->flags & ~UPF_CHANGE_MASK) |
                                 (new_flags & UPF_CHANGE_MASK);
+printk("FLAGS2 %x\n", port->flags);
        port->custom_divisor   = new_serial.custom_divisor;
        state->close_delay     = close_delay;
        state->closing_wait    = closing_wait;


Thanks a lot,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti at enneenne.com
Linux Device Driver                             giometti at gnudd.com
Embedded Systems                     		giometti at linux.it
UNIX programming                     phone:     +39 349 2432127



More information about the LinuxPPS mailing list