STRUCT CDNS3_USB_REGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so welcome to struct cdns3_usb_regs(9), bestie β€” this is the Kernel API Manual entry for the device controller registers, and we are about to get into every single field πŸ’–

πŸŽ€ NAME πŸŽ€

struct cdns3_usb_regs β€” device controller registers. That's the whole name, no extra lore: it's the register crew for the device controller, and every field gets its moment below, periodt.


✨ SYNOPSIS ✨

Here's the struct in all its layout glory β€” exact field names, exact types, no edits from me:

struct cdns3_usb_regs {
    __le32 usb_conf;
    __le32 usb_sts;
    __le32 usb_cmd;
    __le32 usb_itpn;
    __le32 usb_lpm;
    __le32 usb_ien;
    __le32 usb_ists;
    __le32 ep_sel;
    __le32 ep_traddr;
    __le32 ep_cfg;
    __le32 ep_cmd;
    __le32 ep_sts;
    __le32 ep_sts_sid;
    __le32 ep_sts_en;
    __le32 drbl;
    __le32 ep_ien;
    __le32 ep_ists;
    __le32 usb_pwr;
    __le32 usb_conf2;
    __le32 usb_cap1;
    __le32 usb_cap2;
    __le32 usb_cap3;
    __le32 usb_cap4;
    __le32 usb_cap5;
    __le32 usb_cap6;
    __le32 usb_cpkt1;
    __le32 usb_cpkt2;
    __le32 usb_cpkt3;
    __le32 ep_dma_ext_addr;
    __le32 buf_addr;
    __le32 buf_data;
    __le32 buf_ctrl;
    __le32 dtrans;
    __le32 tdl_from_trb;
    __le32 tdl_beh;
    __le32 ep_tdl;
    __le32 tdl_beh2;
    __le32 dma_adv_td;
    __le32 reserved1[26];
    __le32 cfg_reg1;
    __le32 dbg_link1;
    __le32 dbg_link2;
    __le32 cfg_regs[74];
    __le32 reserved2[51];
    __le32 dma_axi_ctrl;
    __le32 dma_axi_id;
    __le32 dma_axi_cap;
    __le32 dma_axi_ctrl0;
    __le32 dma_axi_ctrl1;
};

Peep the array sizes and the extra layout fields up there: reserved1[26], cfg_reg1, dbg_link1, dbg_link2, cfg_regs[74], and reserved2[51] are all part of the struct in the synopsis. The Members list below keeps the same order as the original, fr fr.

🧚 Members 🧚

okay bestie, field-by-field tour. Names and meanings stay exact, the vibe is just cuter 🫢

  • usb_conf β€” Global Configuration. Big config energy.
  • usb_sts β€” Global Status. Status check, main character style.
  • usb_cmd β€” Global Command. Command-core.
  • usb_itpn β€” ITP/SOF number. The number, literally as written.
  • usb_lpm β€” Global Command. Yep, that's what it says here too β€” no fixing, no cap.
  • usb_ien β€” USB Interrupt Enable. Enable energy for USB interrupts.
  • usb_ists β€” USB Interrupt Status. Status but for USB interrupts.
  • ep_sel β€” Endpoint Select. Pick your endpoint, periodt.
  • ep_traddr β€” Endpoint Transfer Ring Address. Address for the endpoint transfer ring, exactly what it says.
  • ep_cfg β€” Endpoint Configuration. Endpoint config moment.
  • ep_cmd β€” Endpoint Command. Endpoint command core.
  • ep_sts β€” Endpoint Status. Endpoint status vibes.
  • ep_sts_sid β€” Endpoint Status. Same words as ep_sts, but a different field β€” keeping it exact.
  • ep_sts_en β€” Endpoint Status Enable. Enable-core for endpoint status.
  • drbl β€” Doorbell. Ding dong, bestie.
  • ep_ien β€” EP Interrupt Enable. Enable energy for EP interrupts.
  • ep_ists β€” EP Interrupt Status. EP interrupt status, slay.
  • usb_pwr β€” Global Power Configuration. Power config with global reach.
  • usb_conf2 β€” Global Configuration 2. The sequel config.
  • usb_cap1 β€” Capability 1. Capability number one, iconic.
  • usb_cap2 β€” Capability 2. Capability number two, still iconic.
  • usb_cap3 β€” Capability 3. Capability number three, we love a trio.
  • usb_cap4 β€” Capability 4. Capability number four, no skips.
  • usb_cap5 β€” Capability 5. Capability number five, highkey essential.
  • usb_cap6 β€” Capability 6. Capability number six, closing the cap run.
  • usb_cpkt1 β€” Custom Packet 1. Custom packet number one.
  • usb_cpkt2 β€” Custom Packet 2. Custom packet number two.
  • usb_cpkt3 β€” Custom Packet 3. Custom packet number three.
  • ep_dma_ext_addr β€” Upper address for DMA operations. Upper address detail, exactly as listed.
  • buf_addr β€” Address for On-chip Buffer operations. Address for on-chip buffer operations, periodt.
  • buf_data β€” Data for On-chip Buffer operations. Data for on-chip buffer operations.
  • buf_ctrl β€” On-chip Buffer Access Control. Access control for the on-chip buffer.
  • dtrans β€” DMA Transfer Mode. Transfer mode but make it DMA.
  • tdl_from_trb β€” Source of TD Configuration. Source-of-TD-configuration energy.
  • tdl_beh β€” TDL Behavior Configuration. TDL behavior config, noted.
  • ep_tdl β€” Endpoint TDL. Endpoint TDL, simple and exact.
  • tdl_beh2 β€” TDL Behavior 2 Configuration. TDL behavior sequel config.
  • dma_adv_td β€” DMA Advance TD Configuration. DMA advance TD config, we see you.
  • reserved1 β€” Reserved. Just reserved, bestie. Respect the reserve.
  • cfg_regs β€” Configuration. Config regs doing their config thing.
  • reserved2 β€” Reserved. Another reserved moment, no notes.
  • dma_axi_ctrl β€” AXI Control. AXI control, slay.
  • dma_axi_id β€” AXI ID register. AXI ID register, exactly as written.
  • dma_axi_cap β€” AXI Capability. AXI capability, iconic.
  • dma_axi_ctrl0 β€” AXI Control 0. AXI control zero.
  • dma_axi_ctrl1 β€” AXI Control 1. AXI control one, closing it out.

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/usb/cdns3/cdns3-gadget.h is the plug β€” it points at this whole squad:

  • struct cdns3_trb(9)
  • struct cdns3_endpoint(9)
  • struct cdns3_aligned_buf(9)
  • struct cdns3_request(9)
  • struct cdns3_device(9)

Signed, sealed, and delivered from ./drivers/usb/cdns3, dated October 2026, for struct cdns3_usb_regs(9) β€” bye bestie, go read some registers πŸ’…βœ¨

πŸ“¦ where this page comes from