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

📄 cdu31a.h

📁 LINUX1.0内核源代码,学习LINUX编程的一定要看。
💻 H
字号:
/* * Definitions for a Sony interface CDROM drive. * * Corey Minyard (minyard@wf-rch.cirr.com) * *  Copyright (C) 1993  Corey Minyard * *  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 of the License, 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; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *//* * Offsets (from the base address) and bits for the various write registers * of the drive. */#define SONY_CMD_REG_OFFSET	0#define SONY_PARAM_REG_OFFSET	1#define SONY_WRITE_REG_OFFSET	2#define SONY_CONTROL_REG_OFFSET	3#	define SONY_ATTN_CLR_BIT	0x01#	define SONY_RES_RDY_CLR_BIT	0x02#	define SONY_DATA_RDY_CLR_BIT	0x04#	define SONY_ATTN_INT_EN_BIT	0x08#	define SONY_RES_RDY_INT_EN_BIT	0x10#	define SONY_DATA_RDY_INT_EN_BIT	0x20#	define SONY_PARAM_CLR_BIT	0x40#	define SONY_DRIVE_RESET_BIT	0x80/* * Offsets (from the base address) and bits for the various read registers * of the drive. */#define SONY_STATUS_REG_OFFSET	0#	define SONY_ATTN_BIT		0x01#	define SONY_RES_RDY_BIT		0x02#	define SONY_DATA_RDY_BIT	0x04#	define SONY_ATTN_INT_ST_BIT	0x08#	define SONY_RES_RDY_INT_ST_BIT	0x10#	define SONY_DATA_RDY_INT_ST_BIT	0x20#	define SONY_DATA_REQUEST_BIT	0x40#	define SONY_BUSY_BIT		0x80#define SONY_RESULT_REG_OFFSET	1#define SONY_READ_REG_OFFSET	2#define SONY_FIFOST_REG_OFFSET	3#	define SONY_PARAM_WRITE_RDY_BIT	0x01#	define SONY_PARAM_REG_EMPTY_BIT	0x02#	define SONY_RES_REG_NOT_EMP_BIT	0x04#	define SONY_RES_REG_FULL_BIT	0x08#define LOG_START_OFFSET	150	/* Offset of first logical sector */#define SONY_DETECT_TIMEOUT	80	/* Maximum amount of time					   that drive detection code					   will wait for response					   from drive (in 1/100th's					   of seconds). */ #define SONY_JIFFIES_TIMEOUT	500	/* Maximum number of times the					   drive will wait/try for an					   operation */#define SONY_RESET_TIMEOUT	100	/* Maximum number of times the					   drive will wait/try a reset					   operation */#define SONY_READY_RETRIES	20000	/* How many times to retry a					   spin waiting for a register					   to come ready */#define MAX_CDU31A_RETRIES	3	/* How many times to retry an					   operation *//* Commands to request or set drive control parameters and disc information */#define SONY_REQ_DRIVE_CONFIG_CMD	0x00    /* Returns s_sony_drive_config */#define SONY_REQ_DRIVE_MODE_CMD		0x01#define SONY_REQ_DRIVE_PARAM_CMD	0x02#define SONY_REQ_MECH_STATUS_CMD	0x03#define SONY_REQ_AUDIO_STATUS_CMD	0x04#define SONY_SET_DRIVE_PARAM_CMD	0x10#define SONY_REQ_TOC_DATA_CMD		0x20    /* Returns s_sony_toc */#define SONY_REQ_SUBCODE_ADDRESS_CMD	0x21    /* Returns s_sony_subcode */#define SONY_REQ_UPC_EAN_CMD		0x22#define SONY_REQ_ISRC_CMD		0x23#define SONY_REQ_TOC_DATA_SPEC_CMD	0x24/* Commands to request information from the drive */#define SONY_READ_TOC_CMD		0x30#define SONY_SEEK_CMD			0x31#define SONY_READ_CMD			0x32#define SONY_READ_BLKERR_STAT_CMD	0x34#define SONY_ABORT_CMD			0x35#define SONY_READ_TOC_SPEC_CMD		0x36/* Commands to control audio */#define SONY_AUDIO_PLAYBACK_CMD		0x40#define SONY_AUDIO_STOP_CMD		0x41#define SONY_AUDIO_SCAN_CMD		0x42/* Miscellaneous control commands */#define SONY_EJECT_CMD			0x50#define SONY_SPIN_UP_CMD		0x51#define SONY_SPIN_DOWN_CMD		0x52/* Diagnostic commands */#define SONY_WRITE_BUFFER_CMD		0x60#define SONY_READ_BUFFER_CMD		0x61#define SONY_DIAGNOSTICS_CMD		0x62/* * The following are command paramters for the set drive parameter command */#define SONY_SD_DECODE_PARAM		0x00#define SONY_SD_INTERFACE_PARAM		0x01#define SONY_SD_BUFFERING_PARAM		0x02#define SONY_SD_AUDIO_PARAM		0x03#define SONY_SD_AUDIO_VOLUME		0x04#define SONY_SD_MECH_CONTROL		0x05#define SONY_SD_AUTO_SPIN_DOWN_TIME	0x06/* * The following extract information from the drive configuration about * the drive itself. */#define SONY_HWC_GET_LOAD_MECH(c)	(c.hw_config[0] & 0x03)#define SONY_HWC_EJECT(c)		(c.hw_config[0] & 0x04)#define SONY_HWC_LED_SUPPORT(c)		(c.hw_config[0] & 0x08)#define SONY_HWC_GET_BUF_MEM_SIZE(c)	((c.hw_config[0] & 0xc0) >> 6)#define SONY_HWC_AUDIO_PLAYBACK(c)	(c.hw_config[1] & 0x01)#define SONY_HWC_ELECTRIC_VOLUME(c)	(c.hw_config[1] & 0x02)#define SONY_HWC_ELECTRIC_VOLUME_CTL(c)	(c.hw_config[1] & 0x04)#define SONY_HWC_CADDY_LOAD_MECH	0x00#define SONY_HWC_TRAY_LOAD_MECH		0x01#define SONY_HWC_POPUP_LOAD_MECH	0x02#define SONY_HWC_UNKWN_LOAD_MECH	0x03#define SONY_HWC_8KB_BUFFER		0x00#define SONY_HWC_32KB_BUFFER		0x01#define SONY_HWC_64KB_BUFFER		0x02#define SONY_HWC_UNKWN_BUFFER		0x03/* * This is the complete status returned from the drive configuration request * command. */struct s_sony_drive_config{   unsigned char exec_status[2];   char vendor_id[8];   char product_id[16];   char product_rev_level[8];   unsigned char hw_config[2];};/* The following is returned from the request subcode address command */struct s_sony_subcode{   unsigned char exec_status[2];   unsigned char address	:4;   unsigned char control	:4;   unsigned char track_num;   unsigned char index_num;   unsigned char rel_msf[3];   unsigned char reserved1;   unsigned char abs_msf[3];};/* * The following is returned from the request TOC (Table Of Contents) command. * (last_track_num-first_track_num+1) values are valid in tracks. */struct s_sony_toc{   unsigned char exec_status[2];   unsigned char address0	:4;   unsigned char control0	:4;   unsigned char point0;   unsigned char first_track_num;   unsigned char disk_type;   unsigned char dummy0;   unsigned char address1	:4;   unsigned char control1	:4;   unsigned char point1;   unsigned char last_track_num;   unsigned char dummy1;   unsigned char dummy2;   unsigned char address2	:4;   unsigned char control2	:4;   unsigned char point2;   unsigned char lead_out_start_msf[3];   struct   {      unsigned char address	:4;      unsigned char control	:4;      unsigned char track;      unsigned char track_start_msf[3];   } tracks[100];   unsigned int lead_out_start_lba;};/* * The following are errors returned from the drive. *//* Command error group */#define SONY_ILL_CMD_ERR		0x10#define SONY_ILL_PARAM_ERR		0x11/* Mechanism group */#define SONY_NOT_LOAD_ERR		0x20#define SONY_NO_DISK_ERR		0x21#define SONY_NOT_SPIN_ERR		0x22#define SONY_SPIN_ERR			0x23#define SONY_SPINDLE_SERVO_ERR		0x25#define SONY_FOCUS_SERVO_ERR		0x26#define SONY_EJECT_MECH_ERR		0x29#define SONY_AUDIO_PLAYING_ERR		0x2a#define SONY_EMERGENCY_EJECT_ERR	0x2c/* Seek error group */#define SONY_FOCUS_ERR			0x30#define SONY_FRAME_SYNC_ERR		0x31#define SONY_SUBCODE_ADDR_ERR		0x32#define SONY_BLOCK_SYNC_ERR		0x33#define SONY_HEADER_ADDR_ERR		0x34/* Read error group */#define SONY_ILL_TRACK_R_ERR		0x40#define SONY_MODE_0_R_ERR		0x41#define SONY_ILL_MODE_R_ERR		0x42#define SONY_ILL_BLOCK_SIZE_R_ERR	0x43#define SONY_MODE_R_ERR			0x44#define SONY_FORM_R_ERR			0x45#define SONY_LEAD_OUT_R_ERR		0x46#define SONY_BUFFER_OVERRUN_R_ERR	0x47/* Data error group */#define SONY_UNREC_CIRC_ERR		0x53#define SONY_UNREC_LECC_ERR		0x57/* Subcode error group */#define SONY_NO_TOC_ERR			0x60#define SONY_SUBCODE_DATA_NVAL_ERR	0x61#define SONY_FOCUS_ON_TOC_READ_ERR	0x63#define SONY_FRAME_SYNC_ON_TOC_READ_ERR	0x64#define SONY_TOC_DATA_ERR		0x65/* Hardware failure group */#define SONY_HW_FAILURE_ERR		0x70#define SONY_LEAD_IN_A_ERR		0x91#define SONY_LEAD_OUT_A_ERR		0x92#define SONY_DATA_TRACK_A_ERR		0x93/* * The following are returned from the Read With Block Error Status command. * They are not errors but information (Errors from the 0x5x group above may * also be returned */#define SONY_NO_CIRC_ERR_BLK_STAT	0x50#define SONY_NO_LECC_ERR_BLK_STAT	0x54#define SONY_RECOV_LECC_ERR_BLK_STAT	0x55#define SONY_NO_ERR_DETECTION_STAT	0x59/*  * The following is not an error returned by the drive, but by the code * that talks to the drive.  It is returned because of a timeout. */#define SONY_TIMEOUT_OP_ERR		0x01#define SONY_SIGNAL_OP_ERR		0x02/* * The following are attention code for asyncronous events from the drive. *//* Standard attention group */#define SONY_EMER_EJECT_ATTN		0x2c#define SONY_HW_FAILURE_ATTN		0x70#define SONY_MECH_LOADED_ATTN		0x80#define SONY_EJECT_PUSHED_ATTN		0x81/* Audio attention group */#define SONY_AUDIO_PLAY_DONE_ATTN	0x90#define SONY_LEAD_IN_ERR_ATTN	 	0x91#define SONY_LEAD_OUT_ERR_ATTN	 	0x92#define SONY_DATA_TRACK_ERR_ATTN	0x93#define SONY_AUDIO_PLAYBACK_ERR_ATTN	0x94/* Auto spin up group */#define SONY_SPIN_UP_COMPLETE_ATTN	0x24#define SONY_SPINDLE_SERVO_ERR_ATTN	0x25#define SONY_FOCUS_SERVO_ERR_ATTN	0x26#define SONY_TOC_READ_DONE_ATTN		0x62#define SONY_FOCUS_ON_TOC_READ_ERR_ATTN	0x63#define SONY_SYNC_ON_TOC_READ_ERR_ATTN	0x65/* Auto eject group */#define SONY_SPIN_DOWN_COMPLETE_ATTN	0x27#define SONY_EJECT_COMPLETE_ATTN	0x28#define SONY_EJECT_MECH_ERR_ATTN	0x29

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -