aboutsummaryrefslogtreecommitdiff
path: root/drivers/cdrom/sonycd535.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cdrom/sonycd535.h')
-rw-r--r--drivers/cdrom/sonycd535.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/drivers/cdrom/sonycd535.h b/drivers/cdrom/sonycd535.h
new file mode 100644
index 00000000000..5dea1ef168d
--- /dev/null
+++ b/drivers/cdrom/sonycd535.h
@@ -0,0 +1,183 @@
+#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 */