gpio 子系统

当管脚复用为GPIO子系统时候

  

&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 */             >;         }; 以              MX6UL_PAD_UART1_RTS_B__GPIO1_IO19   0x17059 /* SD1 CD */为例子   在设备树上找到 &usdhc1 {     pinctrl-names = "default", "state_100mhz", "state_200mhz";     pinctrl-0 = <&pinctrl_usdhc1>;     pinctrl-1 = <&pinctrl_usdhc1_100mhz>;     pinctrl-2 = <&pinctrl_usdhc1_200mhz>;     cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;     keep-power-in-suspend;     enable-sdio-wakeup;     vmmc-supply = <&reg_sd1_vmmc>;     status = "okay"; };           pinctrl_usdhc1: usdhc1grp {             fsl,pins = <                 MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x17059                 MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x10071                 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059                 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059                 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059                 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059             >;     cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; 定义了一个叫cd-gpios的属性   此处使用了GPIO1_IO09             gpio1: gpio@0209c000 {                 compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";                 reg = <0x0209c000 0x4000>;                 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,                          <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;                 gpio-controller;                 #gpio-cells = <2>;                 interrupt-controller;                 #interrupt-cells = <2>;             };   如何从设备树中获取要使用的GPIO信息 of函数     结点  编号请求 输入输出 set get      1. 首先 获取到GPIO所处的设备节点,比如of_find_node_by_path   2.  获取GPIO编号,of_get_named_gpio函数 ,返回值就是GPIO编号    3. 请求此编号 gpio_request函数   4. 设置GPIO输入输出 gpio_direction_input or output  5. 输入 gpio_get_value ,输出 gpio_set_value     gpio驱动      
上一篇:STM32MP157 Linux系统移植开发篇17:Linux内核摄像头驱动移植


下一篇:i.MX6ULL终结者Linux按键输入实验修改设备树文件