#ifndef __SCCCHIP__
#define __SCCCHIP__
void initChip(PortInfo_t *port);
void FixZeroBug(SccChannel *Channel);
void ProbeSccDevice(PortInfo_t *Port);
void OpenScc(PortInfo_t *Port);
void SccCloseChannel(SccChannel *Channel);
bool SccSetBaud(SccChannel *Channel, UInt32 NewBaud);
bool SccConfigureForMIDI(SccChannel *Channel, UInt32 ClockMode);
void SccChannelReset(SccChannel *Channel);
bool SccWriteByte(SccChannel *Channel, UInt8 Value);
UInt8 SccReadReg(SccChannel *Channel, UInt8 sccRegister);
bool SccWriteData(SccChannel *Channel, UInt8 Data);
UInt8 SccReadData(SccChannel *Channel);
bool SccWriteReg(SccChannel *Channel, UInt8 sccRegister, UInt8 Value);
UInt8 SccReadByte(SccChannel *Channel);
bool SccSetParity(SccChannel *Channel, ParityType ParitySetting);
bool SccSetStopBits(SccChannel *Channel, UInt32 numbits);
bool SccSetDataBits(SccChannel *Channel, UInt32 numDataBits);
bool SetUpTransmit(SccChannel *Channel);
bool SuspendTX(SccChannel *Channel);
bool SccGetCTS(SccChannel *Channel);
bool SccGetDCD(SccChannel *Channel);
void SccSetCTSFlowControlEnable(SccChannel *Channel, bool enableCTS);
void SccSetDTR(SccChannel *Channel, bool assertDTR);
void SccSetBreak(SccChannel *Channel, bool setBreak);
void PPCSerialISR(OSObject *identity, void *istate, SccChannel *Channel);
void PPCSerialTxDMAISR(void *identity, void *istate, SccChannel *Channel);
void PPCSerialRxDMAISR(void *identity, void *istate, SccChannel *Channel);
void SccHandleExtInterrupt(OSObject *target, void *refCon, SccChannel *Channel);
void SccHandleExtErrors(SccChannel *Channel);
void SccEnableInterrupts(SccChannel *Channel, UInt32 WhichInts);
void SccDisableInterrupts(SccChannel *Channel, UInt32 WhichInts);
void SccSetDMARegisters(SccChannel *Channel, IOService *provider);
void SccEnableDMAInterruptSources(SccChannel *Channel, bool onOff);
void SccSetupReceptionChannel(SccChannel *Channel);
void SccFreeReceptionChannel(SccChannel *Channel);
void SccdbdmaDefineReceptionCommands(SccChannel *Channel);
void SccdbdmaStartReception(SccChannel *Channel);
void SccdbdmaEndReception(SccChannel *Channel);
void SccdbdmaRxHandleCurrentPosition(SccChannel *Channel);
void SccSetupTansmissionChannel(SccChannel *Channel);
void SccFreeTansmissionChannel(SccChannel *Channel);
void SccdbdmaDefineTansmissionCommands(SccChannel *Channel);
void SccdbdmaStartTransmission(SccChannel *Channel);
void SccdbdmaEndTransmission(SccChannel *Channel);
void HandleRxIntTimeout(SccChannel *Channel);
void rxTimeoutHandler(OSObject *owner, IOTimerEventSource *sender);
#endif