patch-2.4.7 linux/drivers/message/fusion/mptscsih.h
Next file: linux/drivers/message/fusion/scsi3.h
Previous file: linux/drivers/message/fusion/mptscsih.c
Back to the patch index
Back to the overall index
- Lines: 248
- Date:
Fri Jul 6 17:03:11 2001
- Orig file:
v2.4.6/linux/drivers/message/fusion/mptscsih.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.4.6/linux/drivers/message/fusion/mptscsih.h linux/drivers/message/fusion/mptscsih.h
@@ -0,0 +1,247 @@
+/*
+ * linux/drivers/message/fusion/mptscsih.h
+ * High performance SCSI / Fibre Channel SCSI Host device driver.
+ * For use with PCI chip/adapter(s):
+ * LSIFC9xx/LSI409xx Fibre Channel
+ * running LSI Logic Fusion MPT (Message Passing Technology) firmware.
+ *
+ * Credits:
+ * This driver would not exist if not for Alan Cox's development
+ * of the linux i2o driver.
+ *
+ * A huge debt of gratitude is owed to David S. Miller (DaveM)
+ * for fixing much of the stupid and broken stuff in the early
+ * driver while porting to sparc64 platform. THANK YOU!
+ *
+ * (see also mptbase.c)
+ *
+ * Copyright (c) 1999-2001 LSI Logic Corporation
+ * Originally By: Steven J. Ralston
+ * (mailto:Steve.Ralston@lsil.com)
+ *
+ * $Id: mptscsih.h,v 1.7 2001/01/11 16:56:43 sralston Exp $
+ */
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/*
+ 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
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ NO WARRANTY
+ THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
+ LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to
+ the risks and costs of program errors, damage to or loss of data,
+ programs or equipment, and unavailability or interruption of operations.
+
+ DISCLAIMER OF LIABILITY
+ NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+ HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef SCSIHOST_H_INCLUDED
+#define SCSIHOST_H_INCLUDED
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+
+#include "linux/version.h"
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/*
+ * SCSI Public stuff...
+ */
+
+#ifdef __sparc__
+#define MPT_SCSI_CAN_QUEUE 63
+#define MPT_SCSI_CMD_PER_LUN 63
+ /* FIXME! Still investigating qd=64 hang on sparc64... */
+#else
+#define MPT_SCSI_CAN_QUEUE 64
+#define MPT_SCSI_CMD_PER_LUN 64
+#endif
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/*
+ * Various bits and pieces broke within the lk-2.4.0-testN series:-(
+ * So here are various HACKS to work around them.
+ */
+
+/*
+ * Conditionalizing with "#ifdef MODULE/#endif" around:
+ * static Scsi_Host_Template driver_template = XX;
+ * #include <../../scsi/scsi_module.c>
+ * lines was REMOVED @ lk-2.4.0-test9
+ * Issue discovered 20001213 by: sshirron
+ */
+#define MPT_SCSIHOST_NEED_ENTRY_EXIT_HOOKUPS 1
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,0)
+# if LINUX_VERSION_CODE == KERNEL_VERSION(2,4,0)
+ /*
+ * Super HACK! -by sralston:-(
+ * (good grief; heaven help me!)
+ */
+# include <linux/capability.h>
+# if !defined(CAP_LEASE) && !defined(MODULE)
+# undef MPT_SCSIHOST_NEED_ENTRY_EXIT_HOOKUPS
+# endif
+# else
+# ifndef MODULE
+# undef MPT_SCSIHOST_NEED_ENTRY_EXIT_HOOKUPS
+# endif
+# endif
+#endif
+
+/*
+ * tq_scheduler disappeared @ lk-2.4.0-test12
+ * (right when <linux/sched.h> newly defined TQ_ACTIVE)
+ */
+#define HAVE_TQ_SCHED 1
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
+# include <linux/sched.h>
+# ifdef TQ_ACTIVE
+# undef HAVE_TQ_SCHED
+# endif
+#endif
+#ifdef HAVE_TQ_SCHED
+#define SCHEDULE_TASK(x) \
+ /*MOD_INC_USE_COUNT*/; \
+ (x)->next = NULL; \
+ queue_task(x, &tq_scheduler)
+#else
+#define SCHEDULE_TASK(x) \
+ /*MOD_INC_USE_COUNT*/; \
+ if (schedule_task(x) == 0) { \
+ /*MOD_DEC_USE_COUNT*/; \
+ }
+#endif
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+
+#define x_scsi_detect mptscsih_detect
+#define x_scsi_release mptscsih_release
+#define x_scsi_info mptscsih_info
+#define x_scsi_queuecommand mptscsih_qcmd
+#define x_scsi_abort mptscsih_abort
+#define x_scsi_bus_reset mptscsih_bus_reset
+#define x_scsi_dev_reset mptscsih_dev_reset
+#define x_scsi_host_reset mptscsih_host_reset
+#define x_scsi_bios_param mptscsih_bios_param
+
+#define x_scsi_taskmgmt_bh mptscsih_taskmgmt_bh
+#define x_scsi_old_abort mptscsih_old_abort
+#define x_scsi_old_reset mptscsih_old_reset
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/*
+ * MPT SCSI Host / Initiator decls...
+ */
+extern int x_scsi_detect(Scsi_Host_Template *);
+extern int x_scsi_release(struct Scsi_Host *host);
+extern const char *x_scsi_info(struct Scsi_Host *);
+/*extern int x_scsi_command(Scsi_Cmnd *);*/
+extern int x_scsi_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
+#ifdef MPT_SCSI_USE_NEW_EH
+extern int x_scsi_abort(Scsi_Cmnd *);
+extern int x_scsi_bus_reset(Scsi_Cmnd *);
+extern int x_scsi_dev_reset(Scsi_Cmnd *);
+/*extern int x_scsi_host_reset(Scsi_Cmnd *);*/
+#else
+extern int x_scsi_old_abort(Scsi_Cmnd *);
+extern int x_scsi_old_reset(Scsi_Cmnd *, unsigned int);
+#endif
+extern int x_scsi_bios_param(Disk *, kdev_t, int *);
+extern void x_scsi_taskmgmt_bh(void *);
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
+#define PROC_SCSI_DECL
+#else
+#define PROC_SCSI_DECL proc_name: "mptscsih",
+#endif
+
+#ifdef MPT_SCSI_USE_NEW_EH
+
+#define MPT_SCSIHOST { \
+ next: NULL, \
+ PROC_SCSI_DECL \
+ name: "MPT SCSI Host", \
+ detect: x_scsi_detect, \
+ release: x_scsi_release, \
+ info: x_scsi_info, \
+ command: NULL, \
+ queuecommand: x_scsi_queuecommand, \
+ eh_strategy_handler: NULL, \
+ eh_abort_handler: x_scsi_abort, \
+ eh_device_reset_handler: x_scsi_dev_reset, \
+ eh_bus_reset_handler: x_scsi_bus_reset, \
+ eh_host_reset_handler: NULL, \
+ bios_param: x_scsi_bios_param, \
+ can_queue: MPT_SCSI_CAN_QUEUE, \
+ this_id: -1, \
+ sg_tablesize: 25, \
+ cmd_per_lun: MPT_SCSI_CMD_PER_LUN, \
+ unchecked_isa_dma: 0, \
+ use_clustering: ENABLE_CLUSTERING, \
+ use_new_eh_code: 1 \
+}
+
+#else
+
+#define MPT_SCSIHOST { \
+ next: NULL, \
+ PROC_SCSI_DECL \
+ name: "MPT SCSI Host", \
+ detect: x_scsi_detect, \
+ release: x_scsi_release, \
+ info: x_scsi_info, \
+ command: NULL, \
+ queuecommand: x_scsi_queuecommand, \
+ abort: x_scsi_old_abort, \
+ reset: x_scsi_old_reset, \
+ bios_param: x_scsi_bios_param, \
+ can_queue: MPT_SCSI_CAN_QUEUE, \
+ this_id: -1, \
+ sg_tablesize: 25, \
+ cmd_per_lun: MPT_SCSI_CMD_PER_LUN, \
+ unchecked_isa_dma: 0, \
+ use_clustering: ENABLE_CLUSTERING \
+}
+#endif
+
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+
+/* include/scsi/scsi.h may not be quite complete... */
+#ifndef RESERVE_10
+#define RESERVE_10 0x56
+#endif
+#ifndef RELEASE_10
+#define RELEASE_10 0x57
+#endif
+#ifndef PERSISTENT_RESERVE_IN
+#define PERSISTENT_RESERVE_IN 0x5e
+#endif
+#ifndef PERSISTENT_RESERVE_OUT
+#define PERSISTENT_RESERVE_OUT 0x5f
+#endif
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+
+#endif
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)