博客
关于我
spi核心层驱动模型简述
阅读量:345 次
发布时间:2019-03-04

本文共 1355 字,大约阅读时间需要 4 分钟。

#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/init.h>
#include <linux/cache.h>
#include <linux/dma-mapping.h>
#include <linux/dmaengine.h>
#include <linux/mutex.h>
#include <linux/of_device.h>
#include <linux/of_irq.h>
#include <linux/clk/clk-conf.h>
#include <linux/slab.h>
#include <linux/mod_devicetable.h>
#include <linux/spi/spi.h>
#include <linux/of_gpio.h>
#include <linux/pm_runtime.h>
#include <linux/pm_domain.h>
#include <linux/export.h>
#include <linux/sched/rt.h>
#include <linux/delay.h>
#include <linux/kthread.h>
#include <linux/ioport.h>
#include <linux/acpi.h>
static struct class spi_master_class = {
.name
= "spi_master",
.owner
= THIS_MODULE,
.dev_release
= spi_master_release,
.dev_groups
= spi_master_groups,
};
struct bus_type spi_bus_type = {
.name
= "spi",   //总线在系统中的名称
.dev_groups
= spi_dev_groups,
.match
= spi_match_device, //spi总线上设备与驱动的匹配方式
.uevent
= spi_uevent,
};
EXPORT_SYMBOL_GPL(spi_bus_type);
static int __init spi_init(void)
{
int
status;
//申请buf空间 用于数据传输?
buf = kmalloc(SPI_BUFSIZ, GFP_KERNEL);
//注册总线  sys/bus/下的spi目录
status = bus_register(&spi_bus_type);
//创建主机控制器的类  sys/class/下的spi_master目录
status = class_register(&spi_master_class);
return status;
}
//可以看出,此宏在系统初始化时是先于module_init()执行的。
//可见,在初始化阶段,spi_init函数向系统注册了一个名为spi的总线类型,
//同时也为SPI控制器注册了一个名为spi_master的设备类
postcore_initcall(spi_init); 

转载地址:http://nome.baihongyu.com/

你可能感兴趣的文章
【Stimulsoft Reports.Net教程】使用DesignerFx
查看>>
Python | 02.下载视频(普通视频、m3u8加密视频ts)
查看>>
攻防世界 Pwn 新手
查看>>
void value not ignored as it ought to be 报错原因
查看>>
mybtis-plus 出现 Wrong namespace
查看>>
解决transition动画与display冲突的几种方法
查看>>
理解JavaScript的临时包装对象
查看>>
实习记-3
查看>>
2008年7月20日星期日
查看>>
c#启动本机程序
查看>>
用户登陆的验证码的制作
查看>>
判断远程文件是否存在
查看>>
升级java11后,maven命令打包报错
查看>>
JAVA入门[4]-IntelliJ IDEA配置Tomcat
查看>>
springboot redis key乱码
查看>>
Win10禁用自带的笔记本键盘
查看>>
insmod模块的几种常见错误
查看>>
shell及脚本4——shell script
查看>>
写时复制集合 —— CopyOnWriteArrayList
查看>>
什么是redis的缓存雪崩, 穿透, 击穿?
查看>>