⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psi_chip.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 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 + -