Não é possível exportar pinos gpio específicos. Como verificar o que usa os pinos GPIO e como acessar o registro?

0

Eu uso uma placa i.mx6 (yocto (jethro)) e estou configurando uma árvore de dispositivos. Eu mudei um arquivo dts e coloquei o arquivo dtb em uma partição de boot. Eu configurei GPIO4_IO19 no arquivo dts da seguinte forma:

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-evk {
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
...
MX6UL_PAD_CSI_VSYNC__GPIO4_IO19 0x0000B0B0
...
>;
};
...

No início, o MX6UL_PAD_CSI_VSYNC__GPIO4_IO19 foi definido em outro grupo (usdhcgrp), mas comentei-os.

Após a inicialização, verifiquei se o gpio é determinado com sucesso conforme eu configuro. O resultado é

echo 115 > /sys/class/gpio/export
-sh: echo: write error: Device or resource busy

Então eu verifiquei isso.

cat /sys/kernel/debug/gpio

    GPIOs 0-31, platform/209c000.gpio, 209c000.gpio:
    gpio-10 (phy-reset ) out lo
    GPIOs 32-63, platform/20a0000.gpio, 20a0000.gpio:
    GPIOs 64-95, platform/20a4000.gpio, 20a4000.gpio:
    gpio-68 (ft5x06_irq_gpio ) in hi
    GPIOs 96-127, platform/20a8000.gpio, 20a8000.gpio:
    gpio-109 (? ) out lo
    gpio-115 (cd ) in lo
    gpio-116 (? ) out lo
    gpio-117 (? ) out lo
    gpio-118 (sysfs ) in hi
    GPIOs 128-159, platform/20ac000.gpio, 20ac000.gpio:
    gpio-128 (phy-reset ) out lo

O gpio-115 é usado pelo cd. Talvez isso signifique a detecção de cartões. Eu quero usá-lo como sysfs para ler o estado. Alguma outra maneira de ler isso? Além disso, o gpio-10, 68, 109, 116, 117 é usado por outro dispositivo. Como posso usá-los por sysfs?

Eu acho que eu preciso fazer é verificar se o registro está configurado corretamente ou não. Se o valor do registro não é o mesmo que eu configurei, eu acho que o outro processo definiu o controle do pino. No entanto, eu não sei como acessar um registro.

O que eu sei sobre o gpio115 é o seguinte

 mux_reg address: 0x01DC and the value.
 conf_reg address: 0x0468 and the value.
 input_reg address: 0x0000 and the value.

O mesmo que os outros gpios.

Como posso acessar 0x01DC e depois obter o valor no linux (yocto)?

Obrigado pela sua colaboração.

    
por user8257918 08.09.2017 / 04:23

0 respostas