1 /* $NetBSD: tx39timerreg.h,v 1.4 2000/09/28 16:18:26 uch Exp $ */ 2 3 /*- 4 * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by UCHIYAMA Yasushi. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by the NetBSD 21 * Foundation, Inc. and its contributors. 22 * 4. Neither the name of The NetBSD Foundation nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 */ 38 39 /* 40 * Toshiba TX3912/3922 Timer module 41 */ 42 #define TX39_TIMERRTCHI_REG 0x140 43 #define TX39_TIMERRTCLO_REG 0x144 44 #define TX39_TIMERALARMHI_REG 0x148 45 #define TX39_TIMERALARMLO_REG 0x14C 46 #define TX39_TIMERCONTROL_REG 0x150 47 #define TX39_TIMERPERIODIC_REG 0x154 48 49 /* Periodic timer (1.15MHz) */ 50 #ifdef TX391X 51 /* 52 * TX3912 base clock is 36.864MHz 53 */ 54 #define TX39_TIMERCLK 1152000 55 #endif 56 #ifdef TX392X 57 /* 58 * TX3922 base clock seems to be 32.25MHz (Telios) 59 */ 60 #define TX39_TIMERCLK 1007812 61 #endif 62 63 /* Real timer clock (32.768kHz) */ 64 #define TX39_RTCLOCK 32768 65 #define TX39_MSEC2RTC(m) ((TX39_RTCLOCK * (m)) / 1000) 66 67 /* 68 * RTC Register High/Low 69 */ 70 /* R */ 71 #define TX39_TIMERRTCHI_SHIFT 0 72 #ifdef TX391X 73 #define TX39_TIMERRTCHI_MASK 0xff 74 #endif /* TX391X */ 75 #ifdef TX392X 76 #define TX39_TIMERRTCHI_MASK 0x7ff 77 #endif /* TX392X */ 78 79 #define TX39_TIMERRTCHI(cr) ((cr) & TX39_TIMERRTCHI_MASK) 80 81 /* 82 * Alarm Register High/Low 83 */ 84 /* R/W */ 85 #ifdef TX391X /* 40bit */ 86 #define TX39_TIMERALARMHI_SHIFT 0 87 #define TX39_TIMERALARMHI_MASK 0xff 88 #endif /* TX391X */ 89 #ifdef TX392X /* 43bit */ 90 #define TX39_TIMERALARMHI_SHIFT 0 91 #define TX39_TIMERALARMHI_MASK 0x7ff 92 #endif /* TX392X */ 93 94 #define TX39_TIMERALARMHI(cr) ((cr) & TX39_TIMERALARMHI_MASK) 95 96 /* 97 * Timer Control Register 98 */ 99 #define TX39_TIMERCONTROL_FREEZEPRE 0x00000080 100 #define TX39_TIMERCONTROL_FREEZERTC 0x00000040 101 #define TX39_TIMERCONTROL_FREEZETIMER 0x00000020 102 #define TX39_TIMERCONTROL_ENPERTIMER 0x00000010 103 #define TX39_TIMERCONTROL_RTCCLR 0x00000008 104 #define TX39_TIMERCONTROL_TESTCMS 0x00000004 /* Don't set */ 105 #define TX39_TIMERCONTROL_ENTESTCLK 0x00000002 /* Don't set */ 106 #define TX39_TIMERCONTROL_ENRTCTST 0x00000001 107 108 /* 109 * Periodic Timer Register 110 */ 111 /* R */ 112 #define TX39_TIMERPERIODIC_PERCNT_SHIFT 15 113 #define TX39_TIMERPERIODIC_PERCNT_MASK 0xffff 114 #define TX39_TIMERPERIODIC_PERCNT(cr) \ 115 (((cr) >> TX39_TIMERPERIODIC_PERCNT_SHIFT) & \ 116 TX39_TIMERPERIODIC_PERCNT_MASK) 117 /* R/W */ 118 #define TX39_TIMERPERIODIC_PERVAL_SHIFT 0 119 #define TX39_TIMERPERIODIC_PERVAL_MASK 0xffff 120 #define TX39_TIMERPERIODIC_PERVAL(cr) \ 121 (((cr) >> TX39_TIMERPERIODIC_PERVAL_SHIFT) & \ 122 TX39_TIMERPERIODIC_PERVAL_MASK) 123 #define TX39_TIMERPERIODIC_PERVAL_SET(cr, val) \ 124 ((cr) | (((val) << TX39_TIMERPERIODIC_PERVAL_SHIFT) & \ 125 (TX39_TIMERPERIODIC_PERVAL_MASK << TX39_TIMERPERIODIC_PERVAL_SHIFT))) 126 #define TX39_TIMERPERIODIC_PERVAL_CLR(cr) ((cr) &= \ 127 ~(TX39_TIMERPERIODIC_PERVAL_MASK << TX39_TIMERPERIODIC_PERVAL_SHIFT)) 128 #define TX39_TIMERPERIODIC_INTRRATE(val) \ 129 ((val) + 1)/TX39_TIMERCLK /* unit:Hz */ 130 131