Hello Wolfgang, Wolfgang Denk wrote: > Dear Alessandro Rubini, > > In message <cover.1247999841.git.rub...@unipv.it> you wrote: >> To use soft_i2c I need to define some macros in the config file. >> Instead of writing hard numbers there I called the gpio functions, but >> the config file is inluded from asm sources as well. I don't think my >> approach is beautiful at all (both #ifndef __ASSEMBLY__ and #include >> "../board/"), but I didn't find a better solution. > > Agreed. It's a bit intricate to get this done, but I don't see a > better way either.
Hmm.. maybe my previous patch is a better solution? >> I would like to add a gpio command, and I've found no generic gpio >> stuff. Only one board (cm-bf527) has a gpio commands, but quite a few >> have similar commands to set leds or other bits. Is time ripe for a >> generic gpio driver with board-specific limits and operations? Would >> that be interesting for u-boot-next? Should I process with a board-specific >> gpio command by now? > > Well, my opinion on that is a clear "yes, but..." :-) > > Yes, some generic gpio framework would be nice - for example, if it > would allow us to get rid of the 14 largely similar "led.c" files, to > name just one. > > On the other hand, the design of such a framework should be lean and > not necessarily try to cover 100% of all possible use cases - I'd > rather have a small and beautiful solution that covers 90% of the > cases and use board-specific exceptions where really needed, instead > of a fat thing that solves each and every problem but costs 50 kB. Agreed. So we need an gpio_core.c / .h which defines the following functions (just a proposal): 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); bye Heiko _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot