public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Rodolfo Giometti <giometti@enneenne.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>,
	linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	David Woodhouse <dwmw2@infradead.org>,
	Dave Jones <davej@redhat.com>, Sam Ravnborg <sam@ravnborg.org>,
	Greg KH <greg@kroah.com>, Randy Dunlap <randy.dunlap@oracle.com>,
	Kay Sievers <kay.sievers@vrfy.org>
Subject: Re: [PATCH 5/7] PPS: serial clients support.
Date: Fri, 2 May 2008 09:33:35 +0200	[thread overview]
Message-ID: <20080502073335.GK3002@enneenne.com> (raw)
In-Reply-To: <20080430172855.6d2e81a6@core>

On Wed, Apr 30, 2008 at 05:28:55PM +0100, Alan Cox wrote:
> > if I add a dedicated line discipline to register/unregister the PPS
> > source and I leave the pps_event management into
> > uart_handle_dcd_change() function, it can be acceptable?
> 
> Keep the two things apart.
> 
> uart_handle_dcd_change looks a good basis for the UART layer support for
> drivers serial
> an LDISC looks right for the top layer
> 
> We just need the bits in the middle right. I've added the serial layer
> pass through for the set_ldisc() interface so that bit is done. Probably
> the main thing we need is to add  tty->ldisc.dcd_change() for reporting
> DCD change back to the line discipline. We could queue it as a TTY_ event
> but I assume you need it immediately not queued ?

Yes, you are right. PPS events should be registered as soon as they
arrive, that's why I'd like to put events registration (or at least
IRQ timestamps) into do_IRQ() as follow:

   fastcall unsigned int do_IRQ(struct pt_regs *regs)
   {
           struct pt_regs *old_regs;
           /* high bit used in ret_from_ code */
           int irq = ~regs->orig_eax;
           struct irq_desc *desc = irq_desc + irq;
   #ifdef CONFIG_4KSTACKS
           union irq_ctx *curctx, *irqctx;
           u32 *isp;
   #endif

           if (unlikely((unsigned)irq >= NR_IRQS)) {
                   printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
                                           __FUNCTION__, irq);
                   BUG();
           }

           pps_irq_event_register(irq);

           old_regs = set_irq_regs(regs);
           irq_enter();

but this solution arises two drawbacks:

1) the PPS echo functions should be executed by
pps_irq_event_register() into do_IRQ(). Brrrr... :)

2) the shared IRQ line may cause "false" PPS events.

The latter drawback can be solved simply not using the shared IRQs for
PPS sources but the former is not an easy task... so I suppose we
should delay the echo function call at "safer" time, maybe using the
function tty->ldisc.dcd_change().

> > The uart_handle_dcd_change() is generic and I need the DCD status to
> > correctly manage the pps_event. The USB layer is not useful for PPS
> > stuff
> 
> Not every character driver uses drivers/serial or USB. That is fine. What
> I care about is that you *could* add PPS support to another serial driver
> cleanly, not that it is done immediately. What matters is the interface,
> the rest will follow.

I see. So what do you suggest to do? Should I add an ldisc to
register/unregister serial PPS sources and adding function
tty->ldisc.dcd_change() to manage the events?

Thanks for your suggestions,

Rodolfo

-- 

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

  reply	other threads:[~2008-05-02  7:34 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-10 16:01 [PATCH 5/7] PPS: serial clients support 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 18:22               ` [PATCH 6/7] PPS: example program to enable PPS support on serial ports Rodolfo Giometti
2008-04-10 18:22                 ` [PATCH 7/7] PPS: parallel port clients support Rodolfo Giometti
2008-04-10 20:09               ` [PATCH 5/7] PPS: serial " 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 [this message]
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
  -- strict thread matches above, loose matches on Subject: below --
2008-04-10 15:15 LinuxPPS (RESUBMIT 3): the PPS Linux implementation 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-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-20 20:04           ` Andrew Morton
2008-03-21 11:17             ` Rodolfo Giometti
2008-03-21 17:41               ` Andrew Morton
2008-03-25 10:38                 ` 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=20080502073335.GK3002@enneenne.com \
    --to=giometti@enneenne.com \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=davej@redhat.com \
    --cc=dwmw2@infradead.org \
    --cc=greg@kroah.com \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lsorense@csclub.uwaterloo.ca \
    --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