Messages in this thread | | | Date | Thu, 5 Aug 2010 16:48:29 +0400 | From | Alexander Gordeev <> | Subject | Re: [PATCHv3 15/16] pps: add parallel port PPS client |
| |
В Wed, 4 Aug 2010 16:34:30 -0700 Andrew Morton <akpm@linux-foundation.org> пишет:
> On Thu, 5 Aug 2010 01:06:52 +0400 > Alexander Gordeev <lasaine@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 [unhandled content-type:application/pgp-signature] | |