aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sim710.c
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2012-05-16 20:33:52 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-05-17 19:03:54 -0400
commita88dc06cd515b3bb9dfa18606e88d0be9a5b6ddd (patch)
treeb5657c966fad7bb7f8259396bb304324916269e2 /drivers/scsi/sim710.c
parentd157be852f6c76dc467f3a03b89263880e14c513 (diff)
scsi: delete the MCA specific drivers and driver code
The support for CONFIG_MCA is being removed, since the 20 year old hardware simply isn't capable of meeting today's software demands on CPU and memory resources. This commit removes the MCA specific SCSI drivers, and the MCA specific portions of code in dual role ISA/MCA drivers. Also, the MCA specific SCSI documentation is removed. Cc: James Bottomley <JBottomley@parallels.com> Cc: linux-scsi@vger.kernel.org Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'drivers/scsi/sim710.c')
-rw-r--r--drivers/scsi/sim710.c124
1 files changed, 3 insertions, 121 deletions
diff --git a/drivers/scsi/sim710.c b/drivers/scsi/sim710.c
index 8ac6ce792b69..a318264a4ba1 100644
--- a/drivers/scsi/sim710.c
+++ b/drivers/scsi/sim710.c
@@ -17,7 +17,7 @@
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *---------------------------------------------------------------------------- 18 *----------------------------------------------------------------------------
19 * 19 *
20 * MCA card detection code by Trent McNair. 20 * MCA card detection code by Trent McNair. (now deleted)
21 * Fixes to not explicitly nul bss data from Xavier Bestel. 21 * Fixes to not explicitly nul bss data from Xavier Bestel.
22 * Some multiboard fixes from Rolf Eike Beer. 22 * Some multiboard fixes from Rolf Eike Beer.
23 * Auto probing of EISA config space from Trevor Hemsley. 23 * Auto probing of EISA config space from Trevor Hemsley.
@@ -32,7 +32,6 @@
32#include <linux/blkdev.h> 32#include <linux/blkdev.h>
33#include <linux/device.h> 33#include <linux/device.h>
34#include <linux/init.h> 34#include <linux/init.h>
35#include <linux/mca.h>
36#include <linux/eisa.h> 35#include <linux/eisa.h>
37#include <linux/interrupt.h> 36#include <linux/interrupt.h>
38#include <scsi/scsi_host.h> 37#include <scsi/scsi_host.h>
@@ -43,7 +42,7 @@
43#include "53c700.h" 42#include "53c700.h"
44 43
45 44
46/* Must be enough for both EISA and MCA */ 45/* Must be enough for EISA */
47#define MAX_SLOTS 8 46#define MAX_SLOTS 8
48static __u8 __initdata id_array[MAX_SLOTS] = { [0 ... MAX_SLOTS-1] = 7 }; 47static __u8 __initdata id_array[MAX_SLOTS] = { [0 ... MAX_SLOTS-1] = 7 };
49 48
@@ -89,7 +88,7 @@ param_setup(char *str)
89__setup("sim710=", param_setup); 88__setup("sim710=", param_setup);
90 89
91static struct scsi_host_template sim710_driver_template = { 90static struct scsi_host_template sim710_driver_template = {
92 .name = "LSI (Symbios) 710 MCA/EISA", 91 .name = "LSI (Symbios) 710 EISA",
93 .proc_name = "sim710", 92 .proc_name = "sim710",
94 .this_id = 7, 93 .this_id = 7,
95 .module = THIS_MODULE, 94 .module = THIS_MODULE,
@@ -169,114 +168,6 @@ sim710_device_remove(struct device *dev)
169 return 0; 168 return 0;
170} 169}
171 170
172#ifdef CONFIG_MCA
173
174/* CARD ID 01BB and 01BA use the same pos values */
175#define MCA_01BB_IO_PORTS { 0x0000, 0x0000, 0x0800, 0x0C00, 0x1000, 0x1400, \
176 0x1800, 0x1C00, 0x2000, 0x2400, 0x2800, \
177 0x2C00, 0x3000, 0x3400, 0x3800, 0x3C00, \
178 0x4000, 0x4400, 0x4800, 0x4C00, 0x5000 }
179
180#define MCA_01BB_IRQS { 3, 5, 11, 14 }
181
182/* CARD ID 004f */
183#define MCA_004F_IO_PORTS { 0x0000, 0x0200, 0x0300, 0x0400, 0x0500, 0x0600 }
184#define MCA_004F_IRQS { 5, 9, 14 }
185
186static short sim710_mca_id_table[] = { 0x01bb, 0x01ba, 0x004f, 0};
187
188static __init int
189sim710_mca_probe(struct device *dev)
190{
191 struct mca_device *mca_dev = to_mca_device(dev);
192 int slot = mca_dev->slot;
193 int pos[3];
194 unsigned int base;
195 int irq_vector;
196 short id = sim710_mca_id_table[mca_dev->index];
197 static int io_004f_by_pos[] = MCA_004F_IO_PORTS;
198 static int irq_004f_by_pos[] = MCA_004F_IRQS;
199 static int io_01bb_by_pos[] = MCA_01BB_IO_PORTS;
200 static int irq_01bb_by_pos[] = MCA_01BB_IRQS;
201 char *name;
202 int clock;
203
204 pos[0] = mca_device_read_stored_pos(mca_dev, 2);
205 pos[1] = mca_device_read_stored_pos(mca_dev, 3);
206 pos[2] = mca_device_read_stored_pos(mca_dev, 4);
207
208 /*
209 * 01BB & 01BA port base by bits 7,6,5,4,3,2 in pos[2]
210 *
211 * 000000 <disabled> 001010 0x2800
212 * 000001 <invalid> 001011 0x2C00
213 * 000010 0x0800 001100 0x3000
214 * 000011 0x0C00 001101 0x3400
215 * 000100 0x1000 001110 0x3800
216 * 000101 0x1400 001111 0x3C00
217 * 000110 0x1800 010000 0x4000
218 * 000111 0x1C00 010001 0x4400
219 * 001000 0x2000 010010 0x4800
220 * 001001 0x2400 010011 0x4C00
221 * 010100 0x5000
222 *
223 * 00F4 port base by bits 3,2,1 in pos[0]
224 *
225 * 000 <disabled> 001 0x200
226 * 010 0x300 011 0x400
227 * 100 0x500 101 0x600
228 *
229 * 01BB & 01BA IRQ is specified in pos[0] bits 7 and 6:
230 *
231 * 00 3 10 11
232 * 01 5 11 14
233 *
234 * 00F4 IRQ specified by bits 6,5,4 in pos[0]
235 *
236 * 100 5 101 9
237 * 110 14
238 */
239
240 if (id == 0x01bb || id == 0x01ba) {
241 base = io_01bb_by_pos[(pos[2] & 0xFC) >> 2];
242 irq_vector =
243 irq_01bb_by_pos[((pos[0] & 0xC0) >> 6)];
244
245 clock = 50;
246 if (id == 0x01bb)
247 name = "NCR 3360/3430 SCSI SubSystem";
248 else
249 name = "NCR Dual SIOP SCSI Host Adapter Board";
250 } else if ( id == 0x004f ) {
251 base = io_004f_by_pos[((pos[0] & 0x0E) >> 1)];
252 irq_vector =
253 irq_004f_by_pos[((pos[0] & 0x70) >> 4) - 4];
254 clock = 50;
255 name = "NCR 53c710 SCSI Host Adapter Board";
256 } else {
257 return -ENODEV;
258 }
259 mca_device_set_name(mca_dev, name);
260 mca_device_set_claim(mca_dev, 1);
261 base = mca_device_transform_ioport(mca_dev, base);
262 irq_vector = mca_device_transform_irq(mca_dev, irq_vector);
263
264 return sim710_probe_common(dev, base, irq_vector, clock,
265 0, id_array[slot]);
266}
267
268static struct mca_driver sim710_mca_driver = {
269 .id_table = sim710_mca_id_table,
270 .driver = {
271 .name = "sim710",
272 .bus = &mca_bus_type,
273 .probe = sim710_mca_probe,
274 .remove = __devexit_p(sim710_device_remove),
275 },
276};
277
278#endif /* CONFIG_MCA */
279
280#ifdef CONFIG_EISA 171#ifdef CONFIG_EISA
281static struct eisa_device_id sim710_eisa_ids[] = { 172static struct eisa_device_id sim710_eisa_ids[] = {
282 { "CPQ4410" }, 173 { "CPQ4410" },
@@ -344,10 +235,6 @@ static int __init sim710_init(void)
344 param_setup(sim710); 235 param_setup(sim710);
345#endif 236#endif
346 237
347#ifdef CONFIG_MCA
348 err = mca_register_driver(&sim710_mca_driver);
349#endif
350
351#ifdef CONFIG_EISA 238#ifdef CONFIG_EISA
352 err = eisa_driver_register(&sim710_eisa_driver); 239 err = eisa_driver_register(&sim710_eisa_driver);
353#endif 240#endif
@@ -361,11 +248,6 @@ static int __init sim710_init(void)
361 248
362static void __exit sim710_exit(void) 249static void __exit sim710_exit(void)
363{ 250{
364#ifdef CONFIG_MCA
365 if (MCA_bus)
366 mca_unregister_driver(&sim710_mca_driver);
367#endif
368
369#ifdef CONFIG_EISA 251#ifdef CONFIG_EISA
370 eisa_driver_unregister(&sim710_eisa_driver); 252 eisa_driver_unregister(&sim710_eisa_driver);
371#endif 253#endif