2017-08-09 235 views
0

我正在基于iMX6的电路板上工作,并且正在尝试配置一些正在用作芯片启用和重置线路的GPIO。根据我所做的研究,处理这个问题的方法是通过设备树中的gpio-reset驱动程序。下面的文档我已经拿出了下面的代码编译,但我不知道如何从用户空间控制这些重置行。设备树GPIO重置

我使用的第一个设备树驱动程序是gpio-leds,它在sys/class中创建了一个leds文件夹,并带有节点来控制LED。但是我没有看到任何类似的重置。所以,我有2个问题:

1)是GPIO复位正确的绑定使用控制复位线,使线等

2)是否有关于如何处理这和用户的其他文档绑定空间,类似于我如何控制GPIO-LED?

内核:Linux的buildroot的4.1.15

/dts-v1/; 

#include <dt-bindings/input/input.h> 
#include <dt-bindings/gpio/gpio.h> 
#include <dt-bindings/pinctrl/omap.h> 
#include "imx6ul.dtsi" 

/{ 
    model = "Freescale i.MX6 UltraLite 14x14 EVK Board"; 
    compatible = "fsl,imx6ul-14x14-evk", "fsl,imx6ul"; 

    memory { 
     reg = <0x80000000 0x20000000>; 
    }; 

    /* Reset Line Configuration */ 
    gpio_resets { 
     compatible = "linux,gpio-reset"; 
     pinctrl-names = "default"; 
     pinctrl-0 = <&pinctrl_gpioreset>; 

     gnss { 
      gpios = <&gpio1 4 0>; 
      asserted-state = <0>; 
      duration-ms = <100>; 
      auto; 
     }; 
    }; 

    ... 

}; 

&iomuxc { 
    pinctrl-names = "default"; 
    imx6ul-evk { 

    pinctrl_gpioreset: 
    gpiorstgrp { 
     fsl,pins = < 
     MX6UL_PAD_GPIO1_IO04__GPIO1_IO04   0x000010B0 /* GNSS RESET_N */ 
     >; 
    }; 

    ... 

}; 
+2

要使用的API将取决于您忽略提及的内核版本。您是否考虑将它们中的任何一个纳入设备驱动程序(即*“芯片启用和重置行”*看起来像它们可能与设备相关),而不是独立的GPIO? – sawdust

+0

如果你的配置是正确的,你会看到/ sys/class/gpio/gpioNUMBER –

+0

sawdust下的设备节点 - 这些将成为不需要驱动程序的设备的基本启用行,这就是我查找的原因在使用gpio-reset时,但也许有更好的方法。 –

回答

0

我不能完全肯定的gpio-reset sysfs的接口,因为我无法在bindings documentation找到任何信息,但对于正常的GPIO接口,你需要在它出现在/sys/class/gpio/gpio*之前导出gpio。基本上你只需要写下/sys/class/gpioexport文件中你想使用的gpio的编号。 Here是有人这样做的例子。如果您只是开启/关闭gpio,则该界面应该足够了。