diff options
author | Eric Norum <WENorum@lbl.gov> | 2004-10-11 15:00:23 +0000 |
---|---|---|
committer | Eric Norum <WENorum@lbl.gov> | 2004-10-11 15:00:23 +0000 |
commit | 29322a8d3df22392135993e7feeab1dd6f847e85 (patch) | |
tree | 8e1578e2d571ae4123d87384d03baf912d625ac9 /c/src/libchip/rtc/mc146818a_ioreg.c | |
parent | 2004-10-11 Ralf Corsepius <ralf_corsepius@rtems.org> (diff) | |
download | rtems-29322a8d3df22392135993e7feeab1dd6f847e85.tar.bz2 |
Add libchip driver for Motorola MC146818A time-of-day clock chip.
Modify i386/pc386 BSP to use this driver.
Diffstat (limited to 'c/src/libchip/rtc/mc146818a_ioreg.c')
-rw-r--r-- | c/src/libchip/rtc/mc146818a_ioreg.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/c/src/libchip/rtc/mc146818a_ioreg.c b/c/src/libchip/rtc/mc146818a_ioreg.c new file mode 100644 index 0000000000..0ccd398c9d --- /dev/null +++ b/c/src/libchip/rtc/mc146818a_ioreg.c @@ -0,0 +1,45 @@ +/* + * This file contains a typical set of register access routines which may be + * used with the MC146818A chip if accesses to the chip are as follows: + * + * + registers are in I/O space + * + registers are accessed as bytes + * + registers are only byte-aligned (no address gaps) + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include <rtems.h> +#include <bsp.h> + +unsigned32 mc146818a_get_register( + unsigned32 ulCtrlPort, + unsigned8 ucRegNum +) +{ + unsigned8 val; + unsigned8 tmp; + + outport_byte( ulCtrlPort, ucRegNum ); + inport_byte( 0x84, tmp ); /* Hack a delay to give chip time to settle */ + inport_byte( ulCtrlPort+1, val ); + inport_byte( 0x84, tmp ); /* Hack a delay to give chip time to settle */ + return val; +} + +void mc146818a_set_register( + unsigned32 ulCtrlPort, + unsigned8 ucRegNum, + unsigned32 ucData +) +{ + outport_byte( ulCtrlPort, ucRegNum ); + outport_byte( ulCtrlPort+1, (unsigned8)ucData ); +} |