我需要从头开始编写omap4的spi驱动程序。 我指的是http://lxr.free-electrons.com/source/drivers/spi/spi-omap2-mcspi.c驱动程序代码。 但是,我无法理解在这个驱动代码中如何处理基本的设备操作。 例如一个字符驱动程序的结构
struct file_operations scull_fops = { .owner = THIS_MODULE,.llseek = scull_llseek,.read = scull_read,.write = scull_write,.ioctl = scull_ioctl,.open = scull_open,.release = scull_release,};
包含指向开放,读取,写入等基本function的指针…
我在http://lxr.free-electrons.com/source/drivers/spi/spi-omap2-mcspi.c找不到这些函数
有人请帮我确定设备是如何打开的,读写是在spi-omap2-mcspi.c代码中提供的。
实时使用Linux实时调度优先级(SCHED_FIFO和SCHED_RR)?
Linux内核模块通过USB读取GPS设备
TCP内核实现
修改Windows磁盘驱动程序以使用更新的控制代码,如IOCTL_disK_GET_DRIVE_GEOMETRY_EX
BIOS是否将512字节的引导程序复制到0x7c00
Linux内核中的系统调用表在哪里?
用WinDbg设置远程内核debugging器
在ACmacros中,“。”和“*”是什么意思?
每个进程都有自己的内核堆栈,对吧?
如果您查看您在帖子中链接的文件的底部,您将看到基本平台驱动程序操作的处理。
static const struct dev_pm_ops omap2_mcspi_pm_ops = { .resume = omap2_mcspi_resume,.runtime_resume = omap_mcspi_runtime_resume,}; static struct platform_driver omap2_mcspi_driver = { .driver = { .name = "omap2_mcspi",.owner = THIS_MODULE,.pm = &omap2_mcspi_pm_ops,.of_match_table = omap_mcspi_of_match,},.probe = omap2_mcspi_probe,.remove = omap2_mcspi_remove,};
在probe操作中,您可以看到该驱动程序的spi特定操作的设置:
/* the spi->mode bits understood by this driver: */ master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4,32); master->setup = omap2_mcspi_setup; master->auto_runtime_pm = true; master->transfer_one_message = omap2_mcspi_transfer_one_message; master->cleanup = omap2_mcspi_cleanup; master->dev.of_node = node;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。