zl3073x_dpl...e_phase_step(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… zl3073x_dpll_ptp_adjtime_phase_step β€” like, the whole glow-up πŸ’…

okay so bestie, welcome to the Kernel API Manual ✨ this is the page for zl3073x_dpll_ptp_adjtime_phase_step(9) and honestly? it's giving "tiny function, big responsibilities" πŸŽ€


✨ NAME ✨

zl3073x_dpll_ptp_adjtime_phase_step β€” adjust sub-second time via phase step πŸ•°οΈπŸ’«


🌸 SYNOPSIS 🌸

int zl3073x_dpll_ptp_adjtime_phase_step(struct zl3073x_dpll *zldpll, s64 delta);

πŸ¦‹ ARGUMENTS πŸ¦‹

  • zldpll β€” the DPLL channel, aka the main character of this whole operation πŸ‘‘
  • delta β€” the time adjustment in nanoseconds. and listen, it must be within (-NSEC_PER_SEC, NSEC_PER_SEC) β€” no cap, that's a hard boundary, do not test it πŸ™ˆ

πŸ’– DESCRIPTION πŸ’–

So here's the vibe: this uses the output phase step mechanism with tod_step=1 so it can adjust both the output clock phase and the ToD counter at the same time. the way that keeps outputs and ToD coherent? iconic. 🀝✨ Only valid for NCO, just so you know.

Outputs get grouped by synthesizer, because the phase step value lives in synthesizer clock cycles ⏱️. The first synth group with enabled outputs uses tod_step to adjust both the outputs and the ToD counter. The remaining groups step outputs only, periodt. πŸ’…

And if no synth has enabled outputs? the ToD counter gets stepped all by itself using an empty output mask β€” fr fr, the FW uses the first enabled synth's period for the conversion. 🫢


πŸ”₯ RETURN πŸ”₯

  • 0 β€” success πŸŽ‰ (or partial success, if a later synth group failed after the first one was already stepped β€” yeah, that's a thing 😭)
  • -EOPNOTSUPP β€” no synths available, bestie πŸ’€
  • negative β€” error πŸ™ˆ

⭐ SEE ALSO ⭐

Kernel file ./drivers/dpll/zl3073x/dpll.c, plus all of these legends:


and that's the whole page, bestie 🫢 this lil gem lives in ./drivers/dpll/zl3073x, dated October 2026 β€” go read it, slay, bye πŸ’œπŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from