11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Sun3 SCSI stuff by Erik Verbruggen (erik@bigmama.xtdnet.nl) 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Sun3 DMA additions by Sam Creasey (sammy@sammy.net) 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Adapted from mac_scsinew.h: 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Cumana Generic NCR5380 driver defines 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 1993, Drew Eckhardt 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Visionary Computing 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (Unix and Linux consulting and custom programming) 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * drew@colorado.edu 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * +1 (303) 440-4894 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ALPHA RELEASE 1. 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * For more information, please consult 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NCR 5380 Family 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SCSI Protocol Controller 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Databook 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NCR Microelectronics 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1635 Aeroplaza Drive 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Colorado Springs, CO 80916 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1+ (719) 578-3400 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1+ (800) 334-5454 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * $Log: cumana_NCR5380.h,v $ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef SUN3_NCR5380_H 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SUN3_NCR5380_H 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SUN3SCSI_PUBLIC_RELEASE 1 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Int: level 2 autovector 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IO: type 1, base 0x00140000, 5 bits phys space: A<4..0> 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IRQ_SUN3_SCSI 2 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IOBASE_SUN3_SCSI 0x00140000 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IOBASE_SUN3_VMESCSI 0xff200000 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 50811c93666c3f4a0e99382c24a84480b03c7262f6Henrik Kretzschmarstatic int sun3scsi_abort(struct scsi_cmnd *); 51d0be4a7d29ad0bd3ce2209dd9e46d410b632db59Christoph Hellwigstatic int sun3scsi_detect (struct scsi_host_template *); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic const char *sun3scsi_info (struct Scsi_Host *); 53811c93666c3f4a0e99382c24a84480b03c7262f6Henrik Kretzschmarstatic int sun3scsi_bus_reset(struct scsi_cmnd *); 54f281233d3eba15fb225d21ae2e228fd4553d824aJeff Garzikstatic int sun3scsi_queue_command(struct Scsi_Host *, struct scsi_cmnd *); 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int sun3scsi_release (struct Scsi_Host *); 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CMD_PER_LUN 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CMD_PER_LUN 2 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef CAN_QUEUE 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CAN_QUEUE 16 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef SG_TABLESIZE 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SG_TABLESIZE SG_NONE 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef MAX_TAGS 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_TAGS 32 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef USE_TAGGED_QUEUING 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define USE_TAGGED_QUEUING 1 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <scsi/scsicam.h> 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef SUN3_SCSI_VME 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SUN3_SCSI_NAME "Sun3 NCR5380 VME SCSI" 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SUN3_SCSI_NAME "Sun3 NCR5380 SCSI" 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef HOSTS_C 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_implementation_fields \ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int port, ctrl 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_local_declare() \ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct Scsi_Host *_instance 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_setup(instance) \ 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds _instance = instance 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_read(reg) sun3scsi_read(reg) 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_write(reg, value) sun3scsi_write(reg, value) 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_intr sun3scsi_intr 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_queue_command sun3scsi_queue_command 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_bus_reset sun3scsi_bus_reset 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_abort sun3scsi_abort 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_proc_info sun3scsi_proc_info 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_dma_xfer_len(i, cmd, phase) \ 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds sun3scsi_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1) 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_dma_write_setup(instance, data, count) sun3scsi_dma_setup(data, count, 1) 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_dma_read_setup(instance, data, count) sun3scsi_dma_setup(data, count, 0) 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR5380_dma_residual sun3scsi_dma_residual 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NORMAL 0 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BOARD_NCR53C400 1 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* additional registers - mainly DMA control regs */ 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* these start at regbase + 8 -- directly after the NCR regs */ 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sun3_dma_regs { 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short dma_addr_hi; /* vme only */ 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short dma_addr_lo; /* vme only */ 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short dma_count_hi; /* vme only */ 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short dma_count_lo; /* vme only */ 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short udc_data; /* udc dma data reg (obio only) */ 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short udc_addr; /* uda dma addr reg (obio only) */ 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short fifo_data; /* fifo data reg, holds extra byte on 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds odd dma reads */ 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short fifo_count; 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short csr; /* control/status reg */ 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short bpack_hi; /* vme only */ 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short bpack_lo; /* vme only */ 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short ivect; /* vme only */ 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short fifo_count_hi; /* vme only */ 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* ucd chip specific regs - live in dvma space */ 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sun3_udc_regs { 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short rsel; /* select regs to load */ 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short addr_hi; /* high word of addr */ 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short addr_lo; /* low word */ 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short count; /* words to be xfer'd */ 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short mode_hi; /* high word of channel mode */ 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short mode_lo; /* low word of channel mode */ 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* addresses of the udc registers */ 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE 0x38 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CSR 0x2e /* command/status */ 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CHN_HI 0x26 /* chain high word */ 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CHN_LO 0x22 /* chain lo word */ 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CURA_HI 0x1a /* cur reg A high */ 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CURA_LO 0x0a /* cur reg A low */ 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CURB_HI 0x12 /* cur reg B high */ 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CURB_LO 0x02 /* cur reg B low */ 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE_HI 0x56 /* mode reg high */ 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE_LO 0x52 /* mode reg low */ 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_COUNT 0x32 /* words to xfer */ 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* some udc commands */ 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_RESET 0 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_CHN_START 0xa0 /* start chain */ 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_INT_ENABLE 0x32 /* channel 1 int on */ 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* udc mode words */ 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE_HIWORD 0x40 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE_LSEND 0xc2 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_MODE_LRECV 0xd2 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* udc reg selections */ 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_RSEL_SEND 0x282 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UDC_RSEL_RECV 0x182 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* bits in csr reg */ 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_DMA_ACTIVE 0x8000 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_DMA_CONFLICT 0x4000 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_DMA_BUSERR 0x2000 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_FIFO_EMPTY 0x400 /* fifo flushed? */ 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_SDB_INT 0x200 /* sbc interrupt pending */ 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_DMA_INT 0x100 /* dma interrupt pending */ 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_LEFT 0xc0 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_LEFT_3 0xc0 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_LEFT_2 0x80 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_LEFT_1 0x40 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_PACK_ENABLE 0x20 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_DMA_ENABLE 0x10 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_SEND 0x8 /* 1 = send 0 = recv */ 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_FIFO 0x2 /* reset fifo */ 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_INTR 0x4 /* interrupt enable */ 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CSR_SCSI 0x1 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define VME_DATA24 0x3d00 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// debugging printk's, taken from atari_scsi.h 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Debugging printk definitions: 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ARB -> arbitration 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ASEN -> auto-sense 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DMA -> DMA 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HSH -> PIO handshake 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * INF -> information transfer 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * INI -> initialization 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * INT -> interrupt 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LNK -> linked commands 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * MAIN -> NCR5380_main() control flow 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NDAT -> no data-out phase 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NWR -> no write commands 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PIO -> PIO transfers 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PDMA -> pseudo DMA (unused on Atari) 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * QU -> queues 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RSL -> reselections 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SEL -> selections 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * USL -> usleep cpde (unused on Atari) 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LBS -> last byte sent (unused on Atari) 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RSS -> restarting of selections 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * EXT -> extended messages 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ABRT -> aborting and resetting 2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * TAG -> queue tag handling 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * MER -> merging of consec. buffers 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 223c39e7eee149b4105fc49df27a2cb04fad880bb00Sam Creasey#include "NCR5380.h" 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_ARBITRATION 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ARB_PRINTK(format, args...) \ 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ARB_PRINTK(format, args...) 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_AUTOSENSE 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ASEN_PRINTK(format, args...) \ 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ASEN_PRINTK(format, args...) 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_DMA 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_PRINTK(format, args...) \ 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_PRINTK(format, args...) 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_HANDSHAKE 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HSH_PRINTK(format, args...) \ 2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HSH_PRINTK(format, args...) 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_INFORMATION 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INF_PRINTK(format, args...) \ 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INF_PRINTK(format, args...) 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_INIT 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INI_PRINTK(format, args...) \ 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INI_PRINTK(format, args...) 2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_INTR 2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INT_PRINTK(format, args...) \ 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INT_PRINTK(format, args...) 2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_LINKED 2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define LNK_PRINTK(format, args...) \ 2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define LNK_PRINTK(format, args...) 2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_MAIN 2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAIN_PRINTK(format, args...) \ 2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAIN_PRINTK(format, args...) 2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_NO_DATAOUT 2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NDAT_PRINTK(format, args...) \ 2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NDAT_PRINTK(format, args...) 2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_NO_WRITE 2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NWR_PRINTK(format, args...) \ 2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NWR_PRINTK(format, args...) 2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_PIO 2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PIO_PRINTK(format, args...) \ 2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PIO_PRINTK(format, args...) 2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_PSEUDO_DMA 2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDMA_PRINTK(format, args...) \ 2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PDMA_PRINTK(format, args...) 3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_QUEUES 3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define QU_PRINTK(format, args...) \ 3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define QU_PRINTK(format, args...) 3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_RESELECTION 3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RSL_PRINTK(format, args...) \ 3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RSL_PRINTK(format, args...) 3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_SELECTION 3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_PRINTK(format, args...) \ 3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_PRINTK(format, args...) 3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_USLEEP 3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define USL_PRINTK(format, args...) \ 3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define USL_PRINTK(format, args...) 3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_LAST_BYTE_SENT 3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define LBS_PRINTK(format, args...) \ 3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define LBS_PRINTK(format, args...) 3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_RESTART_SELECT 3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RSS_PRINTK(format, args...) \ 3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RSS_PRINTK(format, args...) 3381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_EXTENDED 3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EXT_PRINTK(format, args...) \ 3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EXT_PRINTK(format, args...) 3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_ABORT 3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABRT_PRINTK(format, args...) \ 3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABRT_PRINTK(format, args...) 3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_TAGS 3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TAG_PRINTK(format, args...) \ 3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TAG_PRINTK(format, args...) 3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if NDEBUG & NDEBUG_MERGING 3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MER_PRINTK(format, args...) \ 3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds printk(KERN_DEBUG format , ## args) 3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 3611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MER_PRINTK(format, args...) 3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* conditional macros for NCR5380_print_{,phase,status} */ 3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR_PRINT(mask) \ 3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ((NDEBUG & (mask)) ? NCR5380_print(instance) : (void)0) 3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR_PRINT_PHASE(mask) \ 3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ((NDEBUG & (mask)) ? NCR5380_print_phase(instance) : (void)0) 3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NCR_PRINT_STATUS(mask) \ 3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ((NDEBUG & (mask)) ? NCR5380_print_status(instance) : (void)0) 3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* ndef HOSTS_C */ 3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* SUN3_NCR5380_H */ 3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 380