| #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 */ |