40 pin low-speed expansion header, DragonBoard™ 410c

Of the 12 GPIO’s made to be available on the DragonBoard™ 410c low-speed expansion header we are unable to export pin 30. When an attempt is made to export this pin (GPIO_25 “H”) with a 902 offset an error is displayed.

/sys/class/gpio # echo 927 > export
1| … #

This method of applying an offset and exporting all other 11 GPIO’s was successful, however, for some reason this GPIO cannot be exported and hence cannot be used.

PLEASE NOTE: MPP04 (GPIO_F) at Pin 28 was located at GPIO_901, this does not follow the 902 offset.

hi,

can you please provide more information about which software you are running on the board? Android, Linaro/Ubuntu or anything else?

thanks

We are using the newest Android found on the 96board’s website, and trying to access the GPIO through the shell. As stated, all other GPIO’s work, GPIO_927 does not.

With Ubuntu there is no GPIO folder within the:

/sys/class/

All other boards we have worked with have the gpio folder located in the sys/class/ directory.

We cannot access any GPIO’s with Ubuntu 15.04, we are hoping for a filesystem update, or more information on how to access gpio’s with Ubuntu. We have another thread about this problem here:

https://www.96boards.org/forums/topic/gpio-access-on-ubuntu-15-04-os-dragonboard-410c/

Thank you very much for your interest and help.

@sdrobertw: It is strange that processor GPIO’s start offset is 902, usually they start from 0. Could you post result of the following command (or equivalent that works on Android):

find /sys/kernel/debug/pinctrl/ -name “*ranges” -exec cat ‘{}’ ;

@sdrobertw: what error did you get when export GPIO?

We reproduced this issue under Android and now understand that APQ GPIO_25 is being used for DSI display reset on Android. Currently we don’t have DSI display by default on the DragonBoard 410c using this GPIO, it can be disabled in apq8016-sbc.dtsi in the node &mdss_dsi0 and rebuild kernel.

Also regarding one of the PMIC MPP (MPP_4) one needs to enable the config in kernel CONFIG_GPIO_QPNP_PIN_DEBUG=y
When new boot.img is flashed you should see

/sys/kernel/debug/qpnp_pin/pm8916-mpp/4

One can cd to /sys/kernel/debug/qpnp_pin/pm8916-mpp/4

echo 1 > master_en to enable and
echo 0 > master_en to disable

you can also “echo 0 or 1” to attribute “invert”


BTW, we also tested this on Linux and can confirm that
==>GPIO25 (PIN30 on the LS_EXP) can be exported on ubuntu.

root@linaro-developer:/sys/class/gpio# echo 25 > export

root@linaro-developer:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Feb 16 20:55 export
lrwxrwxrwx 1 root root 0 Feb 16 20:55 gpio25 -> ../../devices/platform/soc/1000000.pinctrl/gpio/gpio25
lrwxrwxrwx 1 root root 0 Feb 16 20:55 gpiochip0 -> ../../devices/platform/soc/1000000.pinctrl/gpio/gpiochip0
lrwxrwxrwx 1 root root 0 Feb 16 20:55 gpiochip504 -> ../../devices/platform/soc/200f000.spmi/spmi-0/0-00/200f000.spmi:pm8916@0:mpps@a000/gpio/gpiochip504
lrwxrwxrwx 1 root root 0 Feb 16 20:55 gpiochip508 -> ../../devices/platform/soc/200f000.spmi/spmi-0/0-00/200f000.spmi:pm8916@0:gpios@c000/gpio/gpiochip508
--w------- 1 root root 4096 Feb 16 20:55 unexport

We are trying to use an IR remote, with an IR receiver plugged into a breadboard. We have written code that successfully runs this receiver with the Raspberry pi, we would now like to port this over to the DB410c.

When running our code with the Raspberry Pi, GPIO set to “input”, there is no change to the voltage at the DataOut pin of our IR device.

When this same method is applied to the DB410c, the voltage is pulled down to almost half. Essentially the GPIO is pulling the device Voltage down and hence when a IR signal is received, say from a remote, the pull down from the remote goes un-noticed.

We would like to know why the GPIO’s, when set as input, are still pulling down, and by so much. And if there is a way to change this as we would not like our “input” GPIO to pull down.

PLEASE NOTE: We ran into this same problem when using the APQ8064 processor.
PLEASE NOTE: We can fix this problem by placing a battery in series with the DataOut to compensate for the voltage pull down from the pin, but would like to not have to do this.

I understand this is probably a tough question considering we are not providing schematics etc… Hopefully our point gets across.

Thank you.

From what I get from that, your device data out pin is outputting some voltage. What voltage is that? Not 3.3 (rPi GPIO voltage) I hope… What voltage is it being pulled down to? 1.8 volt? APQ8016 GPIO voltage is 1.8.

Schematics would be very useful here.

Just a reminder: ALL of the IOs on the 410c are 1.8V I/O (not 3.3V!). If you directly connect a 3.3V device it will appear to be pulled down (The protection diodes inside the APQ8016 limit voltage input to a maximum of 1.8V). I think this is what you may be seeing (1.8V is approximately “half” of 3.3V).

You need to use a level shifter to make the GPIOs compatible with older 3.3V devices.

This is one of the main reasons we decided to use 2.0mm connectors instead of the more common 2.54mm connectors. We wanted to make it clear that you can’t just plug in 3.3V devices and expect them to work.

Not sure why anybody would assume that pin spacing would imply voltage… but more importantly, no local stores sell 2.0 mm connectors. This is incredibly inconvenient.