📄 psi_chip.h
字号:
/*+M************************************************************************* * Perceptive Solutions, Inc. PSI-240I device driver proc support for Linux. * * Copyright (c) 1997 Perceptive Solutions, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * * File Name: psi_chip.h * * Description: This file contains the interface defines and * error codes. * *-M*************************************************************************/#ifndef PSI_CHIP#define PSI_CHIP/************************************************//* Misc konstants *//************************************************/#define CHIP_MAXDRIVES 8/************************************************//* Chip I/O addresses *//************************************************/#define CHIP_ADRS_0 0x0130#define CHIP_ADRS_1 0x0150#define CHIP_ADRS_2 0x0190#define CHIP_ADRS_3 0x0210#define CHIP_ADRS_4 0x0230#define CHIP_ADRS_5 0x0250/************************************************//* EEPROM locations *//************************************************/#define CHIP_EEPROM_BIOS 0x0000 // BIOS base address#define CHIP_EEPROM_DATA 0x2000 // SETUP data base address#define CHIP_EEPROM_FACTORY 0x2400 // FACTORY data base address#define CHIP_EEPROM_SETUP 0x3000 // SETUP PROGRAM base address#define CHIP_EEPROM_SIZE 32768U // size of the entire EEPROM#define CHIP_EEPROM_BIOS_SIZE 8192 // size of the BIOS in bytes#define CHIP_EEPROM_DATA_SIZE 4096 // size of factory, setup, log data block in bytes#define CHIP_EEPROM_SETUP_SIZE 20480U // size of the setup program in bytes/************************************************//* Chip Interrupts *//************************************************/#define CHIP_IRQ_10 0x72#define CHIP_IRQ_11 0x73#define CHIP_IRQ_12 0x74/************************************************//* Chip Setup addresses *//************************************************/#define CHIP_SETUP_BASE 0x0000C000L/************************************************//* Chip Register address offsets *//************************************************/#define REG_DATA 0x00#define REG_ERROR 0x01#define REG_SECTOR_COUNT 0x02#define REG_LBA_0 0x03#define REG_LBA_8 0x04#define REG_LBA_16 0x05#define REG_LBA_24 0x06#define REG_STAT_CMD 0x07#define REG_SEL_FAIL 0x08#define REG_IRQ_STATUS 0x09#define REG_ADDRESS 0x0A#define REG_FAIL 0x0C#define REG_ALT_STAT 0x0E#define REG_DRIVE_ADRS 0x0F/************************************************//* Chip RAM locations *//************************************************/#define CHIP_DEVICE 0x8000#define CHIP_DEVICE_0 0x8000#define CHIP_DEVICE_1 0x8008#define CHIP_DEVICE_2 0x8010#define CHIP_DEVICE_3 0x8018#define CHIP_DEVICE_4 0x8020#define CHIP_DEVICE_5 0x8028#define CHIP_DEVICE_6 0x8030#define CHIP_DEVICE_7 0x8038typedef struct { UCHAR channel; // channel of this device (0-8). UCHAR spt; // Sectors Per Track. ULONG spc; // Sectors Per Cylinder. } CHIP_DEVICE_N;#define CHIP_CONFIG 0x8100 // address of boards configuration.typedef struct { UCHAR irq; // interrupt request channel number UCHAR numDrives; // Number of accessable drives UCHAR fastFormat; // Boolean for fast format enable } CHIP_CONFIG_N;#define CHIP_MAP 0x8108 // eight byte device type map.#define CHIP_RAID 0x8120 // array of RAID signature structures and LBA#define CHIP_RAID_1 0x8120#define CHIP_RAID_2 0x8130#define CHIP_RAID_3 0x8140#define CHIP_RAID_4 0x8150/************************************************//* Chip Register Masks *//************************************************/#define CHIP_ID 0x7B#define SEL_RAM 0x8000#define MASK_FAIL 0x80/************************************************//* Chip cable select bits *//************************************************/#define SECTORSXFER 8/************************************************//* Chip cable select bits *//************************************************/#define SEL_NONE 0x00#define SEL_1 0x01#define SEL_2 0x02#define SEL_3 0x04#define SEL_4 0x08/************************************************//* Programmable Interrupt Controller*//************************************************/#define PIC1 0x20 // first 8259 base port address#define PIC2 0xA0 // second 8259 base port address#define INT_OCW1 1 // Operation Control Word 1: IRQ mask#define EOI 0x20 // non-specific end-of-interrupt/************************************************//* Device/Geometry controls *//************************************************/#define GEOMETRY_NONE 0x0 // No device#define GEOMETRY_AUTO 0x1 // Geometry set automatically#define GEOMETRY_USER 0x2 // User supplied geometry#define DEVICE_NONE 0x0 // No device present#define DEVICE_INACTIVE 0x1 // device present but not registered active#define DEVICE_ATAPI 0x2 // ATAPI device (CD_ROM, Tape, Etc...)#define DEVICE_DASD_NONLBA 0x3 // Non LBA incompatible device#define DEVICE_DASD_LBA 0x4 // LBA compatible device/************************************************//* Setup Structure Definitions *//************************************************/typedef struct // device setup parameters { UCHAR geometryControl; // geometry control flags UCHAR device; // device code USHORT sectors; // number of sectors per track USHORT heads; // number of heads USHORT cylinders; // number of cylinders for this device ULONG blocks; // number of blocks on device USHORT spare1; USHORT spare2; } SETUP_DEVICE, *PSETUP_DEVICE;typedef struct // master setup structure { USHORT startupDelay; USHORT promptBIOS; USHORT fastFormat; USHORT spare2; USHORT spare3; USHORT spare4; USHORT spare5; USHORT spare6; SETUP_DEVICE setupDevice[8]; } SETUP, *PSETUP;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -