使用struct pinctrl_desc 抽象一个 pin controller,包含控制器的名字、pin脚的数量、pinmux功能、pinconf功能和pinctl功能。其中结构体pinmux_ops和pinconf_ops分别用于配置mux模式和pad电气属性,而pinctrl_ops则是控制一组pin,如uart、i2c、spi等外设的pin组。该结构的定义如下: struct pinctrl_desc { const char ...
第103行,pinctrl_desc结构体用来描述PIN控制器,PIN控制器用于配置SOC的PIN复用功能和电气特性。 第107行,这个stm32_gpio_bank结构体,是用来注册GPIO驱动。到后面GPIO子系统再说。 pinctrl_desc结构体内容如下所示: pinctrl_desc结构体 第134-136行,这三个“_ops”结构体指针非常重要!因为这三个结构体就是PIN控制...
pinctrl_desc结构体用于描述引脚控制器(pinctrl)的属性和操作。引脚控制器是硬件系统中的一个组件,用于管理和控制引脚的功能和状态。pinctrl_desc结构体的作用是提供一个统一的接口,用于配置和管理引脚控制器的行为。pinctrl_desc结构体定义在内核源码目录的“/include/linux/pinctrl/pinctrl.h”文件中,具体内容如下所示:...
pinctrl的注册函数需要提供一个初始化好的struct pinctrl_desc结构体,返回一个struct pinctrl_dev。并将struct pinctrl_dev加入到pinctrldev_list全剧链表中。 externintpinctrl_register_and_init(structpinctrl_desc *pctldesc,structdevice *dev,void*driver_data,structpinctrl_dev **pctldev);externintpinctrl_enable(...
第18~24 行:初始化 imx_pinctrl_desc 结构体指针变量,重点是 pctlops、pmxops 和 confops 这三个成员变量,分别对应 imx_pctrl_ops、imx_pmx_ops 和 imx_pinconf_ops 这三个结构体。 第26 行:调用 pinctrl_register 向 Linux 内核注册imx_pinctrl_desc,注册以后 Linux 内核就有了对 I.MX6ULL 的 PIN 进...
pinctrl 子系统主要结构体关系: pinctrl_dev 是 pinctrl 子系统的根源结构体,它主要包含三条路: 1、pinctrl_desc:这里包含了pinctrl 子系统三个最重要的结构体,有三个操作函数集,pinctrl_ops 包含了对 PIN 的操作函数集,pinmux_ops 包含了对 PIN 的复用函数集,pinconf_ops 包含了对 PIN 的配置函数,大家可以...
1. 结构体引入 pincontroller虽然是一个软件的概念,但是它背后是有硬件支持的,所以可以使用一个结构体来表示它:pinctrl_dev。 怎么构造出pinctrl_dev?我们只需要描述它:提供一个pinctrl_desc,然后调用pinctrl_register就可以: struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, ...
数据结构 使用struct pinctrl_desc 抽象一个 pin controller,该结构的定义如下: 代码语言:javascript 复制 struct pinctrl_desc{constchar*name;conststruct pinctrl_pin_desc*pins;unsigned int npins;conststruct pinctrl_ops*pctlops;conststruct pinmux_ops*pmxops;conststruct pinconf_ops*confops;struct module*ow...
pinctrl-subsystem中的驱动程序被针对特定的芯片或具体的外设开发。它们包括了用于访问某个芯片或外设所有引脚的功能,这些驱动程序可以和pinctrl-subsystem一起工作来支持引脚的复用和控制。每个驱动程序都有一个公共结构体pinctrl_desc,它描述了芯片的所有引脚和支持的模式。
Pinctrl驱动程序的核心是构造一个pinctrl_desc结构体: 1.1 作用1:描述、获得引脚 分为2部分: 描述、获得单个引脚的信息 描述、获得某组引脚的信息 1.2 作用2:引脚复用 用来把某组引脚(group)复用为某个功能(function)。 1.3 作用3:引脚配置 用来配置:某个引脚(pin)或某组引脚(group)。