This has gotten the better of me. What am I missing?
I have a button I want to read from GPIO. Here’s the schematic: External Media
The 3.3V is coming from J21 Pin 1.
The GND is coming from J21 Pin 6
The GPIO is J21 Pin 13.
The Jetson TX1 Generic Customer Pinmux Spreadsheet:
GPIO: GPIO3_PBB.03
Device Tree Pin Name: pe6
Customer Usage: AUD_INT
From the Kernel Sources:
kernel/drivers/pinctrl/pinctrl-tegra210.c #define TEGRA_PIN_PE6 _GPIO(38)
So it looks like in sysfs terms it’s gpio38. When used as in Output attached to an LED, the regular sysfs calls operate correctly.
However, when used as an Input (commands performed as super user)
Returns 1 as expected.
However, releasing the push button and then executing:
$ cat /sys/class/gpio/gpio38/value
Returns 1
My expectation is that the value should come back as 0. Sometimes the value goes back low after around 45 seconds, other times it just stays high. Looking at the TX1 schematic, it looks as if this line goes through a level shifter then to CVM 1.0.
So what am I missing or bungling? Does there need to be a dtb overlay for using the GPIO like this?
By default an audio i2s controller uses this GPIO. I see your steps for exporting the pin or changing the mode, but did you disable audio output in pinmux?
This works! Thank you yermin, now I can sleep at night.
What was the thinking behind choosing 1KΩ ? Did I miss something in the documentation, or was it an experience thing?
According to the TXB0108’s manual, each port is connected with a 4K resistor, which must be calculated when the TXB0108 is driven.
Using 10K+1K resistor, low voltage can only go to 3.3V* (11/15) =2.42V
Using 1K+100 resistor, low voltage can be 3.3V* (1.1/5.1) =0.71V
If I read the spreadsheet correctly (and that’s a big if), the “pin is muxed” as a GPIO. SFI00, SFI01, SFI02, SF03 are all blank. I am under the impression that the signal has to be muxed to one of the SFIXX for it to be actually used for something like audio output. Is that incorrect?
Another impression that I have is that names on the GPIO signals that are not being used are placeholders for how people may actually use them, not how they are currently hooked up.
If this is not the case, it’s not clear to me how the pinmux needs to be changed to make a pin a general GPIO again.