All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Rodolfo Giometti <giometti@enneenne.com>
Cc: linux-kernel@vger.kernel.org, linuxpps@ml.enneenne.com
Subject: Re: [PATCH 1/1] LinuxPPS: Pulse per Second support for Linux
Date: Fri, 16 Feb 2007 19:12:08 +0000	[thread overview]
Message-ID: <20070216191207.GC2572@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20070216185230.GO8882@enneenne.com>

On Fri, Feb 16, 2007 at 07:52:30PM +0100, Rodolfo Giometti wrote:
> diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
> index 98ec861..cd9a003 100644
> --- a/drivers/serial/8250.c
> +++ b/drivers/serial/8250.c
> @@ -1315,8 +1315,25 @@ static unsigned int check_modem_status(struct uart_8250_port *up)
>  			up->port.icount.rng++;
>  		if (status & UART_MSR_DDSR)
>  			up->port.icount.dsr++;
> -		if (status & UART_MSR_DDCD)
> +		if (status & UART_MSR_DDCD) {
> +#ifdef CONFIG_PPS_CLIENT_UART_8250
> +			if (status & UART_MSR_DCD) {
> +				linuxpps_event(up->port.pps_source,
> +						PPS_CAPTUREASSERT, up);
> +				dbg("serial8250: PPS assert event at %lu "
> +				    "on source #%d",
> +					jiffies, up->port.pps_source);
> +			}
> +			else {
> +				linuxpps_event(up->port.pps_source,
> +						PPS_CAPTURECLEAR, up);
> +				dbg("serial8250: PPS clear event at %lu "
> +				    "on source #%d",
> +					jiffies, up->port.pps_source);
> +			}
> +#endif

Yuck.  Please.  No.  Doing it this way means you have to modify every
single serial driver out there which is a mamouth task.

>  			uart_handle_dcd_change(&up->port, status & UART_MSR_DCD);

Did you not look to see what's in this helper?  You'll find within here
the following code:

#ifdef CONFIG_HARD_PPS
        if ((port->flags & UPF_HARDPPS_CD) && status)
                hardpps();
#endif

which should've been a big sign lit up in bright lights in Times Square
pointing you towards the right place to put your code.

> +		}
>  		if (status & UART_MSR_DCTS)
>  			uart_handle_cts_change(&up->port, status & UART_MSR_CTS);
>  
> @@ -2004,6 +2021,9 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
>  		up->ier |= UART_IER_MSI;
>  	if (up->capabilities & UART_CAP_UUE)
>  		up->ier |= UART_IER_UUE | UART_IER_RTOIE;
> +#ifdef CONFIG_PPS_CLIENT_UART_8250
> +	up->ier |= UART_IER_MSI;	/* enable interrupts */
> +#endif

Why not continue to leave it as a decision of the administrator - if
you want ports to default to having PPS support enabled, change all
the registration to set UPF_HARDPPS_CD.  But leave the admin with
the ability to disable it.

> @@ -2124,6 +2130,33 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
>  		 */
>  		if (!uart_console(port))
>  			uart_change_pm(state, 3);
> +
> +#ifdef CONFIG_PPS_CLIENT_UART
> +		/*
> +		 * Add the PPS support for the probed port.
> +		 */
> +                snprintf(state->pps_info.name, LINUXPPS_MAX_NAME_LEN,
> +				"%s%d", drv->driver_name, port->line);
> +		snprintf(state->pps_info.path, LINUXPPS_MAX_NAME_LEN,
> +				"/dev/%s%d", drv->dev_name, port->line);
> +
> +		state->pps_info.mode = PPS_CAPTUREBOTH | \
> +				PPS_OFFSETASSERT | PPS_OFFSETCLEAR | \
> +				PPS_CANWAIT | PPS_TSFMT_TSPEC;
> +
> +		retval = linuxpps_register_source(&state->pps_info,
> +					PPS_CAPTUREBOTH | \
> +					PPS_OFFSETASSERT | PPS_OFFSETCLEAR,
> +					-1 /* PPS ID is up to the system */);
> +		if (retval < 0) {
> +			err("cannot register PPS source \"%s\"",
> +				state->pps_info.path);
> +			return;
> +		}
> +		port->pps_source = retval;
> +		info("PPS source #%d \"%s\" added to the system ",
> +			port->pps_source, state->pps_info.path);
> +#endif

This means that PPS support is not available for any port which wasn't
autoprobed at device discovery time.  That seems quite restrictive.
Maybe it needs to be coupled with the setting/clearing of UPF_HARDPPS_CD ?

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

  reply	other threads:[~2007-02-16 19:12 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-16 18:52 [PATCH 1/1] LinuxPPS: Pulse per Second support for Linux Rodolfo Giometti
2007-02-16 19:12 ` Russell King [this message]
2007-02-16 20:43   ` Rodolfo Giometti
2007-02-16 20:51     ` Russell King
2007-02-16 21:03       ` Rodolfo Giometti
2007-02-16 19:56 ` Jan Dittmer
2007-02-16 20:57   ` Rodolfo Giometti
2007-02-16 21:19     ` Jan Dittmer
2007-02-18 22:43 ` LinuxPPS: fixes Rodolfo Giometti
2007-02-20  2:56 ` [PATCH 1/1] LinuxPPS: Pulse per Second support for Linux H. Peter Anvin
2007-02-21 12:04   ` Rodolfo Giometti
2007-02-21 16:14     ` H. Peter Anvin
2007-02-22  8:51       ` Rodolfo Giometti
2007-02-21 23:51     ` Roman Zippel
2007-02-22  9:00       ` Rodolfo Giometti
2007-02-21 10:16 ` Pavel Machek
2007-02-22  9:59   ` Rodolfo Giometti
2007-03-13 21:38 ` Rodolfo Giometti
2007-03-13 22:48   ` Lennart Sorensen
2007-03-14  9:31     ` Rodolfo Giometti
2007-03-14 13:19       ` Lennart Sorensen
2007-03-14 14:06         ` Rodolfo Giometti
2007-03-14 14:12           ` Lennart Sorensen
2007-03-14 14:27             ` Rodolfo Giometti
2007-03-14 14:42               ` Lennart Sorensen
2007-03-14 14:52                 ` Rodolfo Giometti
2007-03-14 15:37                   ` Lennart Sorensen
2007-03-14 15:47                     ` Rodolfo Giometti
2007-03-14 20:57                       ` Lennart Sorensen
2007-03-15 10:29                         ` Rodolfo Giometti
2007-03-15 15:18                           ` Lennart Sorensen
2007-03-15 15:37                             ` Rodolfo Giometti
  -- strict thread matches above, loose matches on Subject: below --
2007-03-21  7:41 Rodolfo Giometti
2007-03-21  8:05 ` Jon K Hellan
2007-03-21  8:08   ` Rodolfo Giometti
2007-03-21 15:34   ` Lennart Sorensen
2007-05-02 19:33 ` Rodolfo Giometti
2007-05-02 21:06   ` john stultz
2007-05-03 10:03     ` Rodolfo Giometti
2007-05-10  7:27   ` Andrew Morton
2007-05-10  9:48     ` Andrew Morton
2007-05-10 10:58     ` Rodolfo Giometti
2007-05-10 11:01       ` David Miller
2007-05-10 11:45         ` Rodolfo Giometti
2007-05-10 11:51           ` David Miller
2007-05-10 11:54             ` David Miller
2007-05-12  5:59     ` Rodolfo Giometti
2007-05-12  6:17       ` Andrew Morton
2007-05-12  7:08         ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070216191207.GC2572@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=giometti@enneenne.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxpps@ml.enneenne.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.