RE: [PATCH 6/6] ptp_ocelot: support 4 programmable pins

From: Y.b. Lu
Date: Thu Mar 26 2020 - 05:25:18 EST


Hi Richard,

> -----Original Message-----
> From: Richard Cochran <richardcochran@xxxxxxxxx>
> Sent: Wednesday, March 25, 2020 9:16 PM
> To: Y.b. Lu <yangbo.lu@xxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; David S . Miller
> <davem@xxxxxxxxxxxxx>; Vladimir Oltean <vladimir.oltean@xxxxxxx>;
> Claudiu Manoil <claudiu.manoil@xxxxxxx>; Andrew Lunn <andrew@xxxxxxx>;
> Vivien Didelot <vivien.didelot@xxxxxxxxx>; Florian Fainelli
> <f.fainelli@xxxxxxxxx>; Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>;
> Microchip Linux Driver Support <UNGLinuxDriver@xxxxxxxxxxxxx>
> Subject: Re: [PATCH 6/6] ptp_ocelot: support 4 programmable pins
>
> On Fri, Mar 20, 2020 at 06:37:26PM +0800, Yangbo Lu wrote:
> > Support 4 programmable pins for only one function periodic
> > signal for now.
>
> For now?

Yes. The pin on Ocelot/Felix supports both PTP_PF_PEROUT and PTP_PF_EXTTS functions.
But the PTP_PF_EXTTS function should be implemented separately in Ocelot and Felix since hardware interrupt implementation is different on them.
I am responsible for Felix. However I am facing some issue on PTP_PF_EXTTS function on hardware. It may take a long time to discuss internally.

Thanks.

>
> > +static int ocelot_ptp_verify(struct ptp_clock_info *ptp, unsigned int pin,
> > + enum ptp_pin_function func, unsigned int chan)
> > +{
> > + switch (func) {
> > + case PTP_PF_NONE:
> > + case PTP_PF_PEROUT:
> > + break;
>
> If the functions cannot be changed, then supporting the
> PTP_PIN_SETFUNC ioctl does not make sense!

Did you mean the dead lock issue? Or you thought the pin supported only PTP_PF_PEROUT function in hardware?

>
> > + case PTP_PF_EXTTS:
> > + case PTP_PF_PHYSYNC:
> > + return -1;
> > + }
> > + return 0;
> > +}
>
> Thanks,
> Richard