Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 <scsi/scsi_host.h> | |
46 | ||
47 | #include "sym53c8xx_defs.h" | |
48 | ||
49 | /* | |
50 | Build a scatter/gather entry. | |
51 | see sym53c8xx_2/sym_hipd.h for more detailed sym_build_sge() | |
52 | implementation ;) | |
53 | */ | |
54 | ||
55 | #define ncr_build_sge(np, data, badd, len) \ | |
56 | do { \ | |
57 | (data)->addr = cpu_to_scr(badd); \ | |
58 | (data)->size = cpu_to_scr(len); \ | |
59 | } while (0) | |
60 | ||
61 | /*========================================================== | |
62 | ** | |
63 | ** Structures used by the detection routine to transmit | |
64 | ** device configuration to the attach function. | |
65 | ** | |
66 | **========================================================== | |
67 | */ | |
68 | struct ncr_slot { | |
69 | u_long base; | |
70 | u_long base_2; | |
71 | u_long base_c; | |
72 | u_long base_2_c; | |
73 | void __iomem *base_v; | |
74 | void __iomem *base_2_v; | |
75 | int irq; | |
76 | /* port and reg fields to use INB, OUTB macros */ | |
77 | volatile struct ncr_reg __iomem *reg; | |
78 | }; | |
79 | ||
80 | /*========================================================== | |
81 | ** | |
82 | ** Structure used by detection routine to save data on | |
83 | ** each detected board for attach. | |
84 | ** | |
85 | **========================================================== | |
86 | */ | |
87 | struct ncr_device { | |
88 | struct device *dev; | |
89 | struct ncr_slot slot; | |
90 | struct ncr_chip chip; | |
91 | u_char host_id; | |
92 | u8 differential; | |
93 | }; | |
94 | ||
95 | extern struct Scsi_Host *ncr_attach(struct scsi_host_template *tpnt, int unit, struct ncr_device *device); | |
96 | extern int ncr53c8xx_release(struct Scsi_Host *host); | |
97 | irqreturn_t ncr53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs); | |
98 | extern int ncr53c8xx_init(void); | |
99 | extern void ncr53c8xx_exit(void); | |
100 | ||
101 | #endif /* NCR53C8XX_H */ |