IMX6ULL嵌入式Linux驱动学习笔记(六)

IMX6ULL-Linux开发学习

以下内容是我在学习正点原子IMX6ULL开发板alpha中记录的笔记,部分摘录自正点原子IMX6ULL开发手册

正常工作中进行驱动开发的方式——子系统。

一、pinctrl子系统

​ 借助pinctrl来设置一个pin的复用和电气属性。

pinctrl 子系统主要工作内容如下:

  1. 获取设备树中的pin信息。
  2. 根据获取到的pin信息来设置pin的复用功能。
  3. 根据获取到的pin信息来设置pin的电气特性,比如上/下拉、速度、驱动能力等。

对于使用者来说,只要在设备树里面设置某个pin的相关属性即可,其他的初始化工作由pinctrl子系统来完成,pinctrl子系统源码目录为drivers/pinctrl。根据设备的类型,会创建对应的子节点,然后设备所用pin都放到此节点。

imx6ul-evk {
	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 */
		>;
	};
	......
};

二、gpio子系统

​ 使用gpio子系统来使用gpio

三、驱动编写

  1. 设备树修改
/ {
   
   
    ......
        
  	gpioled {
   
   
		compatible = "atkalpha,gpioled";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpioled>;
		led-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
		status = "okay";
		
	};  
};

&iomuxc {
   
   
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog_1>;
	imx6ul-evk {
   
   
		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 */
			>;
		};

		/* 自己定义的led */
		pinctrl_gpioled: ledgrp {
   
   
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0X10B0
			>;
		};
        ......
    };
};

&tsc {
   
   
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_tsc>;
	xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
	measure-delay-time = <0xffff
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值