mcd.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Definitions for a Mitsumi CD-ROM interface
  3.  *
  4.  * Copyright (C) 1992  Martin Harriss
  5.  *
  6.  * martin@bdsi.com
  7.  *
  8.  *  This program is free software; you can redistribute it and/or modify
  9.  *  it under the terms of the GNU General Public License as published by
  10.  *  the Free Software Foundation; either version 2 of the License, or
  11.  *  (at your option) any later version.
  12.  *
  13.  *  This program is distributed in the hope that it will be useful,
  14.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *  GNU General Public License for more details.
  17.  *
  18.  *  You should have received a copy of the GNU General Public License
  19.  *  along with this program; if not, write to the Free Software
  20.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  *
  22.  */
  23. /* Increase this if you get lots of timeouts */
  24. #define MCD_STATUS_DELAY 1000
  25. /* number of times to retry a command before giving up */
  26. #define MCD_RETRY_ATTEMPTS      10
  27. /* port access macro */
  28. #define MCDPORT(x) (mcd_port + (x))
  29. /* How many sectors to read at 1x when an error at 2x speed occurs. */
  30. /* You can change this to anything from 2 to 32767, but 30 seems to */
  31. /* work best for me.  I have found that when the drive has problems */
  32. /* reading one sector, it will have troubles reading the next few.  */
  33. #define SINGLE_HOLD_SECTORS 30
  34. #define MCMD_2X_READ 0xC1 /* Double Speed Read DON'T TOUCH! */
  35. /* status bits */
  36. #define MST_CMD_CHECK 0x01 /* command error */
  37. #define MST_BUSY 0x02 /* now playing */
  38. #define MST_READ_ERR 0x04 /* read error */
  39. #define MST_DSK_TYPE 0x08
  40. #define MST_SERVO_CHECK 0x10
  41. #define MST_DSK_CHG 0x20 /* disk removed or changed */
  42. #define MST_READY 0x40 /* disk in the drive */
  43. #define MST_DOOR_OPEN 0x80 /* door is open */
  44. /* flag bits */
  45. #define MFL_DATA 0x02 /* data available */
  46. #define MFL_STATUS 0x04 /* status available */
  47. /* commands */
  48. #define MCMD_GET_DISK_INFO 0x10 /* read info from disk */
  49. #define MCMD_GET_Q_CHANNEL 0x20 /* read info from q channel */
  50. #define MCMD_GET_STATUS 0x40
  51. #define MCMD_SET_MODE 0x50
  52. #define MCMD_SOFT_RESET 0x60
  53. #define MCMD_STOP 0x70 /* stop play */
  54. #define MCMD_CONFIG_DRIVE 0x90
  55. #define MCMD_SET_VOLUME 0xAE /* set audio level */
  56. #define MCMD_PLAY_READ 0xC0 /* play or read data */
  57. #define MCMD_GET_VERSION   0xDC
  58. #define MCMD_EJECT 0xF6            /* eject (FX drive) */
  59. /* borrowed from hd.c */
  60. #define MAX_TRACKS 104
  61. struct msf {
  62. unsigned char min;
  63. unsigned char sec;
  64. unsigned char frame;
  65. };
  66. struct mcd_Play_msf {
  67. struct msf start;
  68. struct msf end;
  69. };
  70. struct mcd_DiskInfo {
  71. unsigned char first;
  72. unsigned char last;
  73. struct msf diskLength;
  74. struct msf firstTrack;
  75. };
  76. struct mcd_Toc {
  77. unsigned char ctrl_addr;
  78. unsigned char track;
  79. unsigned char pointIndex;
  80. struct msf trackTime;
  81. struct msf diskTime;
  82. };
  83. #define test1(x)
  84. #define test2(x)
  85. #define test3(x)
  86. #define test4(x)
  87. #define test5(x)