arcmsr.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. /*
  2. *******************************************************************************
  3. ** O.S : Linux
  4. ** FILE NAME : arcmsr.h
  5. ** BY : Erich Chen
  6. ** Description: SCSI RAID Device Driver for
  7. ** ARECA RAID Host adapter
  8. *******************************************************************************
  9. ** Copyright (C) 2002 - 2005, Areca Technology Corporation All rights reserved.
  10. **
  11. ** Web site: www.areca.com.tw
  12. ** E-mail: erich@areca.com.tw
  13. **
  14. ** This program is free software; you can redistribute it and/or modify
  15. ** it under the terms of the GNU General Public License version 2 as
  16. ** published by the Free Software Foundation.
  17. ** This program is distributed in the hope that it will be useful,
  18. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. ** GNU General Public License for more details.
  21. *******************************************************************************
  22. ** Redistribution and use in source and binary forms, with or without
  23. ** modification, are permitted provided that the following conditions
  24. ** are met:
  25. ** 1. Redistributions of source code must retain the above copyright
  26. ** notice, this list of conditions and the following disclaimer.
  27. ** 2. Redistributions in binary form must reproduce the above copyright
  28. ** notice, this list of conditions and the following disclaimer in the
  29. ** documentation and/or other materials provided with the distribution.
  30. ** 3. The name of the author may not be used to endorse or promote products
  31. ** derived from this software without specific prior written permission.
  32. **
  33. ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  34. ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  35. ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  36. ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  37. ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT
  38. ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  39. ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION)HOWEVER CAUSED AND ON ANY
  40. ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  41. **(INCLUDING NEGLIGENCE OR OTHERWISE)ARISING IN ANY WAY OUT OF THE USE OF
  42. ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  43. *******************************************************************************
  44. */
  45. #include <linux/interrupt.h>
  46. struct class_device_attribute;
  47. #define ARCMSR_MAX_OUTSTANDING_CMD 256
  48. #define ARCMSR_MAX_FREECCB_NUM 288
  49. #define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.14"
  50. #define ARCMSR_SCSI_INITIATOR_ID 255
  51. #define ARCMSR_MAX_XFER_SECTORS 512
  52. #define ARCMSR_MAX_XFER_SECTORS_B 4096
  53. #define ARCMSR_MAX_TARGETID 17
  54. #define ARCMSR_MAX_TARGETLUN 8
  55. #define ARCMSR_MAX_CMD_PERLUN ARCMSR_MAX_OUTSTANDING_CMD
  56. #define ARCMSR_MAX_QBUFFER 4096
  57. #define ARCMSR_MAX_SG_ENTRIES 38
  58. /*
  59. *******************************************************************************
  60. ** split 64bits dma addressing
  61. *******************************************************************************
  62. */
  63. #define dma_addr_hi32(addr) (uint32_t) ((addr>>16)>>16)
  64. #define dma_addr_lo32(addr) (uint32_t) (addr & 0xffffffff)
  65. /*
  66. *******************************************************************************
  67. ** MESSAGE CONTROL CODE
  68. *******************************************************************************
  69. */
  70. struct CMD_MESSAGE
  71. {
  72. uint32_t HeaderLength;
  73. uint8_t Signature[8];
  74. uint32_t Timeout;
  75. uint32_t ControlCode;
  76. uint32_t ReturnCode;
  77. uint32_t Length;
  78. };
  79. /*
  80. *******************************************************************************
  81. ** IOP Message Transfer Data for user space
  82. *******************************************************************************
  83. */
  84. struct CMD_MESSAGE_FIELD
  85. {
  86. struct CMD_MESSAGE cmdmessage;
  87. uint8_t messagedatabuffer[1032];
  88. };
  89. /* IOP message transfer */
  90. #define ARCMSR_MESSAGE_FAIL 0x0001
  91. /* DeviceType */
  92. #define ARECA_SATA_RAID 0x90000000
  93. /* FunctionCode */
  94. #define FUNCTION_READ_RQBUFFER 0x0801
  95. #define FUNCTION_WRITE_WQBUFFER 0x0802
  96. #define FUNCTION_CLEAR_RQBUFFER 0x0803
  97. #define FUNCTION_CLEAR_WQBUFFER 0x0804
  98. #define FUNCTION_CLEAR_ALLQBUFFER 0x0805
  99. #define FUNCTION_RETURN_CODE_3F 0x0806
  100. #define FUNCTION_SAY_HELLO 0x0807
  101. #define FUNCTION_SAY_GOODBYE 0x0808
  102. #define FUNCTION_FLUSH_ADAPTER_CACHE 0x0809
  103. /* ARECA IO CONTROL CODE*/
  104. #define ARCMSR_MESSAGE_READ_RQBUFFER \
  105. ARECA_SATA_RAID | FUNCTION_READ_RQBUFFER
  106. #define ARCMSR_MESSAGE_WRITE_WQBUFFER \
  107. ARECA_SATA_RAID | FUNCTION_WRITE_WQBUFFER
  108. #define ARCMSR_MESSAGE_CLEAR_RQBUFFER \
  109. ARECA_SATA_RAID | FUNCTION_CLEAR_RQBUFFER
  110. #define ARCMSR_MESSAGE_CLEAR_WQBUFFER \
  111. ARECA_SATA_RAID | FUNCTION_CLEAR_WQBUFFER
  112. #define ARCMSR_MESSAGE_CLEAR_ALLQBUFFER \
  113. ARECA_SATA_RAID | FUNCTION_CLEAR_ALLQBUFFER
  114. #define ARCMSR_MESSAGE_RETURN_CODE_3F \
  115. ARECA_SATA_RAID | FUNCTION_RETURN_CODE_3F
  116. #define ARCMSR_MESSAGE_SAY_HELLO \
  117. ARECA_SATA_RAID | FUNCTION_SAY_HELLO
  118. #define ARCMSR_MESSAGE_SAY_GOODBYE \
  119. ARECA_SATA_RAID | FUNCTION_SAY_GOODBYE
  120. #define ARCMSR_MESSAGE_FLUSH_ADAPTER_CACHE \
  121. ARECA_SATA_RAID | FUNCTION_FLUSH_ADAPTER_CACHE
  122. /* ARECA IOCTL ReturnCode */
  123. #define ARCMSR_MESSAGE_RETURNCODE_OK 0x00000001
  124. #define ARCMSR_MESSAGE_RETURNCODE_ERROR 0x00000006
  125. #define ARCMSR_MESSAGE_RETURNCODE_3F 0x0000003F
  126. /*
  127. *************************************************************
  128. ** structure for holding DMA address data
  129. *************************************************************
  130. */
  131. #define IS_SG64_ADDR 0x01000000 /* bit24 */
  132. struct SG32ENTRY
  133. {
  134. uint32_t length;
  135. uint32_t address;
  136. };
  137. struct SG64ENTRY
  138. {
  139. uint32_t length;
  140. uint32_t address;
  141. uint32_t addresshigh;
  142. };
  143. struct SGENTRY_UNION
  144. {
  145. union
  146. {
  147. struct SG32ENTRY sg32entry;
  148. struct SG64ENTRY sg64entry;
  149. }u;
  150. };
  151. /*
  152. ********************************************************************
  153. ** Q Buffer of IOP Message Transfer
  154. ********************************************************************
  155. */
  156. struct QBUFFER
  157. {
  158. uint32_t data_len;
  159. uint8_t data[124];
  160. };
  161. /*
  162. *******************************************************************************
  163. ** FIRMWARE INFO
  164. *******************************************************************************
  165. */
  166. struct FIRMWARE_INFO
  167. {
  168. uint32_t signature; /*0, 00-03*/
  169. uint32_t request_len; /*1, 04-07*/
  170. uint32_t numbers_queue; /*2, 08-11*/
  171. uint32_t sdram_size; /*3, 12-15*/
  172. uint32_t ide_channels; /*4, 16-19*/
  173. char vendor[40]; /*5, 20-59*/
  174. char model[8]; /*15, 60-67*/
  175. char firmware_ver[16]; /*17, 68-83*/
  176. char device_map[16]; /*21, 84-99*/
  177. };
  178. /* signature of set and get firmware config */
  179. #define ARCMSR_SIGNATURE_GET_CONFIG 0x87974060
  180. #define ARCMSR_SIGNATURE_SET_CONFIG 0x87974063
  181. /* message code of inbound message register */
  182. #define ARCMSR_INBOUND_MESG0_NOP 0x00000000
  183. #define ARCMSR_INBOUND_MESG0_GET_CONFIG 0x00000001
  184. #define ARCMSR_INBOUND_MESG0_SET_CONFIG 0x00000002
  185. #define ARCMSR_INBOUND_MESG0_ABORT_CMD 0x00000003
  186. #define ARCMSR_INBOUND_MESG0_STOP_BGRB 0x00000004
  187. #define ARCMSR_INBOUND_MESG0_FLUSH_CACHE 0x00000005
  188. #define ARCMSR_INBOUND_MESG0_START_BGRB 0x00000006
  189. #define ARCMSR_INBOUND_MESG0_CHK331PENDING 0x00000007
  190. #define ARCMSR_INBOUND_MESG0_SYNC_TIMER 0x00000008
  191. /* doorbell interrupt generator */
  192. #define ARCMSR_INBOUND_DRIVER_DATA_WRITE_OK 0x00000001
  193. #define ARCMSR_INBOUND_DRIVER_DATA_READ_OK 0x00000002
  194. #define ARCMSR_OUTBOUND_IOP331_DATA_WRITE_OK 0x00000001
  195. #define ARCMSR_OUTBOUND_IOP331_DATA_READ_OK 0x00000002
  196. /* ccb areca cdb flag */
  197. #define ARCMSR_CCBPOST_FLAG_SGL_BSIZE 0x80000000
  198. #define ARCMSR_CCBPOST_FLAG_IAM_BIOS 0x40000000
  199. #define ARCMSR_CCBREPLY_FLAG_IAM_BIOS 0x40000000
  200. #define ARCMSR_CCBREPLY_FLAG_ERROR 0x10000000
  201. /* outbound firmware ok */
  202. #define ARCMSR_OUTBOUND_MESG1_FIRMWARE_OK 0x80000000
  203. /*
  204. *******************************************************************************
  205. ** ARECA SCSI COMMAND DESCRIPTOR BLOCK size 0x1F8 (504)
  206. *******************************************************************************
  207. */
  208. struct ARCMSR_CDB
  209. {
  210. uint8_t Bus;
  211. uint8_t TargetID;
  212. uint8_t LUN;
  213. uint8_t Function;
  214. uint8_t CdbLength;
  215. uint8_t sgcount;
  216. uint8_t Flags;
  217. #define ARCMSR_CDB_FLAG_SGL_BSIZE 0x01
  218. #define ARCMSR_CDB_FLAG_BIOS 0x02
  219. #define ARCMSR_CDB_FLAG_WRITE 0x04
  220. #define ARCMSR_CDB_FLAG_SIMPLEQ 0x00
  221. #define ARCMSR_CDB_FLAG_HEADQ 0x08
  222. #define ARCMSR_CDB_FLAG_ORDEREDQ 0x10
  223. uint8_t Reserved1;
  224. uint32_t Context;
  225. uint32_t DataLength;
  226. uint8_t Cdb[16];
  227. uint8_t DeviceStatus;
  228. #define ARCMSR_DEV_CHECK_CONDITION 0x02
  229. #define ARCMSR_DEV_SELECT_TIMEOUT 0xF0
  230. #define ARCMSR_DEV_ABORTED 0xF1
  231. #define ARCMSR_DEV_INIT_FAIL 0xF2
  232. uint8_t SenseData[15];
  233. union
  234. {
  235. struct SG32ENTRY sg32entry[ARCMSR_MAX_SG_ENTRIES];
  236. struct SG64ENTRY sg64entry[ARCMSR_MAX_SG_ENTRIES];
  237. } u;
  238. };
  239. /*
  240. *******************************************************************************
  241. ** Messaging Unit (MU) of the Intel R 80331 I/O processor (80331)
  242. *******************************************************************************
  243. */
  244. struct MessageUnit
  245. {
  246. uint32_t resrved0[4]; /*0000 000F*/
  247. uint32_t inbound_msgaddr0; /*0010 0013*/
  248. uint32_t inbound_msgaddr1; /*0014 0017*/
  249. uint32_t outbound_msgaddr0; /*0018 001B*/
  250. uint32_t outbound_msgaddr1; /*001C 001F*/
  251. uint32_t inbound_doorbell; /*0020 0023*/
  252. uint32_t inbound_intstatus; /*0024 0027*/
  253. uint32_t inbound_intmask; /*0028 002B*/
  254. uint32_t outbound_doorbell; /*002C 002F*/
  255. uint32_t outbound_intstatus; /*0030 0033*/
  256. uint32_t outbound_intmask; /*0034 0037*/
  257. uint32_t reserved1[2]; /*0038 003F*/
  258. uint32_t inbound_queueport; /*0040 0043*/
  259. uint32_t outbound_queueport; /*0044 0047*/
  260. uint32_t reserved2[2]; /*0048 004F*/
  261. uint32_t reserved3[492]; /*0050 07FF 492*/
  262. uint32_t reserved4[128]; /*0800 09FF 128*/
  263. uint32_t message_rwbuffer[256]; /*0a00 0DFF 256*/
  264. uint32_t message_wbuffer[32]; /*0E00 0E7F 32*/
  265. uint32_t reserved5[32]; /*0E80 0EFF 32*/
  266. uint32_t message_rbuffer[32]; /*0F00 0F7F 32*/
  267. uint32_t reserved6[32]; /*0F80 0FFF 32*/
  268. };
  269. /*
  270. *******************************************************************************
  271. ** Adapter Control Block
  272. *******************************************************************************
  273. */
  274. struct AdapterControlBlock
  275. {
  276. struct pci_dev * pdev;
  277. struct Scsi_Host * host;
  278. unsigned long vir2phy_offset;
  279. /* Offset is used in making arc cdb physical to virtual calculations */
  280. uint32_t outbound_int_enable;
  281. struct MessageUnit __iomem * pmu;
  282. /* message unit ATU inbound base address0 */
  283. uint32_t acb_flags;
  284. #define ACB_F_SCSISTOPADAPTER 0x0001
  285. #define ACB_F_MSG_STOP_BGRB 0x0002
  286. /* stop RAID background rebuild */
  287. #define ACB_F_MSG_START_BGRB 0x0004
  288. /* stop RAID background rebuild */
  289. #define ACB_F_IOPDATA_OVERFLOW 0x0008
  290. /* iop message data rqbuffer overflow */
  291. #define ACB_F_MESSAGE_WQBUFFER_CLEARED 0x0010
  292. /* message clear wqbuffer */
  293. #define ACB_F_MESSAGE_RQBUFFER_CLEARED 0x0020
  294. /* message clear rqbuffer */
  295. #define ACB_F_MESSAGE_WQBUFFER_READED 0x0040
  296. #define ACB_F_BUS_RESET 0x0080
  297. #define ACB_F_IOP_INITED 0x0100
  298. /* iop init */
  299. struct CommandControlBlock * pccb_pool[ARCMSR_MAX_FREECCB_NUM];
  300. /* used for memory free */
  301. struct list_head ccb_free_list;
  302. /* head of free ccb list */
  303. atomic_t ccboutstandingcount;
  304. void * dma_coherent;
  305. /* dma_coherent used for memory free */
  306. dma_addr_t dma_coherent_handle;
  307. /* dma_coherent_handle used for memory free */
  308. uint8_t rqbuffer[ARCMSR_MAX_QBUFFER];
  309. /* data collection buffer for read from 80331 */
  310. int32_t rqbuf_firstindex;
  311. /* first of read buffer */
  312. int32_t rqbuf_lastindex;
  313. /* last of read buffer */
  314. uint8_t wqbuffer[ARCMSR_MAX_QBUFFER];
  315. /* data collection buffer for write to 80331 */
  316. int32_t wqbuf_firstindex;
  317. /* first of write buffer */
  318. int32_t wqbuf_lastindex;
  319. /* last of write buffer */
  320. uint8_t devstate[ARCMSR_MAX_TARGETID][ARCMSR_MAX_TARGETLUN];
  321. /* id0 ..... id15, lun0...lun7 */
  322. #define ARECA_RAID_GONE 0x55
  323. #define ARECA_RAID_GOOD 0xaa
  324. uint32_t num_resets;
  325. uint32_t num_aborts;
  326. uint32_t firm_request_len;
  327. uint32_t firm_numbers_queue;
  328. uint32_t firm_sdram_size;
  329. uint32_t firm_hd_channels;
  330. char firm_model[12];
  331. char firm_version[20];
  332. };/* HW_DEVICE_EXTENSION */
  333. /*
  334. *******************************************************************************
  335. ** Command Control Block
  336. ** this CCB length must be 32 bytes boundary
  337. *******************************************************************************
  338. */
  339. struct CommandControlBlock
  340. {
  341. struct ARCMSR_CDB arcmsr_cdb;
  342. /*
  343. ** 0-503 (size of CDB=504):
  344. ** arcmsr messenger scsi command descriptor size 504 bytes
  345. */
  346. uint32_t cdb_shifted_phyaddr;
  347. /* 504-507 */
  348. uint32_t reserved1;
  349. /* 508-511 */
  350. #if BITS_PER_LONG == 64
  351. /* ======================512+64 bytes======================== */
  352. struct list_head list;
  353. /* 512-527 16 bytes next/prev ptrs for ccb lists */
  354. struct scsi_cmnd * pcmd;
  355. /* 528-535 8 bytes pointer of linux scsi command */
  356. struct AdapterControlBlock * acb;
  357. /* 536-543 8 bytes pointer of acb */
  358. uint16_t ccb_flags;
  359. /* 544-545 */
  360. #define CCB_FLAG_READ 0x0000
  361. #define CCB_FLAG_WRITE 0x0001
  362. #define CCB_FLAG_ERROR 0x0002
  363. #define CCB_FLAG_FLUSHCACHE 0x0004
  364. #define CCB_FLAG_MASTER_ABORTED 0x0008
  365. uint16_t startdone;
  366. /* 546-547 */
  367. #define ARCMSR_CCB_DONE 0x0000
  368. #define ARCMSR_CCB_START 0x55AA
  369. #define ARCMSR_CCB_ABORTED 0xAA55
  370. #define ARCMSR_CCB_ILLEGAL 0xFFFF
  371. uint32_t reserved2[7];
  372. /* 548-551 552-555 556-559 560-563 564-567 568-571 572-575 */
  373. #else
  374. /* ======================512+32 bytes======================== */
  375. struct list_head list;
  376. /* 512-519 8 bytes next/prev ptrs for ccb lists */
  377. struct scsi_cmnd * pcmd;
  378. /* 520-523 4 bytes pointer of linux scsi command */
  379. struct AdapterControlBlock * acb;
  380. /* 524-527 4 bytes pointer of acb */
  381. uint16_t ccb_flags;
  382. /* 528-529 */
  383. #define CCB_FLAG_READ 0x0000
  384. #define CCB_FLAG_WRITE 0x0001
  385. #define CCB_FLAG_ERROR 0x0002
  386. #define CCB_FLAG_FLUSHCACHE 0x0004
  387. #define CCB_FLAG_MASTER_ABORTED 0x0008
  388. uint16_t startdone;
  389. /* 530-531 */
  390. #define ARCMSR_CCB_DONE 0x0000
  391. #define ARCMSR_CCB_START 0x55AA
  392. #define ARCMSR_CCB_ABORTED 0xAA55
  393. #define ARCMSR_CCB_ILLEGAL 0xFFFF
  394. uint32_t reserved2[3];
  395. /* 532-535 536-539 540-543 */
  396. #endif
  397. /* ========================================================== */
  398. };
  399. /*
  400. *******************************************************************************
  401. ** ARECA SCSI sense data
  402. *******************************************************************************
  403. */
  404. struct SENSE_DATA
  405. {
  406. uint8_t ErrorCode:7;
  407. #define SCSI_SENSE_CURRENT_ERRORS 0x70
  408. #define SCSI_SENSE_DEFERRED_ERRORS 0x71
  409. uint8_t Valid:1;
  410. uint8_t SegmentNumber;
  411. uint8_t SenseKey:4;
  412. uint8_t Reserved:1;
  413. uint8_t IncorrectLength:1;
  414. uint8_t EndOfMedia:1;
  415. uint8_t FileMark:1;
  416. uint8_t Information[4];
  417. uint8_t AdditionalSenseLength;
  418. uint8_t CommandSpecificInformation[4];
  419. uint8_t AdditionalSenseCode;
  420. uint8_t AdditionalSenseCodeQualifier;
  421. uint8_t FieldReplaceableUnitCode;
  422. uint8_t SenseKeySpecific[3];
  423. };
  424. /*
  425. *******************************************************************************
  426. ** Outbound Interrupt Status Register - OISR
  427. *******************************************************************************
  428. */
  429. #define ARCMSR_MU_OUTBOUND_INTERRUPT_STATUS_REG 0x30
  430. #define ARCMSR_MU_OUTBOUND_PCI_INT 0x10
  431. #define ARCMSR_MU_OUTBOUND_POSTQUEUE_INT 0x08
  432. #define ARCMSR_MU_OUTBOUND_DOORBELL_INT 0x04
  433. #define ARCMSR_MU_OUTBOUND_MESSAGE1_INT 0x02
  434. #define ARCMSR_MU_OUTBOUND_MESSAGE0_INT 0x01
  435. #define ARCMSR_MU_OUTBOUND_HANDLE_INT \
  436. (ARCMSR_MU_OUTBOUND_MESSAGE0_INT \
  437. |ARCMSR_MU_OUTBOUND_MESSAGE1_INT \
  438. |ARCMSR_MU_OUTBOUND_DOORBELL_INT \
  439. |ARCMSR_MU_OUTBOUND_POSTQUEUE_INT \
  440. |ARCMSR_MU_OUTBOUND_PCI_INT)
  441. /*
  442. *******************************************************************************
  443. ** Outbound Interrupt Mask Register - OIMR
  444. *******************************************************************************
  445. */
  446. #define ARCMSR_MU_OUTBOUND_INTERRUPT_MASK_REG 0x34
  447. #define ARCMSR_MU_OUTBOUND_PCI_INTMASKENABLE 0x10
  448. #define ARCMSR_MU_OUTBOUND_POSTQUEUE_INTMASKENABLE 0x08
  449. #define ARCMSR_MU_OUTBOUND_DOORBELL_INTMASKENABLE 0x04
  450. #define ARCMSR_MU_OUTBOUND_MESSAGE1_INTMASKENABLE 0x02
  451. #define ARCMSR_MU_OUTBOUND_MESSAGE0_INTMASKENABLE 0x01
  452. #define ARCMSR_MU_OUTBOUND_ALL_INTMASKENABLE 0x1F
  453. extern void arcmsr_post_Qbuffer(struct AdapterControlBlock *acb);
  454. extern struct class_device_attribute *arcmsr_host_attrs[];
  455. extern int arcmsr_alloc_sysfs_attr(struct AdapterControlBlock *acb);
  456. void arcmsr_free_sysfs_attr(struct AdapterControlBlock *acb);