1*6a602769Sragge /* $NetBSD: rlreg.h,v 1.5 2017/05/22 17:22:29 ragge Exp $ */ 211379e0aSragge 311379e0aSragge /* 411379e0aSragge * Copyright (c) 2000 Ludd, University of Lule}, Sweden. All rights reserved. 511379e0aSragge * 611379e0aSragge * Redistribution and use in source and binary forms, with or without 711379e0aSragge * modification, are permitted provided that the following conditions 811379e0aSragge * are met: 911379e0aSragge * 1. Redistributions of source code must retain the above copyright 1011379e0aSragge * notice, this list of conditions and the following disclaimer. 1111379e0aSragge * 2. Redistributions in binary form must reproduce the above copyright 1211379e0aSragge * notice, this list of conditions and the following disclaimer in the 1311379e0aSragge * documentation and/or other materials provided with the distribution. 1411379e0aSragge * 1511379e0aSragge * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1611379e0aSragge * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1711379e0aSragge * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1811379e0aSragge * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1911379e0aSragge * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2011379e0aSragge * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2111379e0aSragge * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2211379e0aSragge * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2311379e0aSragge * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2411379e0aSragge * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2511379e0aSragge */ 2611379e0aSragge 2711379e0aSragge /* 2811379e0aSragge * RL11 registers. 2911379e0aSragge */ 3011379e0aSragge #define RL_CS 0 3111379e0aSragge #define RL_BA 2 3211379e0aSragge #define RL_DA 4 3311379e0aSragge #define RL_MP 6 3411379e0aSragge #define RL_BAE 8 /* Only on RLV12 */ 3511379e0aSragge 3611379e0aSragge /* 3711379e0aSragge * Bits in Control/Status register 3811379e0aSragge */ 3911379e0aSragge #define RLCS_DRDY 0000001 4011379e0aSragge #define RLCS_IE 0000100 4111379e0aSragge #define RLCS_CRDY 0000200 4211379e0aSragge #define RLCS_DE 0040000 4311379e0aSragge #define RLCS_ERR 0100000 4411379e0aSragge #define RLCS_ERRMSK 0036000 4511379e0aSragge /* Command to give to drive */ 4611379e0aSragge #define RLCS_NOOP 0000000 /* No operation */ 4711379e0aSragge #define RLCS_WCK 0000002 /* Write Check */ 4811379e0aSragge #define RLCS_GS 0000004 /* Get Status */ 4911379e0aSragge #define RLCS_SEEK 0000006 /* Seek */ 5011379e0aSragge #define RLCS_RHDR 0000010 /* Read Header */ 5111379e0aSragge #define RLCS_WD 0000012 /* Write data */ 5211379e0aSragge #define RLCS_RD 0000014 /* Read data */ 5311379e0aSragge #define RLCS_RDWO 0000016 /* Read data without hdr check */ 5411379e0aSragge #define RLCS_USHFT 8 /* Shift unit number left */ 5511379e0aSragge #define RLCS_ADSHFT 4 /* Shift address bits 16-17 left */ 5611379e0aSragge 5711379e0aSragge /* 5811379e0aSragge * Bits in Disk Address register 5911379e0aSragge */ 6011379e0aSragge #define RLDA_SEEK 0000001 /* Issue a "Seek" command */ 6111379e0aSragge #define RLDA_GS 0000003 /* Issue a "Get Status" command */ 6211379e0aSragge #define RLDA_DIR 0000004 /* Move head towards spindle */ 6311379e0aSragge #define RLDA_RST 0000010 /* Reset the drive */ 6411379e0aSragge #define RLDA_HSSEEK 0000020 /* Head select for seek */ 6511379e0aSragge #define RLDA_HSRW 0000100 /* Head select for read/write */ 6611379e0aSragge #define RLDA_CYLSHFT 7 6711379e0aSragge 6811379e0aSragge /* 6911379e0aSragge * Bits in Multipurpose register 7011379e0aSragge */ 71f3082cc9Sragge #define RLMP_STATUS 0000007 /* Status bits mask */ 72f3082cc9Sragge #define RLMP_UNLOAD 0 /* not loaded */ 73f3082cc9Sragge #define RLMP_SPINUP 1 /* spinning up */ 74f3082cc9Sragge #define RLMP_BRUSHING 2 /* brushes out */ 75f3082cc9Sragge #define RLMP_LOADHEADS 3 /* loading heads */ 76f3082cc9Sragge #define RLMP_SEEKING 4 /* seeking */ 77f3082cc9Sragge #define RLMP_LOCKED 5 /* lock turned on */ 78f3082cc9Sragge #define RLMP_UNLHEADS 6 /* unloading heads */ 79f3082cc9Sragge #define RLMP_SPUNDOWN 7 /* disk spun down */ 80f3082cc9Sragge 8111379e0aSragge #define RLMP_DT 0000200 /* Set if RL02, otherwise RL01 */ 8211379e0aSragge #define RLMP_HS 0000100 /* Head select */ 8311379e0aSragge 8411379e0aSragge /* 8511379e0aSragge * RL01/RL02 disk layout. 8611379e0aSragge */ 8711379e0aSragge #define RL_BPS 256 /* Bytes/sector */ 8811379e0aSragge #define RL_SPT 40 /* Sectors/track */ 8911379e0aSragge #define RL_TPS01 256 /* Tracks/surface RL01 */ 9011379e0aSragge #define RL_TPS02 512 /* Tracks/surface RL02 */ 9111379e0aSragge #define RL_SPD 2 /* Surfaces/disk */ 9211379e0aSragge 9311379e0aSragge /* 9411379e0aSragge * Other... 9511379e0aSragge */ 9611379e0aSragge #define RL_MAXDPC 4 /* Max disks/controller */ 97