/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 1995 by Sun Microsystems, Inc. * All rights reserved. */ #ifndef _SYS_FDMEDIA_H #define _SYS_FDMEDIA_H #pragma ident "%W% %E% SMI" #ifdef __cplusplus extern "C" { #endif /* * Default names for label */ static char deflabel_35[] = { "3.5\" floppy cyl %d alt 0 hd %d sec %d" }; static char deflabel_525[] = { "5.25\" floppy cyl %d alt 0 hd %d sec %d" }; /* * default characteristics */ static struct fdattr fdtypes[] = { { /* [0] = struct fdattr fdattr_5H */ 360, /* rotational speed */ 1, /* interleave factor */ 0x1B, /* gap 3 length */ 0x54 /* format gap 3 length */ }, { /* [1] = struct fdattr fdattr_5Q */ 300, /* rotational speed */ 1, /* interleave factor */ 0x1B, /* gap 3 length */ 0x54 /* format gap 3 length */ }, { /* [2] = struct fdattr fdattr_5D9 */ 300, /* rotational speed */ 1, /* interleave factor */ 0x2A, /* gap 3 length */ 0x50 /* format gap 3 length */ }, { /* [3] = struct fdattr fdattr_5D8 */ 300, /* rotational speed */ 1, /* interleave factor */ 0x2A, /* gap 3 length */ 0x50 /* format gap 3 length */ }, { /* [4] = struct fdattr fdattr_5D4 */ 300, /* rotational speed */ 1, /* interleave factor */ 0x80, /* gap 3 length */ 0xF0 /* format gap 3 length */ }, { /* [5] = struct fdattr fdattr_5D16 */ 300, /* rotational speed */ 1, /* interleave factor */ 0x20, /* gap 3 length */ 0x32 /* format gap 3 length */ }, { /* [6] = struct fdattr fdattr_3E */ 300, /* rotational speed */ 1, /* interleave factor */ 0x1B, /* gap 3 length */ 0x53 /* format gap 3 length */ }, { /* [7] = struct fdattr fdattr_3H */ 300, /* rotational speed */ 1, /* interleave factor */ 0x1B, /* gap 3 length */ 0x6C /* format gap 3 length */ }, { /* [8] = struct fdattr fdattr_3I */ 300, /* rotational speed */ 1, /* interleave factor */ 4, /* gap 3 length */ 12 /* format gap 3 length */ }, { /* [9] = struct fdattr fdattr_3M */ 360, /* rotational speed */ 1, /* interleave factor */ 0x35, /* gap 3 length */ 0x74 /* format gap 3 length */ }, { /* [10] = struct fdattr fdattr_3D */ 300, /* rotational speed */ 1, /* interleave factor */ 0x1B, /* gap 3 length */ 0x50 /* format gap 3 length */ } }; static int nfdtypes = sizeof (fdtypes) / sizeof (fdtypes[0]); static struct fd_char dfc_80x36 = { 3, /* medium */ 1000, /* transfer rate */ 80, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 36, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_80x21 = { 3, /* medium */ 500, /* transfer rate */ 80, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 21, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_80x18 = { 3, /* medium */ 500, /* transfer rate */ 80, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 18, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_80x15 = { 5, /* medium */ 500, /* transfer rate */ 80, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 15, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_80x9 = { 3, /* medium */ 250, /* transfer rate */ 80, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 9, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_77x8 = { 3, /* medium */ 500, /* transfer rate */ 77, /* number of cylinders */ 2, /* number of heads */ 1024, /* sector size */ 8, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_40x16 = { 5, /* medium */ 250, /* transfer rate */ 40, /* number of cylinders */ 2, /* number of heads */ 256, /* sector size */ 16, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_40x9 = { 5, /* medium */ 250, /* transfer rate */ 40, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 9, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_40x8 = { 5, /* medium */ 250, /* transfer rate */ 40, /* number of cylinders */ 2, /* number of heads */ 512, /* sector size */ 8, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char dfc_40x4 = { 5, /* medium */ 250, /* transfer rate */ 40, /* number of cylinders */ 2, /* number of heads */ 1024, /* sector size */ 4, /* sectors per track */ 1, /* # steps per data track */ }; static struct fd_char *defchar[] = { &dfc_80x15, /* FMT_5H */ &dfc_80x9, /* FMT_5Q */ &dfc_40x9, /* FMT_5D9 */ &dfc_40x8, /* FMT_5D8 */ &dfc_40x4, /* FMT_5D4 */ &dfc_40x16, /* FMT_5D16 */ &dfc_80x36, /* FMT_3E */ &dfc_80x18, /* FMT_3H */ &dfc_80x21, /* FMT_3I */ &dfc_77x8, /* FMT_3M */ &dfc_80x9 /* FMT_3D */ }; static struct fd_drive dfd_350ED = { 0, /* ejectable, does the drive support eject? */ 4, /* maxsearch, size of per-unit search table */ 0, /* cyl to start write precompensation */ 80, /* cyl to start reducing write current */ 1, /* step width pulse in 1 us units */ 30, /* step rate in 100 us units */ 150, /* head settle delay, in 100 us units */ 150, /* head load delay, in 100 us units */ 2560, /* head unload delay, in 100 us units */ 3, /* motor on delay, in 100 ms units */ 20, /* motor off delay, in 100 ms units */ 65, /* precomp level, bit shift, in nano-secs */ 0, /* pins, defines meaning of pin 1, 2, 4, and 34 */ 0, /* flags, TRUE READY, Starting Sector #, & Motor On */ }; static struct fd_drive dfd_350HD = { 0, /* ejectable, does the drive support eject? */ 4, /* maxsearch, size of per-unit search table */ 0, /* cyl to start write prcompensation */ 80, /* cyl to start reducing write current */ 1, /* step width pulse in 1 us units */ 30, /* step rate in 100 us units */ 150, /* head settle delay, in 100 us units */ 150, /* head load delay, in 100 us units */ 2560, /* head unload delay, in 100 us units */ 3, /* motor on delay, in 100 ms units */ 20, /* motor off delay, in 100 ms units */ 125, /* precomp level, bit shift, in nano-secs */ 0, /* pins, defines meaning of pin 1, 2, 4, and 34 */ 0, /* flags, TRUE READY, Starting Sector #, & Motor On */ }; static struct fd_drive dfd_525HD = { 0, /* ejectable, does the drive support eject? */ 6, /* maxsearch, size of per-unit search table */ 43, /* cyl to start write prcompensation */ 80, /* cyl to start reducing write current */ 1, /* step width pulse in 1 us units */ 30, /* step rate in 100 us units */ 150, /* head settle delay, in 100 us units */ 150, /* head load delay, in 100 us units */ 2560, /* head unload delay, in 100 us units */ 5, /* motor on delay, in 100 ms units */ 20, /* motor off delay, in 100 ms units */ 175, /* precomp level, bit shift, in nano-secs */ 0, /* pins, defines meaning of pin 1, 2, 4, and 34 */ 0, /* flags, TRUE READY, Starting Sector #, & Motor On */ }; static struct fd_drive dfd_525DD = { 0, /* ejectable, does the drive support eject? */ 4, /* maxsearch, size of per-unit search table */ 22, /* cyl to start write prcompensation */ 40, /* cyl to start reducing write current */ 1, /* step width pulse in 1 us units */ 60, /* step rate in 100 us units */ 150, /* head settle delay, in 100 us units */ 150, /* head load delay, in 100 us units */ 2560, /* head unload delay, in 100 us units */ 5, /* motor on delay, in 100 ms units */ 20, /* motor off delay, in 100 ms units */ 250, /* precomp level, bit shift, in nano-secs */ 0, /* pins, defines meaning of pin 1, 2, 4, and 34 */ 0, /* flags, TRUE READY, Starting Sector #, & Motor On */ }; /* * Default partition maps */ static struct partition dpt_80x36[NDKMAP] = { { 0, 0, 0, 79*2*36 }, /* part 0 - all but last cyl */ { 0, 0, 79*2*36, 1*2*36 }, /* part 1 - just the last cyl */ { 0, 0, 0, 80*2*36 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_80x21[NDKMAP] = { { 0, 0, 0, 79*2*21 }, /* part 0 - all but last cyl */ { 0, 0, 79*2*21, 1*2*21 }, /* part 1 - just the last cyl */ { 0, 0, 0, 80*2*21 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_80x18[NDKMAP] = { { 0, 0, 0, 79*2*18 }, /* part 0 - all but last cyl */ { 0, 0, 79*2*18, 1*2*18 }, /* part 1 - just the last cyl */ { 0, 0, 0, 80*2*18 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_80x15[NDKMAP] = { { 0, 0, 0, 79*2*15 }, /* part 0 - all but last cyl */ { 0, 0, 79*2*15, 1*2*15 }, /* part 1 - just the last cyl */ { 0, 0, 0, 80*2*15 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_80x9[NDKMAP] = { { 0, 0, 0, 79*2*9 }, /* part 0 - all but last cyl */ { 0, 0, 79*2*9, 1*2*9 }, /* part 1 - just the last cyl */ { 0, 0, 0, 80*2*9 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_77x8[NDKMAP] = { /* double number of blocks since sector size is 1024 */ { 0, 0, 0, 76*2*8*2 }, /* part 0 - all but last cyl */ { 0, 0, 76*2*8*2, 1*2*8*2 }, /* part 1 - just the last cyl */ { 0, 0, 0, 77*2*8*2 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_40x16[NDKMAP] = { /* halve number of blocks since sector size is 256 */ { 0, 0, 0, 39*2*16/2 }, /* part 0 - all but last cyl */ { 0, 0, 39*2*16/2, 1*2*16/2 }, /* part 1 - just the last cyl */ { 0, 0, 0, 40*2*16/2 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_40x9[NDKMAP] = { { 0, 0, 0, 39*2*9 }, /* part 0 - all but last cyl */ { 0, 0, 39*2*9, 1*2*9 }, /* part 1 - just the last cyl */ { 0, 0, 0, 40*2*9 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_40x8[NDKMAP] = { /* double number of blocks since sector size is 1024 */ { 0, 0, 0, 39*2*8*2 }, /* part 0 - all but last cyl */ { 0, 0, 39*2*8*2, 1*2*8*2 }, /* part 1 - just the last cyl */ { 0, 0, 0, 40*2*8*2 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition dpt_40x4[NDKMAP] = { { 0, 0, 0, 39*2*4 }, /* part 0 - all but last cyl */ { 0, 0, 39*2*4, 1*2*4 }, /* part 1 - just the last cyl */ { 0, 0, 0, 40*2*4 }, /* part 2 - "the whole thing" */ { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; static struct partition *fdparts[] = { dpt_80x15, /* FMT_5H */ dpt_80x9, /* FMT_5Q */ dpt_40x9, /* FMT_5D9 */ dpt_40x8, /* FMT_5D8 */ dpt_40x4, /* FMT_5D4 */ dpt_40x16, /* FMT_5D16 */ dpt_80x36, /* FMT_3E */ dpt_80x18, /* FMT_3H */ dpt_80x21, /* FMT_3I */ dpt_77x8, /* FMT_3M */ dpt_80x9 /* FMT_3D */ }; #ifdef __cplusplus } #endif #endif /* !_SYS_FDMEDIA_H */