1*95e1ffb1Schristos /* $NetBSD: fdreg.h,v 1.4 2005/12/11 12:19:20 christos Exp $ */ 23c962bb5Sjeremy 33c962bb5Sjeremy /*- 43c962bb5Sjeremy * Copyright (c) 1991 The Regents of the University of California. 53c962bb5Sjeremy * All rights reserved. 63c962bb5Sjeremy * 73c962bb5Sjeremy * Redistribution and use in source and binary forms, with or without 83c962bb5Sjeremy * modification, are permitted provided that the following conditions 93c962bb5Sjeremy * are met: 103c962bb5Sjeremy * 1. Redistributions of source code must retain the above copyright 113c962bb5Sjeremy * notice, this list of conditions and the following disclaimer. 123c962bb5Sjeremy * 2. Redistributions in binary form must reproduce the above copyright 133c962bb5Sjeremy * notice, this list of conditions and the following disclaimer in the 143c962bb5Sjeremy * documentation and/or other materials provided with the distribution. 15aad01611Sagc * 3. Neither the name of the University nor the names of its contributors 163c962bb5Sjeremy * may be used to endorse or promote products derived from this software 173c962bb5Sjeremy * without specific prior written permission. 183c962bb5Sjeremy * 193c962bb5Sjeremy * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 203c962bb5Sjeremy * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 213c962bb5Sjeremy * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 223c962bb5Sjeremy * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 233c962bb5Sjeremy * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 243c962bb5Sjeremy * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 253c962bb5Sjeremy * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 263c962bb5Sjeremy * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 273c962bb5Sjeremy * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 283c962bb5Sjeremy * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 293c962bb5Sjeremy * SUCH DAMAGE. 303c962bb5Sjeremy * 313c962bb5Sjeremy * @(#)fdreg.h 7.1 (Berkeley) 5/9/91 323c962bb5Sjeremy */ 333c962bb5Sjeremy 343c962bb5Sjeremy /* 353c962bb5Sjeremy * AT floppy controller registers and bitfields 363c962bb5Sjeremy */ 373c962bb5Sjeremy 383c962bb5Sjeremy /* uses NEC765 controller */ 393c962bb5Sjeremy #include <dev/ic/nec765reg.h> 403c962bb5Sjeremy 413c962bb5Sjeremy #ifndef _LOCORE 423c962bb5Sjeremy struct fdreg_77 { 4310b1a7beSchs uint8_t fd_statusA; 4410b1a7beSchs uint8_t fd_statusB; 4510b1a7beSchs uint8_t fd_dor; /* Digital Output Register (R/W) */ 4610b1a7beSchs uint8_t fd_tdr; /* Tape Control Register (R/W) */ 4710b1a7beSchs uint8_t fd_msr; /* Main Status Register (R) */ 483c962bb5Sjeremy #define fd_drs fd_msr /* Data Rate Select Register (W) */ 4910b1a7beSchs uint8_t fd_fifo; /* Data (FIFO) register (R/W) */ 5010b1a7beSchs uint8_t fd_reserved; 5110b1a7beSchs uint8_t fd_dir; /* Digital Input Register (R) */ 523c962bb5Sjeremy #define fd_ccr fd_dir /* Configuration Control (W) */ 533c962bb5Sjeremy }; 543c962bb5Sjeremy 553c962bb5Sjeremy struct fdreg_72 { 5610b1a7beSchs uint8_t fd_msr; /* Main Status Register (R) */ 573c962bb5Sjeremy #if already_a_define 583c962bb5Sjeremy #define fd_drs fd_msr /* Data Rate Select Register (W) */ 593c962bb5Sjeremy #endif 6010b1a7beSchs uint8_t fd_fifo; /* Data (FIFO) register (R/W) */ 613c962bb5Sjeremy }; 623c962bb5Sjeremy 633c962bb5Sjeremy union fdreg { 643c962bb5Sjeremy struct fdreg_72 fun72; 653c962bb5Sjeremy struct fdreg_77 fun77; 663c962bb5Sjeremy }; 673c962bb5Sjeremy #endif 683c962bb5Sjeremy 693c962bb5Sjeremy /* Data Select Register bits */ 703c962bb5Sjeremy #define DRS_RESET 0x80 713c962bb5Sjeremy #define DRS_POWER 0x40 723c962bb5Sjeremy #define DRS_PLL 0x20 733c962bb5Sjeremy #define FDC_500KBPS 0x00 /* 500KBPS MFM drive transfer rate */ 743c962bb5Sjeremy #define FDC_300KBPS 0x01 /* 300KBPS MFM drive transfer rate */ 753c962bb5Sjeremy #define FDC_250KBPS 0x02 /* 250KBPS MFM drive transfer rate */ 763c962bb5Sjeremy #define FDC_125KBPS 0x03 /* 125KBPS FM drive transfer rate */ 773c962bb5Sjeremy 783c962bb5Sjeremy /* Digital Output Register bits */ 793c962bb5Sjeremy #define FDO_FDSEL 0x03 /* floppy device select */ 803c962bb5Sjeremy #define FDO_FRST 0x04 /* floppy controller reset */ 813c962bb5Sjeremy #define FDO_FDMAEN 0x08 /* enable floppy DMA and Interrupt */ 823c962bb5Sjeremy #define FDO_MOEN(n) ((1 << n) * 0x10) /* motor enable */ 833c962bb5Sjeremy 843c962bb5Sjeremy #define FDI_DCHG 0x80 /* diskette has been changed */ 853c962bb5Sjeremy 863c962bb5Sjeremy /* XXX - find a place for these... */ 873c962bb5Sjeremy #define NE7CMD_CFG 0x13 883c962bb5Sjeremy #define CFG_EIS 0x40 893c962bb5Sjeremy #define CFG_EFIFO 0x20 903c962bb5Sjeremy #define CFG_POLL 0x10 913c962bb5Sjeremy #define CFG_THRHLD_MASK 0x0f 923c962bb5Sjeremy 933c962bb5Sjeremy #define NE7CMD_LOCK 0x14 943c962bb5Sjeremy #define CFG_LOCK 0x80 953c962bb5Sjeremy 963c962bb5Sjeremy #define NE7CMD_MOTOR 0x0b 973c962bb5Sjeremy #define MOTOR_ON 0x80 983c962bb5Sjeremy 993c962bb5Sjeremy #define NE7CMD_DUMPREG 0x0e 1003c962bb5Sjeremy #define NE7CMD_VERSION 0x10 1013c962bb5Sjeremy 1023c962bb5Sjeremy #define ST1_OVERRUN 0x10 1033c962bb5Sjeremy 1043c962bb5Sjeremy /* sun3x - Floppy Control Register bits */ 1053c962bb5Sjeremy #define FCR_TC 0x01 /* terminal count reset */ 1063c962bb5Sjeremy #define FCR_EJECT 0x02 /* eject floppy */ 1073c962bb5Sjeremy #define FCR_MTRON 0x04 /* motor on */ 1083c962bb5Sjeremy #define FCR_DSEL1 0x08 /* select drive 1 */ 1093c962bb5Sjeremy #define FCR_DSEL0 0x10 /* select drive 0 */ 1103c962bb5Sjeremy #define FCR_DSEL(drive) ((drive) ? FCR_DSEL1 : FCR_DSEL0) 1113c962bb5Sjeremy 1123c962bb5Sjeremy /* sun3x - Register offsets */ 1133c962bb5Sjeremy #define FDC_FCR_OFFSET 0x400 1143c962bb5Sjeremy #define FDC_FVR_OFFSET 0x800 115