![](https://img-blog.csdnimg.cn/direct/aeb32599c0a14bc6b2377ec3d1c8d4bb.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
第十一期 | pinctrl子系统
文章平均质量分 92
pinctrl子系统
北京迅为
让学习更简单,让开发更容易
展开
-
RK3568驱动指南|第十一篇 pinctrl子系统-第120章 pinctrl子系统的引入
在前面设备树相关的章节中已经对pinctrl节点的编写和使用进行了讲解,设备树的pinctrl可以分为客户端和服务端两个部分,在pinctrl客户端可以指定引脚描述、引脚组描述和配置描述,以满足其特定的功能和需求,不同厂商在客户端内容的编写格式是相同的。在上面的pinctrl节点中,描述了RK3568 GPIO控制器的配置和使用方式,pinctrl节点总共描述了五个GPIO控制器,分别是gpio0、gpio1、gpio2、gpio3和gpio4。接下来对rk3568的pinctrl设备树进行详细的讲解。原创 2024-01-12 10:53:01 · 1248 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl子系统-第121章 pinctrl probe函数讲解
(2)第11-15行,对pinctrl描述结构体进行初始化。由于pinctrl驱动的probe函数理解起来较为复杂,所以在讲解pinctrl驱动的probe函数之前,我们先来了解一些与pinctrl相关的数据结构,本章首先会学习pinctrl_desc结构体和rockchip_pinctrl 结构体,最后对pinctrl probe函数进行分析。(3)第23-29行:调用rockchip_pinctrl_get_soc_data函数,根据设备信息获取与该设备相关的rockchip_pin_ctrl结构体。原创 2024-01-12 11:21:04 · 1033 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第122章pinctrl 子系统函数操作集
在pinctrl的probe函数中,首先定义了一个struct rockchip_pinctrl *类型的结构体指针类型的变量info,然后传入了rockchip_pinctrl_register函数,然后又分别传入了rockchip_pinctrl_parse_dt函数和devm_pinctrl_register函数。其中,RK_PA2用于CAN0的接收引脚(can0_rxm1),RK_PA1用于CAN0的发送引脚(can0_txm1)。结构体pinconf_ops,用于定义引脚配置操作的函数指针。原创 2024-01-12 14:48:37 · 1287 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第123章dt_node_to_map函数分析
设备树(Device Tree)中存放的是对硬件设备信息的描述,包含了硬件设备的配置和连接信息,例如在pinctrl节点中的引脚的配置和映射关系。而rockchip_dt_node_to_map 函数的作用就是根据设备树中的节点信息,生成对应的引脚映射数组。函数设置映射的类型为PIN_MAP_TYPE_CONFIGS_PIN,并将引脚的名称作为映射的数据。然后,函数设置第一个映射的类型为PIN_MAP_TYPE_MUX_GROUP,并将父节点的名称作为映射的数据。同时,将设备节点的名称作为映射的组名。原创 2024-01-12 15:02:05 · 961 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第125章 add_setting函数分析
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。【公众号】迅为电子。原创 2024-01-12 17:14:37 · 850 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第124章pinctrl_bind_pins函数
到这里关于pinctrl_bind_pins函数的第二阶段讲解就完成了,在该阶段大多都是关于赋值的操作并将节点加入到链表中,但分析到这里我们仍旧没有找到struct pinctrl_state *default_state和pinctrl_map结构体是在什么地方进行的绑定,所以在下个章节我们将继续分析124.2 小节中create_pinctrl函数接下来的部分。使用 devm_pinctrl_get 函数获取设备的pinctrl句柄,并将其赋值给 dev->pins->p。原创 2024-01-12 16:27:13 · 1073 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第126章 通过pinctrl状态设置引脚复用实验
至此,关于pinctrl_bind_pins函数的重要内容就讲解完成了,通过pinctrl_bind_pins函数实现了为给定的设备绑定引脚,并在绑定过程中选择和设置适当的pinctrl状态,在124.1小节最后提出的struct pinctrl_state *default_state跟pinctrl_map结构体是什么时候建立起联系的问题也就解决了。·对于引脚复用设置(PIN_MAP_TYPE_MUX_GROUP),调用pinmux_enable_setting()函数来启用该设置。原创 2024-01-12 17:30:27 · 1245 阅读 · 0 评论 -
RK3568驱动指南|第十一篇 pinctrl 子系统-第127章 猜想验证
这里传递过来的是pinctrl的设备树节点,在24-76行的for循环中会获取 pinctrl-* 属性,而在pinctrl节点中并没有该属性,pinctrl-* 属性是在一系列的设备节点中添加的,所以会在这里返回错误,同样的错误会一层层的向上级函数传递,最终导致pinctrl_bind_pins函数返回错误,从而不能设置引脚的复用,所以猜想2是不正确的。首先我们可以提出两种猜想,第一个猜想是在加载LED驱动的时候进行的pinctrl引脚复用,第二种猜想是在加载pinctrl驱动的时候完成的引脚复用。原创 2024-01-12 17:40:02 · 934 阅读 · 0 评论