工程中的Linux设备驱动

本文深入探讨了Linux系统中的platform设备驱动,包括platform总线、设备和驱动的匹配原理,以及platform_device和platform_driver的结构体。此外,还介绍了输入设备驱动的API,如分配、注册、注销设备以及报告输入事件的接口。最后,简述了Linux SPI主机和设备驱动的工作原理和相关数据结构。
摘要由CSDN通过智能技术生成

一、platform 设备驱动

1.1 platform 总线、设备与驱动

在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。

Linux发明了一种虚拟的总线,称为platform总线, 相应的设备成为platform_device, 而驱动成为platform_driver。

platform_device结构体

struct platform_device {

const char *name; //设备名

u32id;

struct device dev;

u32num_resource; //设备所使用的各类资源数量

struct resource * resource; //资源

};


platform_driver结构体

struct platform_driver {

int (*probe) (struct platform_device *);

int (*remove) (struct platform_device *);

void (*shutdown) (struct platform_device *);

int (*suspend) (struct platform_device *, pm_message_t state);

int (*suspend_late) (struct platform_device *, pm_message_t state);

int (*resume_early) (struct plartform_device *);

int (*resume) (struct platform_device *);

struct pm_ext_ops *pm;

struct device_driver driver;

};

系统中为platform总线定义了一个bus_type的实例platform_bus_type,其定义如代码清单:

struct bus_type platform_bus_type = {

.name= "platform",

.dev_attrs= platform_dev_attrs,

.match = platform_match,

.uevent= platform_uevent,

.pm= PLATFORM_PM_OPS_PTR,

};

EXPORT_SYMBOL_GPL(platform_bus_type);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值