11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Generic Generic NCR5380 driver defines
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 1993, Drew Eckhardt
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	Visionary Computing
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	(Unix and Linux consulting and custom programming)
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	drew@colorado.edu
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *      +1 (303) 440-4894
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NCR53C400 extensions (c) 1994,1995,1996, Kevin Lentin
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *    K.Lentin@cs.monash.edu.au
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ALPHA RELEASE 1.
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * For more information, please consult
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NCR 5380 Family
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SCSI Protocol Controller
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Databook
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NCR Microelectronics
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1635 Aeroplaza Drive
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Colorado Springs, CO 80916
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1+ (719) 578-3400
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1+ (800) 334-5454
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * $Log: generic_NCR5380.h,v $
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef GENERIC_NCR5380_H
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GENERIC_NCR5380_H
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GENERIC_NCR5380_PUBLIC_RELEASE 1
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef NCR53C400
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIOSPARAM
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_BIOSPARAM generic_NCR5380_biosparam
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_BIOSPARAM NULL
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ASM
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int generic_NCR5380_abort(Scsi_Cmnd *);
47d0be4a7d29ad0bd3ce2209dd9e46d410b632db59Christoph Hellwigstatic int generic_NCR5380_detect(struct scsi_host_template *);
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int generic_NCR5380_release_resources(struct Scsi_Host *);
49f281233d3eba15fb225d21ae2e228fd4553d824aJeff Garzikstatic int generic_NCR5380_queue_command(struct Scsi_Host *, struct scsi_cmnd *);
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int generic_NCR5380_bus_reset(Scsi_Cmnd *);
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic const char* generic_NCR5380_info(struct Scsi_Host *);
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CMD_PER_LUN
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CMD_PER_LUN 2
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CAN_QUEUE
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CAN_QUEUE 16
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef HOSTS_C
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __STRVAL(x) #x
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define STRVAL(x) __STRVAL(x)
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
66702a98c63355b74aec50897870eb1c89b5009cfbOndrej Zary#ifndef SCSI_G_NCR5380_MEM
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_config port
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_type int
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_name port
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_instance_name io_port
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_register_offset 0
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_address_adjust 8
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef NCR53C400
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_region_size 16
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_region_size 8
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_read(reg) (inb(NCR5380_map_name + (reg)))
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_write(reg, value) (outb((value), (NCR5380_map_name + (reg))))
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
84c818cb6406815716ab210ae15655ed94a973b15fAl Viro#define NCR5380_implementation_fields \
85c818cb6406815716ab210ae15655ed94a973b15fAl Viro    NCR5380_map_type NCR5380_map_name
86c818cb6406815716ab210ae15655ed94a973b15fAl Viro
87c818cb6406815716ab210ae15655ed94a973b15fAl Viro#define NCR5380_local_declare() \
88c818cb6406815716ab210ae15655ed94a973b15fAl Viro    register NCR5380_implementation_fields
89c818cb6406815716ab210ae15655ed94a973b15fAl Viro
90c818cb6406815716ab210ae15655ed94a973b15fAl Viro#define NCR5380_setup(instance) \
91c818cb6406815716ab210ae15655ed94a973b15fAl Viro    NCR5380_map_name = (NCR5380_map_type)((instance)->NCR5380_instance_name)
92c818cb6406815716ab210ae15655ed94a973b15fAl Viro
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
94702a98c63355b74aec50897870eb1c89b5009cfbOndrej Zary/* therefore SCSI_G_NCR5380_MEM */
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_config memory
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_type unsigned long
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_map_name base
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_instance_name base
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_register_offset 0x108
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_address_adjust 0
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_mem_base 0x3880
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR53C400_host_buffer 0x3900
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_region_size 0x3a00
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
106c818cb6406815716ab210ae15655ed94a973b15fAl Viro#define NCR5380_read(reg) readb(iomem + NCR53C400_mem_base + (reg))
107c818cb6406815716ab210ae15655ed94a973b15fAl Viro#define NCR5380_write(reg, value) writeb(value, iomem + NCR53C400_mem_base + (reg))
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_implementation_fields \
110c818cb6406815716ab210ae15655ed94a973b15fAl Viro    NCR5380_map_type NCR5380_map_name; \
111c818cb6406815716ab210ae15655ed94a973b15fAl Viro    void __iomem *iomem;
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_local_declare() \
114c818cb6406815716ab210ae15655ed94a973b15fAl Viro    register void __iomem *iomem
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_setup(instance) \
117702a98c63355b74aec50897870eb1c89b5009cfbOndrej Zary    iomem = (((struct NCR5380_hostdata *)(instance)->hostdata)->iomem)
118c818cb6406815716ab210ae15655ed94a973b15fAl Viro
119c818cb6406815716ab210ae15655ed94a973b15fAl Viro#endif
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_intr generic_NCR5380_intr
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_queue_command generic_NCR5380_queue_command
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_abort generic_NCR5380_abort
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_bus_reset generic_NCR5380_bus_reset
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_pread generic_NCR5380_pread
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_pwrite generic_NCR5380_pwrite
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_proc_info notyet_generic_proc_info
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NCR5380	0
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NCR53C400	1
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NCR53C400A 2
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_DTC3181E	3
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* else def HOSTS_C */
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* ndef ASM */
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* GENERIC_NCR5380_H */
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
138