/*
 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * The contents of this file constitute Original Code as defined in and
 * are subject to the Apple Public Source License Version 1.1 (the
 * "License").  You may not use this file except in compliance with the
 * License.  Please obtain a copy of the License at
 * http://www.apple.com/publicsource and read it before using this file.
 * 
 * This Original Code and all software distributed under the License are
 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
 * License for the specific language governing rights and limitations
 * under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */
/*
	File:		Z85C30.h

	Contains:	This file contains symbolics specific to the CMOS Z85C30 SCC.
			It is based on the work of Craig Prouse.

	Copyright:	© 1996 by Apple Computer, Inc., all rights reserved.

	Version:	1.0

	File Ownership:

		DRI:			Naga Pappireddi

		Other Contact:		Shashin Vora

		Technology:		Maxwell CPU SW

	Writers:

		(np)	Naga Pappireddi
		(SMD)	Simon Douglas
		(…MB)	…ner M. Bi¨ak¨i

	Change History (most recent first):

		 <5>	 8/14/96	np		options management implementation
		 <4>	  7/2/96	SMD		(OMB) Enabled AMIC DMA for PDM.
		 <4>	 6/28/96	…MB		Added constant definitions.
		 <3>	 6/19/96	…MB		Added constant.
		 <2>	 3/15/96	…MB		Added AMIC & DBDMA. Updated to d11e2.
		 <1>	 1/29/96	…MB		First checked in.
*/

#ifndef __SERIALZ85C30__
#define __SERIALZ85C30__


/***********************************************************************/
//
//	Generic enums
//
/***********************************************************************/

enum
{
    // constants
    kNumSCCWR		= 15,		// there are 15 write registers

    // RR0
    kRxCharAvailable 	= 0x01,
    kZeroCount		= 0x02,
    kTxBufferEmpty	= 0x04,
    kDCDAsserted 	= 0x08,
    kSyncHunt		= 0x10,
    kCTSAsserted 	= 0x20,
    kTXUnderRun		= 0x40,
    kBreakReceived	= 0x80,

    // RR1
    kAllSent		= 0x01,
    kParityErr		= 0x10,
    kRxOverrun      = 0x20,
    kCRCFramingErr	= 0x40,
    kRxErrorsMask	= (kParityErr | kRxOverrun | kCRCFramingErr),

    // RR3
    kChannelARxIP	= 0x20,
    kChannelATxIP	= 0x10,
    kChannelAESIP	= 0x08,
    kChannelBRxIP	= 0x04,
    kChannelBTxIP	= 0x02,
    kChannelBESIP	= 0x01,
    kChannelRxIP	= 0x04,
    kChannelTxIP	= 0x02,
    kChannelESIP	= 0x01,
    
    // WR0
    kResetExtStsInt	= 0x10,
    kResetRxInt		= 0x20,
    kResetTxIP		= 0x28,
    kErrorReset		= 0x30,
    kTxUnderrunReset = 0xC0,
    kHighIUSReset	= 0x38,

    // WR1
    kWReqDisable	= 0x00,
    kWReqEnable		= 0x80,
    kDMAReqSelect	= 0x40,
    kDMAReqOnTx		= 0x00,
    kDMAReqOnRx		= 0x20,
    kRxInt1stOrSC	= 0x08,
    kRxIntAllOrSC	= 0x10,
    kRxIntOnlySC	= 0x18,
    kRxIntMask		= 0x18,
    kParityIsSpCond	= 0x04,
    kTxIntEnable	= 0x02,
    kExtIntEnable	= 0x01,

    // WR3						# Rx Bits, Rx Enable
    kRx5Bits		= 0x00,
    kRx6Bits		= 0x80,
    kRx7Bits		= 0x40,
    kRx8Bits		= 0xC0,
    kRxBitsMask		= 0xC0,
    kRxEnable		= 0x01,

    // WR4						# Clock Mode, Stop Bits, Parity Control
    kX1ClockMode	= 0x00,
    kX16ClockMode	= 0x40,
    kX32ClockMode	= 0x80,
    kX64ClockMode	= 0xC0,
    kClockModeMask	= 0xC0,
    kSyncModeMask	= 0x30,
    kExtSyncMode	= 0x30,
    kSDLCSyncMode	= 0x20,
    k16BitSyncMode	= 0x10,
    k8BitSyncMode	= 0x00,
    k1StopBit		= 0x04,
    k1pt5StopBits	= 0x08,
    k2StopBits		= 0x0C,
    kStopBitsMask	= 0x0C,
    kParityEven		= 0x02,
    kParityEnable	= 0x01,
    kParityMask		= 0x03,

    // WR5			# DTR, Tx Bits, Send Break, Tx Enable, RTS
    kDTR		= 0x80,
    kTx5Bits		= 0x00,
    kTx6Bits		= 0x40,
    kTx7Bits		= 0x20,
    kTx8Bits		= 0x60,
    kTxBitsMask		= 0x60,
    kSendBreak		= 0x10,
    kTxEnable		= 0x08,
    kRTS		= 0x02,

    // WR7'
    kEReq		= 0x10,

    // WR9
    kChannelResetA	= 0x80,
    kChannelResetB	= 0x40,
    kINTACK		= 0x20,
    kStatusHigh		= 0x10,
    kMIE		= 0x08,
    kDLC		= 0x04,
    kNV			= 0x02,
    kVIS		= 0x01,

    // WR10
    kNRZ		= 0x00,
    kNRZI		= 0x20,
    kFM1		= 0x40,
    kFM0		= 0x60,

    // WR11
    kRxClockRTxC	= 0x00,
    kRxClockTRxC	= 0x20,
    kRxClockBRG		= 0x40,
    kRxClockMask	= 0x60,
    kTxClockRTxC	= 0x00,
    kTxClockTRxC	= 0x08,
    kTxClockBRG		= 0x10,
    kTxClockMask	= 0x18,

    // WR14
    kLocalLoopback	= 0x10,
    kBRGFromRTxC	= 0x00,
    kBRGFromPCLK	= 0x02,
    kBRGDisable		= 0x00,
    kBRGEnable		= 0x01,
    
    // WR15
    kBreakAbortIE	= 0x80,
    kCTSIE		= 0x20,
    kDCDIE		= 0x08,
    kERegEnable		= 0x01
};


#endif