RE: PPS functionality for Intel Timed I/O

From: N, Pandith
Date: Fri Oct 06 2023 - 01:35:53 EST


Hi,

> -----Original Message-----
> From: Rodolfo Giometti <giometti@xxxxxxxxxxxx>
> Sent: Wednesday, February 15, 2023 1:16 PM
> To: N, Pandith <pandith.n@xxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx; Sangannavar, Mallikarjunappa
> <mallikarjunappa.sangannavar@xxxxxxxxx>; D, Lakshmi Sowjanya
> <lakshmi.sowjanya.d@xxxxxxxxx>; T R, Thejesh Reddy
> <thejesh.reddy.t.r@xxxxxxxxx>; Hall, Christopher S
> <christopher.s.hall@xxxxxxxxx>; Gross, Mark <mark.gross@xxxxxxxxx>
> Subject: Re: PPS functionality for Intel Timed I/O
>
> On 15/02/23 08:09, N, Pandith wrote:
> > Hi Rodolfo,
>
> Hello.
>
> >> -----Original Message-----
> >> From: Rodolfo Giometti <giometti@xxxxxxxxxxxx>
> >> Sent: Monday, February 6, 2023 4:17 PM
> >> To: N, Pandith <pandith.n@xxxxxxxxx>
> >> Cc: linux-kernel@xxxxxxxxxxxxxxx; Sangannavar, Mallikarjunappa
> >> <mallikarjunappa.sangannavar@xxxxxxxxx>; D, Lakshmi Sowjanya
> >> <lakshmi.sowjanya.d@xxxxxxxxx>; T R, Thejesh Reddy
> >> <thejesh.reddy.t.r@xxxxxxxxx>; Hall, Christopher S
> >> <christopher.s.hall@xxxxxxxxx>
> >> Subject: Re: PPS functionality for Intel Timed I/O
>
> [snip]
>
> >> Mmm... I'm not sure this is correct since PPS generators should
> >> generate their pulses according to system clock and not according to
> >> their internal clocks even if they are synced with the system clock.
> >>
> > Timed I/O and system time are both driven by the *same* hardware clock.
> > Timed I/O is a high precision device (nanoseconds), able to output pulses.
> > The driver gets the system time and schedules output at target_time in
> > the future.
>
> OK, in this case it would be OK. Please put an appropriate note within the
> generator's code and a detailed one within Documentation/driver-api/pps.rst.
>
> Regarding Documentation/driver-api/pps.rst let me suggest you to prose a
> separate patch to rewrite the Generators section in such a way you easily can add
> your solution at the end. A possible example is attached but feel free to rewrite it
> according to your needs.
>
Ok, we are updating documentation as you have suggested as a separate patch.
Can we use your "Signed-off-by" tag for attached patch.

We are adding Intel timed I/O documentation as a separate patch.

> > struct timespec64 current_time;
> > current_time = ktime_get_real_ts64(&current_time);
> >
> > target_time = current_time + offset_time; cycles =
> > translate_system_time_to_clock_cycles(target_time);
> > /* Translate function is developed as part of this driver development
> > */
> >
> > /* Schedule pulse at target_time */
> > write_timedio_reg(TIMEDIO_TRIGGER, cycles);
> >
> > The output always triggers with ~20 ns precision.
> > It's not affected by system load or no need for drivers to disable interrupts for
> longer durations.
> > With this driver proposal, Intel Timed I/O as PPS generator will be useful in IoT
> and server applications.
>
> Great! Please also add these notes to the final Documentation.
>
> Ciao,
>
> Rodolfo
>
> --
> GNU/Linux Solutions e-mail: giometti@xxxxxxxxxxxx
> Linux Device Driver giometti@xxxxxxxx
> Embedded Systems phone: +39 349 2432127
> UNIX programming skype: rodolfo.giometti

Regards,
Pandith

Attachment: 0001-Documentation-driver-api-pps-Update-PPS-generator-do.patch
Description: 0001-Documentation-driver-api-pps-Update-PPS-generator-do.patch