Home | History | Annotate | Line # | Download | only in dev
fdreg.h revision 1.1
      1  1.1  oki /*	$NetBSD: fdreg.h,v 1.1 1996/05/05 12:17:09 oki Exp $	*/
      2  1.1  oki 
      3  1.1  oki /*-
      4  1.1  oki  * Copyright (c) 1991 The Regents of the University of California.
      5  1.1  oki  * All rights reserved.
      6  1.1  oki  *
      7  1.1  oki  * Redistribution and use in source and binary forms, with or without
      8  1.1  oki  * modification, are permitted provided that the following conditions
      9  1.1  oki  * are met:
     10  1.1  oki  * 1. Redistributions of source code must retain the above copyright
     11  1.1  oki  *    notice, this list of conditions and the following disclaimer.
     12  1.1  oki  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  oki  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  oki  *    documentation and/or other materials provided with the distribution.
     15  1.1  oki  * 3. All advertising materials mentioning features or use of this software
     16  1.1  oki  *    must display the following acknowledgement:
     17  1.1  oki  *	This product includes software developed by the University of
     18  1.1  oki  *	California, Berkeley and its contributors.
     19  1.1  oki  * 4. Neither the name of the University nor the names of its contributors
     20  1.1  oki  *    may be used to endorse or promote products derived from this software
     21  1.1  oki  *    without specific prior written permission.
     22  1.1  oki  *
     23  1.1  oki  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     24  1.1  oki  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     25  1.1  oki  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26  1.1  oki  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     27  1.1  oki  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28  1.1  oki  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     29  1.1  oki  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     30  1.1  oki  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     31  1.1  oki  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     32  1.1  oki  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     33  1.1  oki  * SUCH DAMAGE.
     34  1.1  oki  *
     35  1.1  oki  *	@(#)fdreg.h	7.1 (Berkeley) 5/9/91
     36  1.1  oki  */
     37  1.1  oki 
     38  1.1  oki /*
     39  1.1  oki  * x680x0 floppy controller registers and bitfields
     40  1.1  oki  */
     41  1.1  oki 
     42  1.1  oki /* uses NEC72065 controller */
     43  1.1  oki #include <dev/ic/nec765reg.h>
     44  1.1  oki 
     45  1.1  oki /* Status registers returned as result of operation. */
     46  1.1  oki #define ST0             0x00	/* status register 0 */
     47  1.1  oki #define ST1             0x01	/* status register 1 */
     48  1.1  oki #define ST2             0x02	/* status register 2 */
     49  1.1  oki #define ST3             0x00	/* status register 3 (return by DRIVE_SENSE) */
     50  1.1  oki #define ST_CYL          0x03	/* slot where controller reports cylinder */
     51  1.1  oki #define ST_HEAD         0x04	/* slot where controller reports head */
     52  1.1  oki #define ST_SEC          0x05	/* slot where controller reports sector */
     53  1.1  oki #define ST_PCN          0x01	/* slot where controller reports present cyl */
     54  1.1  oki 
     55  1.1  oki /* Fields within the I/O ports. */
     56  1.1  oki /* FDD registers */
     57  1.1  oki #define EJECT		0x20
     58  1.1  oki #define MOTOR_ON	0x80
     59  1.1  oki 
     60  1.1  oki /* Floppy disk controller command bytes. */
     61  1.1  oki #define FDC_SEEK        0x0F	/* command the drive to seek */
     62  1.1  oki #define FDC_READ        0xE6	/* command the drive to read */
     63  1.1  oki #define FDC_WRITE       0xC5	/* command the drive to write */
     64  1.1  oki #define FDC_SENSE       0x08	/* command the controller to tell its status */
     65  1.1  oki #define FDC_RECALIBRATE 0x07	/* command the drive to go to cyl 0 */
     66  1.1  oki #define FDC_SPECIFY     0x03	/* command the drive to accept params */
     67  1.1  oki #define FDC_READ_ID     0x4A	/* command the drive to read sector identity */
     68  1.1  oki #define FDC_FORMAT      0x4D	/* command the drive to format a track */
     69  1.1  oki #define FDC_RESET       0x36	/* reset command for fdc */
     70  1.1  oki 
     71  1.1  oki /* Main status register. */
     72  1.1  oki #define NE7_D0B	0x01	/* Diskette drive 0 is seeking, thus busy */
     73  1.1  oki #define NE7_D1B	0x02	/* Diskette drive 1 is seeking, thus busy */
     74  1.1  oki #define NE7_D2B	0x01	/* Diskette drive 2 is seeking, thus busy */
     75  1.1  oki #define NE7_D3B	0x02	/* Diskette drive 3 is seeking, thus busy */
     76  1.1  oki #define NE7_CB	0x10	/* Diskette Controller Busy */
     77  1.1  oki #define NE7_NDM	0x20	/* Diskette Controller in Non Dma Mode */
     78  1.1  oki #define NE7_DIO	0x40	/* Diskette Controller Data register I/O */
     79  1.1  oki #define NE7_RQM	0x80	/* Diskette Controller ReQuest for Master */
     80  1.1  oki 
     81  1.1  oki /* registers */
     82  1.1  oki #define	fdout	2	/* Digital Output Register (W) */
     83  1.1  oki #define	FDO_FDSEL	0x03	/*  floppy device select */
     84  1.1  oki #define	FDO_FRST	0x04	/*  floppy controller reset */
     85  1.1  oki #define	FDO_FDMAEN	0x08	/*  enable floppy DMA and Interrupt */
     86  1.1  oki #define	FDO_MOEN(n)	((1 << n) * 0x10)	/* motor enable */
     87  1.1  oki 
     88  1.1  oki #define	fdsts	4	/* NEC 765 Main Status Register (R) */
     89  1.1  oki #define	fddata	5	/* NEC 765 Data Register (R/W) */
     90  1.1  oki 
     91  1.1  oki #define	fdctl	7	/* Control Register (W) */
     92  1.1  oki #define	FDC_500KBPS	0x00	/* 500KBPS MFM drive transfer rate */
     93  1.1  oki #define	FDC_300KBPS	0x01	/* 300KBPS MFM drive transfer rate */
     94  1.1  oki #define	FDC_250KBPS	0x02	/* 250KBPS MFM drive transfer rate */
     95  1.1  oki #define	FDC_125KBPS	0x03	/* 125KBPS FM drive transfer rate */
     96  1.1  oki 
     97  1.1  oki #define	fdin	7	/* Digital Input Register (R) */
     98  1.1  oki #define	FDI_DCHG	0x80	/* diskette has been changed */
     99  1.1  oki 
    100  1.1  oki #define	FDC_BSIZE	512
    101  1.1  oki #define	FDC_NPORT	8
    102  1.1  oki #define	FDC_MAXIOSIZE	NBPG	/* XXX should be MAXBSIZE */
    103