blob: e71d986727cac7c4a11b0e2f2b6c568ec4f2e829 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Mike Millerbd4f36d2007-10-24 10:30:34 +02002 * Disk Array driver for HP Smart Array controllers, SCSI Tape module.
3 * (C) Copyright 2001, 2007 Hewlett-Packard Development Company, L.P.
Linus Torvalds1da177e2005-04-16 15:20:36 -07004 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
Mike Millerbd4f36d2007-10-24 10:30:34 +02007 * the Free Software Foundation; version 2 of the License.
Linus Torvalds1da177e2005-04-16 15:20:36 -07008 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Mike Millerbd4f36d2007-10-24 10:30:34 +020011 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
Linus Torvalds1da177e2005-04-16 15:20:36 -070013 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
Mike Millerbd4f36d2007-10-24 10:30:34 +020016 * Foundation, Inc., 59 Temple Place, Suite 300, Boston, MA
17 * 02111-1307, USA.
Linus Torvalds1da177e2005-04-16 15:20:36 -070018 *
19 * Questions/Comments/Bugfixes to iss_storagedev@hp.com
20 *
21 */
22#ifdef CONFIG_CISS_SCSI_TAPE
23#ifndef _CCISS_SCSI_H_
24#define _CCISS_SCSI_H_
25
26#include <scsi/scsicam.h> /* possibly irrelevant, since we don't show disks */
27
dann frazierb0284612010-02-17 16:53:31 -070028 /* the scsi id of the adapter... */
Linus Torvalds1da177e2005-04-16 15:20:36 -070029#define SELF_SCSI_ID 15
dann frazierb0284612010-02-17 16:53:31 -070030 /* 15 is somewhat arbitrary, since the scsi-2 bus
31 that's presented by the driver to the OS is
32 fabricated. The "real" scsi-3 bus the
33 hardware presents is fabricated too.
34 The actual, honest-to-goodness physical
35 bus that the devices are attached to is not
36 addressible natively, and may in fact turn
37 out to be not scsi at all. */
Linus Torvalds1da177e2005-04-16 15:20:36 -070038
Linus Torvalds1da177e2005-04-16 15:20:36 -070039
40/*
41
Linus Torvalds1da177e2005-04-16 15:20:36 -070042If the upper scsi layer tries to track how many commands we have
43outstanding, it will be operating under the misapprehension that it is
44the only one sending us requests. We also have the block interface,
45which is where most requests must surely come from, so the upper layer's
46notion of how many requests we have outstanding will be wrong most or
47all of the time.
48
49Note, the normal SCSI mid-layer error handling doesn't work well
50for this driver because 1) it takes the io_request_lock before
51calling error handlers and uses a local variable to store flags,
52so the io_request_lock cannot be released and interrupts enabled
53inside the error handlers, and, the error handlers cannot poll
54for command completion because they might get commands from the
55block half of the driver completing, and not know what to do
56with them. That's what we get for making a hybrid scsi/block
57driver, I suppose.
58
59*/
60
61struct cciss_scsi_dev_t {
62 int devtype;
63 int bus, target, lun; /* as presented to the OS */
64 unsigned char scsi3addr[8]; /* as presented to the HW */
scameron@beardog.cca.cpqcorp.net905bd782008-09-19 18:27:47 -070065 unsigned char device_id[16]; /* from inquiry pg. 0x83 */
66 unsigned char vendor[8]; /* bytes 8-15 of inquiry data */
67 unsigned char model[16]; /* bytes 16-31 of inquiry data */
68 unsigned char revision[4]; /* bytes 32-35 of inquiry data */
Linus Torvalds1da177e2005-04-16 15:20:36 -070069};
70
71struct cciss_scsi_hba_t {
72 char *name;
73 int ndevices;
74#define CCISS_MAX_SCSI_DEVS_PER_HBA 16
75 struct cciss_scsi_dev_t dev[CCISS_MAX_SCSI_DEVS_PER_HBA];
76};
77
78#endif /* _CCISS_SCSI_H_ */
79#endif /* CONFIG_CISS_SCSI_TAPE */