zl3073x_dpl...e_phase_step(9)
π 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:
struct zl3073x_dpll_pin(9)zl3073x_dpll_is_input_pin(9)zl3073x_dpll_is_nco_pin(9)zl3073x_dpll_is_p_pin(9)zl3073x_dpll_connected_ref_get(9)zl3073x_dpll_ref_operstate_get(9)zl3073x_dpll_pin_alloc(9)zl3073x_dpll_pin_free(9)zl3073x_dpll_pin_register(9)zl3073x_dpll_pin_unregister(9)zl3073x_dpll_pins_unregister(9)zl3073x_dpll_pin_is_registrable(9)zl3073x_dpll_pins_register(9)zl3073x_dpll_device_register(9)zl3073x_dpll_device_unregister(9)zl3073x_dpll_pin_phase_offset_check(9)zl3073x_dpll_pin_ffo_check(9)zl3073x_dpll_pin_measured_freq_check(9)zl3073x_dpll_changes_check(9)zl3073x_dpll_init_fine_phase_adjust(9)zl3073x_dpll_ptp_gettimex64(9)zl3073x_dpll_ptp_settime64(9)zl3073x_dpll_ptp_adjtime(9)zl3073x_dpll_ptp_adjfine(9)zl3073x_dpll_ptp_adjphase(9)zl3073x_dpll_ptp_register(9)zl3073x_dpll_ptp_unregister(9)zl3073x_dpll_ref_sync_pair_register(9)zl3073x_dpll_ref_sync_pairs_register(9)zl3073x_dpll_alloc(9)zl3073x_dpll_free(9)zl3073x_dpll_register(9)zl3073x_dpll_unregister(9)
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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms