EmbeddedRelated.com
Forums

Problem with AMD CS5536 and GPIOs / Advantech PCM 3353

Started by Rakietka December 2, 2007
Hello,

For the few last days I'm struggling with AMD CS5536 Southbridge and
GPIOs. It's a part of PCM 3353, a 3,5" biscuit PC by Advantech
(http://taiwan.advantech.com.tw/unzipfunc/unziplit.asp?Literature_ID=1-1T5E7Y
- here you can take a look to datasheet) What I'm trying to do is to get
GPIO running on PLD Linux with kernel 2.6.23.1.
Advantech brought some drivers, but they are binary verions compiled
against kernel 2.4.8-20 which makes them useless.
I compiled Ben Gardners CS5535/CS5536 driver, but got no results.
Here are the steps I took:
1. Compiled Ben's driver as module and loaded it - dmesg says that
base=0x6100 and major=253
2. Created device nodes under /dev/gpio:
   #mknod -m660 /dev/gpio/1 c 253 1
   ....
3. Wrote simple program to read/write GPIO registers. Reading /dev/gpio/1
gives following result:
0IoTPd, which means output value=0, input enabled, output disabled,
open-drain disabled, weak pull-up enabled, weak pull-down disabled.
I am able to disable input and enable output, but this is the only action
I can take. Every other gives no result, I mean, it seems like the new
values are not being written to registers.
If I write "1iOTPd", which means 1 as output, input disabled, output
enabled, there are no changes being made. I read the old value, which is
0IoTPd.
In AMD CS5563 Data Book I found register named GPIO Low Bank Lock Enable,
which purpose is to protect other registers against accidental changes. I
thought it may be the cause, but later found that there are already 0's,
so protection is disabled.
I almost forgot - the voltage level on GPIO pins is +5V, no matter if
particular GPIO is set as output or input.

Did anybody had similar problem?
Any help highly appreciated.

Martin
kurk@hell.net.pl