3357fcb24a
* Generalize GPIO handling. * Add libs to configure gpio's clocks and pads * Add Interrupt handling. * Introduce mmio.h and log.h Change-Id: I928e4c807d15031de2eede4b3ecff62df795f8ac
33 lines
680 B
C
33 lines
680 B
C
#ifndef __MMIO_H__
|
|
#define __MMIO_H__
|
|
|
|
#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);
|
|
}
|
|
#endif /* __MMIO_H__ */
|