1 7c478bd9Sstevel@tonic-gate /* 2 7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3 7c478bd9Sstevel@tonic-gate * 4 7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5 *2df1fe9cSrandyf * Common Development and Distribution License (the "License"). 6 *2df1fe9cSrandyf * You may not use this file except in compliance with the License. 7 7c478bd9Sstevel@tonic-gate * 8 7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 10 7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 11 7c478bd9Sstevel@tonic-gate * and limitations under the License. 12 7c478bd9Sstevel@tonic-gate * 13 7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 14 7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 16 7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 17 7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 18 7c478bd9Sstevel@tonic-gate * 19 7c478bd9Sstevel@tonic-gate * CDDL HEADER END 20 7c478bd9Sstevel@tonic-gate */ 21 *2df1fe9cSrandyf 22 7c478bd9Sstevel@tonic-gate /* 23 *2df1fe9cSrandyf * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24 7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25 7c478bd9Sstevel@tonic-gate */ 26 7c478bd9Sstevel@tonic-gate 27 7c478bd9Sstevel@tonic-gate /* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ 28 7c478bd9Sstevel@tonic-gate 29 7c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */ 30 7c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 31 7c478bd9Sstevel@tonic-gate 32 7c478bd9Sstevel@tonic-gate #ifndef _SYS_RTC_H 33 7c478bd9Sstevel@tonic-gate #define _SYS_RTC_H 34 7c478bd9Sstevel@tonic-gate 35 7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 36 7c478bd9Sstevel@tonic-gate 37 7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 38 7c478bd9Sstevel@tonic-gate extern "C" { 39 7c478bd9Sstevel@tonic-gate #endif 40 7c478bd9Sstevel@tonic-gate 41 7c478bd9Sstevel@tonic-gate 42 7c478bd9Sstevel@tonic-gate /* 43 7c478bd9Sstevel@tonic-gate * Definitions for Real Time Clock driver (Motorola MC146818 chip). 44 7c478bd9Sstevel@tonic-gate */ 45 7c478bd9Sstevel@tonic-gate 46 7c478bd9Sstevel@tonic-gate /* 47 7c478bd9Sstevel@tonic-gate * MP NOTE: 48 7c478bd9Sstevel@tonic-gate * cmos_lck must be locked when addressing CMOS via 49 7c478bd9Sstevel@tonic-gate * RTC_ADDR and RTC_DATA i/o addresses 50 7c478bd9Sstevel@tonic-gate */ 51 7c478bd9Sstevel@tonic-gate #define RTC_ADDR 0x70 /* I/O port address of for register select */ 52 7c478bd9Sstevel@tonic-gate #define RTC_DATA 0x71 /* I/O port address for data read/write */ 53 7c478bd9Sstevel@tonic-gate 54 7c478bd9Sstevel@tonic-gate /* 55 7c478bd9Sstevel@tonic-gate * Register A definitions 56 7c478bd9Sstevel@tonic-gate */ 57 7c478bd9Sstevel@tonic-gate #define RTC_A 0x0a /* register A address */ 58 7c478bd9Sstevel@tonic-gate #define RTC_UIP 0x80 /* Update in progress bit */ 59 7c478bd9Sstevel@tonic-gate #define RTC_DIV0 0x00 /* Time base of 4.194304 MHz */ 60 7c478bd9Sstevel@tonic-gate #define RTC_DIV1 0x10 /* Time base of 1.048576 MHz */ 61 7c478bd9Sstevel@tonic-gate #define RTC_DIV2 0x20 /* Time base of 32.768 KHz */ 62 7c478bd9Sstevel@tonic-gate #define RTC_RATE6 0x06 /* interrupt rate of 976.562 */ 63 7c478bd9Sstevel@tonic-gate 64 7c478bd9Sstevel@tonic-gate /* 65 7c478bd9Sstevel@tonic-gate * Register B definitions 66 7c478bd9Sstevel@tonic-gate */ 67 7c478bd9Sstevel@tonic-gate #define RTC_B 0x0b /* register B address */ 68 7c478bd9Sstevel@tonic-gate #define RTC_SET 0x80 /* stop updates for time set */ 69 7c478bd9Sstevel@tonic-gate #define RTC_PIE 0x40 /* Periodic interrupt enable */ 70 7c478bd9Sstevel@tonic-gate #define RTC_AIE 0x20 /* Alarm interrupt enable */ 71 7c478bd9Sstevel@tonic-gate #define RTC_UIE 0x10 /* Update ended interrupt enable */ 72 7c478bd9Sstevel@tonic-gate #define RTC_SQWE 0x08 /* Square wave enable */ 73 7c478bd9Sstevel@tonic-gate #define RTC_DM 0x04 /* Date mode, 1 = binary, 0 = BCD */ 74 7c478bd9Sstevel@tonic-gate #define RTC_HM 0x02 /* hour mode, 1 = 24 hour, 0 = 12 hour */ 75 7c478bd9Sstevel@tonic-gate #define RTC_DSE 0x01 /* Daylight savings enable */ 76 7c478bd9Sstevel@tonic-gate 77 7c478bd9Sstevel@tonic-gate /* 78 7c478bd9Sstevel@tonic-gate * Register C definitions 79 7c478bd9Sstevel@tonic-gate */ 80 7c478bd9Sstevel@tonic-gate #define RTC_C 0x0c /* register C address */ 81 7c478bd9Sstevel@tonic-gate #define RTC_IRQF 0x80 /* IRQ flag */ 82 7c478bd9Sstevel@tonic-gate #define RTC_PF 0x40 /* PF flag bit */ 83 7c478bd9Sstevel@tonic-gate #define RTC_AF 0x20 /* AF flag bit */ 84 7c478bd9Sstevel@tonic-gate #define RTC_UF 0x10 /* UF flag bit */ 85 7c478bd9Sstevel@tonic-gate 86 7c478bd9Sstevel@tonic-gate /* 87 7c478bd9Sstevel@tonic-gate * Register D definitions 88 7c478bd9Sstevel@tonic-gate */ 89 7c478bd9Sstevel@tonic-gate #define RTC_D 0x0d /* register D address */ 90 7c478bd9Sstevel@tonic-gate #define RTC_VRT 0x80 /* Valid RAM and time bit */ 91 7c478bd9Sstevel@tonic-gate 92 7c478bd9Sstevel@tonic-gate #define RTC_NREG 0x0e /* number of RTC registers */ 93 *2df1fe9cSrandyf #define RTC_NREGP 0x0c /* number of RTC registers to set time */ 94 7c478bd9Sstevel@tonic-gate #define RTC_CENTURY 0x32 /* not included in RTC_NREG(P) */ 95 7c478bd9Sstevel@tonic-gate 96 7c478bd9Sstevel@tonic-gate /* 97 7c478bd9Sstevel@tonic-gate * Ioctl definitions for accessing RTC. 98 7c478bd9Sstevel@tonic-gate */ 99 7c478bd9Sstevel@tonic-gate #define RTCIOC ('R' << 8) 100 7c478bd9Sstevel@tonic-gate 101 7c478bd9Sstevel@tonic-gate #define RTCRTIME (RTCIOC | 0x01) /* Read time from RTC */ 102 7c478bd9Sstevel@tonic-gate #define RTCSTIME (RTCIOC | 0x02) /* Set time into RTC */ 103 7c478bd9Sstevel@tonic-gate 104 7c478bd9Sstevel@tonic-gate struct rtc_t { /* registers 0x0 to 0xD, 0x32 */ 105 7c478bd9Sstevel@tonic-gate unsigned char rtc_sec; 106 7c478bd9Sstevel@tonic-gate unsigned char rtc_asec; 107 7c478bd9Sstevel@tonic-gate unsigned char rtc_min; 108 7c478bd9Sstevel@tonic-gate unsigned char rtc_amin; 109 7c478bd9Sstevel@tonic-gate unsigned char rtc_hr; 110 7c478bd9Sstevel@tonic-gate unsigned char rtc_ahr; 111 7c478bd9Sstevel@tonic-gate unsigned char rtc_dow; 112 7c478bd9Sstevel@tonic-gate unsigned char rtc_dom; 113 7c478bd9Sstevel@tonic-gate unsigned char rtc_mon; 114 7c478bd9Sstevel@tonic-gate unsigned char rtc_yr; 115 7c478bd9Sstevel@tonic-gate unsigned char rtc_statusa; 116 7c478bd9Sstevel@tonic-gate unsigned char rtc_statusb; 117 7c478bd9Sstevel@tonic-gate unsigned char rtc_statusc; 118 7c478bd9Sstevel@tonic-gate unsigned char rtc_statusd; 119 7c478bd9Sstevel@tonic-gate unsigned char rtc_century; /* register 0x32 */ 120 *2df1fe9cSrandyf unsigned char rtc_adom; /* ACPI-provided day alarm */ 121 *2df1fe9cSrandyf unsigned char rtc_amon; /* ACPI-provided mon alarm */ 122 7c478bd9Sstevel@tonic-gate }; 123 7c478bd9Sstevel@tonic-gate 124 7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 125 7c478bd9Sstevel@tonic-gate } 126 7c478bd9Sstevel@tonic-gate #endif 127 7c478bd9Sstevel@tonic-gate 128 7c478bd9Sstevel@tonic-gate #endif /* _SYS_RTC_H */ 129