Still struggling with Xilinx GPIO...

Guillaume Dargaud dargaud at lpsc.in2p3.fr
Wed May 28 19:51:09 EST 2008


Hi John,

> Try using channel 1. It may be set up where the first channel is 1 and not 
> 0.

Not sure what you mean...

I'm actually not clear how many devices I should have:

$ grep "GPIO.*BASEADDR" 
arch/ppc/platforms/4xx/xparameters/xparameters_ml405.h
#define XPAR_GPIO_0_BASEADDR XPAR_LEDS_4BIT_BASEADDR
#define XPAR_GPIO_1_BASEADDR XPAR_LEDS_POSITIONS_BASEADDR
#define XPAR_GPIO_2_BASEADDR XPAR_PUSH_BUTTONS_POSITION_BASEADDR

But depending on the examples I look at, they define either:

crw-rw-rw-    1 root     root      10, 185 May 26 13:49 xgpio
or:
crw-rw-rw-    1 root     root      10, 185 May 26 13:18 xgpio0
crw-rw-rw-    1 root     root      10, 186 May 26 13:18 xgpio1
crw-rw-rw-    1 root     root      10, 187 May 26 13:18 xgpio2

If that is the former, I see the code uses:
 gpio_ioctl.chan=0;
And I guess that's what you are refering to, right ?

Putting 1 gives me a working program, but no LED lights up and the buttons 
are always shown at 0.
Putting 0 gives a nice core dump as in my previous msg.
Putting 2 locks up the system.

And... I don't see how the code manages to read/wite all 3 GPIOs with only 
two IOCTL calls. Shouldn't they be 3 different calls using different 
addresses ?!? Argh, this complete lack of documentation in maddening. Not 
everything can be understood from reading the source.

Thanks.
-- 
Guillaume Dargaud
http://www.gdargaud.net/





More information about the Linuxppc-dev mailing list