6_pinctrl子系统&gpio子系统

本文详细介绍了Linux内核中的pinctrl子系统和gpio子系统。pinctrl子系统主要用于设备树中pin配置信息的获取和设置,包括设备树中的pin配置、iMX6UL的iomuxc节点以及添加pinctrl节点模板。而gpio子系统则提供了API用于初始化和操作gpio,包括设备树中添加gpio属性、gpio子系统的OF函数如of_gpio_named_count、of_gpio_count和of_get_named_gpio,以及gpio子系统API函数如gpio_request、gpio_free等。
摘要由CSDN通过智能技术生成

一、pinctrl子系统

1、pinctrl子系统简介

pinctrl子系统的主要作用:

​ 1)获取设备树的 pin 信息;

​ 2)根据获取到的 pin 信息来设置 pin 的复用功能

​ 3)根据获取到的 pin 信息来设置 pin 的电气属性

2、设备树中的 pin 配置信息

​ 设备树中的 iomuxc 节点是 IOMUXC 外设对应的节点,用来描述各外设 pin 配置信息的。在 .dtsi 文件中定义了该节点:

iomuxc: iomuxc@020e0000 {
   
				compatible = "fsl,imx6ul-iomuxc";
				reg = <0x020e0000 0x4000>;
			};

​ 打开板子设备树文件,找到 iomuxc 节点的追加部分:

&iomuxc {
   
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1>;
	imx6ul-evk {
   
		gpioled: ledgrp {
   	//led外设
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO03__GPIO1_IO03   0x10b0
			>;
		};

		pinctrl_hog_1: hoggrp-1 {
   
			fsl,pins = <
				MX6UL_PAD_UART1_RTS_B__GPIO1_IO19	0x17059 /* SD1 CD */
				MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT	0x17059 /* SD1 VSELECT */
				MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
			>;
		};

		pinctrl_csi1: csi1grp {
   
			fsl,pins = <
				MX6UL_PAD_CSI_MCLK__CSI_MCLK		0x1b088
				MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK	0x1b088
				MX6UL_PAD_CSI_VSYNC__CSI_VSYNC		0x1b088
				MX6UL_PAD_CSI_HSYNC__CSI_HSYNC		0x1b088
				MX6UL_P
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值