配置驱动层次关系
Read time: 1 minute(s)
SPI NAND 属于 SPI 的从设备,在内核中相关驱动通过
SPI MEM
对接到 SPI 子系统。-
SPI 控制器初始化
在初始化过程中,SPI 驱动会检查 SPI 控制器下是否有挂载的 SPI NAND 设备。如有,则将 SPI NAND 设备添加到 SPI BUS 中:aic_spi_probe(dev); |-> spi_register_controller(ctlr);/spi_register_master(ctlr);/ spi_register_master 是一个宏 |-> of_register_spi_devices(ctlr); |-> spi = of_register_spi_device(ctlr, nc); |-> spi = spi_alloc_device(ctlr); |-> of_spi_parse_dt(ctlr, spi, nc); |-> rc = spi_add_device(spi); // 将 SPI device 添加到 SPI 总线 spi_bus_type 中
- 设备匹配与驱动加载:
在调用
spi_add_device
的过程中,会查找和匹配对应设备的驱动程序。如发现对应的驱动程序未被添加到系统中,则先将设备添加到 BUS,等到对应驱动程序被添加至系统中后再次进行匹配。SPI NAND 模块的驱动源码路径为 source/linux-5.10/drivers/mtd/nand/spi/。