ncrsbc.h

Upload User: acmefrp
Upload Date: 2010-03-06
Package Size: 23768k
Code Size: 4k
Category: OS Develop
Development Platform: C/C++
  1. /* @(#)ncrsbc.h 1.1 92/07/30 SMI */
  2. /*
  3.  * Copyright (c) 1989 by Sun Microsystems, Inc.
  4.  */
  5. #ifndef _scsi_adapters_ncrsbc_h
  6. #define _scsi_adapters_ncrsbc_h
  7. /*
  8.  * NCR 5380 SBC (SCSI Bus Controller) Registers.
  9.  */
  10. struct ncrsbc {
  11. u_char cdr; /* R:  current data register */
  12. #define odr cdr /* W:  output data register */
  13. u_char icr; /* RW: initiator command register */
  14. u_char mr; /* RW: mode register */
  15. u_char tcr; /* RW: target command register */
  16. u_char cbsr; /* R:  current bus status register */
  17. #define ser cbsr /* W:  select/reselect enable register */
  18. u_char bsr; /* R:  bus and status register */
  19. #define send bsr /* W:  start dma for tgt/initiator send xfer */
  20. u_char idr; /* R:  input data register */
  21. #define trcv idr /* W:  start dma for target receive transfer */
  22. u_char clr; /* R:  read to clear parity error, */
  23. /* interrupt request, and busy */
  24. /* failure bits in the bsr */
  25. #define ircv clr /* W:  start dma for initiator rcv transfer */
  26. };
  27. /*
  28.  * bits in the sbc initiator command register
  29.  */
  30. #define NCR_ICR_RST 0x80 /* (r/w) assert reset */
  31. #define NCR_ICR_AIP 0x40 /* (r)   arbitration in progress */
  32. #define NCR_ICR_TEST 0x40 /* (w)   test mode, disables output */
  33. #define NCR_ICR_LA 0x20 /* (r)   lost arbitration */
  34. #define NCR_ICR_DE 0x20 /* (w)   differential enable */
  35. #define NCR_ICR_ACK 0x10 /* (r/w) assert acknowledge */
  36. #define NCR_ICR_BUSY 0x08 /* (r/w) assert busy */
  37. #define NCR_ICR_SEL 0x04 /* (r/w) assert select */
  38. #define NCR_ICR_ATN 0x02 /* (r/w) assert attention */
  39. #define NCR_ICR_DATA 0x01 /* (r/w) assert data bus */
  40. #define ICR_BITS "2010RST7AIP6LA5ACK4BSY3SEL2ATN1DATA"
  41. /*
  42.  * bits in the sbc mode register (same on read or write)
  43.  */
  44. #define NCR_MR_BDMA 0x80 /* block mode dma */
  45. #define NCR_MR_TRG 0x40 /* target mode */
  46. #define NCR_MR_EPC 0x20 /* enable parity check */
  47. #define NCR_MR_EPI 0x10 /* enable parity interrupt */
  48. #define NCR_MR_EEI 0x08 /* enable eop interrupt */
  49. #define NCR_MR_MBSY 0x04 /* monitor busy */
  50. #define NCR_MR_DMA 0x02 /* dma mode */
  51. #define NCR_MR_ARB 0x01 /* arbitration mode */
  52. #define MR_BITS "202DMA1ARB"
  53. /*
  54.  * bits in the sbc target command register
  55.  */
  56. #define NCR_TCR_LAST 0x80 /* Last byte sent */ /* for 53C80 only */
  57. #define NCR_TCR_REQ 0x08 /* assert request */
  58. #define NCR_TCR_MSG 0x04 /* assert message */
  59. #define NCR_TCR_CD 0x02 /* assert command/data */
  60. #define NCR_TCR_IO 0x01 /* assert input/output */
  61. #define TCR_BITS "2010LAST4REQ3MSG2CD1IO"
  62. /*
  63.  * settings of tcr to reflect different information transfer phases
  64.  */
  65. #define TCR_COMMAND (NCR_TCR_CD)
  66. #define TCR_MSG_OUT (NCR_TCR_MSG | NCR_TCR_CD)
  67. #define TCR_DATA_OUT 0
  68. #define TCR_STATUS (NCR_TCR_CD | NCR_TCR_IO)
  69. #define TCR_MSG_IN (NCR_TCR_MSG | NCR_TCR_CD | NCR_TCR_IO)
  70. #define TCR_DATA_IN (NCR_TCR_IO)
  71. /*
  72.  * This is actually an illegal phase- we use it to keep the ncr
  73.  * chip from recognizing a phase on the bus
  74.  */
  75. #define TCR_UNSPECIFIED (NCR_TCR_MSG)
  76. /*
  77.  * bits in the sbc current bus status register
  78.  */
  79. #define NCR_CBSR_RST 0x80 /* reset */
  80. #define NCR_CBSR_BSY 0x40 /* busy */
  81. #define NCR_CBSR_REQ 0x20 /* request */
  82. #define NCR_CBSR_MSG 0x10 /* message */
  83. #define NCR_CBSR_CD 0x08 /* command/data */
  84. #define NCR_CBSR_IO 0x04 /* input/output */
  85. #define NCR_CBSR_SEL 0x02 /* select */
  86. #define NCR_CBSR_DBP 0x01 /* data bus parity */
  87. #define NCR_CBSR_RESEL (NCR_CBSR_SEL | NCR_CBSR_IO)
  88. #define CBSR_BITS "2010RST7BSY6REQ5MSG4CD3IO2SEL1DBP"
  89. /*
  90.  * scsi bus signals reflecting different information transfer phases
  91.  */
  92. #define CBSR_PHASE_BITS (NCR_CBSR_CD | NCR_CBSR_MSG | NCR_CBSR_IO)
  93. #define PHASE_COMMAND (NCR_CBSR_CD)
  94. #define PHASE_MSG_OUT (NCR_CBSR_MSG | NCR_CBSR_CD)
  95. #define PHASE_DATA_OUT 0
  96. #define PHASE_STATUS (NCR_CBSR_CD | NCR_CBSR_IO)
  97. #define PHASE_MSG_IN (NCR_CBSR_MSG | NCR_CBSR_CD | NCR_CBSR_IO)
  98. #define PHASE_DATA_IN (NCR_CBSR_IO)
  99. /*
  100.  * bits in the sbc bus and status register
  101.  */
  102. #define NCR_BSR_EDMA 0x80 /* end of dma */
  103. #define NCR_BSR_RDMA 0x40 /* dma request */
  104. #define NCR_BSR_PERR 0x20 /* parity error */
  105. #define NCR_BSR_INTR 0x10 /* interrupt request */
  106. #define NCR_BSR_PMTCH 0x08 /* phase match */
  107. #define NCR_BSR_BERR 0x04 /* busy error */
  108. #define NCR_BSR_ATN 0x02 /* attention */
  109. #define NCR_BSR_ACK 0x01 /* acknowledge */
  110. #define BSR_BITS "206PERR5INTR4PMTCH3BERR2ATN1ACK"
  111. #endif /* !_scsi_adapters_ncrsbc_h */