STRUCT ZL3073X_DEV(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct zl3073x_dev(9) β€” Kernel API Manual

okay bestie, sit down, grab a strawberry πŸ“, because today we're meeting the main character of the zl3073x show: struct zl3073x_dev. This is the from the Kernel API Manual, and it is literally the device itself. no cap.


✨ NAME ✨

struct zl3073x_dev β€” the zl3073x device. that's it, that's the vibe. the whole device. iconic. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the glow-up, character for character, don't touch anything:

struct zl3073x_dev {
    struct device                   *dev;
    struct regmap                   *regmap;
    const struct zl3073x_chip_info  *info;
    struct mutex                    multiop_lock;
    struct mutex                    tie_lock;
    struct mutex                    phase_step_lock;
    struct zl3073x_ref      ref[ZL3073X_NUM_REFS];
    struct zl3073x_out      out[ZL3073X_NUM_OUTS];
    struct zl3073x_synth    synth[ZL3073X_NUM_SYNTHS];
    struct zl3073x_chan     chan[ZL3073X_MAX_CHANNELS];
    struct list_head        dplls;
    struct kthread_worker           *kworker;
    struct kthread_delayed_work     work;
    u64 clock_id;
    u16 out_step_time_mask;
    u8 phase_avg_factor;
    bool freq_monitor;
 };

look at her. all those fields. she's booked and busy. πŸŽ€


πŸ’– Members πŸ’–

okay so now we go field by field, because every single one is doing something and we respect her labor:

  • dev β€” pointer to device. the whole "who am I attached to" of it all.
  • regmap β€” regmap to access device registers. your lil key to the register kingdom πŸ”‘.
  • info β€” detected chip info. the chip's whole ID, already sniffed out.
  • multiop_lock β€” to serialize multiple register operations. one at a time, bestie, no cutting in line.
  • tie_lock β€” to serialize TIE write operations. TIE writes take turns, periodt.
  • phase_step_lock β€” to serialize output phase step operations. phase steps also wait their turn, we do not do chaos here πŸ’….
  • ref β€” array of input references' invariants. all the input refs, keeping it steady.
  • out β€” array of outs' invariants. same energy, output side.
  • synth β€” array of synths' invariants. synths, also staying invariant, as they do.
  • chan β€” array of DPLL channels' state. the DPLL channel state lives here, spiritually.
  • dplls β€” list of DPLLs. a whole list, plural, the more the merrier.
  • kworker β€” thread for periodic work. the lil thread that keeps showing up on schedule 🫢.
  • work β€” periodic work. the actual work item. the chore wheel, basically.
  • clock_id β€” clock id of the device. its government name, clock-wise 🌸.
  • out_step_time_mask β€” output step-time mask (device-global). global, bestie, meaning it applies to everything, not just one lil guy.
  • phase_avg_factor β€” phase offset measurement averaging factor. how much we average the phase offset measurements. math but make it cute.
  • freq_monitor β€” is frequency monitor enabled. yes/no, is it on. a bool, a vibe check in type form βœ….

🌈 SEE ALSO 🌈

the whole friend group, no one left out:

Kernel file ./drivers/dpll/zl3073x/core.h struct zl3073x_chip_info(9), struct zl3073x_hwreg_seq_item(9), zl3073x_dev_is_ref_phase_comp_32bit(9), zl3073x_input_pin_ref_get(9), zl3073x_output_pin_out_get(9), zl3073x_dev_ref_freq_get(9), zl3073x_dev_ref_is_diff(9), zl3073x_dev_synth_freq_get(9), zl3073x_dev_out_synth_get(9), zl3073x_dev_out_is_enabled(9), zl3073x_dev_out_is_stepped(9), zl3073x_dev_out_dpll_get(9), zl3073x_dev_output_pin_freq_get(9), zl3073x_dev_out_is_diff(9), zl3073x_dev_output_pin_is_enabled(9)


and that's the page!! πŸ’œ source is ./drivers/dpll/zl3073x, dated October 2026, filed under struct zl3073x_dev(9) β€” go off, read the whole family, mwah 🧚✨

πŸ“¦ where this page comes from