大体上可分为以下几个部分:
1.注册设备驱动 spi_register_driver
2.分配 mtd_info 结构体
3.配置 mtd_info 结构体
4.注册 mtd_info 结构体
构建 spi_driver 并注册
static struct spi_driver spi_flash_drv = {
.driver = {
.name= "spi_flash",
.owner= THIS_MODULE,
},
.probe= spi_flash_probe,
.remove= __devexit_p(spi_flash_remove),
};
static int spi_flash_init(void)
{
return spi_register_driver(&spi_flash_drv);
}
当内核中注册了同名的设备,会调用该驱动的 probe 程序
/* 分配 mtd_info 结构体 */
static struct mtd_info spi_flash_dev;
static int __devinit spi_flash_probe(struct spi_device *spi)
{
int mid, did;
spi_flash = spi;
s3c2410_gpio_cfgpin(spi->chip_select, S3C2410_GPIO_OUTPUT);
SPIFlashInit();
SPIFlashRea