STRUCT CDNSP_OP_REGS(9)
π NAME π
struct cdnsp_op_regs β Device Controller Operational Registers. This is the struct cdnsp_op_regs(9) page from the Kernel API Manual, and bestie, we are about to give these operational regs a full vibe check. No cap: every field matters. π
β¨ SYNOPSIS β¨
Okay so hereβs the whole struct layout, and yes, keep it exactly like this:
struct cdnsp_op_regs {
__le32 command;
__le32 status;
__le32 page_size;
__le32 reserved1;
__le32 reserved2;
__le32 dnctrl;
__le64 cmd_ring;
__le32 reserved3[4];
__le64 dcbaa_ptr;
__le32 config_reg;
__le32 reserved4[241];
__le32 port_reg_base;
};
The reserved slots are literally in the layout too: reserved1, reserved2, reserved3[4], and reserved4[241]. Theyβre not in the member tea below, but they are in the struct, so donβt ghost them. π«Ά
π Members π
commandβUSBCMD, the Controller command register. Iconic little command slot. πstatusβUSBSTS, the Controller status register. The way it holds the status is giving main character energy. β¨page_sizeβ This indicates the page size that the device controller supports. If bit n is set, the controller supports a page size of2^(n+12), up to a128MBpage size.4Kis the minimum page size. Slay, math. π§dnctrlβDNCTRL, the Device notification control register. Notifications stay booked and busy. πcmd_ringβCRP, the 64-bit Command Ring Pointer. Sixty-four bits of command-ring realness. πdcbaa_ptrβDCBAAP, the 64-bit Device Context Base Address Array Pointer. That name is a mouthful and honestly it ate. πconfig_regβCONFIG, the Configure Register. Simple, clean, config-register behavior. πport_reg_baseβPORTSCn, the base address for Port Status and Control. Each port has a Port Status and Control register, followed by a Port Power Management Status and Control register, a Port Link Info register, and a reserved register. The whole port friend group is here, fr fr. π
π SEE ALSO π
Kernel file ./drivers/usb/cdns3/cdnsp-gadget.h is where the whole friend group lives. Go say hi to:
struct cdnsp_cap_regs(9)struct cdnsp_port_regs(9)struct cdnsp_intr_reg(9)struct cdnsp_run_regs(9)struct cdnsp_rev_cap(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)
Cute sign-off time: this pageβs source/version is ./drivers/usb/cdns3, the date is October 2026, and the footer still points back to struct cdnsp_op_regs(9). Bye bestie β go be iconic with those operational regs ππ¦π₯
π¦ 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