STRUCT CDNSP_REV_CAP(9)
π struct cdnsp_rev_cap(9) β controller capabilities, bestie
okay so picture this: you're deep in the Kernel API Manual (section 9, the big-kid section, we love her) and you stumble into struct cdnsp_rev_cap. That's the whole vibe. She's a struct, she's about controller capabilities, and she's got exactly six members and zero drama. β¨
πΈ SYNOPSIS πΈ
struct cdnsp_rev_cap {
__le32 ext_cap;
__le32 rtl_revision;
__le32 rx_buff_size;
__le32 tx_buff_size;
__le32 ep_supported;
__le32 ctrl_revision;
};
look at her. six __le32s. no pointers, no unions, no cursed nesting β just clean little fields living their truth. we stan a low-maintenance struct π«Ά
π Members π
okay let's meet the cast, one by one, main character energy only:
ext_capβ the header for the RTL Revision Extended Capability. yes, header, she's the intro card, she announces the extended capability before the actual info walks in. iconic behaviour honestly.rtl_revisionβ the RTL revision. that's it. that's the whole job. she tells you which RTL revision it is and she does it flawlessly πrx_buff_sizeβ the Rx buffer sizes. receiving side, buffer, sizes. slay.tx_buff_sizeβ the Tx buffer sizes. same energy, sending side this time. twins fr fr π¦ep_supportedβ the supported endpoints. like, which endpoints are even invited to the party. no cap, this is the guest list.ctrl_revisionβ the Controller revision ID. the ID card of the controller itself. show it at the door please π
π₯ SEE ALSO π₯
so there's a whole friend group and she's not the only one. this is the kernel file to go look at:
./drivers/usb/cdns3/cdnsp-gadget.h
and the rest of the squad (seriously, tag yourself, I'm struct cdnsp_ring(9)):
struct cdnsp_cap_regs(9)struct cdnsp_op_regs(9)struct cdnsp_port_regs(9)struct cdnsp_intr_reg(9)struct cdnsp_run_regs(9)struct cdnsp_doorbell_array(9)struct cdnsp_container_ctx(9)struct cdnsp_slot_ctx(9)struct cdnsp_ep_ctx(9)struct cdnsp_stream_info(9)struct cdnsp_ep(9)struct cdnsp_device_context_array(9)struct cdnsp_transfer_event(9)struct cdnsp_link_trb(9)struct cdnsp_event_cmd(9)struct cdnsp_segment(9)struct cdnsp_td(9)struct cdnsp_dequeue_state(9)struct cdnsp_ring(9)struct cdnsp_erst_entry(9)struct cdnsp_erst(9)struct cdnsp_request(9)struct cdnsp_port(9)struct cdnsp_device(9)next_request(9)
like I said β a whole friend group. go read them all, iykyk π
lowkey the most important thing here: every single one of those fields is a __le32, so don't go assuming host byte order, bestie. little-endian, always, no exceptions, periodt. π
and that's the page!! brought to you by the fine people at ./drivers/usb/cdns3, dated October 2026 β stars, butterflies, and one (1) extremely well-documented controller capability struct. go forth and slay, and remember: π§ the kernel is literally just structs all the way down π§
π¦ 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