2017-08-09 271 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,則該界面應該足夠了。