STRUCT USB_EHCI_PDATA(9)
π struct usb_ehci_pdata(9) β the Kernel API Manual, bestie edition π
okay so picture this: it's the Kernel API Manual, section 9, and we're talking about struct usb_ehci_pdata. this is the platform_data situation for the generic EHCI driver. she's a lil struct, she's got opinions, and honestly? she's kind of iconic. π
β¨ NAME β¨
struct usb_ehci_pdata β literally the platform_data for the generic ehci driver. that's her whole job. no cap. π¦
πΈ SYNOPSIS πΈ
here's the whole struct, exactly as she is, don't @ me:
struct usb_ehci_pdata {
int caps_offset;
unsigned has_tt:1;
unsigned has_synopsys_hc_bug:1;
unsigned big_endian_desc:1;
unsigned big_endian_mmio:1;
unsigned no_io_watchdog:1;
unsigned reset_on_resume:1;
unsigned dma_mask_64:1;
unsigned spurious_oc:1;
int (*power_on)(struct platform_device *pdev);
void (*power_off)(struct platform_device *pdev);
void (*power_suspend)(struct platform_device *pdev);
int (*pre_setup)(struct usb_hcd *hcd);
};
look at all those :1 bitfields. she's thriving on the bit-packing budget. π
π Members π
so the page only spills the tea on a few of these β the rest are just vibing in the struct up there. here's what we've got:
caps_offsetβ this one is the offset of the EHCI Capability Registers to the start of the io memory region that gets handed to the driver. it's giving "where do the registers actually start" energy. π§has_ttβ set to1if TT is integrated in the root hub. that's it, that's the whole vibe check. β¨no_io_watchdogβ set to1if the controller does not need the I/O watchdog to run. like, she's self-sufficient, she doesn't need a babysitter. πreset_on_resumeβ set to1if the controller needs to be reset after a suspend / resume cycle (but can't detect that itself). she needs the reset but won't ask for it. classic. π
don't come for me β the page only describes these four, so these four are what we're describing. the other members are in the struct above, exactly as written. π«Ά
π Description π
okay, big picture: these are general configuration options for the EHCI controller. all of them are, in some way or another, activating more or less workarounds for some hardware. that's the entire mood. they're patches for hardware being weird, dressed up as cute little bitfields. ππ₯
π SEE ALSO π
- Kernel file
./include/linux/usb/ehci_pdriver.hβ go read it, iykyk β
okay that's the whole page, bestie, you ate that. now go forth and configure your EHCI controller with main character energy. ππ
this absolute queen of a doc came out of ./include/linux/usb, dated October 2026, in the Kernel API Manual β and yes, she's still serving struct usb_ehci_pdata(9). periodt. πΈπ¦
π¦ 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