[U-Boot] [RFC] gpio command: return value on write, additional actions

Detlev Zundel dzu at denx.de
Thu Jul 7 12:15:12 CEST 2011


Hi Wolfgang,

> Dear Detlev Zundel,
>
> In message <m2aacrlsen.fsf at ohwell.denx.de> you wrote:
>> 
>> > I'd say clear/set/toggle are changeable, don't see any legit
>> > return-value-usage here. For 100% backward compatibility, one could
>> > leave them as they are and use 0|1 as new actions with return 0, as
>> > proposed.
>
> Hm... I think it would be beneficial to bee able to get information
> about the current settings. For "clear" and "set" the result is known,
> but for "toggle" it would be helpful if we returned the current port
> state.  Eventually we should add a "test" command (or "read" ?) that
> returns the current setting?

In general the "current state" actually are three things:

1. Port Mode: Disabled (i.e. not connected to an external pin), Input,
   Output
2. Port output value
3. (Actually read-in) input value

The current commands mix these aspects, i.e. they implicitely change the
port mode.  Differentiating between 2 and 3 will not always be possible
but is - I've seen that on e.g. an i.mx31.

>> > So these variants:
>> >   gpio clear|0 => set to output, write 0, return success
>> >   gpio set|1   => set to output, write 1, return success
>> >   gpio toggle  => (set to output), toggle output, return success
>> >   gpio input   => set to input, return pin value
>> >   gpio value   => return current pin/latch/whatever value
>> 
>> I'd propose to fix the commands to be sensible now.  Actually I believe
>> that they should not be in heavy use "in the wild" and so we should take
>> the opportunity and declare the current behaviour as buggy and fix it.
>> Rather now than later ;)
>
> Agreed.
>
>> Actually I would expect the "output" commands to return true when they
>> were able to do what was requestes from them, i.e. drive the requested
>> value to the output.  I guess this cannot be done in the general case,
>> but for a "weak output" that can be read back, this would be the most
>> sensible thing to do.
>
> For consistency I would prefer to have all commands return the same
> type of information, i. e. either an error status (like we do with all
> other commands - any result values would then have to be passed as
> environment settings), or we return the current port state (also for
> the "output" commands -  see my comments for "toggle").

Actually I would prefer to return an error status for all cases and
return "valuable information" in the environment so we can easily use it
subsequently.  As we do not have a back-tick operator in the shell, I
believe that return codes are only useful as error codes.

Cheers
  Detlev

-- 
``The number of UNIX installations has grown to 10,
with more expected.''     Unix Programmers Manual -- 1972
The number of UNIX variants has grown to dozens,
with more expected.                               -- 2001
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the U-Boot mailing list