STRUCT ZL3073X_DEV(9)
π 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
- 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