linux pinctrl 子系统和 gpio子系统

GPIO 子系统和Pinctrl 子系统

首先介绍Pinctrl
之前都是直接操作寄存器,这里相当于通过Pinctrl 进行了一层封装,将引脚的复用和设置都通过Pinctrl 来操作,主要是给GPIO I2C 系统使用的,可以理解为之前的IOMUX 复用控制器
Pinctrl 可以分为Pin ctroller 和Client device
Pin Controller 只是一个概念和命名,实际上可能并没有,这里需要和GPIO Controller 进行却别,Pin Controller 用来设置引脚工作在GPIO 或者是I2C 的模式下,而GPIO Controller 是用来设置输入还是输出的
Client device 就是使用的设备,例如UART 就是串口的设备

一般pinctrl 是在 arch/arm/boot/dts 路劲下面

pinctrl-names = “active”, “sleep”;
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;

代码中如何引用pinctrl
这个是透明的,我们的驱动基本是不用管的,当设备切换状态的时候,对应的pinctrl 就会被调用
比如 platform-device 和plateform-driver的枚举过程中
比如系统休眠的时候也会去设置设备sleep的状态对应的引脚,不需要我们自己去调用代码

GPIO 子系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值