首先定义一个struct ad7888 {
struct cdev cdev;
struct spi_device *spi;
struct semaphore lock;
};
来描述我的设备附加信息
先理下逻辑:
[1]module_init(spi_ad7888_init);
[2]static int __init spi_ad7888_init(void) {}(在这个函数里应实现 初始化主设备号及字符设备注册最后调用平台设备注册函数spi_register_driver(spi_ad7888_driver))
[3]关于struct spi_driver spi_ad7888_driver这个结构体,需要填写的项有.probe .remove .driver其中.driver 又包含.name .owner 等等。其中.name这个是关键,平台设备驱动程序的匹配就是根据这个name和device里面的.name作比较,当然,这里有点不同,spi的match会调到后面讲的spi_board_info中的.modalias做比较。
[4]接着填写probe和remove函数,我在spi_ad7888_driver结构体中,将.probe=spi_ad7888_probe。那么spi_ad7888_probe中实现的功能有:
分配一个struct ad7888结构体空间,这个结构体在上面定义
注:以下省略了所有的出错处理~实际应用中不能缺少。
static int __devinit spi_ad7888_probe(struct spi_device *spi) {
struct * chip;
chip =kmalloc(sizeof(struct ad7888),GFP_KERNEL);
dev_set_drvdata(&spi->dev,chip);//设置这
S3C2440 平台的spi ad7888驱动程序
最新推荐文章于 2023-03-05 22:23:03 发布