STRUCT FSMC_NAND_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct fsmc_nand_data(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸ’– β€” we're looking at struct fsmc_nand_data, which is, like, the structure for FSMC NAND device state. that's it, that's the whole vibe. it holds all the state for an FSMC NAND device and honestly it's giving main character energy for the whole driver 🌸


🌈 SYNOPSIS 🌈

no cap, here's the whole struct, character for character, don't touch anything:

struct fsmc_nand_data {
    struct nand_controller  base;
    u32 pid;
    struct nand_chip        nand;
    unsigned int            bank;
    struct device           *dev;
    enum access_mode        mode;
    struct clk              *clk;
    struct dma_chan         *read_dma_chan;
    struct dma_chan         *write_dma_chan;
    struct completion       dma_access_complete;
    struct fsmc_nand_timings *dev_timings;
    dma_addr_t data_pa;
    void __iomem            *data_va;
    void __iomem            *cmd_va;
    void __iomem            *addr_va;
    void __iomem            *regs_va;
 };

πŸŽ€ Members πŸŽ€

okay so now the fun part β€” every single field, explained with love 🫢

  • base β€” inherits from the nand_controller struct. it's the family it comes from, iykyk πŸ’…
  • pid β€” the Part ID, on the AMBA PrimeCell format. like a little name tag 🏷️
  • nand β€” chip related info for a NAND flash. the whole point, honestly ✨
  • bank β€” the bank number for the probed device. which shelf it lives on πŸ’œ
  • dev β€” parent device. the mothership πŸ›Έ
  • mode β€” access mode. how we're getting in πŸ”‘
  • clk β€” clock structure for FSMC. tick tock bestie ⏰
  • read_dma_chan β€” DMA channel for read access. reads go zoom πŸ¦‹
  • write_dma_chan β€” DMA channel for write access to NAND. writes go zoom too, fr fr πŸ”₯
  • dma_access_complete β€” completion structure. it's literally the "we're done here" notification 😌
  • dev_timings β€” NAND timings. the whole schedule, iconic ⭐
  • data_pa β€” NAND Physical port for Data. the physical one, the real one πŸ’€
  • data_va β€” NAND port for Data. virtual side of the same story 🌸
  • cmd_va β€” NAND port for Command. where the commands go πŸ‘‘
  • addr_va β€” NAND port for Address. where the addresses go πŸŽ€
  • regs_va β€” Registers base address for a given bank. the starting point for that bank's registers, periodt ✨

πŸ¦‹ SEE ALSO πŸ¦‹

go peek at these, bestie, they're right there:


and that's the whole page, no notes πŸ’… this was brought to you from ./drivers/mtd/nand/raw, dated October 2026 β€” mwah, love u, go read the source πŸŒˆπŸ’–

πŸ“¦ where this page comes from