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