STRUCT S3C64XX_SPI_DRIVER_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 the ioremap'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}_fifomask instead. yeah she's old news, don't use her bestie πŸ’€
  • fifo_depth β€” depth of the FIFO πŸ₯€
  • rx_fifomask β€” SPI_STATUS.RX_FIFO_LVL mask. Shifted mask defining the field's length and position 🎯
  • tx_fifomask β€” SPI_STATUS.TX_FIFO_LVL mask. Shifted mask defining the field's length and position 🎯

⭐ SEE ALSO ⭐

  • Kernel file ./drivers/spi/spi-s3c64xx.c struct s3c64xx_spi_port_config(9)

πŸ’œ tiny reminder: port_id is deprecated, so if you're out here reaching for it, maybe don't? use {rx,tx}_fifomask instead. 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