gscd.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Definitions for a GoldStar R420 CD-ROM interface
  3.  *
  4.  *   Copyright (C) 1995  Oliver Raupach <raupach@nwfs1.rz.fh-hannover.de>
  5.  *                       Eberhard Moenkeberg <emoenke@gwdg.de>
  6.  *
  7.  *  Published under the GPL.
  8.  *
  9.  */
  10. /* The Interface Card default address is 0x340. This will work for most
  11.    applications. Address selection is accomplished by jumpers PN801-1 to
  12.    PN801-4 on the GoldStar Interface Card.
  13.    Appropriate settings are: 0x300, 0x310, 0x320, 0x330, 0x340, 0x350, 0x360
  14.    0x370, 0x380, 0x390, 0x3A0, 0x3B0, 0x3C0, 0x3D0, 0x3E0, 0x3F0             */
  15. /* insert here the I/O port address */
  16. #define GSCD_BASE_ADDR         0x340
  17. /* change this to set the dma-channel */
  18. #define GSCD_DMA_CHANNEL        3                  /* not used */ 
  19. /************** nothing to set up below here *********************/
  20. /* port access macro */
  21. #define GSCDPORT(x) (gscd_port + (x))
  22. /*
  23.  * commands
  24.  * the lower nibble holds the command length
  25.  */
  26. #define CMD_STATUS     0x01
  27. #define CMD_READSUBQ   0x02 /* 1: ?, 2: UPC, 5: ? */
  28. #define CMD_SEEK       0x05 /* read_mode M-S-F */
  29. #define CMD_READ       0x07 /* read_mode M-S-F nsec_h nsec_l */
  30. #define CMD_RESET      0x11
  31. #define CMD_SETMODE    0x15
  32. #define CMD_PLAY       0x17 /* M-S-F M-S-F */
  33. #define CMD_LOCK_CTL   0x22 /* 0: unlock, 1: lock */
  34. #define CMD_IDENT      0x31
  35. #define CMD_SETSPEED   0x32 /* 0: auto */ /* ??? */
  36. #define CMD_GETMODE    0x41
  37. #define CMD_PAUSE      0x51
  38. #define CMD_READTOC    0x61
  39. #define CMD_DISKINFO   0x71
  40. #define CMD_TRAY_CTL   0x81
  41. /*
  42.  * disk_state:
  43.  */
  44. #define ST_PLAYING 0x80
  45. #define ST_UNLOCKED 0x40
  46. #define ST_NO_DISK 0x20
  47. #define ST_DOOR_OPEN 0x10
  48. #define ST_x08  0x08
  49. #define ST_x04 0x04
  50. #define ST_INVALID 0x02
  51. #define ST_x01 0x01
  52. /*
  53.  * cmd_type:
  54.  */
  55. #define TYPE_INFO 0x01
  56. #define TYPE_DATA 0x02
  57. /*
  58.  * read_mode:
  59.  */
  60. #define MOD_POLLED 0x80
  61. #define MOD_x08 0x08
  62. #define MOD_RAW 0x04
  63. #define READ_DATA(port, buf, nr) insb(port, buf, nr)
  64. #define SET_TIMER(func, jifs) 
  65. ((mod_timer(&gscd_timer, jiffies + jifs)), 
  66. (gscd_timer.function = func))
  67. #define CLEAR_TIMER del_timer_sync(&gscd_timer)
  68. #define MAX_TRACKS 104
  69. struct msf {
  70. unsigned char min;
  71. unsigned char sec;
  72. unsigned char frame;
  73. };
  74. struct gscd_Play_msf {
  75. struct msf start;
  76. struct msf end;
  77. };
  78. struct gscd_DiskInfo {
  79. unsigned char first;
  80. unsigned char last;
  81. struct msf diskLength;
  82. struct msf firstTrack;
  83. };
  84. struct gscd_Toc {
  85. unsigned char ctrl_addr;
  86. unsigned char track;
  87. unsigned char pointIndex;
  88. struct msf trackTime;
  89. struct msf diskTime;
  90. };