STRUCT CDNSP_REV_CAP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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