STRUCT ZYNQMP_QSPI(9)
π struct zynqmp_qspi (9) β Kernel API Manual, but make it cute β¨
okay so bestie, we're deep in the kernel docs rn β this one's from the Kernel API Manual shelf, and it's literally the entire personality of the qspi driver in one struct π¦
πΈ NAME πΈ
struct zynqmp_qspi β no cap, this is the struct that defines the qspi driver instance. it's giving "whole driver's whole life in one place" energy π
β¨ SYNOPSIS β¨
here's the whole thing, and yes you gotta keep every single field exactly as written, i don't make the rules (i do, but still):
struct zynqmp_qspi {
struct spi_controller *ctlr;
void __iomem *regs;
struct clk *refclk;
struct clk *pclk;
int irq;
struct device *dev;
const void *txbuf;
void *rxbuf;
int bytes_to_transfer;
int bytes_to_receive;
u32 genfifocs;
u32 genfifobus;
u32 dma_rx_bytes;
dma_addr_t dma_addr;
u32 genfifoentry;
enum mode_type mode;
struct completion data_completion;
struct mutex op_lock;
u32 speed_hz;
bool has_tapdelay;
};
slay, now let's meet the members π«Ά
π Members π
ctlrβ pointer to the spi controller information. yes queen, this is the controller hookup πregsβ the virtual address of the QSPI controller registers. this is where the hardware lives in your address space πrefclkβ pointer to the peripheral clock β°pclkβ pointer to the APB clock β°β¨irqβ the IRQ number. interrupts incoming, bestie π₯devβ pointer tostruct deviceπ§txbufβ pointer to the TX buffer π€rxbufβ pointer to the RX buffer π₯bytes_to_transferβ number of bytes left to transfer. ticking down like a countdown πbytes_to_receiveβ number of bytes left to receive. same energy, other direction πgenfifocsβ used for chip select π―genfifobusβ used to select the upper or lower bus π£οΈdma_rx_bytesβ remaining bytes to receive by DMA mode. DMA said "i'll take it from here" πdma_addrβ the DMA address after mapping the kernel buffer πΊοΈgenfifoentryβ used for storing thegenfifoentryinstruction. literally in the name, iykyk β¨modeβ defines the mode in which QSPI is operating, typeenum mode_typeποΈdata_completionβ completion structure. it's the "wait for itβ¦ wait for itβ¦" girlie β³op_lockβ operational lock. one at a time, bestie, no cutting the line πspeed_hzβ current SPI bus clock speed in hz β‘has_tapdelayβ used for tapdelay register available in qspi. a wholeboolfor the vibe check β
π¦ SEE ALSO π¦
the kernel file, and then likeβ¦ the entire extended friend group of functions, all here, all icons π:
Kernel file ./drivers/spi/spi-zynqmp-gqspi.c struct
qspi_platform_data(9)zynqmp_gqspi_read(9)zynqmp_gqspi_write(9)zynqmp_gqspi_selecttarget(9)zynqmp_qspi_set_tapdelay(9)zynqmp_qspi_init_hw(9)zynqmp_qspi_copy_read_data(9)zynqmp_qspi_chipselect(9)zynqmp_qspi_selectspimode(9)zynqmp_qspi_config_op(9)zynqmp_qspi_setup_op(9)zynqmp_qspi_filltxfifo(9)zynqmp_qspi_readrxfifo(9)zynqmp_qspi_fillgenfifo(9)zynqmp_qspi_disable_dma(9)zynqmp_qspi_enable_dma(9)zynqmp_process_dma_irq(9)zynqmp_qspi_irq(9)zynqmp_qspi_setuprxdma(9)zynqmp_qspi_write_op(9)zynqmp_qspi_read_op(9)zynqmp_qspi_suspend(9)zynqmp_qspi_resume(9)zynqmp_runtime_suspend(9)zynqmp_runtime_resume(9)zynqmp_qspi_exec_op(9)zynqmp_qspi_probe(9)zynqmp_qspi_remove(9)
fr fr, if you're poking at this struct you're already deep in ./drivers/spi territory, so good luck and hydrate π§
and that's the page bestie β source path ./drivers/spi, dated October 2026 in the footer, struct zynqmp_qspi(9) the whole way through. mwah π 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