Blame view

drivers/block/cciss_scsi.h 2.95 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
  /*
bd4f36d6d   Mike Miller   cciss: update cop...
2
3
   *    Disk Array driver for HP Smart Array controllers, SCSI Tape module.
   *    (C) Copyright 2001, 2007 Hewlett-Packard Development Company, L.P.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4
5
6
   *
   *    This program is free software; you can redistribute it and/or modify
   *    it under the terms of the GNU General Public License as published by
bd4f36d6d   Mike Miller   cciss: update cop...
7
   *    the Free Software Foundation; version 2 of the License.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
   *
   *    This program is distributed in the hope that it will be useful,
   *    but WITHOUT ANY WARRANTY; without even the implied warranty of
bd4f36d6d   Mike Miller   cciss: update cop...
11
12
   *    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   *    General Public License for more details.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
14
15
   *
   *    You should have received a copy of the GNU General Public License
   *    along with this program; if not, write to the Free Software
bd4f36d6d   Mike Miller   cciss: update cop...
16
17
   *    Foundation, Inc., 59 Temple Place, Suite 300, Boston, MA
   *    02111-1307, USA.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
20
21
22
23
24
25
26
   *
   *    Questions/Comments/Bugfixes to iss_storagedev@hp.com
   *
   */
  #ifdef CONFIG_CISS_SCSI_TAPE
  #ifndef _CCISS_SCSI_H_
  #define _CCISS_SCSI_H_
  
  #include <scsi/scsicam.h> /* possibly irrelevant, since we don't show disks */
b028461d6   dann frazier   cciss: remove C99...
27
  		/* the scsi id of the adapter... */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
  #define SELF_SCSI_ID 15
b028461d6   dann frazier   cciss: remove C99...
29
30
31
32
33
34
35
36
  		/* 15 is somewhat arbitrary, since the scsi-2 bus
  		   that's presented by the driver to the OS is
  		   fabricated.  The "real" scsi-3 bus the
  		   hardware presents is fabricated too.
  		   The actual, honest-to-goodness physical
  		   bus that the devices are attached to is not
  		   addressible natively, and may in fact turn
  		   out to be not scsi at all. */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
37

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
38
39
  
  /* 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  If the upper scsi layer tries to track how many commands we have 
  outstanding, it will be operating under the misapprehension that it is
  the only one sending us requests.  We also have the block interface,
  which is where most requests must surely come from, so the upper layer's
  notion of how many requests we have outstanding will be wrong most or
  all of the time. 
  
  Note, the normal SCSI mid-layer error handling doesn't work well
  for this driver because 1) it takes the io_request_lock before
  calling error handlers and uses a local variable to store flags,
  so the io_request_lock cannot be released and interrupts enabled
  inside the error handlers, and, the error handlers cannot poll
  for command completion because they might get commands from the
  block half of the driver completing, and not know what to do
  with them.  That's what we get for making a hybrid scsi/block
  driver, I suppose.
  
  */
  
  struct cciss_scsi_dev_t {
  	int devtype;
  	int bus, target, lun;		/* as presented to the OS */
  	unsigned char scsi3addr[8];	/* as presented to the HW */
905bd78f2   scameron@beardog.cca.cpqcorp.net   cciss: Fix cciss ...
63
64
65
66
  	unsigned char device_id[16];	/* from inquiry pg. 0x83 */
  	unsigned char vendor[8];	/* bytes 8-15 of inquiry data */
  	unsigned char model[16];	/* bytes 16-31 of inquiry data */
  	unsigned char revision[4];	/* bytes 32-35 of inquiry data */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
69
70
71
72
73
74
75
76
77
  };
  
  struct cciss_scsi_hba_t {
  	char *name;
  	int ndevices;
  #define CCISS_MAX_SCSI_DEVS_PER_HBA 16
  	struct cciss_scsi_dev_t dev[CCISS_MAX_SCSI_DEVS_PER_HBA];
  };
  
  #endif /* _CCISS_SCSI_H_ */
  #endif /* CONFIG_CISS_SCSI_TAPE */