File: /usr/src/linux/drivers/cdrom/sonycd535.h

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