From: Andrew Morton on 4 Aug 2010 19:40 On Thu, 5 Aug 2010 01:06:52 +0400 Alexander Gordeev <lasaine(a)lvk.cs.msu.su> wrote: > Add parallel port PPS client. It uses a standard method for capturing > timestamps for assert edge transitions: getting a timestamp soon after > an interrupt has happened. This is not a very precise source of time > information due to interrupt handling delays. However, timestamps for > clear edge transitions are much more precise because the interrupt > handler continuously polls hardware port until the transition is done. > Hardware port operations require only about 1us so the maximum error > should not exceed this value. This was my primary goal when developing > this client. > Clear edge capture could be disabled using clear_wait parameter. > > > ... > > + > +#define SIGNAL_IS_SET(port) \ > + ((port->ops->read_status(port) & PARPORT_STATUS_ACK) != 0) This could (and hence should) be implemented in a regular old C function. > > ... > > +{ > + struct pps_client_pp *device; > + struct pps_source_info info = { > + .name = DRVNAME, > + .path = "", > + .mode = PPS_CAPTUREBOTH | \ > + PPS_OFFSETASSERT | PPS_OFFSETCLEAR | \ > + PPS_ECHOASSERT | PPS_ECHOCLEAR | \ > + PPS_CANWAIT | PPS_TSFMT_TSPEC, > + .echo = pps_echo, > + .owner = THIS_MODULE, > + .dev = NULL > + }; > + > + device = kzalloc(sizeof(struct pps_client_pp), GFP_KERNEL); > + if (!device) { > + pr_err(DRVNAME ": memory allocation failed, not attaching\n"); > + return; eww. parport_driver.attach() returns void so there's no way to propagate the error code back. That sucks a bit. > > ... > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Alexander Gordeev on 5 Aug 2010 08:50 Ð Wed, 4 Aug 2010 16:34:30 -0700 Andrew Morton <akpm(a)linux-foundation.org> пиÑеÑ: > On Thu, 5 Aug 2010 01:06:52 +0400 > Alexander Gordeev <lasaine(a)lvk.cs.msu.su> wrote: > > > Add parallel port PPS client. It uses a standard method for capturing > > timestamps for assert edge transitions: getting a timestamp soon after > > an interrupt has happened. This is not a very precise source of time > > information due to interrupt handling delays. However, timestamps for > > clear edge transitions are much more precise because the interrupt > > handler continuously polls hardware port until the transition is done. > > Hardware port operations require only about 1us so the maximum error > > should not exceed this value. This was my primary goal when developing > > this client. > > Clear edge capture could be disabled using clear_wait parameter. > > > > > > ... > > > > + > > +#define SIGNAL_IS_SET(port) \ > > + ((port->ops->read_status(port) & PARPORT_STATUS_ACK) != 0) > > This could (and hence should) be implemented in a regular old C > function. Ok, thanks! > > > > ... > > > > +{ > > + struct pps_client_pp *device; > > + struct pps_source_info info = { > > + .name = DRVNAME, > > + .path = "", > > + .mode = PPS_CAPTUREBOTH | \ > > + PPS_OFFSETASSERT | PPS_OFFSETCLEAR | \ > > + PPS_ECHOASSERT | PPS_ECHOCLEAR | \ > > + PPS_CANWAIT | PPS_TSFMT_TSPEC, > > + .echo = pps_echo, > > + .owner = THIS_MODULE, > > + .dev = NULL > > + }; > > + > > + device = kzalloc(sizeof(struct pps_client_pp), GFP_KERNEL); > > + if (!device) { > > + pr_err(DRVNAME ": memory allocation failed, not attaching\n"); > > + return; > > eww. parport_driver.attach() returns void so there's no way to > propagate the error code back. That sucks a bit. IMHO, the whole parport thing currently sucks quite a bit. -- Alexander
|
Pages: 1 Prev: pps: add parallel port PPS signal generator Next: InfiniBand/RDMA merge plans for 2.6.36 |