Subject: Query on direction_output fn of PL061 GPIO driver.

From: [email-masked] (Viresh KUMAR)
Date: Tue, 13 Apr 2010 17:10:41 +0530

On 4/13/2010 5:02 PM, Baruch Siach wrote:
>> > In current implementation, firstly value of GPIO pin is modified and then its
>> > direction is set to OUT. In our SOCs (ST SPEAr), this implementation doesn't
>> > work correctly (we have pl061 in our soc). Suppose previously pin is in IN mode,
>> > now writing val to it doesn't change anything because it is in IN mode and we
>> > can write to a pin only when it is in OUT mode. Now if its direction is
>> > changed to OUT then also its value will remain same and will not be changed to
>> > what we wanted.
>> > 
>> > Am i missing something?
> Probably not. This is a design bug in the PL061 hardware. Changing the 
> direction before the value makes the output value of the GPIO undefined 
> (apparently 0) for a short period of time. This is bad news for some 
> applications.
> 

thanks for your prompt reply.
Ok. so this may cause problem on the board. 
Anyway if this is the issue, then writing value to val register has no effects.

> Anyway, the right thing to do here is to reverse do just that, since the 
> current way of doing things is broken.

I didn't get it completely. If i got it correctly, maybe myself or you can just
send a patch to reverse this, i.e. writing val and setting direction.
Am i correct?

regards,
viresh kumar.