[ARM笔记]驱动对设备的识别过程及实例——NAND Flash
中修改为“s3c2440-nand”,这个函数在include/arch/arm/plat-s3c24xx/s3c244x.c中定义如下:
59 void __init s3c244x_map_io(struct map_desc *mach_desc, int size)
...
68 s3c_device_i2c.name = "s3c2440-i2c";
69 s3c_device_nand.name = "s3c2440-nand";
70 s3c_device_usbgadget.name = "s3c2440-usbgadget";
71 }
有了NAND Flash设备,还要有NAND Flash驱动程序,内核针对S3C2410、S3C2412、S3C2440定义了3个驱动。它们在include/drivers/mtd/nand/s3c2410.c中的s3c2410_nand_init函数中注册进内核,如下所示:
890 static int __init s3c2410_nand_init(void)
891 {
892 printk("S3C24XX NAND Driver, (c) 2004 Simtec Electronics\n");
893
894 platform_driver_register(&s3c2412_nand_driver);
895 platform_driver_register(&s3c2440_nand_driver);
896 return platform_driver_register(&s3c2410_nand_driver);
897 }
其中的S3C2410_nand_driver结构是在include/drivers/mtd/nand/s3c2410.c中定义,如下所示:
857 static struct platform_driver s3c2410_nand_driver = {
858 .probe = s3c2410_nand_probe,
859 .remove = s3c2410_nand_remove,
860 .suspend = s3c24xx_nand_suspend,
861 .resume = s3c24xx_nand_resume,
862 .driver = {
863 .name = "s3c2410-nand",
864 .owner = THIS_MODULE,
865 },
866 };
可见,s3c_device_nand结构和s3c2410_nand_driver结构中的name成员相同,都是“s3c2410-nand”。platform_driver_register函数就是根据这点确定它们是匹配的,所以调用s3c2410_nand_probe函数枚举NAND Flash设备s3c2410_device_nand。
- Nand+Flash存储管理在DSP系统中的实现(03-12)
- YAFFS2在嵌入式系统中的实现(07-19)
- 从NAND闪存中启动U-BOOT的设计(05-16)
- 如何在C51系统上实现YAFFS文件系统(05-01)
- FLASH K9F1G08U0M在MSP430F149嵌入式系统中的应用(08-28)
- 基于Nand+Flash存储管理在DSP系统中的实现(03-17)