On Sat, 2014-03-08 at 20:42 +0100, Richard Cochran wrote: >+int ptp_setpin(struct ptp_clock *ptp, unsigned int pin, >+ enum ptp_pin_function func, unsigned int chan)
From the name I would think that this would set the state of the pin. Rename to ptp_set_pinfunc? > +int ptp_find_pin(struct ptp_clock *ptp, > + enum ptp_pin_function func, unsigned int chan) > +{ > + struct ptp_pin_desc *pin = NULL; > + int i; > + > + mutex_lock(&ptp->pincfg_mux); > + for (i = 0; i < ptp->info->n_pins; i++) { > + if (ptp->info->pin_config[i].func == func && > + ptp->info->pin_config[i].chan == chan) { > + pin = &ptp->info->pin_config[i]; > + break; > + } > + } > + mutex_unlock(&ptp->pincfg_mux); > + > + return pin ? pin - ptp->info->pin_config : -1; > +} Maybe replace 'pin - ptp->info->pin_config' with 'i'? > +++ b/drivers/ptp/ptp_private.h > @@ -48,6 +48,7 @@ struct ptp_clock { > long dialed_frequency; /* remembers the frequency adjustment */ > struct timestamp_event_queue tsevq; /* simple fifo for time stamps */ > struct mutex tsevq_mux; /* one process at a time reading the fifo */ > + struct mutex pincfg_mux; /* protect concurrent info->pin_config access > */ Line over 80 chars. > + * @setpin: Confirm that a pin can perform a given function. The PTP > + * Hardware Clock subsystem maintains the 'pin_config' > + * array on behalf of the drivers, but the PHC subsystem > + * assumes that every pin can perform every function. This > + * hook gives drivers a way of telling the core about > + * limitations on specific pins. This function must return > + * zero if the function can be assigned to this pin, and > + * nonzero otherwise. The function does not actually set the pin. Rename to verify_pinfunc? Stefan