Linux reset子系统
reset子系统非常简单,与clock子系统非常类似,但在驱动实现上,reset驱动更简单。
因为clock驱动主要是时钟的实现,涉及到固定时钟、分频、门控等一些时钟的分级关系,需要弄清楚时钟树里每个时钟的关系。
而reset驱动有点相当于clock驱动的门控,它只有复位和解复位两个功能。
类似于clock子系统,reset子系统也分为了consumer
和provider
,结构体关系如下:
consumer :
reset API接口的使用者,内核提供了统一的reset接口:
devm_reset_control_get(struct device *dev, const char *id)//获取reset句柄
reset_control_deassert(struct reset_control *rstc)//解复位
reset_control_assert(struct reset_control *rstc)//复位
reset_control_reset(struct reset_control *rstc)//先复位,延迟一会,然后解复位
struct reset_control结构体表示一个reset句柄,驱动中使用reset API,需要先获取reset句柄
provider :
reset提供者,即reset驱动。struct reset_controller_dev
结构体代表一个reset
控制器,内部包含了reset操作函数集合struct reset_control_ops
,注册reset驱动时,需要分配一个struct reset_controller_dev结构体,然后填充成员,最后将该结构体注册。
struct reset_controller_dev{
const struct reset_control_ops *ops;//复位控制操作函数
struct list_head list;//全局链表,复位控制器注册后挂载到全局链表
struct list_head reset_control_head;//各个模块复位的链表头
struct device *dev;
int of_reset_n_cells;//dts中引用时,需要几个参数
//通过dts引用的参数,解析复位控制器中相应的参数
int (*of_xlate)(struct reset_controller_dev *rcdev, const struct of_phandle_args *reset_spec);
unsigned int nr_resets;//复位设备个数
}
struct reset_control_ops{
int (*reset)(struct reset_controller_dev *rcdev, unsigned long id);//复位+解复位
int (*assert)(struct reset_controller_dev *rcdev, unsigned long id);//复位
int (*deassert)(struct reset_controller_dev *rcdev, unsigned long id);//解复位
int (*status)(struct reset_controller_dev *rcdev, unsigned long id);//复位状态查询
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
驱动
+关注
关注
11文章
1718浏览量
84353 -
Linux
+关注
关注
87文章
10992浏览量
206744 -
子系统
+关注
关注
0文章
100浏览量
12265
发布评论请先 登录
相关推荐
如何使用Linux内核中的input子系统
的 input 子系统下提供的 API 函数接口,完成设备的注册即可。在本章节中我们来学习一下如何使用 Linux内核中的 input 子系统。
发表于 12-29 07:20
linux I2C子系统的相关资料分享
文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux I2C子系统框架在之前的一篇文
发表于 02-10 06:06
Arm Linux中断子系统先相关资料分享
1. Arm Linux 中断子系统1.1. 中断硬件系统3个组成部分:外设(中断源)、中断控制器、CPU1.2. Linux中断子系统4个
发表于 05-23 15:21
基于Linux内核输入子系统的驱动研究
Linux因其完全开放的特性和稳定优良的性能深受欢迎,当推出了内核输入子系统后,更方便了嵌入式领域的驱动开放。介绍了Linux的设备驱动基础,详细阐述了基于Linux内核输入
发表于 09-12 16:38
•23次下载
详细了解Linux设备模型中的input子系统
linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入
发表于 05-12 09:04
•949次阅读
Linux系统中NFC子系统架构分析
目前在Linux系统中,每个厂家都使用不同的方式实现NFC驱动,然后自己在应用层上面做适配。但是Linux也已经推出NFC子系统,很多厂家也逐步在统一。
发表于 01-04 14:01
•1398次阅读
Linux内核之LED子系统(一)
Linux内核的LED子系统是一种重要的框架,用于管理和控制设备上的LED指示灯。在嵌入式系统和物联网设备中,LED子系统发挥着关键作用,为开发者提供了一种统一的方式来控制和定制LED
发表于 10-02 16:53
•287次阅读
Linux内核reset驱动实例
reset驱动实例 类似于clock驱动,reset驱动也是编进内核的,在Linux启动时,完成reset驱动的加载。 设备树 reset
评论