Small GPIO driver that exports a few pins using a virtual file system. Currently the two user leds and the user button are exported. Change-Id: I001d017ae27cd17b635587873f7da981054da459
31 lines
618 B
C
31 lines
618 B
C
#define REG(x)(*((volatile uint32_t *)(x)))
|
|
#define BIT(x)(0x1 << x)
|
|
|
|
/* Write a uint32_t value to a memory address. */
|
|
static inline void
|
|
write32(uint32_t address, uint32_t value)
|
|
{
|
|
REG(address) = value;
|
|
}
|
|
|
|
/* Read an uint32_t from a memory address */
|
|
static inline uint32_t
|
|
read32(uint32_t address)
|
|
{
|
|
|
|
return REG(address);
|
|
}
|
|
|
|
/* Set a 32 bits value depending on a mask */
|
|
static inline void
|
|
set32(uint32_t address, uint32_t mask, uint32_t value)
|
|
{
|
|
uint32_t val;
|
|
val = read32(address);
|
|
/* clear the bits */
|
|
val &= ~(mask);
|
|
/* apply the value using the mask */
|
|
val |= (value & mask);
|
|
write32(address, val);
|
|
}
|