ata.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:3k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __ATA_H
  2. #define __ATA_H
  3. #include "config.h"
  4. #define PRM (1) /* primary device or not */
  5. #define DEV (0) /* device 0 or not */
  6.  
  7. #if defined(__BORLANDC__)
  8. /* IDE I/O address:read */
  9. #define IDE_DATA (0x00)
  10. #define IDE_ERROR (0x01)
  11. #define IDE_SECTOR_CNT (0x02)
  12. #define IDE_SECTOR_NUM (0x03)
  13. #define IDE_CYLINDER_LO (0x04)
  14. #define IDE_CYLINDER_HI (0x05)
  15. #define IDE_DEVICE_HEAD (0x06)
  16. #define IDE_STATUS (0x07)
  17. #define IDE_ALT_STATUS (0x206)
  18. /* IDE I/O address:write */
  19. #define IDE_FEATURE IDE_ERROR
  20. #define IDE_COMMAND IDE_STATUS
  21. #define IDE_DEVICE_CTRL IDE_ALT_STATUS
  22. /* packet I/O address */
  23. #define IDEPORT(n,x) (((n) ? 0x170 : 0x1f0) + (UINT16) (x))
  24. #endif /*__BORLANDC__*/
  25. #if defined(__EMU__)
  26. /* IDE I/O address:read */
  27. #define IDE_DATA (0x00+0x10)
  28. #define IDE_ERROR (0x01+0x10)
  29. #define IDE_SECTOR_CNT (0x02+0x10)
  30. #define IDE_SECTOR_NUM (0x03+0x10)
  31. #define IDE_CYLINDER_LO (0x04+0x10)
  32. #define IDE_CYLINDER_HI (0x05+0x10)
  33. #define IDE_DEVICE_HEAD (0x06+0x10)
  34. #define IDE_STATUS (0x07+0x10)
  35. #define IDE_ALT_STATUS (0x0E)
  36. /* IDE I/O address:write */
  37. #define IDE_FEATURE IDE_ERROR
  38. #define IDE_COMMAND IDE_STATUS
  39. #define IDE_DEVICE_CTRL IDE_ALT_STATUS
  40. // DVDDSP_CONFIG
  41. #define ATAPI_DEV_HRESET (1<<0)
  42. #define ATAPI_HOST_RESET (1<<1)
  43. #define ATAPI_CSS_ENABLE (1<<2)
  44. #define ATAPI_FIFO_FLUSH (1<<3)
  45. #define ATAPI_CPPM_ENABLE       (1<<8)
  46. #define CDDSP_FIFOIN          (1<<10)
  47. #ifdef  DVD728
  48. #define PIO_MODE4               (1<<11)
  49. #define PIO_MODE3               (0<<11)
  50. #define PIO_MODE2               (3<<11)
  51. #define PIO_MODE2_REG           (2<<11)
  52. #define ATAPI_INTR_MODE      (1<<4)
  53. #define ATAPI_DEVICE_INT     (1<<5)
  54. #define ATAPI_ADV_POLLING (1<<5)
  55. #else
  56. #define PIO_MODE4       (0<<11)
  57. #define PIO_MODE3       (1<<11)
  58. #define PIO_MODE2       (2<<11)
  59. #define ATAPI_INTR_MODE      (0)
  60. #define ATAPI_DEVICE_INT     (0)
  61. #define ATAPI_ADV_POLLING (0)
  62. #endif
  63. #define E10MHZ_MODE           (3<<11)
  64. #define UDE_ASYNC_MODE        (1<<14)
  65. #define UDE_SYNC_MODE         (0<<14)
  66. #define ATAPI_DEVICE          (0<<15)
  67. #define UDE_DEVICE            (1<<15)
  68. // DVDDSP_FUNCTION
  69. #define DEVICE_INT (1<<12)
  70. #define ATAPI_READ     (1<<13)
  71. #define ATAPI_WRITE (0<<13)
  72. #define REG_MODE (1<<14)
  73. #define DATA_MODE (0<<14)
  74. #define HOST_START (1<<15)
  75. #define HOST_BUSY (1<<15)
  76. #endif /*__EMU__*/
  77. //#define IDEC_IDENTIFY 0xec
  78. //#define  IDEC_PACKET             0xa0
  79. //#define IDEC_IDENTIFY_PACKET 0xa1
  80. #define STATUS_BSY              (0x80)
  81. #define STATUS_DRDY             (0x40)
  82. #define STATUS_DF               (0x20)
  83. #define STATUS_DRQ              (0x08)
  84. #define STATUS_ERR              (0x01)
  85. /* packet command */
  86. //#define PKTC_READ10 0x28
  87. //#define PKTC_READ12 0xa8
  88. //#define PKTC_LOAD 0xa6
  89. // PUBLIC
  90. #define ATA_DMA_MODE (1<<0)
  91. #define ATA_POLLING_MODE (1<<4)
  92. #define ATA_INTR_MODE (0<<4)
  93. #define ATA_NO_BYTECNT (1<<5)
  94. #define ATA_PIO_DATAIN (1<<8)
  95. // ATA command
  96. #define ATAC_CHECK_PWR 0xe5
  97. #define ATAC_DIAGNOSTIC 0x90
  98. #define ATAC_SET_FEA 0xef
  99. #define ATAC_ID_PACK 0xa1
  100. #define ATAC_ID_DEV 0xec
  101. #define ATAC_IDLE_IMME 0xe1
  102. #define ATAC_STAND_IMME 0xe0
  103. #define ATAC_SLEEP 0xe6
  104. #define ATAC_RD_SEC 0x20
  105. #define ATAC_WR_SEC 0x30
  106. #define ATAC_WR_DMA 0xca
  107. // ATAPI command
  108. #define PKTC_REQ_SENSE 0x03
  109. #define PKTC_READ_CAPACITY 0x25
  110. #define PKTC_READ10 0x28
  111. #define PKTC_WRITE10 0x2a
  112. #endif/*__ATA_H*/