Pinctrl子系统

参考文章

Linux驱动开发(十一):pinctrl子系统和GPIO子系统

PINCTRL (PIN CONTROL) subsystem

pinctrl子系统的作用

大多数SOC的PIN都是支持复用的,所以在配置时要考虑复用的设置,此外还要配置PIN的电气特性,比如上下拉、速度、驱动等
pinctrl子系统的主要工作内容:

  • 获取设备树中pin信息
  • 根据获得到的pin信息来设置pin的复用功能
  • 根据获得到的pin信息来设置pin的电气特性,比如上下拉、速度、驱动能力

对于我们使用者来说,只需要在设备树里面设置好某个pin的相关属性即可,其他的初始化工作均由pinctrl子系统来完成
源码目录drivers/pinctrl

全志V3s

设备树:linux-5.1.0\Documentation\devicetree\bindings\pinctrl\allwinner,sunxi-pinctrl.txt
控制器驱动源码:linux-5.1.0\drivers\pinctrl\sunxi\pinctrl-sun8i-v3s.c

  • 一组复用引脚的功能配置
pio: pinctrl@01c20800 {
			compatible = "allwinner,sun8i-v3s-pinctrl";
			reg = <0x01c20800 0x400>;
			gpio-controller;
			#gpio-cells = <3>;
			
			i2c0_pins: i2c0 {
				pins = "PB6", "PB7";
				function = "i2c0";
			};
}
i2c0: i2c@01c2ac00 {
		compatible = "allwinner,sun6i-a31-i2c";
		reg = <0x01c2ac00 0x400>;
		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&ccu CLK_BUS_I2C0>;
		resets = <&ccu RST_BUS_I2C0>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c0_pins>;
		status = "disabled";
		#address-cells = <1>;
		#size-cells = <0>;
};
  • 某个复用引脚配置成GPIO功能
&i2c0 {
        status = "okay";
        gt9xx@14 {
            compatible = "goodix,gt911";
            goodix,rst-gpio = <&pio 4 23 GPIO_ACTIVE_LOW>; /* PE23 */
            goodix,irq-gpio = <&pio 1 5 GPIO_ACTIVE_HIGH>; /* PB5 */
        };                
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fiveyear_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值