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

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef A3000_H
  2. #define A3000_H
  3. /* $Id: a3000.h,v 1.4 1997/01/19 23:07:10 davem Exp $
  4.  *
  5.  * Header file for the Amiga 3000 built-in SCSI controller for Linux
  6.  *
  7.  * Written and (C) 1993, Hamish Macdonald, see a3000.c for more info
  8.  *
  9.  */
  10. #include <linux/types.h>
  11. int a3000_detect(Scsi_Host_Template *);
  12. int a3000_release(struct Scsi_Host *);
  13. const char *wd33c93_info(void);
  14. int wd33c93_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
  15. int wd33c93_abort(Scsi_Cmnd *);
  16. int wd33c93_reset(Scsi_Cmnd *, unsigned int);
  17. #ifndef NULL
  18. #define NULL 0
  19. #endif
  20. #ifndef CMD_PER_LUN
  21. #define CMD_PER_LUN 2
  22. #endif
  23. #ifndef CAN_QUEUE
  24. #define CAN_QUEUE 16
  25. #endif
  26. #define _A3000_SCSI { proc_name:    "A3000",
  27.       proc_info:           NULL,
  28.       name:                "Amiga 3000 built-in SCSI",
  29.       detect:              a3000_detect,
  30.       release:             a3000_release,
  31.       queuecommand:        wd33c93_queuecommand,
  32.       abort:               wd33c93_abort,
  33.       reset:               wd33c93_reset,
  34.       can_queue:           CAN_QUEUE,
  35.       this_id:             7,
  36.       sg_tablesize:        SG_ALL,
  37.       cmd_per_lun:    CMD_PER_LUN,
  38.       use_clustering:      ENABLE_CLUSTERING }
  39. /*
  40.  * if the transfer address ANDed with this results in a non-zero
  41.  * result, then we can't use DMA.
  42.  */
  43. #define A3000_XFER_MASK  (0x00000003)
  44. typedef struct {
  45.              unsigned char      pad1[2];
  46.     volatile unsigned short     DAWR;
  47.     volatile unsigned int       WTC;
  48.              unsigned char      pad2[2];
  49.     volatile unsigned short     CNTR;
  50.     volatile unsigned long      ACR;
  51.              unsigned char      pad3[2];
  52.     volatile unsigned short     ST_DMA;
  53.              unsigned char      pad4[2];
  54.     volatile unsigned short     FLUSH;
  55.              unsigned char      pad5[2];
  56.     volatile unsigned short     CINT;
  57.              unsigned char      pad6[2];
  58.     volatile unsigned short     ISTR;
  59.      unsigned char      pad7[30];
  60.     volatile unsigned short     SP_DMA;
  61.              unsigned char      pad8;
  62.     volatile unsigned char      SASR;
  63.              unsigned char      pad9;
  64.     volatile unsigned char      SCMD;
  65. } a3000_scsiregs;
  66. #define DAWR_A3000 (3)
  67. /* CNTR bits. */
  68. #define CNTR_TCEN (1<<5)
  69. #define CNTR_PREST (1<<4)
  70. #define CNTR_PDMD (1<<3)
  71. #define CNTR_INTEN (1<<2)
  72. #define CNTR_DDIR (1<<1)
  73. #define CNTR_IO_DX (1<<0)
  74. /* ISTR bits. */
  75. #define ISTR_INTX (1<<8)
  76. #define ISTR_INT_F (1<<7)
  77. #define ISTR_INTS (1<<6)
  78. #define ISTR_E_INT (1<<5)
  79. #define ISTR_INT_P (1<<4)
  80. #define ISTR_UE_INT (1<<3)
  81. #define ISTR_OE_INT (1<<2)
  82. #define ISTR_FF_FLG (1<<1)
  83. #define ISTR_FE_FLG (1<<0)
  84. #endif /* A3000_H */