[U-Boot] [PATCH 0/2] arm nomadik: gpio and i2c
Heiko Schocher
hs at denx.de
Tue Jul 21 08:11:49 CEST 2009
Hello Wolfgang,
Wolfgang Denk wrote:
> Dear Heiko Schocher,
>
> In message <4A6422FC.6030508 at invitel.hu> you wrote:
>> typedef struct gpio_adapter {
>> int (*init_pin)(int pin);
>> int (*set)(int pin, value);
>> int (*get)(int pin);
>> int (*dir)(int pin, int direction);
>> int (*level)(int pin, int level);
>> }
>>
>> int gpio_init(gpio_adapter *adap);
>> int gpio_init_pin(pin);
>> ? maybe with setting a marker, that this pin is initialized,
>> so this can be checked in the above functions ... ?
>> int gpio_set(pin, value);
>> int gpio_get(pin);
>> int gpio_dir(pin, dir);
>> int gpio_level(pin, dir);
>
> What does "level" mean in this context?
Yesterday, when I emailed with Alessandro, it looked like, if we
call gpio_set(), we also set the direction to output, so I thought,
it would be nice to have a function which really just sets the value.
Now, I think, we should set the direction only with gpio_dir()
(if output also set the value).
And with gpio_set() we only set the output value, without switching
the direction ...
Or should we do allways a set direction, when calling gpio_set() ...?
> gpio_init_pin() and gpio_dir() seem to be redundant - or does pin
> initialization not include the setting of the direction (and, in case
> of an output pin, it's initial state) ?
Yes, you are right, also redundant.
> gpio_get() returns the current state of the pin?
Yep.
> gpio_set() returns the previous state of the pin? Or the new state?
> If it returns the new state, we could use value=1 to set a pin,
> value=0 to unset a pin, and value=-1 to just read it's value without
> changing it; then we could "#define gpio_get(pin) gpio_set(pin,-1)".
Yes, thats a good point.
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
More information about the U-Boot
mailing list