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.