On Mon, Jul 31, 2006 at 05:10:56PM +0100, Chris Boot wrote:My current idea is to divide the interfaces by GPIO device and port.
I've so far not seen a GPIO device that couldn't be divided into ports
of <= 32 bits. How wide can a 'port' actually become?
Not all GPIOs can be abstracted into "ports" in a sane way. For example,
the PXAs have something like 80 GPIOs, which might be randomly divided
into alternate functions and "real" GPIOs.
Somehow I think that a separate device/file for each pin or possibly
even port might not be a wise idea. For example, twiddling individual
pins on a GPIO when you connect an LCD, I2C, or SPI interface seems
extremely inefficient...
I think you have to take care about two things: a) a registration
infrastructure (which GPIO pin was requested, similar to mem and irq)
and b) an access API. For slow things like LEDs you might want to have
unified access functions, but for fast GPIOs (bitbanging i2c etc) you
want to directly manipulate the registers once you've requested them.