STRUCT AD9523_PLATFORM_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ STRUCT AD9523_PLATFORM_DATA(9) πŸŽ€

okay bestie, so this is a page straight outta the Kernel API Manual ✨ and it's literally all about struct ad9523_platform_data β€” the vibe-check sheet where you tell the kernel everything it needs to know about your specific AD9523 setup. platform specific information, no cap πŸ’…


🌸 NAME 🌸

struct ad9523_platform_data β€” platform specific information, fr fr 🫢


✨ SYNOPSIS ✨

here's the whole glow-up, character for character, don't touch a thing:

struct ad9523_platform_data {
    unsigned long vcxo_freq;
    bool refa_diff_rcv_en;
    bool refb_diff_rcv_en;
    bool zd_in_diff_en;
    bool osc_in_diff_en;
    bool refa_cmos_neg_inp_en;
    bool refb_cmos_neg_inp_en;
    bool zd_in_cmos_neg_inp_en;
    bool osc_in_cmos_neg_inp_en;
    unsigned short                  refa_r_div;
    unsigned short                  refb_r_div;
    unsigned short                  pll1_feedback_div;
    unsigned short                  pll1_charge_pump_current_nA;
    bool zero_delay_mode_internal_en;
    bool osc_in_feedback_en;
    enum pll1_rzero_resistor        pll1_loop_filter_rzero;
    enum ref_sel_mode               ref_mode;
    unsigned int                    pll2_charge_pump_current_nA;
    unsigned char                   pll2_ndiv_a_cnt;
    unsigned char                   pll2_ndiv_b_cnt;
    bool pll2_freq_doubler_en;
    unsigned char                   pll2_r2_div;
    unsigned char                   pll2_vco_div_m1;
    unsigned char                   pll2_vco_div_m2;
    enum rpole2_resistor            rpole2;
    enum rzero_resistor             rzero;
    enum cpole1_capacitor           cpole1;
    bool rzero_bypass_en;
    int num_channels;
    struct ad9523_channel_spec      *channels;
    char name[SPI_NAME_SIZE];
 };

πŸ’œ MEMBERS πŸ’œ

okay so every single field, one by one, let's go πŸƒβ€β™€οΈπŸ’¨

  • vcxo_freq β€” the External VCXO frequency, in Hz ⏱️
  • refa_diff_rcv_en β€” REFA differential/single-ended input selection. pick your fighter πŸ’…
  • refb_diff_rcv_en β€” REFB differential/single-ended input selection. same energy, different ref πŸ¦‹
  • zd_in_diff_en β€” Zero Delay differential/single-ended input selection.
  • osc_in_diff_en β€” OSC differential/ single-ended input selection. (yes that spacing is canon, leave it 😌)
  • refa_cmos_neg_inp_en β€” REFA single-ended neg./pos. input enable.
  • refb_cmos_neg_inp_en β€” REFB single-ended neg./pos. input enable.
  • zd_in_cmos_neg_inp_en β€” Zero Delay single-ended neg./pos. input enable.
  • osc_in_cmos_neg_inp_en β€” OSC single-ended neg./pos. input enable.
  • refa_r_div β€” PLL1 10-bit REFA R divider ✨
  • refb_r_div β€” PLL1 10-bit REFB R divider ✨
  • pll1_feedback_div β€” PLL1 10-bit Feedback N divider.
  • pll1_charge_pump_current_nA β€” Magnitude of PLL1 charge pump current (nA). it's giving pump πŸ”₯
  • zero_delay_mode_internal_en β€” Internal, external Zero Delay mode selection.
  • osc_in_feedback_en β€” PLL1 feedback path, local feedback from the OSC_IN receiver or zero delay mode πŸŒ€
  • pll1_loop_filter_rzero β€” PLL1 Loop Filter Zero Resistor selection.
  • ref_mode β€” Reference selection mode. main character reference, honestly πŸ‘‘
  • pll2_charge_pump_current_nA β€” Magnitude of PLL2 charge pump current (nA).
  • pll2_ndiv_a_cnt β€” PLL2 Feedback N-divider, A Counter, range 0..4.
  • pll2_ndiv_b_cnt β€” PLL2 Feedback N-divider, B Counter, range 0..63.
  • pll2_freq_doubler_en β€” PLL2 frequency doubler enable. double it and give it to the next one 😭
  • pll2_r2_div β€” PLL2 R2 divider, range 0..31.
  • pll2_vco_div_m1 β€” VCO1 divider, range 3..5.
  • pll2_vco_div_m2 β€” VCO2 divider, range 3..5.
  • rpole2 β€” PLL2 loop filter Rpole resistor value.
  • rzero β€” PLL2 loop filter Rzero resistor value.
  • cpole1 β€” PLL2 loop filter Cpole capacitor value.
  • rzero_bypass_en β€” PLL2 loop filter Rzero bypass enable. skip the resistor, live your truth πŸ™ˆ
  • num_channels β€” Array size of struct ad9523_channel_spec.
  • channels β€” Pointer to channel array.
  • name β€” Optional alternative iio device name. name your baby πŸΌπŸ’–
btw bestie, those dividers and counters have hard ranges (like 0..4, 0..63, 0..31, 3..5) β€” respect them, don't just freestyle 🚨

🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/iio/frequency/ad9523.h
  • struct ad9523_channel_spec(9) β€” the channel bestie that this struct points at 🫢

and that's the whole page, periodt πŸ’… this little gem lives under ./include/linux/iio/frequency, dated October 2026 β€” so go forth, configure your AD9523, and slay βœ¨πŸ¦‹πŸ’–

πŸ“¦ where this page comes from