STRUCT S3C64XX_SPI_DRIVER_DATA(9)
π struct s3c64xx_spi_driver_data β Runtime info holder for SPI driver
okay bestie, welcome to the Kernel API Manual page for struct s3c64xx_spi_driver_data β¨ this one's literally just the little home where the SPI driver keeps all its runtime info β think of it as the driver's emotional support struct π«Ά let's get into it.
π¦ SYNOPSIS π¦
here's the whole squad, laid out exactly as it lives:
struct s3c64xx_spi_driver_data {
void __iomem *regs;
struct clk *clk;
struct clk *src_clk;
struct clk *ioclk;
struct platform_device *pdev;
struct spi_controller *host;
struct s3c64xx_spi_info *cntrlr_info;
spinlock_t lock;
unsigned long sfr_start;
struct completion xfer_completion;
unsigned state;
unsigned cur_mode, cur_bpw;
unsigned cur_speed;
struct s3c64xx_spi_dma_data rx_dma;
struct s3c64xx_spi_dma_data tx_dma;
const struct s3c64xx_spi_port_config *port_conf;
unsigned int port_id;
unsigned int fifo_depth;
u32 rx_fifomask;
u32 tx_fifomask;
};
no cap, that's the whole vibe π
πΈ Members πΈ
okay so every single field, one by one, no skipping (i would never π):
regsβ pointer to theioremap'ed controller registers. that's the controller's whole memory-mapped situation, mapped in πclkβ pointer to the spi clock β°src_clkβ pointer to the clock used to generate SPI signals. this is the one actually making the waveforms happen β¨ioclkβ pointer to the i/o clock between host and target πpdevβ pointer to device's platform device data πhostβ pointer to the SPI Protocol host πcntrlr_infoβ platform specific data for the controller this driver manages. very "this controller, specifically" energy π¦lockβ controller specific lock πsfr_startβ BUS address of SPI controller regs πxfer_completionβ to indicate completion of xfer task. it's the little "we're done!!" signal πβ¨stateβ set of FLAGS to indicate status π©cur_modeβ stores the active configuration of the controller βοΈcur_bpwβ stores the active bits per word settings. bits! per! word! π’cur_speedβ current clock speed ποΈrx_dmaβ local receive DMA data (e.g. chan and direction) π₯tx_dmaβ local transmit DMA data (e.g. chan and direction) π€port_confβ local SPI port configuration data ποΈport_idβ [DEPRECATED] use{rx,tx}_fifomaskinstead. yeah she's old news, don't use her bestie πfifo_depthβ depth of the FIFO π₯€rx_fifomaskβSPI_STATUS.RX_FIFO_LVLmask. Shifted mask defining the field's length and position π―tx_fifomaskβSPI_STATUS.TX_FIFO_LVLmask. Shifted mask defining the field's length and position π―
β SEE ALSO β
- Kernel file
./drivers/spi/spi-s3c64xx.cstructs3c64xx_spi_port_config(9)
π tiny reminder:port_idis deprecated, so if you're out here reaching for it, maybe don't? use{rx,tx}_fifomaskinstead. iykyk π
and that's the page!! this one lives in ./drivers/spi, dated October 2026, from the Kernel API Manual β mwah, go read the source, ily, bye π§ββοΈππ
π¦ 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