|  | #ifndef SONYCD535_H | 
|  | #define SONYCD535_H | 
|  |  | 
|  | /* | 
|  | * define all the commands recognized by the CDU-531/5 | 
|  | */ | 
|  | #define SONY535_REQUEST_DRIVE_STATUS_1		(0x80) | 
|  | #define SONY535_REQUEST_SENSE			(0x82) | 
|  | #define SONY535_REQUEST_DRIVE_STATUS_2		(0x84) | 
|  | #define SONY535_REQUEST_ERROR_STATUS		(0x86) | 
|  | #define SONY535_REQUEST_AUDIO_STATUS		(0x88) | 
|  | #define SONY535_INQUIRY				(0x8a) | 
|  |  | 
|  | #define SONY535_SET_INACTIVITY_TIME		(0x90) | 
|  |  | 
|  | #define SONY535_SEEK_AND_READ_N_BLOCKS_1	(0xa0) | 
|  | #define SONY535_SEEK_AND_READ_N_BLOCKS_2	(0xa4) | 
|  | #define SONY535_PLAY_AUDIO			(0xa6) | 
|  |  | 
|  | #define SONY535_REQUEST_DISC_CAPACITY		(0xb0) | 
|  | #define SONY535_REQUEST_TOC_DATA		(0xb2) | 
|  | #define SONY535_REQUEST_SUB_Q_DATA		(0xb4) | 
|  | #define SONY535_REQUEST_ISRC			(0xb6) | 
|  | #define SONY535_REQUEST_UPC_EAN			(0xb8) | 
|  |  | 
|  | #define SONY535_SET_DRIVE_MODE			(0xc0) | 
|  | #define SONY535_REQUEST_DRIVE_MODE		(0xc2) | 
|  | #define SONY535_SET_RETRY_COUNT			(0xc4) | 
|  |  | 
|  | #define SONY535_DIAGNOSTIC_1			(0xc6) | 
|  | #define SONY535_DIAGNOSTIC_4			(0xcc) | 
|  | #define SONY535_DIAGNOSTIC_5			(0xce) | 
|  |  | 
|  | #define SONY535_EJECT_CADDY			(0xd0) | 
|  | #define SONY535_DISABLE_EJECT_BUTTON		(0xd2) | 
|  | #define SONY535_ENABLE_EJECT_BUTTON		(0xd4) | 
|  |  | 
|  | #define SONY535_HOLD				(0xe0) | 
|  | #define SONY535_AUDIO_PAUSE_ON_OFF		(0xe2) | 
|  | #define SONY535_SET_VOLUME			(0xe8) | 
|  |  | 
|  | #define SONY535_STOP				(0xf0) | 
|  | #define SONY535_SPIN_UP				(0xf2) | 
|  | #define SONY535_SPIN_DOWN			(0xf4) | 
|  |  | 
|  | #define SONY535_CLEAR_PARAMETERS		(0xf6) | 
|  | #define SONY535_CLEAR_ENDING_ADDRESS		(0xf8) | 
|  |  | 
|  | /* | 
|  | * define some masks | 
|  | */ | 
|  | #define SONY535_DATA_NOT_READY_BIT		(0x1) | 
|  | #define SONY535_RESULT_NOT_READY_BIT		(0x2) | 
|  |  | 
|  | /* | 
|  | *  drive status 1 | 
|  | */ | 
|  | #define SONY535_STATUS1_COMMAND_ERROR		(0x1) | 
|  | #define SONY535_STATUS1_DATA_ERROR		(0x2) | 
|  | #define SONY535_STATUS1_SEEK_ERROR		(0x4) | 
|  | #define SONY535_STATUS1_DISC_TYPE_ERROR		(0x8) | 
|  | #define SONY535_STATUS1_NOT_SPINNING		(0x10) | 
|  | #define SONY535_STATUS1_EJECT_BUTTON_PRESSED	(0x20) | 
|  | #define SONY535_STATUS1_CADDY_NOT_INSERTED	(0x40) | 
|  | #define SONY535_STATUS1_BYTE_TWO_FOLLOWS	(0x80) | 
|  |  | 
|  | /* | 
|  | * drive status 2 | 
|  | */ | 
|  | #define SONY535_CDD_LOADING_ERROR		(0x7) | 
|  | #define SONY535_CDD_NO_DISC			(0x8) | 
|  | #define SONY535_CDD_UNLOADING_ERROR		(0x9) | 
|  | #define SONY535_CDD_CADDY_NOT_INSERTED		(0xd) | 
|  | #define SONY535_ATN_RESET_OCCURRED		(0x2) | 
|  | #define SONY535_ATN_DISC_CHANGED		(0x4) | 
|  | #define SONY535_ATN_RESET_AND_DISC_CHANGED	(0x6) | 
|  | #define SONY535_ATN_EJECT_IN_PROGRESS		(0xe) | 
|  | #define SONY535_ATN_BUSY			(0xf) | 
|  |  | 
|  | /* | 
|  | * define some parameters | 
|  | */ | 
|  | #define SONY535_AUDIO_DRIVE_MODE		(0) | 
|  | #define SONY535_CDROM_DRIVE_MODE		(0xe0) | 
|  |  | 
|  | #define SONY535_PLAY_OP_PLAYBACK		(0) | 
|  | #define SONY535_PLAY_OP_ENTER_HOLD		(1) | 
|  | #define SONY535_PLAY_OP_SET_AUDIO_ENDING_ADDR	(2) | 
|  | #define SONY535_PLAY_OP_SCAN_FORWARD		(3) | 
|  | #define SONY535_PLAY_OP_SCAN_BACKWARD		(4) | 
|  |  | 
|  | /* | 
|  | *  convert from msf format to block number | 
|  | */ | 
|  | #define SONY_BLOCK_NUMBER(m,s,f) (((m)*60L+(s))*75L+(f)) | 
|  | #define SONY_BLOCK_NUMBER_MSF(x) (((x)[0]*60L+(x)[1])*75L+(x)[2]) | 
|  |  | 
|  | /* | 
|  | *  error return values from the doSonyCmd() routines | 
|  | */ | 
|  | #define TIME_OUT			(-1) | 
|  | #define NO_CDROM			(-2) | 
|  | #define BAD_STATUS			(-3) | 
|  | #define CD_BUSY				(-4) | 
|  | #define NOT_DATA_CD			(-5) | 
|  | #define NO_ROOM				(-6) | 
|  |  | 
|  | #define LOG_START_OFFSET        150     /* Offset of first logical sector */ | 
|  |  | 
|  | #define SONY_JIFFIES_TIMEOUT	(5*HZ)	/* Maximum time | 
|  | the drive will wait/try for an | 
|  | operation */ | 
|  | #define SONY_READY_RETRIES      (50000)  /* How many times to retry a | 
|  | spin waiting for a register | 
|  | to come ready */ | 
|  | #define SONY535_FAST_POLLS	(10000)   /* how many times recheck | 
|  | status waiting for a data | 
|  | to become ready */ | 
|  |  | 
|  | typedef unsigned char Byte; | 
|  |  | 
|  | /* | 
|  | * This is the complete status returned from the drive configuration request | 
|  | * command. | 
|  | */ | 
|  | struct s535_sony_drive_config | 
|  | { | 
|  | char vendor_id[8]; | 
|  | char product_id[16]; | 
|  | char product_rev_level[4]; | 
|  | }; | 
|  |  | 
|  | /* The following is returned from the request sub-q data command */ | 
|  | struct s535_sony_subcode | 
|  | { | 
|  | unsigned char address        :4; | 
|  | unsigned char control        :4; | 
|  | unsigned char track_num; | 
|  | unsigned char index_num; | 
|  | unsigned char rel_msf[3]; | 
|  | unsigned char abs_msf[3]; | 
|  | }; | 
|  |  | 
|  | struct s535_sony_disc_capacity | 
|  | { | 
|  | Byte mFirstTrack, sFirstTrack, fFirstTrack; | 
|  | Byte mLeadOut, sLeadOut, fLeadOut; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * 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 s535_sony_toc | 
|  | { | 
|  | unsigned char reserved0      :4; | 
|  | unsigned char control0       :4; | 
|  | unsigned char point0; | 
|  | unsigned char first_track_num; | 
|  | unsigned char reserved0a; | 
|  | unsigned char reserved0b; | 
|  | unsigned char reserved1      :4; | 
|  | unsigned char control1       :4; | 
|  | unsigned char point1; | 
|  | unsigned char last_track_num; | 
|  | unsigned char dummy1; | 
|  | unsigned char dummy2; | 
|  | unsigned char reserved2      :4; | 
|  | unsigned char control2       :4; | 
|  | unsigned char point2; | 
|  | unsigned char lead_out_start_msf[3]; | 
|  | struct | 
|  | { | 
|  | unsigned char reserved    :4; | 
|  | unsigned char control     :4; | 
|  | unsigned char track; | 
|  | unsigned char track_start_msf[3]; | 
|  | } tracks[100]; | 
|  |  | 
|  | unsigned int lead_out_start_lba; | 
|  | }; | 
|  |  | 
|  | #endif /* SONYCD535_H */ |