STRUCT QMU_GPD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct qmu_gpd(9) β€” the General Purpose Descriptor page ✨

okay so we're in the Kernel API Manual, section 9, and the main character is struct qmu_gpd(9) 🫢. This is your group-chat breakdown of a kernel struct, so keep your brain online, bestie β€” it's giving "small struct, lots of bit lore" πŸ’–.


🌸 NAME 🌸

struct qmu_gpd - General Purpose Descriptor (GPD): The format of TX GPD is a little different from RX one. And the size of GPD is 16 bytes. periodt πŸ’…

✨ SYNOPSIS ✨

here's the struct in all its glory, no edits, no cap:

struct qmu_gpd {
    __le32 dw0_info;
    __le32 next_gpd;
    __le32 buffer;
    __le32 dw3_info;
 };

πŸŽ€ Members πŸŽ€

okay so here's the member-by-member tea β˜•βœ¨:

  • dw0_info β€” the info word with a whole bit map, and she has lore:
    • bit0: Hardware Own (HWO)
    • bit1: Buffer Descriptor Present (BDP), always 0, BD is not supported
    • bit2: Bypass (BPS), 1: HW skips this GPD if HWO = 1
    • bit6: [EL] Zero Length Packet (ZLP), moved from dw3_info[29]
    • bit7: Interrupt On Completion (IOC)
    • bit[31:16]: ([EL] bit[31:12]) allow data buffer length (RX ONLY), the buffer length of the data to receive
    • bit[23:16]: ([EL] bit[31:24]) extension address (TX ONLY), lower 4 bits are extension bits of buffer, upper 4 bits are extension bits of next_gpd
  • next_gpd β€” Physical address of the next GPD
  • buffer β€” Physical address of the data buffer
  • dw3_info β€” the dw3_info member, with its own bit map:
    • bit[15:0]: ([EL] bit[19:0]) data buffer length, (TX): the buffer length of the data to transmit (RX): The total length of data received
    • bit[23:16]: ([EL] bit[31:24]) extension address (RX ONLY), lower 4 bits are extension bits of buffer, upper 4 bits are extension bits of next_gpd
    • bit29: ([EL] abandoned) Zero Length Packet (ZLP) (TX ONLY)

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/usb/mtu3/mtu3.h, plus the whole friend group:

  • enum mtu3_g_ep0_state(9)
  • enum mtu3_dr_force_mode(9)
  • struct mtu3_fifo_info(9)
  • struct mtu3_gpd_ring(9)
  • struct otg_switch_mtk(9)
  • struct ssusb_mtk(9)
  • struct mtu3_ep(9)
  • struct mtu3(9)

that's the whole page, bestie β€” go flex that GPD knowledge πŸ’…βœ¨ source/version: ./drivers/usb/mtu3 Β· date: October 2026 Β· page: struct qmu_gpd(9).

πŸ“¦ where this page comes from