linux 内核启动spi,【转】Linux 2.6内核下spi驱动的编写

如果你需要使用spi驱动的接口,不是去修改驱动的实现代码,因为它只负责完成spi的硬件交互功能。

你使用spi功能的代码只需要用到spi.h中定义的方法就可以了,这就是linux driver layers framework的可人之处。

我们通过一个简单的例子来实际理解一下:

#include

#include

#include

#define TEST_REG 0x02

static int test_read_reg(struct spi_device *spi, int reg)

{

char buf[2];

buf[0] = reg << 2;

buf[1] = 0;

spi_write_then_read(spi, buf, 2, buf, 2);

return buf[1] << 8 | buf[0];

}

static int spi_test_probe(struct spi_device *spi)

{

printk("TEST_REG: 0x%02xn", test_read_reg(spi, TEST_REG));

return 0;

}

static int spi_test_remove(struct spi_device *spi)

{

return 0;

}

static struct spi_driver spi_test_driver = {

.probe = spi_test_probe,

.remove = spi_test_remove,

.driver = {

.name = "testHW",

},

};

static int __init spi_test_init(void)

{

return spi_register_driver(&spi_test_driver);

}

static void __exit spi_test_exit(void)

{

spi_unregister_driver(&spi_test_driver);

}

module_init(spi_test_init);

module_exit(spi_test_exit);

MODULE_DESCRIPTION("spi device test");

MODULE_LICENSE("GPL");

在这个驱动中,你只需要用spi_register_driver向系统进行注册,就可以让系统用你指定的与 .name 相匹配的硬件交互代码

去执行你的读写请求。

几乎在所有与spi相关的函数中都会用到struct spi_device *spi这个指针,probe函数正好把这个指针传给你,保存好这个指针,你就可以在驱动的任何地方通过他去处理与spi设备相关的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值