|
|
1.1 root 1: // Definitions for X86 CMOS non-volatile memory access.
2: //
3: // Copyright (C) 2008 Kevin O'Connor <[email protected]>
4: //
5: // This file may be distributed under the terms of the GNU LGPLv3 license.
6: #ifndef __CMOS_H
7: #define __CMOS_H
8:
9: #define CMOS_RTC_SECONDS 0x00
10: #define CMOS_RTC_SECONDS_ALARM 0x01
11: #define CMOS_RTC_MINUTES 0x02
12: #define CMOS_RTC_MINUTES_ALARM 0x03
13: #define CMOS_RTC_HOURS 0x04
14: #define CMOS_RTC_HOURS_ALARM 0x05
15: #define CMOS_RTC_DAY_WEEK 0x06
16: #define CMOS_RTC_DAY_MONTH 0x07
17: #define CMOS_RTC_MONTH 0x08
18: #define CMOS_RTC_YEAR 0x09
19: #define CMOS_STATUS_A 0x0a
20: #define CMOS_STATUS_B 0x0b
21: #define CMOS_STATUS_C 0x0c
22: #define CMOS_STATUS_D 0x0d
23: #define CMOS_RESET_CODE 0x0f
24: #define CMOS_FLOPPY_DRIVE_TYPE 0x10
25: #define CMOS_DISK_DATA 0x12
26: #define CMOS_EQUIPMENT_INFO 0x14
27: #define CMOS_DISK_DRIVE1_TYPE 0x19
28: #define CMOS_DISK_DRIVE2_TYPE 0x1a
29: #define CMOS_DISK_DRIVE1_CYL 0x1b
30: #define CMOS_DISK_DRIVE2_CYL 0x24
31: #define CMOS_MEM_EXTMEM_LOW 0x30
32: #define CMOS_MEM_EXTMEM_HIGH 0x31
33: #define CMOS_CENTURY 0x32
34: #define CMOS_MEM_EXTMEM2_LOW 0x34
35: #define CMOS_MEM_EXTMEM2_HIGH 0x35
36: #define CMOS_BIOS_BOOTFLAG1 0x38
37: #define CMOS_BIOS_DISKTRANSFLAG 0x39
38: #define CMOS_BIOS_BOOTFLAG2 0x3d
39: #define CMOS_MEM_HIGHMEM_LOW 0x5b
40: #define CMOS_MEM_HIGHMEM_MID 0x5c
41: #define CMOS_MEM_HIGHMEM_HIGH 0x5d
42: #define CMOS_BIOS_SMP_COUNT 0x5f
43:
44: // CMOS_FLOPPY_DRIVE_TYPE bitdefs
45: #define CFD_NO_DRIVE 0
46: #define CFD_360KB 1
47: #define CFD_12MB 2
48: #define CFD_720KB 3
49: #define CFD_144MB 4
50: #define CFD_288MB 5
51:
52: #ifndef __ASSEMBLY__
53:
54: #include "ioport.h" // inb, outb
55:
56: static inline u8
57: inb_cmos(u8 reg)
58: {
59: reg |= NMI_DISABLE_BIT;
60: outb(reg, PORT_CMOS_INDEX);
61: return inb(PORT_CMOS_DATA);
62: }
63:
64: static inline void
65: outb_cmos(u8 val, u8 reg)
66: {
67: reg |= NMI_DISABLE_BIT;
68: outb(reg, PORT_CMOS_INDEX);
69: outb(val, PORT_CMOS_DATA);
70: }
71:
72: #endif // !__ASSEMBLY__
73:
74: #endif // cmos.h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.