From: Andrew Morton <akpm@linux-foundation.org>
To: Rodolfo Giometti <giometti@linux.it>
Cc: linux-kernel@vger.kernel.org, dwmw2@infradead.org,
davej@redhat.com, sam@ravnborg.org, greg@kroah.com,
randy.dunlap@oracle.com, giometti@linux.it
Subject: Re: [PATCH 5/7] PPS: serial clients support.
Date: Thu, 20 Mar 2008 13:04:00 -0700 [thread overview]
Message-ID: <20080320130400.0b17e1fc.akpm@linux-foundation.org> (raw)
In-Reply-To: <12048053472063-git-send-email-giometti@linux.it>
On Thu, 6 Mar 2008 13:09:04 +0100
Rodolfo Giometti <giometti@linux.it> wrote:
> Adds support for the PPS sources connected with the CD (Carrier
> Detect) pin of a serial port.
>
> ...
>
> +#ifdef CONFIG_PPS_CLIENT_UART
> +
> +static int
> +uart_register_pps_port(struct uart_state *state, struct uart_port *port)
> +{
> + struct tty_driver *drv = port->info->tty->driver;
> + int ret;
> +
> + state->pps_info.owner = THIS_MODULE;
> + state->pps_info.dev = port->dev;
> + snprintf(state->pps_info.name, PPS_MAX_NAME_LEN, "%s%d",
> + drv->driver_name, port->line);
> + snprintf(state->pps_info.path, PPS_MAX_NAME_LEN, "/dev/%s%d",
> + drv->name, port->line);
umm, why are we hard-wiring "/dev" into the kernel source? Is it just for
user-friendly printks?
> + state->pps_info.mode = PPS_CAPTUREBOTH | \
> + PPS_OFFSETASSERT | PPS_OFFSETCLEAR | \
> + PPS_CANWAIT | PPS_TSFMT_TSPEC;
> +
> + ret = pps_register_source(&state->pps_info, PPS_CAPTUREBOTH | \
> + PPS_OFFSETASSERT | PPS_OFFSETCLEAR);
> + if (ret < 0) {
> + dev_err(port->dev, "cannot register PPS source \"%s\"\n",
> + state->pps_info.path);
> + return ret;
> + }
> + port->pps_source = ret;
> + dev_dbg(port->dev, "PPS source #%d \"%s\" added\n",
> + port->pps_source, state->pps_info.path);
> +
> + return 0;
> +}
> +
> +static void
> +uart_unregister_pps_port(struct uart_state *state, struct uart_port *port)
> +{
> + pps_unregister_source(port->pps_source);
> + dev_dbg(port->dev, "PPS source #%d \"%s\" removed\n",
> + port->pps_source, state->pps_info.path);
> +}
> +
> +#else
> +
> +#define uart_register_pps_port(state, port) do { } while (0)
> +#define uart_unregister_pps_port(state, port) do { } while (0)
Please never implement in cpp that which can be implemented in C. These
should have been static inlines. That's nicer, matches the
CONFIG_PPS_CLIENT_UART=y code and provides type checking.
> +#endif /* CONFIG_PPS_CLIENT_UART */
> +
> static int uart_set_info(struct uart_state *state,
> struct serial_struct __user *newinfo)
> {
> @@ -810,11 +859,19 @@ static int uart_set_info(struct uart_state *state,
> (port->flags & UPF_LOW_LATENCY) ? 1 : 0;
>
> check_and_exit:
> + /* PPS support enabled/disabled? */
> + if ((old_flags & UPF_HARDPPS_CD) != (new_flags & UPF_HARDPPS_CD)) {
> + if (new_flags & UPF_HARDPPS_CD)
> + uart_register_pps_port(state, port);
> + else
> + uart_unregister_pps_port(state, port);
> + }
> +
> retval = 0;
> if (port->type == PORT_UNKNOWN)
> goto exit;
> if (state->info->flags & UIF_INITIALIZED) {
> - if (((old_flags ^ port->flags) & UPF_SPD_MASK) ||
> + if (((old_flags ^ port->flags) & (UPF_SPD_MASK|UPF_HARDPPS_CD)) ||
> old_custom_divisor != port->custom_divisor) {
> /*
> * If they're setting up a custom divisor or speed,
> @@ -2148,6 +2205,12 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state,
> port->ops->config_port(port, flags);
> }
>
> + /*
> + * Add the PPS support for the current port.
> + */
> + if (port->flags & UPF_HARDPPS_CD)
> + uart_register_pps_port(state, port);
> +
> if (port->type != PORT_UNKNOWN) {
> unsigned long flags;
>
> @@ -2405,6 +2468,12 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port)
> mutex_unlock(&state->mutex);
>
> /*
> + * Remove PPS support from the current port.
> + */
> + if (port->flags & UPF_HARDPPS_CD)
> + uart_unregister_pps_port(state, port);
> +
> + /*
> * Remove the devices from the tty layer
> */
> tty_unregister_device(drv->tty_driver, port->line);
next prev parent reply other threads:[~2008-03-20 20:05 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-06 12:08 LinuxPPS (RESUBMIT 2): the PPS Linux implementation Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 1/7] LinuxPPS core support Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 2/7] PPS: userland header file for PPS API Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 3/7] PPS: documentation programs and examples Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 4/7] PPS: LinuxPPS clients support Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 5/7] PPS: serial " Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 6/7] PPS: example program to enable PPS support on serial ports Rodolfo Giometti
2008-03-06 12:09 ` [PATCH 7/7] PPS: parallel port clients support Rodolfo Giometti
2008-03-20 20:04 ` Andrew Morton [this message]
2008-03-21 11:17 ` [PATCH 5/7] PPS: serial " Rodolfo Giometti
2008-03-21 17:41 ` Andrew Morton
2008-03-25 10:38 ` Rodolfo Giometti
2008-03-20 20:03 ` [PATCH 1/7] LinuxPPS core support Andrew Morton
2008-03-25 14:44 ` Rodolfo Giometti
2008-03-28 3:25 ` Andrew Morton
2008-04-01 8:42 ` Rodolfo Giometti
2008-04-01 8:55 ` Andrew Morton
2008-04-01 9:50 ` Rodolfo Giometti
2008-04-01 21:45 ` Rodolfo Giometti
2008-04-01 21:57 ` Andrew Morton
2008-03-21 3:36 ` Kay Sievers
2008-03-21 10:56 ` Rodolfo Giometti
2008-03-21 17:00 ` Kay Sievers
2008-03-25 10:48 ` Rodolfo Giometti
2008-03-21 3:50 ` Kay Sievers
2008-03-21 10:57 ` Rodolfo Giometti
2008-03-21 17:01 ` Kay Sievers
2008-03-25 10:53 ` Rodolfo Giometti
2008-03-28 10:21 ` Andrew Morton
2008-04-01 8:59 ` Rodolfo Giometti
2008-04-01 9:09 ` Andrew Morton
2008-04-01 9:40 ` Rodolfo Giometti
2008-03-19 17:29 ` LinuxPPS (RESUBMIT 2): the PPS Linux implementation john stultz
2008-03-19 21:21 ` Andrew Morton
2008-03-19 21:55 ` Dave Jones
-- strict thread matches above, loose matches on Subject: below --
2008-04-10 15:15 LinuxPPS (RESUBMIT 3): " Rodolfo Giometti
2008-04-10 15:15 ` [PATCH 1/7] LinuxPPS core support Rodolfo Giometti
2008-04-10 15:15 ` [PATCH 2/7] PPS: userland header file for PPS API Rodolfo Giometti
2008-04-10 15:15 ` [PATCH 3/7] PPS: documentation programs and examples Rodolfo Giometti
2008-04-10 15:15 ` [PATCH 4/7] PPS: LinuxPPS clients support Rodolfo Giometti
2008-04-10 15:15 ` [PATCH 5/7] PPS: serial " Rodolfo Giometti
2008-04-10 15:28 ` Alan Cox
2008-04-10 15:36 ` Rodolfo Giometti
2008-04-10 16:01 Rodolfo Giometti
2008-04-10 16:06 ` Rodolfo Giometti
2008-04-10 17:41 ` Greg KH
2008-04-10 18:22 ` LinuxPPS (RESUBMIT 4): the PPS Linux implementation Rodolfo Giometti
2008-04-10 18:22 ` [PATCH 1/7] LinuxPPS core support Rodolfo Giometti
2008-04-10 18:22 ` [PATCH 2/7] PPS: userland header file for PPS API Rodolfo Giometti
2008-04-10 18:22 ` [PATCH 3/7] PPS: documentation programs and examples Rodolfo Giometti
2008-04-10 18:22 ` [PATCH 4/7] PPS: LinuxPPS clients support Rodolfo Giometti
2008-04-10 18:22 ` [PATCH 5/7] PPS: serial " Rodolfo Giometti
2008-04-10 20:09 ` Alan Cox
2008-04-11 7:55 ` Rodolfo Giometti
2008-04-11 8:28 ` Alan Cox
2008-04-11 8:49 ` Rodolfo Giometti
2008-04-11 14:43 ` Serge Belyshev
2008-04-11 16:58 ` Rodolfo Giometti
2008-04-11 13:47 ` Lennart Sorensen
2008-04-11 14:46 ` Alan Cox
2008-04-30 11:41 ` Rodolfo Giometti
2008-04-30 16:28 ` Alan Cox
2008-05-02 7:33 ` Rodolfo Giometti
2008-05-02 10:18 ` Alan Cox
2008-05-02 10:45 ` Rodolfo Giometti
2008-05-02 12:56 ` Alan Cox
2008-05-02 21:09 ` Rodolfo Giometti
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=20080320130400.0b17e1fc.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=davej@redhat.com \
--cc=dwmw2@infradead.org \
--cc=giometti@linux.it \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=randy.dunlap@oracle.com \
--cc=sam@ravnborg.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox