mirror of https://gitee.com/openkylin/linux.git
109 lines
2.4 KiB
C
109 lines
2.4 KiB
C
/*
|
|
* Definitions for a GoldStar R420 CD-ROM interface
|
|
*
|
|
* Copyright (C) 1995 Oliver Raupach <raupach@nwfs1.rz.fh-hannover.de>
|
|
* Eberhard Moenkeberg <emoenke@gwdg.de>
|
|
*
|
|
* Published under the GPL.
|
|
*
|
|
*/
|
|
|
|
|
|
/* The Interface Card default address is 0x340. This will work for most
|
|
applications. Address selection is accomplished by jumpers PN801-1 to
|
|
PN801-4 on the GoldStar Interface Card.
|
|
Appropriate settings are: 0x300, 0x310, 0x320, 0x330, 0x340, 0x350, 0x360
|
|
0x370, 0x380, 0x390, 0x3A0, 0x3B0, 0x3C0, 0x3D0, 0x3E0, 0x3F0 */
|
|
|
|
/* insert here the I/O port address and extent */
|
|
#define GSCD_BASE_ADDR 0x340
|
|
#define GSCD_IO_EXTENT 4
|
|
|
|
|
|
/************** nothing to set up below here *********************/
|
|
|
|
/* port access macro */
|
|
#define GSCDPORT(x) (gscd_port + (x))
|
|
|
|
/*
|
|
* commands
|
|
* the lower nibble holds the command length
|
|
*/
|
|
#define CMD_STATUS 0x01
|
|
#define CMD_READSUBQ 0x02 /* 1: ?, 2: UPC, 5: ? */
|
|
#define CMD_SEEK 0x05 /* read_mode M-S-F */
|
|
#define CMD_READ 0x07 /* read_mode M-S-F nsec_h nsec_l */
|
|
#define CMD_RESET 0x11
|
|
#define CMD_SETMODE 0x15
|
|
#define CMD_PLAY 0x17 /* M-S-F M-S-F */
|
|
#define CMD_LOCK_CTL 0x22 /* 0: unlock, 1: lock */
|
|
#define CMD_IDENT 0x31
|
|
#define CMD_SETSPEED 0x32 /* 0: auto */ /* ??? */
|
|
#define CMD_GETMODE 0x41
|
|
#define CMD_PAUSE 0x51
|
|
#define CMD_READTOC 0x61
|
|
#define CMD_DISKINFO 0x71
|
|
#define CMD_TRAY_CTL 0x81
|
|
|
|
/*
|
|
* disk_state:
|
|
*/
|
|
#define ST_PLAYING 0x80
|
|
#define ST_UNLOCKED 0x40
|
|
#define ST_NO_DISK 0x20
|
|
#define ST_DOOR_OPEN 0x10
|
|
#define ST_x08 0x08
|
|
#define ST_x04 0x04
|
|
#define ST_INVALID 0x02
|
|
#define ST_x01 0x01
|
|
|
|
/*
|
|
* cmd_type:
|
|
*/
|
|
#define TYPE_INFO 0x01
|
|
#define TYPE_DATA 0x02
|
|
|
|
/*
|
|
* read_mode:
|
|
*/
|
|
#define MOD_POLLED 0x80
|
|
#define MOD_x08 0x08
|
|
#define MOD_RAW 0x04
|
|
|
|
#define READ_DATA(port, buf, nr) insb(port, buf, nr)
|
|
|
|
#define SET_TIMER(func, jifs) \
|
|
((mod_timer(&gscd_timer, jiffies + jifs)), \
|
|
(gscd_timer.function = func))
|
|
|
|
#define CLEAR_TIMER del_timer_sync(&gscd_timer)
|
|
|
|
#define MAX_TRACKS 104
|
|
|
|
struct msf {
|
|
unsigned char min;
|
|
unsigned char sec;
|
|
unsigned char frame;
|
|
};
|
|
|
|
struct gscd_Play_msf {
|
|
struct msf start;
|
|
struct msf end;
|
|
};
|
|
|
|
struct gscd_DiskInfo {
|
|
unsigned char first;
|
|
unsigned char last;
|
|
struct msf diskLength;
|
|
struct msf firstTrack;
|
|
};
|
|
|
|
struct gscd_Toc {
|
|
unsigned char ctrl_addr;
|
|
unsigned char track;
|
|
unsigned char pointIndex;
|
|
struct msf trackTime;
|
|
struct msf diskTime;
|
|
};
|
|
|