diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2014-06-04 10:43:37 -0700 |
---|---|---|
committer | Marc Jones <marc.jones@se-eng.com> | 2015-01-06 16:56:32 +0100 |
commit | bc8b4fad1eae6b97b23304871fcdee43c8f360f1 (patch) | |
tree | 38439b3da948e85830fb2bc197952914740df1fc /payloads/libpayload | |
parent | b7f82e9559ae7a002330183affc285d6dd0abd1a (diff) | |
download | coreboot-bc8b4fad1eae6b97b23304871fcdee43c8f360f1.tar.xz |
libpayload: Introduce bit manipulation macros
Some drivers being ported to depthcharge use io bit manipulation
macros. The libpayload include file seems the most appropriate place
to keep these macros in. There is no common io.h file across
architectures, the x86 version could be added later if required.
BUG=chrome-os-partner:27784
TEST=observed ipq806x SPI driver deptcharge port (WIP) compile properly.
Original-Change-Id: I33f3be072faefce293c871f7e3bc3b2e6bc38ffe
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/202559
Original-Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Original-Reviewed-by: Trevor Bourget <tbourget@codeaurora.org>
(cherry picked from commit ad18a605b4d0ec3251c1614e7358b42aa6b5c45a)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>
Change-Id: I8656e12af20ce4cf11d771942e8fe7d4eb2a560d
Reviewed-on: http://review.coreboot.org/8062
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'payloads/libpayload')
-rw-r--r-- | payloads/libpayload/include/arm/arch/io.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/payloads/libpayload/include/arm/arch/io.h b/payloads/libpayload/include/arm/arch/io.h index 8948e133ef..5cb66dcd69 100644 --- a/payloads/libpayload/include/arm/arch/io.h +++ b/payloads/libpayload/include/arm/arch/io.h @@ -73,4 +73,17 @@ static inline void writel(uint32_t _v, volatile void *_a) dmb(); } +/* + * Handy bit manipulation macros, BE version will have to be added when/if + * needed. + */ + +#ifdef CONFIG_LP_LITTLE_ENDIAN +#define clrsetbits_le32(addr, clear, set) writel((readl(addr) & ~(clear)) |\ + (set), (addr)) +#define setbits_le32(addr, set) writel(readl(addr) | (set), (addr)) +#define clrbits_le32(addr, clear) writel(readl(addr) & ~(clear), (addr)) #endif + +#endif + |