1/******************************************************************************
2**  Device driver for the PCI-SCSI NCR538XX controller family.
3**
4**  Copyright (C) 1994  Wolfgang Stanglmeier
5**
6**  This program is free software; you can redistribute it and/or modify
7**  it under the terms of the GNU General Public License as published by
8**  the Free Software Foundation; either version 2 of the License, or
9**  (at your option) any later version.
10**
11**  This program is distributed in the hope that it will be useful,
12**  but WITHOUT ANY WARRANTY; without even the implied warranty of
13**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14**  GNU General Public License for more details.
15**
16**  You should have received a copy of the GNU General Public License
17**  along with this program; if not, write to the Free Software
18**  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19**
20**-----------------------------------------------------------------------------
21**
22**  This driver has been ported to Linux from the FreeBSD NCR53C8XX driver
23**  and is currently maintained by
24**
25**          Gerard Roudier              <groudier@free.fr>
26**
27**  Being given that this driver originates from the FreeBSD version, and
28**  in order to keep synergy on both, any suggested enhancements and corrections
29**  received on Linux are automatically a potential candidate for the FreeBSD
30**  version.
31**
32**  The original driver has been written for 386bsd and FreeBSD by
33**          Wolfgang Stanglmeier        <wolf@cologne.de>
34**          Stefan Esser                <se@mi.Uni-Koeln.de>
35**
36**  And has been ported to NetBSD by
37**          Charles M. Hannum           <mycroft@gnu.ai.mit.edu>
38**
39*******************************************************************************
40*/
41
42#ifndef NCR53C8XX_H
43#define NCR53C8XX_H
44
45#include "sym53c8xx_defs.h"
46
47/*
48**	Define Scsi_Host_Template parameters
49**
50**	Used by hosts.c and ncr53c8xx.c with module configuration.
51*/
52
53#if (LINUX_VERSION_CODE >= 0x020400) || defined(HOSTS_C) || defined(MODULE)
54
55#include <scsi/scsicam.h>
56
57int ncr53c8xx_abort(Scsi_Cmnd *);
58int ncr53c8xx_detect(Scsi_Host_Template *tpnt);
59const char *ncr53c8xx_info(struct Scsi_Host *host);
60int ncr53c8xx_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
61int ncr53c8xx_reset(Scsi_Cmnd *, unsigned int);
62
63#ifdef MODULE
64int ncr53c8xx_release(struct Scsi_Host *);
65#else
66#define ncr53c8xx_release NULL
67#endif
68
69
70#if	LINUX_VERSION_CODE >= LinuxVersionCode(2,1,75)
71
72#define NCR53C8XX {     name:           "",			\
73			detect:         ncr53c8xx_detect,	\
74			release:        ncr53c8xx_release,	\
75			info:           ncr53c8xx_info, 	\
76			queuecommand:   ncr53c8xx_queue_command,\
77			abort:          ncr53c8xx_abort,	\
78			reset:          ncr53c8xx_reset,	\
79			bios_param:     scsicam_bios_param,	\
80			can_queue:      SCSI_NCR_CAN_QUEUE,	\
81			this_id:        7,			\
82			sg_tablesize:   SCSI_NCR_SG_TABLESIZE,	\
83			cmd_per_lun:    SCSI_NCR_CMD_PER_LUN,	\
84			use_clustering: DISABLE_CLUSTERING}
85
86#else
87
88#define NCR53C8XX {	NULL, NULL, NULL, NULL,				\
89			NULL,			ncr53c8xx_detect,	\
90			ncr53c8xx_release,	ncr53c8xx_info,	NULL,	\
91			ncr53c8xx_queue_command,ncr53c8xx_abort,	\
92			ncr53c8xx_reset, NULL,	scsicam_bios_param,	\
93			SCSI_NCR_CAN_QUEUE,	7,			\
94			SCSI_NCR_SG_TABLESIZE,	SCSI_NCR_CMD_PER_LUN,	\
95			0,	0,	DISABLE_CLUSTERING}
96
97#endif /* LINUX_VERSION_CODE */
98
99#endif /* defined(HOSTS_C) || defined(MODULE) */
100
101#endif /* NCR53C8XX_H */
102