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

嵌入式Linux

开发平台:

Unix_Linux

  1. /* blz1230.h: Defines and structures for the Blizzard 1230 SCSI IV driver.
  2.  *
  3.  * Copyright (C) 1996 Jesper Skov (jskov@cygnus.co.uk)
  4.  *
  5.  * This file is based on cyber_esp.h (hence the occasional reference to
  6.  * CyberStorm).
  7.  */
  8. #include "NCR53C9x.h"
  9. #ifndef BLZ1230_H
  10. #define BLZ1230_H
  11. /* The controller registers can be found in the Z2 config area at these
  12.  * offsets:
  13.  */
  14. #define BLZ1230_ESP_ADDR 0x8000
  15. #define BLZ1230_DMA_ADDR 0x10000
  16. #define BLZ1230II_ESP_ADDR 0x10000
  17. #define BLZ1230II_DMA_ADDR 0x10021
  18. /* The Blizzard 1230 DMA interface
  19.  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  20.  * Only two things can be programmed in the Blizzard DMA:
  21.  *  1) The data direction is controlled by the status of bit 31 (1 = write)
  22.  *  2) The source/dest address (word aligned, shifted one right) in bits 30-0
  23.  *
  24.  * Program DMA by first latching the highest byte of the address/direction
  25.  * (i.e. bits 31-24 of the long word constructed as described in steps 1+2
  26.  * above). Then write each byte of the address/direction (starting with the
  27.  * top byte, working down) to the DMA address register.
  28.  *
  29.  * Figure out interrupt status by reading the ESP status byte.
  30.  */
  31. struct blz1230_dma_registers {
  32. volatile unsigned char dma_addr;  /* DMA address      [0x0000] */
  33. unsigned char dmapad2[0x7fff];
  34. volatile unsigned char dma_latch;  /* DMA latch        [0x8000] */
  35. };
  36. struct blz1230II_dma_registers {
  37. volatile unsigned char dma_addr;  /* DMA address      [0x0000] */
  38. unsigned char dmapad2[0xf];
  39. volatile unsigned char dma_latch;  /* DMA latch        [0x0010] */
  40. };
  41. #define BLZ1230_DMA_WRITE 0x80000000
  42. extern int blz1230_esp_detect(struct SHT *);
  43. extern int blz1230_esp_release(struct Scsi_Host *);
  44. extern const char *esp_info(struct Scsi_Host *);
  45. extern int esp_queue(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
  46. extern int esp_command(Scsi_Cmnd *);
  47. extern int esp_abort(Scsi_Cmnd *);
  48. extern int esp_reset(Scsi_Cmnd *, unsigned int);
  49. extern int esp_proc_info(char *buffer, char **start, off_t offset, int length,
  50.  int hostno, int inout);
  51. #define SCSI_BLZ1230      { proc_name: "esp-blz1230", 
  52.     proc_info: esp_proc_info, 
  53.     name: "Blizzard1230 SCSI IV", 
  54.     detect: blz1230_esp_detect, 
  55.     release: blz1230_esp_release, 
  56.     command: esp_command, 
  57.     queuecommand: esp_queue, 
  58.     abort: esp_abort, 
  59.     reset: esp_reset, 
  60.     can_queue:          7, 
  61.     this_id: 7, 
  62.     sg_tablesize: SG_ALL, 
  63.     cmd_per_lun: 1, 
  64.     use_clustering: ENABLE_CLUSTERING }
  65. #endif /* BLZ1230_H */