NetBSD/sys/arch/vax/mba/hpdefs.h

82 lines
3.6 KiB
C

/* $NetBSD: hpdefs.h,v 1.1 1995/02/13 00:44:00 ragge Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
* 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.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed at Ludd, University of Lule}.
* 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
*/
/* All bugs are subject to removal without further notice */
/* hpdefs.h - 940325/ragge */
#define HPCS1_DVA 0x800 /* Drive avail, in dual-port config */
#define HPDS_VV 0x40 /* Volume valid, not changed */
#define HPDS_DRY 0x80 /* Drive ready to accept commands */
#define HPDS_DPR 0x100 /* Drive present */
#define HPDS_PGM 0x200 /* Programmable in dual-port config */
#define HPDS_WRL 0x800 /* Write locked media */
#define HPDS_MOL 0x1000 /* Medium on-line */
#define HPDT_DRQ 0x800 /* Dual-port disk */
/*
* Drive status, per drive
*/
struct hp_info {
daddr_t hp_dsize; /* size in sectors */
/* u_long hp_type; /* drive type */
u_long hp_mediaid; /* media id */
int hp_state; /* open/closed state */
struct hp_geom { /* geometry information */
u_short rg_nsectors; /* sectors/track */
u_short rg_ngroups; /* track groups */
u_short rg_ngpc; /* groups/cylinder */
u_short rg_ntracks; /* ngroups*ngpc */
u_short rg_ncyl; /* ra_dsize/ntracks/nsectors */
#ifdef notyet
u_short rg_rctsize; /* size of rct */
u_short rg_rbns; /* replacement blocks per track */
u_short rg_nrct; /* number of rct copies */
#endif
} hp_geom;
int hp_wlabel; /* label sector is currently writable */
u_long hp_openpart; /* partitions open */
u_long hp_bopenpart; /* block partitions open */
u_long hp_copenpart; /* character partitions open */
};
/*
* Device to unit number and partition and back
*/
#define UNITSHIFT 3
#define UNITMASK 7
#define hpunit(dev) (minor(dev) >> UNITSHIFT)
#define hppart(dev) (minor(dev) & UNITMASK)
#define hpminor(u, p) (((u) << UNITSHIFT) | (p))