0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux reset子系统有什么功能

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 14:06 次阅读

Linux reset子系统

reset子系统非常简单,与clock子系统非常类似,但在驱动实现上,reset驱动更简单。

因为clock驱动主要是时钟的实现,涉及到固定时钟、分频、门控等一些时钟的分级关系,需要弄清楚时钟树里每个时钟的关系。

而reset驱动有点相当于clock驱动的门控,它只有复位和解复位两个功能。

类似于clock子系统,reset子系统也分为了consumerprovider,结构体关系如下:

图片

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);//复位状态查询
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动
    +关注

    关注

    12

    文章

    1837

    浏览量

    85250
  • Linux
    +关注

    关注

    87

    文章

    11279

    浏览量

    209263
  • 子系统
    +关注

    关注

    0

    文章

    109

    浏览量

    12392
收藏 人收藏

    评论

    相关推荐

    Linux下输入子系统上报触摸屏坐标

      在 Linux 中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Ha
    的头像 发表于 09-25 08:56 2464次阅读
    <b class='flag-5'>Linux</b>下输入<b class='flag-5'>子系统</b>上报触摸屏坐标

    Linux reset子系统及驱动实例

    上篇讲了Linux clock驱动,今天说说Linuxreset驱动。
    发表于 05-31 16:16 1124次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>reset</b><b class='flag-5'>子系统</b>及驱动实例

    Linux LED子系统详解

    Linux LED子系统详解
    的头像 发表于 06-10 10:37 1539次阅读
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系统</b>详解

    如何使用Linux内核中的input子系统

    的 input 子系统下提供的 API 函数接口,完成设备的注册即可。在本章节中我们来学习一下如何使用 Linux内核中的 input 子系统
    发表于 12-29 07:20

    Linux子系统中使用adb功能有哪几种方式呢

    Linux子系统中使用adb功能两种方式:1、使用Windows系统的adb2、在Linux
    发表于 04-19 16:37

    基于Linux内核输入子系统的驱动研究

    Linux因其完全开放的特性和稳定优良的性能深受欢迎,当推出了内核输入子系统后,更方便了嵌入式领域的驱动开放。介绍了Linux的设备驱动基础,详细阐述了基于Linux内核输入
    发表于 09-12 16:38 23次下载

    Linux内核输入子系统的驱动研究

    Linux内核输入子系统的驱动研究
    发表于 10-31 14:41 14次下载
    <b class='flag-5'>Linux</b>内核输入<b class='flag-5'>子系统</b>的驱动研究

    详细了解Linux设备模型中的input子系统

    linux输入子系统linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入
    发表于 05-12 09:04 1041次阅读
    详细了解<b class='flag-5'>Linux</b>设备模型中的input<b class='flag-5'>子系统</b>

    Windows 10操作系统会有专门的Linux子系统

    曾经一段时间,微软对 Linux 的态度并不友好。但随着企业战略的全面转型,该公司已经积极投身相关应用与服务的开发。甚至在 Windows 10 操作系统层面,都有专门的 Linux
    的头像 发表于 03-14 09:45 3123次阅读

    Windows 子系统助力 Linux 2.0

    Windows 子系统助力 Linux 2.0
    的头像 发表于 01-04 11:17 644次阅读

    Linux系统中NFC子系统架构分析

    目前在Linux系统中,每个厂家都使用不同的方式实现NFC驱动,然后自己在应用层上面做适配。但是Linux也已经推出NFC子系统,很多厂家也逐步在统一。
    发表于 01-04 14:01 2030次阅读

    linux-usb子系统的核心描述

    本文将描述linux-usb子系统的核心,主要分析其核心的初始化流程,文中源码基于内核版本:4.1.15。
    的头像 发表于 01-14 09:37 2698次阅读

    Linux内核reset驱动实例

    reset驱动实例 类似于clock驱动,reset驱动也是编进内核的,在Linux启动时,完成reset驱动的加载。 设备树 reset
    的头像 发表于 09-27 14:21 758次阅读

    Linux clock子系统是什么

    clock子系统 Linux的时钟子系统由CCF(common clock framework)框架管理, CCF向上给用户提供了通用的时钟接口,向下给驱动开发者提供硬件操作的接口 。各结构体关系
    的头像 发表于 09-27 14:25 826次阅读
    <b class='flag-5'>Linux</b> clock<b class='flag-5'>子系统</b>是什么

    Linux网络子系统的实现

    Linux网络子系统的分层 Linux网络子系统实现需要: l 支持不同的协议族 ( INET, INET6, UNIX, NETLINK...) l 支持不同的网络设备 l 支持统一
    的头像 发表于 11-11 11:25 1318次阅读
    <b class='flag-5'>Linux</b>网络<b class='flag-5'>子系统</b>的实现