summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2011-09-26 13:24:40 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-03-28 21:35:10 +0200
commit654f2934653ee5ca4bd43217abbc49a9140c8ad0 (patch)
tree3a3e23df89dcbfbdc707aa6df3682609b8f0e114 /src
parent9ec8ed8a40c5c5aff8053693dd2ecd403034605b (diff)
Add cmos helper functions for reading/writing a dword
These get used later for saving/restoring the MRC scrambler seed values on each boot. Change-Id: I6e23f17649bea6d22c4b279ed8d0e5cb6c0885e7 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: http://review.coreboot.org/717 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src')
-rw-r--r--src/include/pc80/mc146818rtc.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/include/pc80/mc146818rtc.h b/src/include/pc80/mc146818rtc.h
index 3e5a61a706..24dac2c098 100644
--- a/src/include/pc80/mc146818rtc.h
+++ b/src/include/pc80/mc146818rtc.h
@@ -104,6 +104,22 @@ static inline void cmos_write(unsigned char val, unsigned char addr)
outb(addr, RTC_BASE_PORT + offs + 0);
outb(val, RTC_BASE_PORT + offs + 1);
}
+
+static inline u32 cmos_read32(u8 offset)
+{
+ u32 value = 0;
+ u8 i;
+ for (i = 0; i < sizeof(value); ++i)
+ value |= cmos_read(offset + i) << (i << 3);
+ return value;
+}
+
+static inline void cmos_write32(u8 offset, u32 value)
+{
+ u8 i;
+ for (i = 0; i < sizeof(value); ++i)
+ cmos_write((value >> (i << 3)) & 0xff, offset + i);
+}
#endif
#if !defined(__ROMCC__)