STRUCT SCU_AFE_REGISTERS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct scu_afe_registers β€” AFE Regsiters

(ok so bestie, yes, the source really does spell it "Regsiters" and not "Registers" β€” that typo is canon, we're keeping it exactly as-is, no cap πŸ’… this is from the Kernel API Manual, struct scu_afe_registers(9), and she's iconic for it)


✨ SYNOPSIS ✨

Like, here's the whole vibe, character for character, no notes:

struct scu_afe_registers {
    u32 afe_bias_control;
    u32 reserved_0004;
    u32 afe_pll_control0;
    u32 afe_pll_control1;
    u32 afe_pll_control2;
    u32 afe_common_block_status;
    u32 reserved_18_7c[0x1a];
    u32 afe_pmsn_master_control0;
    u32 afe_pmsn_master_control1;
    u32 afe_pmsn_master_control2;
    u32 reserved_008c_00fc[0x1D];
    u32 afe_dfx_master_control0;
    u32 afe_dfx_master_control1;
    u32 afe_dfx_dcl_control;
    u32 afe_dfx_digital_monitor_control;
    u32 afe_dfx_analog_p_monitor_control;
    u32 afe_dfx_analog_n_monitor_control;
    u32 afe_dfx_ntl_status;
    u32 afe_dfx_fifo_status0;
    u32 afe_dfx_fifo_status1;
    u32 afe_dfx_master_pattern_control;
    u32 afe_dfx_p0_control;
    u32 afe_dfx_p0_data[32];
    u32 reserved_01ac;
    u32 afe_dfx_p0_instruction[24];
    u32 reserved_0210;
    u32 afe_dfx_p1_control;
    u32 afe_dfx_p1_data[16];
    u32 reserved_0258_029c[0x12];
    u32 afe_dfx_p1_instruction[8];
    u32 reserved_02c0_02fc[0x10];
    u32 afe_dfx_tx_pmsn_control;
    u32 afe_dfx_rx_pmsn_control;
    u32 reserved_0308;
    u32 afe_dfx_noa_control0;
    u32 afe_dfx_noa_control1;
    u32 afe_dfx_noa_control2;
    u32 afe_dfx_noa_control3;
    u32 afe_dfx_noa_control4;
    u32 afe_dfx_noa_control5;
    u32 afe_dfx_noa_control6;
    u32 afe_dfx_noa_control7;
    u32 reserved_032c_07fc[0x135];
    struct scu_afe_transceiver scu_afe_xcvr[4];
    u32 reserved_0c00_0ffc[0x0100];
};

ngl this is a lot of u32s and the way the reserved_* fields are named after their own hex addresses? main character energy honestly πŸŽ€ note the capitalization inconsistency too β€” reserved_18_7c[0x1a] vs reserved_008c_00fc[0x1D] β€” we love her, we don't fix her πŸ’€


🫢 MEMBERS 🫢

Okay so this is lowkey the funniest part: the Members section is empty in the source. Like, nothing. A whole struct with this many fields and the docs just ✨ vibed ✨ right past the member descriptions. So there's nothing to list here β€” that's not me skipping it, bestie, that's genuinely all there is πŸ™ˆ


πŸ‘€ SEE ALSO πŸ‘€

Everything lives in the kernel file ./drivers/scsi/isci/registers.h, and here's the whole squad you should go read next:

  • struct scu_viit_entry(9)
  • struct scu_iit_entry(9)
  • struct smu_registers(9)
  • struct scu_sdma_registers(9)
  • struct scu_transport_layer_registers(9)
  • struct scu_link_layer_registers(9)
  • struct scu_sgpio_registers(9)
  • struct scu_port_task_scheduler_registers(9)
  • struct scu_port_task_scheduler_group_registers(9)
  • struct transport_link_layer_pair(9)
  • struct scu_peg_registers(9)
  • struct scu_registers(9)

real talk for a sec: the original page gives you the layout and literally nothing else β€” no per-field explanations, no semantics, no caveats. So don't go assuming what any of these registers do, because this manpage fr fr does not say. πŸ’€

okay that's the whole thing, slay πŸ’– this cutie came out of ./drivers/scsi/isci, dated October 2026 β€” go forth and read your hex offsets responsibly, bestie, mwah πŸ«ΆπŸŽ€πŸ¦‹

πŸ“¦ where this page comes from