1 1.2 thorpej /* $NetBSD: clockreg.h,v 1.2 2003/01/18 06:09:55 thorpej Exp $ */ 2 1.1 dbj /* 3 1.1 dbj * Copyright (c) 1997 Rolf Grossmann 4 1.1 dbj * All rights reserved. 5 1.1 dbj * 6 1.1 dbj * Redistribution and use in source and binary forms, with or without 7 1.1 dbj * modification, are permitted provided that the following conditions 8 1.1 dbj * are met: 9 1.1 dbj * 1. Redistributions of source code must retain the above copyright 10 1.1 dbj * notice, this list of conditions and the following disclaimer. 11 1.1 dbj * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 dbj * notice, this list of conditions and the following disclaimer in the 13 1.1 dbj * documentation and/or other materials provided with the distribution. 14 1.1 dbj * 3. All advertising materials mentioning features or use of this software 15 1.1 dbj * must display the following acknowledgement: 16 1.1 dbj * This product includes software developed by Rolf Grossmann. 17 1.1 dbj * 4. The name of the author may not be used to endorse or promote products 18 1.1 dbj * derived from this software without specific prior written permission 19 1.1 dbj * 20 1.1 dbj * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 21 1.1 dbj * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22 1.1 dbj * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23 1.1 dbj * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 24 1.1 dbj * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 25 1.1 dbj * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 1.1 dbj * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 1.1 dbj * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 1.1 dbj * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29 1.1 dbj * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 1.1 dbj */ 31 1.1 dbj 32 1.1 dbj /* 33 1.1 dbj * NeXT clock registers 34 1.1 dbj */ 35 1.1 dbj 36 1.1 dbj struct scr2 { /* zeroed at power-on, read/write */ 37 1.1 dbj u_int s_dsp_reset : 1, 38 1.1 dbj s_dsp_block_end : 1, 39 1.1 dbj s_dsp_unpacked : 1, 40 1.1 dbj s_dsp_mode_B : 1, 41 1.1 dbj s_dsp_mode_A : 1, 42 1.1 dbj s_remote_int : 1, 43 1.1 dbj s_local_int : 2, /* in fact :1 reserved and :1 local_int? */ 44 1.1 dbj s_dram_256K : 4, 45 1.1 dbj s_dram_1M : 4, 46 1.1 dbj s_timer_on_ipl7 : 1, 47 1.1 dbj s_rom_wait_states : 3, 48 1.1 dbj s_rom_1M : 1, 49 1.1 dbj s_rtdata : 1, 50 1.1 dbj s_rtclk : 1, 51 1.1 dbj s_rtce : 1, 52 1.1 dbj s_rom_overlay : 1, 53 1.1 dbj s_dsp_int_en : 1, 54 1.1 dbj s_dsp_mem_en : 1, 55 1.1 dbj s_reserved : 4, 56 1.1 dbj s_led : 1; 57 1.1 dbj }; 58 1.1 dbj 59 1.1 dbj #define SCR2_DSP_RESET 0x80000000 60 1.1 dbj #define SCR2_DSP_BLOCK_END 0x40000000 61 1.1 dbj #define SCR2_DSP_UNPACKED 0x20000000 62 1.1 dbj #define SCR2_DSP_MODE_B 0x10000000 63 1.1 dbj #define SCR2_DSP_MODE_A 0x08000000 64 1.1 dbj #define SCR2_REMOTE_INT 0x04000000 65 1.1 dbj #define SCR2_LOCAL_INT 0x01000000 66 1.1 dbj #define SCR2_DRAM_256K 0x00100000 67 1.1 dbj #define SCR2_DRAM_1M 0x00010000 68 1.1 dbj #define SCR2_TIMER_ON_IPL7 0x00008000 69 1.1 dbj #define SCR2_ROM_WAITSTATES 0x00007000 70 1.1 dbj #define SCR2_ROM_1M 0x00000800 71 1.1 dbj #define SCR2_RTDATA 0x00000400 72 1.1 dbj #define SCR2_RTCLK 0x00000200 73 1.1 dbj #define SCR2_RTCE 0x00000100 74 1.1 dbj #define SCR2_ROM_OVERLAY 0x00000080 75 1.1 dbj #define SCR2_DSP_IE 0x00000040 76 1.1 dbj #define SCR2_MEM_EN 0x00000020 77 1.1 dbj #define SCR2_LED 0x00000001 78 1.1 dbj 79 1.1 dbj /* real time clock -- old is MC68HC68T1 chip, new is MCS1850 chip */ 80 1.1 dbj #define RTC_RAM 0x00 /* both */ 81 1.1 dbj #define RTC_SEC 0x20 /* old BCD coded date*/ 82 1.1 dbj #define RTC_MIN 0x21 83 1.1 dbj #define RTC_HRS 0x22 84 1.1 dbj #define RTC_DAY 0x23 85 1.1 dbj #define RTC_DATE 0x24 86 1.1 dbj #define RTC_MON 0x25 87 1.1 dbj #define RTC_YR 0x26 88 1.1 dbj #define RTC_ALARM_SEC 0x28 89 1.1 dbj #define RTC_ALARM_MIN 0x29 90 1.1 dbj #define RTC_ALARM_HR 0x2a 91 1.1 dbj 92 1.1 dbj #define RTC_CNTR0 0x20 /* new */ 93 1.1 dbj #define RTC_CNTR1 0x21 94 1.1 dbj #define RTC_CNTR2 0x22 95 1.1 dbj #define RTC_CNTR3 0x23 96 1.1 dbj #define RTC_ALARM0 0x24 97 1.1 dbj #define RTC_ALARM1 0x25 98 1.1 dbj #define RTC_ALARM2 0x26 99 1.1 dbj #define RTC_ALARM3 0x27 100 1.1 dbj 101 1.1 dbj #define RTC_STATUS 0x30 /* both */ 102 1.1 dbj #define RTC_CONTROL 0x31 /* both */ 103 1.1 dbj #define RTC_INTRCTL 0x32 /* old */ 104 1.1 dbj 105 1.1 dbj /* bits in RTC_STATUS */ 106 1.1 dbj #define RTC_NEW_CLOCK 0x80 /* new: set in new clock chip */ 107 1.1 dbj #define RTC_FTU 0x10 /* both: set when powered up but uninitialized */ 108 1.1 dbj #define RTC_INTR 0x08 /* new: interrupt asserted */ 109 1.1 dbj #define RTC_LOW_BATT 0x04 /* new: low battery */ 110 1.1 dbj #define RTC_ALARM 0x02 /* new: alarm interrupt */ 111 1.1 dbj #define RTC_RPD 0x01 /* new: request to power down */ 112 1.1 dbj 113 1.1 dbj /* bits in RTC_CONTROL */ 114 1.1 dbj #define RTC_START 0x80 /* both: start counters */ 115 1.1 dbj #define RTC_STOP 0x00 /* both: stop counters */ 116 1.1 dbj #define RTC_XTAL 0x30 /* old: xtal: line = 0, sel0 = sel1 = 1 */ 117 1.1 dbj #define RTC_AUTO_PON 0x20 /* new: auto poweron after power fail */ 118 1.1 dbj #define RTC_AE 0x10 /* new: alarm enable */ 119 1.1 dbj #define RTC_AC 0x08 /* new: alarm clear */ 120 1.1 dbj #define RTC_FTUC 0x04 /* new: first time up clear */ 121 1.1 dbj #define RTC_LBE 0x02 /* new: low battery enable */ 122 1.1 dbj #define RTC_RPDC 0x01 /* new: request to power down clear */ 123 1.1 dbj 124 1.1 dbj /* bits in RTC_INTRCTL */ 125 1.1 dbj #define RTC_PDOWN 0x40 /* both: power down, bit in RTC_CONTROL on new chip */ 126 1.1 dbj #define RTC_64HZ 0x06 /* old: periodic select = 64 Hz */ 127 1.1 dbj #define RTC_128HZ 0x05 /* old: periodic select = 128 Hz */ 128 1.1 dbj #define RTC_512HZ 0x03 /* old: periodic select = 512 Hz */ 129 1.1 dbj 130 1.1 dbj /* RTC address byte format */ 131 1.1 dbj #define RTC_WRITE 0x80 132 1.1 dbj #define RTC_ADRS 0x3f 133 1.1 dbj 134 1.1 dbj 135 1.1 dbj struct timer_reg { 136 1.1 dbj u_char msb; 137 1.1 dbj u_char lsb; 138 1.1 dbj u_char pad0; 139 1.1 dbj u_char pad1; 140 1.1 dbj u_char csr; 141 1.1 dbj }; 142 1.1 dbj 143 1.1 dbj /* timer register */ 144 1.2 thorpej #define TIMER_REG_ENABLE 0x80 145 1.2 thorpej #define TIMER_REG_UPDATE 0x40 146 1.2 thorpej #define TIMER_REG_MAX 0xffff /* Maximum value of timer */ 147