Hello Wolfgang, Wolfgang Denk wrote: > Dear Heiko Schocher, > > In message <4a6422fc.6030...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot