diff options
author | John Baldwin <jhb@FreeBSD.org> | 2006-05-11 22:25:28 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2006-05-11 22:25:28 +0000 |
commit | 67ab9fd759b279032e61486b28c4ad9b76885671 (patch) | |
tree | 6bbfedee6e27e3fe509c804c4418b1bccbdea4a7 /sys/dev/dec | |
parent | 70bc2d3f4f3e09fd2b114482657aa87c927bed44 (diff) | |
download | src-67ab9fd759b279032e61486b28c4ad9b76885671.tar.gz src-67ab9fd759b279032e61486b28c4ad9b76885671.zip |
First pass at removing Alpha kernel support.
Notes
Notes:
svn path=/head/; revision=158458
Diffstat (limited to 'sys/dev/dec')
-rw-r--r-- | sys/dev/dec/mc146818reg.h | 187 | ||||
-rw-r--r-- | sys/dev/dec/mcclock.c | 141 | ||||
-rw-r--r-- | sys/dev/dec/mcclock_if.m | 48 | ||||
-rw-r--r-- | sys/dev/dec/mcclockvar.h | 37 |
4 files changed, 0 insertions, 413 deletions
diff --git a/sys/dev/dec/mc146818reg.h b/sys/dev/dec/mc146818reg.h deleted file mode 100644 index 4a3df1c117b0..000000000000 --- a/sys/dev/dec/mc146818reg.h +++ /dev/null @@ -1,187 +0,0 @@ -/* $FreeBSD$ */ -/* $NetBSD: mc146818reg.h,v 1.2 1997/03/12 06:53:42 cgd Exp $ */ - -/*- - * Copyright (c) 1995 Carnegie-Mellon University. - * All rights reserved. - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -/* - * Definitions for the Motorola MC146818A Real Time Clock. - * They also apply for the (compatible) Dallas Semicontuctor DS1287A RTC. - * - * Though there are undoubtedly other (better) sources, this material was - * culled from the DEC "KN121 System Module Programmer's Reference - * Information." - * - * The MC146818A has 16 registers. The first 10 contain time-of-year - * and alarm data. The rest contain various control and status bits. - * - * To read or write the registers, one writes the register number to - * the RTC's control port, then either reads from or writes the new - * data to the RTC's data port. Since the locations of these ports - * and the method used to access them can be machine-dependent, the - * low-level details of reading and writing the RTC's registers are - * handled by machine-specific functions. - * - * The time-of-year and alarm data can be expressed in either binary - * or BCD, and they are selected by a bit in register B. - * - * The "hour" time-of-year and alarm fields can either be expressed in - * AM/PM format, or in 24-hour format. If AM/PM format is chosen, the - * hour fields can have the values: 1-12 and 81-92 (the latter being - * PM). If the 24-hour format is chosen, they can have the values - * 0-24. The hour format is selectable by a bit in register B. - * (XXX IS AM/PM MODE DESCRIPTION CORRECT?) - * - * It is assumed the if systems are going to use BCD (rather than - * binary) mode, or AM/PM hour format, they'll do the appropriate - * conversions in machine-dependent code. Also, if the clock is - * switched between BCD and binary mode, or between AM/PM mode and - * 24-hour mode, the time-of-day and alarm registers are NOT - * automatically reset; they must be reprogrammed with correct values. - */ - -/* - * The registers, and the bits within each register. - */ - -#define MC_SEC 0x0 /* Time of year: seconds (0-59) */ -#define MC_ASEC 0x1 /* Alarm: seconds */ -#define MC_MIN 0x2 /* Time of year: minutes (0-59) */ -#define MC_AMIN 0x3 /* Alarm: minutes */ -#define MC_HOUR 0x4 /* Time of year: hour (see above) */ -#define MC_AHOUR 0x5 /* Alarm: hour */ -#define MC_DOW 0x6 /* Time of year: day of week (1-7) */ -#define MC_DOM 0x7 /* Time of year: day of month (1-31) */ -#define MC_MONTH 0x8 /* Time of year: month (1-12) */ -#define MC_YEAR 0x9 /* Time of year: year in century (0-99) */ - -#define MC_REGA 0xa /* Control register A */ - -#define MC_REGA_RSMASK 0x0f /* Interrupt rate select mask (see below) */ -#define MC_REGA_DVMASK 0x70 /* Divisor select mask (see below) */ -#define MC_REGA_UIP 0x80 /* Update in progress; read only. */ - -#define MC_REGB 0xb /* Control register B */ - -#define MC_REGB_DSE 0x01 /* Daylight Savings Enable */ -#define MC_REGB_24HR 0x02 /* 24-hour mode (AM/PM mode when clear) */ -#define MC_REGB_BINARY 0x04 /* Binary mode (BCD mode when clear) */ -#define MC_REGB_SQWE 0x08 /* Square Wave Enable */ -#define MC_REGB_UIE 0x10 /* Update End interrupt enable */ -#define MC_REGB_AIE 0x20 /* Alarm interrupt enable */ -#define MC_REGB_PIE 0x40 /* Periodic interrupt enable */ -#define MC_REGB_SET 0x80 /* Allow time to be set; stops updates */ - -#define MC_REGC 0xc /* Control register C */ - -/* MC_REGC_UNUSED 0x0f UNUSED */ -#define MC_REGC_UF 0x10 /* Update End interrupt flag */ -#define MC_REGC_AF 0x20 /* Alarm interrupt flag */ -#define MC_REGC_PF 0x40 /* Periodic interrupt flag */ -#define MC_REGC_IRQF 0x80 /* Interrupt request pending flag */ - -#define MC_REGD 0xd /* Control register D */ - -/* MC_REGD_UNUSED 0x7f UNUSED */ -#define MC_REGD_VRT 0x80 /* Valid RAM and Time bit */ - - -#define MC_NREGS 0xe /* 14 registers; CMOS follows */ -#define MC_NTODREGS 0xa /* 10 of those regs are for TOD and alarm */ - -#define MC_NVRAM_START 0xe /* start of NVRAM: offset 14 */ -#define MC_NVRAM_SIZE 50 /* 50 bytes of NVRAM */ - -/* - * Periodic Interrupt Rate Select constants (Control register A) - */ -#define MC_RATE_NONE 0x0 /* No periodic interrupt */ -#define MC_RATE_1 0x1 /* 256 Hz if MC_BASE_32_KHz, else 32768 Hz */ -#define MC_RATE_2 0x2 /* 128 Hz if MC_BASE_32_KHz, else 16384 Hz */ -#define MC_RATE_8192_Hz 0x3 /* 122.070 us period */ -#define MC_RATE_4096_Hz 0x4 /* 244.141 us period */ -#define MC_RATE_2048_Hz 0x5 /* 488.281 us period */ -#define MC_RATE_1024_Hz 0x6 /* 976.562 us period */ -#define MC_RATE_512_Hz 0x7 /* 1.953125 ms period */ -#define MC_RATE_256_Hz 0x8 /* 3.90625 ms period */ -#define MC_RATE_128_Hz 0x9 /* 7.8125 ms period */ -#define MC_RATE_64_Hz 0xa /* 15.625 ms period */ -#define MC_RATE_32_Hz 0xb /* 31.25 ms period */ -#define MC_RATE_16_Hz 0xc /* 62.5 ms period */ -#define MC_RATE_8_Hz 0xd /* 125 ms period */ -#define MC_RATE_4_Hz 0xe /* 250 ms period */ -#define MC_RATE_2_Hz 0xf /* 500 ms period */ - -/* - * Time base (divisor select) constants (Control register A) - */ -#define MC_BASE_4_MHz 0x00 /* 4MHz crystal */ -#define MC_BASE_1_MHz 0x10 /* 1MHz crystal */ -#define MC_BASE_32_KHz 0x20 /* 32KHz crystal */ -#define MC_BASE_NONE 0x60 /* actually, both of these reset */ -#define MC_BASE_RESET 0x70 - -/* - * A collection of TOD/Alarm registers. - */ -typedef u_int mc_todregs[MC_NTODREGS]; - -/* - * Get all of the TOD/Alarm registers - * Must be called at splhigh(), and with the RTC properly set up. - */ -#define MC146818_GETTOD(dev, regs) \ - do { \ - int i; \ - \ - /* update in progress; spin loop */ \ - while (MCCLOCK_READ(dev, MC_REGA) & MC_REGA_UIP) \ - ; \ - \ - /* read all of the tod/alarm regs */ \ - for (i = 0; i < MC_NTODREGS; i++) \ - (*regs)[i] = MCCLOCK_READ(dev, i); \ - } while (0); - -/* - * Set all of the TOD/Alarm registers - * Must be called at splhigh(), and with the RTC properly set up. - */ -#define MC146818_PUTTOD(dev, regs) \ - do { \ - int i; \ - \ - /* stop updates while setting */ \ - MCCLOCK_WRITE(dev, MC_REGB, \ - MCCLOCK_READ(dev, MC_REGB) | MC_REGB_SET); \ - \ - /* write all of the tod/alarm regs */ \ - for (i = 0; i < MC_NTODREGS; i++) \ - MCCLOCK_WRITE(dev, i, (*regs)[i]); \ - \ - /* reenable updates */ \ - MCCLOCK_WRITE(dev, MC_REGB, \ - MCCLOCK_READ(dev, MC_REGB) & ~MC_REGB_SET); \ - } while (0); diff --git a/sys/dev/dec/mcclock.c b/sys/dev/dec/mcclock.c deleted file mode 100644 index da8664e007af..000000000000 --- a/sys/dev/dec/mcclock.c +++ /dev/null @@ -1,141 +0,0 @@ -/* $NetBSD: mcclock.c,v 1.11 1998/04/19 07:50:25 jonathan Exp $ */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -/*- - * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include <sys/param.h> -#include <sys/kernel.h> -#include <sys/systm.h> -#include <sys/bus.h> - -#include <machine/clockvar.h> -#include <dev/dec/mcclockvar.h> -#include <dev/dec/mc146818reg.h> - -/* - * XXX rate is machine-dependent. - */ -#ifdef __alpha__ -#define MC_DEFAULTRATE MC_RATE_1024_Hz -#endif -#ifdef __pmax__ -#define MC_DEFAULTRATE MC_RATE_256_Hz -#endif - -void -mcclock_attach(device_t dev) -{ - /* Turn interrupts off, just in case. */ - MCCLOCK_WRITE(dev, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR); - - clockattach(dev); -} - -void -mcclock_init(device_t dev) -{ - MCCLOCK_WRITE(dev, MC_REGA, MC_BASE_32_KHz | MC_DEFAULTRATE); - MCCLOCK_WRITE(dev, MC_REGB, - MC_REGB_PIE | MC_REGB_SQWE | MC_REGB_BINARY | MC_REGB_24HR); -} - -/* - * Get the time of day, based on the clock's value and/or the base value. - */ -void -mcclock_get(device_t dev, time_t base, struct clocktime *ct) -{ - mc_todregs regs; - int s; - - s = splclock(); - MC146818_GETTOD(dev, ®s) - splx(s); - - ct->sec = regs[MC_SEC]; - ct->min = regs[MC_MIN]; - ct->hour = regs[MC_HOUR]; - ct->dow = regs[MC_DOW]; - ct->day = regs[MC_DOM]; - ct->mon = regs[MC_MONTH]; - ct->year = regs[MC_YEAR]; -} - -/* - * Reset the TODR based on the time value. - */ -void -mcclock_set(device_t dev, struct clocktime *ct) -{ - mc_todregs regs; - int s; - - s = splclock(); - MC146818_GETTOD(dev, ®s); - splx(s); - - regs[MC_SEC] = ct->sec; - regs[MC_MIN] = ct->min; - regs[MC_HOUR] = ct->hour; - regs[MC_DOW] = ct->dow; - regs[MC_DOM] = ct->day; - regs[MC_MONTH] = ct->mon; - regs[MC_YEAR] = ct->year; - - s = splclock(); - MC146818_PUTTOD(dev, ®s); - splx(s); -} - -int -mcclock_getsecs(device_t dev, int *secp) -{ - int timeout = 100000000; - int sec; - int s; - - s = splclock(); - for (;;) { - if (!(MCCLOCK_READ(dev, MC_REGA) & MC_REGA_UIP)) { - sec = MCCLOCK_READ(dev, MC_SEC); - break; - } - if (--timeout == 0) - goto fail; - } - - splx(s); - *secp = sec; - return 0; - - fail: - splx(s); - return ETIMEDOUT; -} diff --git a/sys/dev/dec/mcclock_if.m b/sys/dev/dec/mcclock_if.m deleted file mode 100644 index 89bc6c481194..000000000000 --- a/sys/dev/dec/mcclock_if.m +++ /dev/null @@ -1,48 +0,0 @@ -#- -# Copyright (c) 1998 Doug Rabson -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# - -#include <sys/bus.h> - -INTERFACE mcclock; - -# -# Read an RTC register and return its value. -# -METHOD u_int read { - device_t dev; - u_int reg; -}; - -# -# Write an RTC register. -# -METHOD void write { - device_t dev; - u_int reg; - u_int value; -}; diff --git a/sys/dev/dec/mcclockvar.h b/sys/dev/dec/mcclockvar.h deleted file mode 100644 index b0df9d2eff2c..000000000000 --- a/sys/dev/dec/mcclockvar.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $FreeBSD$ */ -/* $NetBSD: mcclockvar.h,v 1.4 1997/06/22 08:02:19 jonathan Exp $ */ - -/*- - * Copyright (c) 1996 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include "mcclock_if.h" - -void mcclock_attach(device_t dev); -void mcclock_init(device_t); -void mcclock_get(device_t, time_t, struct clocktime *); -void mcclock_set(device_t, struct clocktime *); -int mcclock_getsecs(device_t dev, int *secp); |