STRUCT FSMC_NAND_DATA(9)
β¨ 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 thenand_controllerstruct. 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:
- Kernel file
./drivers/mtd/nand/raw/fsmc_nand.c fsmc_nand_disable(9)
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
- 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