diff options
Diffstat (limited to 'drivers/cdrom/sonycd535.h')
-rw-r--r-- | drivers/cdrom/sonycd535.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/drivers/cdrom/sonycd535.h b/drivers/cdrom/sonycd535.h new file mode 100644 index 000000000000..5dea1ef168d6 --- /dev/null +++ b/drivers/cdrom/sonycd535.h | |||
@@ -0,0 +1,183 @@ | |||
1 | #ifndef SONYCD535_H | ||
2 | #define SONYCD535_H | ||
3 | |||
4 | /* | ||
5 | * define all the commands recognized by the CDU-531/5 | ||
6 | */ | ||
7 | #define SONY535_REQUEST_DRIVE_STATUS_1 (0x80) | ||
8 | #define SONY535_REQUEST_SENSE (0x82) | ||
9 | #define SONY535_REQUEST_DRIVE_STATUS_2 (0x84) | ||
10 | #define SONY535_REQUEST_ERROR_STATUS (0x86) | ||
11 | #define SONY535_REQUEST_AUDIO_STATUS (0x88) | ||
12 | #define SONY535_INQUIRY (0x8a) | ||
13 | |||
14 | #define SONY535_SET_INACTIVITY_TIME (0x90) | ||
15 | |||
16 | #define SONY535_SEEK_AND_READ_N_BLOCKS_1 (0xa0) | ||
17 | #define SONY535_SEEK_AND_READ_N_BLOCKS_2 (0xa4) | ||
18 | #define SONY535_PLAY_AUDIO (0xa6) | ||
19 | |||
20 | #define SONY535_REQUEST_DISC_CAPACITY (0xb0) | ||
21 | #define SONY535_REQUEST_TOC_DATA (0xb2) | ||
22 | #define SONY535_REQUEST_SUB_Q_DATA (0xb4) | ||
23 | #define SONY535_REQUEST_ISRC (0xb6) | ||
24 | #define SONY535_REQUEST_UPC_EAN (0xb8) | ||
25 | |||
26 | #define SONY535_SET_DRIVE_MODE (0xc0) | ||
27 | #define SONY535_REQUEST_DRIVE_MODE (0xc2) | ||
28 | #define SONY535_SET_RETRY_COUNT (0xc4) | ||
29 | |||
30 | #define SONY535_DIAGNOSTIC_1 (0xc6) | ||
31 | #define SONY535_DIAGNOSTIC_4 (0xcc) | ||
32 | #define SONY535_DIAGNOSTIC_5 (0xce) | ||
33 | |||
34 | #define SONY535_EJECT_CADDY (0xd0) | ||
35 | #define SONY535_DISABLE_EJECT_BUTTON (0xd2) | ||
36 | #define SONY535_ENABLE_EJECT_BUTTON (0xd4) | ||
37 | |||
38 | #define SONY535_HOLD (0xe0) | ||
39 | #define SONY535_AUDIO_PAUSE_ON_OFF (0xe2) | ||
40 | #define SONY535_SET_VOLUME (0xe8) | ||
41 | |||
42 | #define SONY535_STOP (0xf0) | ||
43 | #define SONY535_SPIN_UP (0xf2) | ||
44 | #define SONY535_SPIN_DOWN (0xf4) | ||
45 | |||
46 | #define SONY535_CLEAR_PARAMETERS (0xf6) | ||
47 | #define SONY535_CLEAR_ENDING_ADDRESS (0xf8) | ||
48 | |||
49 | /* | ||
50 | * define some masks | ||
51 | */ | ||
52 | #define SONY535_DATA_NOT_READY_BIT (0x1) | ||
53 | #define SONY535_RESULT_NOT_READY_BIT (0x2) | ||
54 | |||
55 | /* | ||
56 | * drive status 1 | ||
57 | */ | ||
58 | #define SONY535_STATUS1_COMMAND_ERROR (0x1) | ||
59 | #define SONY535_STATUS1_DATA_ERROR (0x2) | ||
60 | #define SONY535_STATUS1_SEEK_ERROR (0x4) | ||
61 | #define SONY535_STATUS1_DISC_TYPE_ERROR (0x8) | ||
62 | #define SONY535_STATUS1_NOT_SPINNING (0x10) | ||
63 | #define SONY535_STATUS1_EJECT_BUTTON_PRESSED (0x20) | ||
64 | #define SONY535_STATUS1_CADDY_NOT_INSERTED (0x40) | ||
65 | #define SONY535_STATUS1_BYTE_TWO_FOLLOWS (0x80) | ||
66 | |||
67 | /* | ||
68 | * drive status 2 | ||
69 | */ | ||
70 | #define SONY535_CDD_LOADING_ERROR (0x7) | ||
71 | #define SONY535_CDD_NO_DISC (0x8) | ||
72 | #define SONY535_CDD_UNLOADING_ERROR (0x9) | ||
73 | #define SONY535_CDD_CADDY_NOT_INSERTED (0xd) | ||
74 | #define SONY535_ATN_RESET_OCCURRED (0x2) | ||
75 | #define SONY535_ATN_DISC_CHANGED (0x4) | ||
76 | #define SONY535_ATN_RESET_AND_DISC_CHANGED (0x6) | ||
77 | #define SONY535_ATN_EJECT_IN_PROGRESS (0xe) | ||
78 | #define SONY535_ATN_BUSY (0xf) | ||
79 | |||
80 | /* | ||
81 | * define some parameters | ||
82 | */ | ||
83 | #define SONY535_AUDIO_DRIVE_MODE (0) | ||
84 | #define SONY535_CDROM_DRIVE_MODE (0xe0) | ||
85 | |||
86 | #define SONY535_PLAY_OP_PLAYBACK (0) | ||
87 | #define SONY535_PLAY_OP_ENTER_HOLD (1) | ||
88 | #define SONY535_PLAY_OP_SET_AUDIO_ENDING_ADDR (2) | ||
89 | #define SONY535_PLAY_OP_SCAN_FORWARD (3) | ||
90 | #define SONY535_PLAY_OP_SCAN_BACKWARD (4) | ||
91 | |||
92 | /* | ||
93 | * convert from msf format to block number | ||
94 | */ | ||
95 | #define SONY_BLOCK_NUMBER(m,s,f) (((m)*60L+(s))*75L+(f)) | ||
96 | #define SONY_BLOCK_NUMBER_MSF(x) (((x)[0]*60L+(x)[1])*75L+(x)[2]) | ||
97 | |||
98 | /* | ||
99 | * error return values from the doSonyCmd() routines | ||
100 | */ | ||
101 | #define TIME_OUT (-1) | ||
102 | #define NO_CDROM (-2) | ||
103 | #define BAD_STATUS (-3) | ||
104 | #define CD_BUSY (-4) | ||
105 | #define NOT_DATA_CD (-5) | ||
106 | #define NO_ROOM (-6) | ||
107 | |||
108 | #define LOG_START_OFFSET 150 /* Offset of first logical sector */ | ||
109 | |||
110 | #define SONY_JIFFIES_TIMEOUT (5*HZ) /* Maximum time | ||
111 | the drive will wait/try for an | ||
112 | operation */ | ||
113 | #define SONY_READY_RETRIES (50000) /* How many times to retry a | ||
114 | spin waiting for a register | ||
115 | to come ready */ | ||
116 | #define SONY535_FAST_POLLS (10000) /* how many times recheck | ||
117 | status waiting for a data | ||
118 | to become ready */ | ||
119 | |||
120 | typedef unsigned char Byte; | ||
121 | |||
122 | /* | ||
123 | * This is the complete status returned from the drive configuration request | ||
124 | * command. | ||
125 | */ | ||
126 | struct s535_sony_drive_config | ||
127 | { | ||
128 | char vendor_id[8]; | ||
129 | char product_id[16]; | ||
130 | char product_rev_level[4]; | ||
131 | }; | ||
132 | |||
133 | /* The following is returned from the request sub-q data command */ | ||
134 | struct s535_sony_subcode | ||
135 | { | ||
136 | unsigned char address :4; | ||
137 | unsigned char control :4; | ||
138 | unsigned char track_num; | ||
139 | unsigned char index_num; | ||
140 | unsigned char rel_msf[3]; | ||
141 | unsigned char abs_msf[3]; | ||
142 | }; | ||
143 | |||
144 | struct s535_sony_disc_capacity | ||
145 | { | ||
146 | Byte mFirstTrack, sFirstTrack, fFirstTrack; | ||
147 | Byte mLeadOut, sLeadOut, fLeadOut; | ||
148 | }; | ||
149 | |||
150 | /* | ||
151 | * The following is returned from the request TOC (Table Of Contents) command. | ||
152 | * (last_track_num-first_track_num+1) values are valid in tracks. | ||
153 | */ | ||
154 | struct s535_sony_toc | ||
155 | { | ||
156 | unsigned char reserved0 :4; | ||
157 | unsigned char control0 :4; | ||
158 | unsigned char point0; | ||
159 | unsigned char first_track_num; | ||
160 | unsigned char reserved0a; | ||
161 | unsigned char reserved0b; | ||
162 | unsigned char reserved1 :4; | ||
163 | unsigned char control1 :4; | ||
164 | unsigned char point1; | ||
165 | unsigned char last_track_num; | ||
166 | unsigned char dummy1; | ||
167 | unsigned char dummy2; | ||
168 | unsigned char reserved2 :4; | ||
169 | unsigned char control2 :4; | ||
170 | unsigned char point2; | ||
171 | unsigned char lead_out_start_msf[3]; | ||
172 | struct | ||
173 | { | ||
174 | unsigned char reserved :4; | ||
175 | unsigned char control :4; | ||
176 | unsigned char track; | ||
177 | unsigned char track_start_msf[3]; | ||
178 | } tracks[100]; | ||
179 | |||
180 | unsigned int lead_out_start_lba; | ||
181 | }; | ||
182 | |||
183 | #endif /* SONYCD535_H */ | ||