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