/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 1996, by Sun Microsystems, Inc. * All rights reserved. */ #ifndef _SYS_SCSI_ADAPTERS_FASDMA_H #define _SYS_SCSI_ADAPTERS_FASDMA_H #pragma ident "%Z%%M% %I% %E% SMI" /* * SCSI Channel Engine (fas SCSI DVMA) definitions */ #include #ifdef __cplusplus extern "C" { #endif /* * for historical reasons, we call the scsi channel engine * dma for now */ struct dma { uint32_t dma_csr; /* control/status register */ uint32_t dma_addr; /* dma address register */ uint32_t dma_count; /* count register */ uint32_t dma_test; /* test csr register */ }; /* * dma_csr bits */ #define DMA_INTPEND 0x0001 /* (R) interrupt pending from fas or dma */ #define DMA_ERRPEND 0x0002 /* (R) error pending from dma */ #define DMA_DRAINING 0x0004 /* (R) if set, buffers aredraining to mem */ #define DMA_INTEN 0x0010 /* (RW) enable interrupts */ #define DMA_RESET 0x0080 /* (RW) invalidates the buffers, resets CE */ #define DMA_WRITE 0x0100 /* (RW) write to memory */ #define DMA_ENDVMA 0x0200 /* (RW) enable dvma */ #define DMA_REQPEND 0x0400 /* (R) do not assert reset when set! */ #define DMA_DMAREV 0x7800 /* (R) dma revision */ #define DMA_WIDE_EN 0x8000 /* (RW) enable wide SBus DVMA mode */ #define DMA_DSBL_DRAIN 0x00020000 /* (RW) disable draining on slave */ /* accesses */ #define DMA_BURSTS 0x000c0000 /* (RW) burst sizes */ #define DMA_TWO_CYCLE 0x00200000 /* (RW) 2 cycle dma access to 366 */ #define DMA_DSBL_PARITY 0x02000000 /* (RW) disables checking for parity */ #define DMA_PAUSE_FAS 0x04000000 /* (RW) pause fas */ #define DMA_RESET_FAS 0x08000000 /* (RW) hardware reset to fas */ #define DMA_DEV_ID 0xf0000000 /* (R) Device ID (0xb) */ #define DMA_INT_MASK (DMA_INTPEND | DMA_ERRPEND) #define DMA_BITS \ "\20\34RST\33PSE\31DSBLPAR\26TWOCYC\24BRST1\23BST0\ \22DSBLEDRN\20WIDE\13REQPEND\12ENBLE\11WR\10RST\05INTEN\ \03DRNING\02ERRPEND\01INTPND" #define DMAREV(dmap) (((dmap->dma_csr) & DMA_DMAREV) >> 11) /* * burst sizes for dma */ #define DMA_BURST16 0x00000000 #define DMA_BURST32 0x00040000 #define DMA_BURST64 0x000c0000 #define DMA_CE_ID 0xb0000000 /* SCSI CE device ID */ /* * burst sizes for dma attr */ #define BURST1 0x01 #define BURST2 0x02 #define BURST4 0x04 #define BURST8 0x08 #define BURST16 0x10 #define BURST32 0x20 #define BURST64 0x40 #define BURSTSIZE_MASK 0x7f #define DEFAULT_BURSTSIZE \ BURST64|BURST32|BURST16|BURST8|BURST4|BURST2|BURST1 #ifdef __cplusplus } #endif #endif /* _SYS_SCSI_ADAPTERS_FASDMA_H */