I'm having a very similar problem with getting the PIO ports to work under uClinux.
I have the same basic problem. If I try to access the PIO by reading or writing to the memory location, pointed to by the pio struct, then nothing seems to happen. Monitoring the bit on the hardware side shows that it isn't toggling.
I also have had problems using the outl and inl functions. It warns that they are not defined, even though asm/io.h is included.
I little digging into asm/io.h shows that these inline macros aren't included, because their are behind an "#ifdef KERNEL".
Basically, I guess the code was written, so that these inline macros are only valid from kernel space.
So, getting back to direct access...
I have data cache, but was under the impression that setting the most significant bit of the address would force the data to ignore cache and go out to memory space, therefore hitting the PIO registers. Is this not the case?
Is there anything else that might be going wrong???