
pinctl和gpio子系统
文章平均质量分 97
憧憬一下
博客主要涉及嵌入式方面:linux驱动、stm32等。欢迎互关互三!
展开
-
编写虚拟的GPIO控制器的驱动程序:和pinctrl的交互使用
讲解了如何在Linux 4.9.88内核中为虚拟GPIO控制器编写驱动程序,并展示了GPIO和Pinctrl子系统之间的交互方式。假设该虚拟GPIO控制器有4个引脚,然后在设备树中为其设置相应的设备节点和引脚配置。通过代码示例展示了如何实现GPIO的输入、输出功能,包括GPIO的值读取与设置。文介绍了GPIO控制器与Pinctrl的关系以及两者的映射机制,解释了gpio_pin_range和pinctrl_gpio_range结构体的作用,并提供了GPIO子系统中调用Pinctrl的流程示例。原创 2024-11-07 00:09:13 · 2372 阅读 · 15 评论 -
GPIO子系统中Controller驱动源码分析
通过对gpio-mxc.c源码的深入解析,本文展示了如何在GPIO设备树中定义gpio-controller和#gpio-cells等必要属性以标识控制器类型与引脚数量。驱动代码重点阐述了mxc_gpio_probe函数的工作流程,包括GPIO端口结构分配、时钟资源的启用、GPIO控制寄存器的映射等。同时,通过对bgpio_init函数的分析,详细解释了GPIO寄存器(如GPIO_PSR、GPIO_DR和GPIO_GDIR)的作用与配置方式,为GPIO控制器的开发提供了理论基础和实践参考。原创 2024-11-06 00:01:17 · 1605 阅读 · 24 评论 -
GPIO子系统层次与数据结构详解
介绍Linux 4.x内核中GPIO子系统的结构、API接口及相关数据结构,提供对内核驱动程序的详细解读和注释。在Linux的GPIO子系统中,主要分为两种接口:基于描述符的descriptor-based接口和传统的legacy接口。通过对gpio_device、gpio_chip、gpio_desc等结构体的解析,解释了GPIO控制器如何管理引脚、设定方向、读取及写入值等操作,包含74x164移位寄存器驱动的代码示例,展示如何使用SPI接口将寄存器状态作为GPIO来访问。原创 2024-11-05 00:04:34 · 2707 阅读 · 60 评论 -
Pinctrl子系统中Pincontroller和client驱动程序的编写
本文主要讲解如何去编写Pincontrolle子系统的驱动程序,介绍编写时所需要的相关辅助函数(for_each_child_of_node、of_get_child_coun、of_find_property、of_property_read_u32、of_property_read_u32_index等);以及编写对应的client端的驱动程序去使用Pinctrl;同时介绍相关调试技巧。原创 2024-11-04 00:03:48 · 1791 阅读 · 27 评论 -
Pinctrl子系统中client端使用pinctrl过程的驱动分析
主要讲解作为使用者来说去使用pinctrl,其相关驱动程序是如何去进行获取pinctrl信息,对设备树中的Pinctrl的client端设备树节点进行解析,将引脚转为map,再转为setting存储起来,去进行使用,也就是分析驱动是如何去配置、复用引脚的。原创 2024-11-03 00:04:28 · 2130 阅读 · 26 评论 -
Pinctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体
主要介绍了在 Linux 4.x 内核中如何使用设备树和引脚控制(pinctrl)子系统来配置和管理 i.MX6ULL 芯片的引脚。设备树定义了硬件资源及其属性,而 pinctrl 子系统则提供了统一的接口以方便内核和驱动程序访问和设置引脚的多种功能。通过具体示例代码,展示 i.MX 平台上 pinctrl 驱动的初始化流程、如何通过设备树解析引脚组、设置引脚复用模式等。文中分析了 pinctrl 框架的结构体和函数的实现细节,理解并应用引脚复用、驱动和电气配置等操作。原创 2024-11-02 00:10:28 · 2033 阅读 · 16 评论 -
Pinctrl子系统中client端设备树相关数据结构介绍和解析
主要探讨Linux内核中pinctrl子系统的结构体及其在设备树解析中的应用。讨论了client设备如何在程序中使用dev_pin_info结构体存储pinctrl信息,通过设备树中的节点实现pin控制的功能。重点介绍了pinctrl和pinctrl_state结构体,解释了如何管理设备的引脚状态及其切换过程。解析了pinctrl_map和pinctrl_setting结构体的功能和使用场景。原创 2024-11-01 00:00:48 · 1936 阅读 · 13 评论 -
Pinctrl子系统pinctrl_desc结构体进一步介绍
深入探讨Linux内核中的Pin控制器(Pinctrl)子系统,重点分析其核心结构体及操作接口。会回顾Pinctrl的基本概念,随后详细解读pinctrl_dev、pinctrl_desc以及与引脚操作相关的接口,包括引脚复用(pinmux)和引脚配置(pinconf)。介绍如何通过pinctrl_desc注册Pin控制器,构建pinctrl_dev,揭示NXP i.MX系列SoC的引脚控制器驱动程序的实现过程。通过实例和代码示例,提供清晰易懂的Pin控制器实现细节。原创 2024-10-31 00:06:38 · 1635 阅读 · 5 评论 -
Pinctrl子系统和其主要结构体引入
系统化讲解 Linux 4.x 内核中 Pinctrl(Pin Controller)子系统的核心原理与应用,理解引脚控制的关键操作。内容涵盖 Pinctrl 的引脚枚举、复用与配置等功能,以及如何在设备树中定义和使用 Pinctrl 子系统,以高效管理 GPIO 和多功能引脚。通过具体的代码实例和详细的结构体(pinctrl_dev、pinctrl_desc)解析,本专栏将展示从基础的引脚设置到复杂的设备树集成的完整过程。原创 2024-10-30 00:03:03 · 1385 阅读 · 10 评论