linux-old/drivers/scsi/psi_chip.h
<<
>>
Prefs
   1/*+M*************************************************************************
   2 * Perceptive Solutions, Inc. PSI-240I device driver proc support for Linux.
   3 *
   4 * Copyright (c) 1997 Perceptive Solutions, Inc.
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License as published by
   8 * the Free Software Foundation; either version 2, or (at your option)
   9 * any later version.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 * You should have received a copy of the GNU General Public License
  17 * along with this program; see the file COPYING.  If not, write to
  18 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  19 *
  20 *
  21 *      File Name:      psi_chip.h
  22 *
  23 *      Description:    This file contains the interface defines and
  24 *                                      error codes.
  25 *
  26 *-M*************************************************************************/
  27#ifndef PSI_CHIP
  28#define PSI_CHIP
  29
  30/************************************************/
  31/*              Misc konstants                                                  */
  32/************************************************/
  33#define CHIP_MAXDRIVES                  8
  34
  35/************************************************/
  36/*              Chip I/O addresses                                              */
  37/************************************************/
  38#define CHIP_ADRS_0                             0x0130
  39#define CHIP_ADRS_1                             0x0150
  40#define CHIP_ADRS_2                             0x0190
  41#define CHIP_ADRS_3                             0x0210
  42#define CHIP_ADRS_4                             0x0230
  43#define CHIP_ADRS_5                             0x0250
  44
  45/************************************************/
  46/*              EEPROM locations                */
  47/************************************************/
  48#define CHIP_EEPROM_BIOS                0x0000          // BIOS base address
  49#define CHIP_EEPROM_DATA                0x2000          // SETUP data base address
  50#define CHIP_EEPROM_FACTORY             0x2400          // FACTORY data base address
  51#define CHIP_EEPROM_SETUP               0x3000          // SETUP PROGRAM base address
  52
  53#define CHIP_EEPROM_SIZE                32768U          // size of the entire EEPROM
  54#define CHIP_EEPROM_BIOS_SIZE   8192            // size of the BIOS in bytes
  55#define CHIP_EEPROM_DATA_SIZE   4096            // size of factory, setup, log data block in bytes
  56#define CHIP_EEPROM_SETUP_SIZE  20480U          // size of the setup program in bytes
  57
  58/************************************************/
  59/*              Chip Interrupts                                                 */
  60/************************************************/
  61#define CHIP_IRQ_10                             0x72
  62#define CHIP_IRQ_11                             0x73
  63#define CHIP_IRQ_12                             0x74
  64
  65/************************************************/
  66/*              Chip Setup addresses            */
  67/************************************************/
  68#define CHIP_SETUP_BASE                 0x0000C000L
  69
  70/************************************************/
  71/*              Chip Register address offsets   */
  72/************************************************/
  73#define REG_DATA                                0x00
  74#define REG_ERROR                               0x01
  75#define REG_SECTOR_COUNT                0x02
  76#define REG_LBA_0                               0x03
  77#define REG_LBA_8                               0x04
  78#define REG_LBA_16                              0x05
  79#define REG_LBA_24                              0x06
  80#define REG_STAT_CMD                    0x07
  81#define REG_SEL_FAIL                    0x08
  82#define REG_IRQ_STATUS                  0x09
  83#define REG_ADDRESS                             0x0A
  84#define REG_FAIL                                0x0C
  85#define REG_ALT_STAT                    0x0E
  86#define REG_DRIVE_ADRS                  0x0F
  87
  88/************************************************/
  89/*              Chip RAM locations              */
  90/************************************************/
  91#define CHIP_DEVICE                             0x8000
  92#define CHIP_DEVICE_0                   0x8000
  93#define CHIP_DEVICE_1                   0x8008
  94#define CHIP_DEVICE_2                   0x8010
  95#define CHIP_DEVICE_3                   0x8018
  96#define CHIP_DEVICE_4                   0x8020
  97#define CHIP_DEVICE_5                   0x8028
  98#define CHIP_DEVICE_6                   0x8030
  99#define CHIP_DEVICE_7                   0x8038
 100typedef struct
 101        {
 102        UCHAR   channel;                // channel of this device (0-8).
 103        UCHAR   spt;                    // Sectors Per Track.
 104        ULONG   spc;                    // Sectors Per Cylinder.
 105        }       CHIP_DEVICE_N;
 106
 107#define CHIP_CONFIG                             0x8100          // address of boards configuration.
 108typedef struct
 109        {
 110        UCHAR           irq;                    // interrupt request channel number
 111        UCHAR           numDrives;              // Number of accessable drives
 112        UCHAR           fastFormat;             // Boolean for fast format enable
 113        }       CHIP_CONFIG_N;
 114
 115#define CHIP_MAP                                0x8108          // eight byte device type map.
 116
 117
 118#define CHIP_RAID                               0x8120          // array of RAID signature structures and LBA
 119#define CHIP_RAID_1                             0x8120
 120#define CHIP_RAID_2                             0x8130
 121#define CHIP_RAID_3                             0x8140
 122#define CHIP_RAID_4                             0x8150
 123
 124/************************************************/
 125/*              Chip Register Masks             */
 126/************************************************/
 127#define CHIP_ID                                 0x7B
 128#define SEL_RAM                                 0x8000
 129#define MASK_FAIL                               0x80
 130
 131/************************************************/
 132/*              Chip cable select bits          */
 133/************************************************/
 134#define SECTORSXFER                             8
 135
 136/************************************************/
 137/*              Chip cable select bits          */
 138/************************************************/
 139#define SEL_NONE                                0x00
 140#define SEL_1                                   0x01
 141#define SEL_2                                   0x02
 142#define SEL_3                                   0x04
 143#define SEL_4                                   0x08
 144
 145/************************************************/
 146/*              Programmable Interrupt Controller*/
 147/************************************************/
 148#define PIC1                                    0x20            // first 8259 base port address
 149#define PIC2                                    0xA0            // second 8259 base port address
 150#define INT_OCW1                                1                       // Operation Control Word 1: IRQ mask
 151#define EOI                                             0x20            // non-specific end-of-interrupt
 152
 153/************************************************/
 154/*              Device/Geometry controls                                */
 155/************************************************/
 156#define GEOMETRY_NONE                   0x0                     // No device
 157#define GEOMETRY_AUTO                   0x1                     // Geometry set automatically
 158#define GEOMETRY_USER                   0x2                     // User supplied geometry
 159
 160#define DEVICE_NONE                             0x0                     // No device present
 161#define DEVICE_INACTIVE                 0x1                     // device present but not registered active
 162#define DEVICE_ATAPI                    0x2                     // ATAPI device (CD_ROM, Tape, Etc...)
 163#define DEVICE_DASD_NONLBA              0x3                     // Non LBA incompatible device
 164#define DEVICE_DASD_LBA                 0x4                     // LBA compatible device
 165
 166/************************************************/
 167/*              Setup Structure Definitions     */
 168/************************************************/
 169typedef struct                                                  // device setup parameters
 170        {
 171        UCHAR                   geometryControl;        // geometry control flags
 172        UCHAR                   device;                         // device code
 173        USHORT                  sectors;                        // number of sectors per track
 174        USHORT                  heads;                          // number of heads
 175        USHORT                  cylinders;                      // number of cylinders for this device
 176        ULONG                   blocks;                         // number of blocks on device
 177        USHORT                  spare1;
 178        USHORT                  spare2;
 179        } SETUP_DEVICE, *PSETUP_DEVICE;
 180
 181typedef struct          // master setup structure
 182        {
 183        USHORT                  startupDelay;
 184        USHORT                  promptBIOS;
 185        USHORT                  fastFormat;
 186        USHORT                  spare2;
 187        USHORT                  spare3;
 188        USHORT                  spare4;
 189        USHORT                  spare5;
 190        USHORT                  spare6;
 191        SETUP_DEVICE    setupDevice[8];
 192        }       SETUP, *PSETUP;
 193
 194#endif
 195
 196
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.