//****************************************************************************
//
// LIB7209.H - Function prototype defintions for the library routines
//
// Copyright (c) 1998-1999 Cirrus Logic, Inc.
//
//****************************************************************************

typedef void (*PFNISR)(void);

//
// From adc.c:
//
extern void ADCEnable(void);
extern void ADCDisable(void);
extern long ADCGetData(long lChannel);

//
// From codec.c:
//
extern void CodecEnable(void);
extern void CodecDisable(void);
extern void CodecPlay(char *pcBuffer, long lLength);
extern void CodecPlayBg(char *pcBuffer, long lLength);
extern int CodecPlaySpaceAvailable(void);
extern int CodecPlayIsDone(void);
extern void CodecPlayWaitTilDone(void);
extern void CodecRecord(char *pcBuffer, long lLength);
extern void CodecRecordBg(char *pcBuffer, long lLength);
extern int CodecRecordSpaceAvailable(void);
extern int CodecRecordIsDone(void);
extern void CodecRecordWaitTilDone(void);

//
// From dai.c
//
extern void DAIEnable(void);
extern void DAIDisable(void);
extern int DAIPlayBuffer(short *psBuffer, long lBufferLength, long *plDone);
extern int DAIPlaySpaceAvailable(void);
extern int DAIPlayIsDone(void);
extern int DAIRecordBuffer(short *psBuffer, long lBufferLength, long *plDone);
extern int DAIRecordSpaceAvailable(void);
extern int DAIRecordIsDone(void);

//
// From ir.c:
//
extern long IREnable(long lDataRate);
extern void IRDisable(void);
extern void IRSendChar(char cChar);
extern char IRReceiveChar(void);
extern long IRCharReady(void);

//
// From isr.c:
//
extern void InterruptInstallIRQ(void);
extern void InterruptRemoveIRQ(void);
extern void InterruptInstallFIQ(void);
extern void InterruptRemoveFIQ(void);
extern void InterruptSetCodecHandler(PFNISR pfnCodec);
extern void InterruptSetADCHandler(PFNISR pfnADC);
extern void InterruptSetDAIHandler(PFNISR pfnDAI);
extern void InterruptSetUART1Handler(PFNISR pfnUART1);
extern void InterruptSetUART2Handler(PFNISR pfnUART2);
extern void InterruptSetKbdHandler(PFNISR pfnKbd);
extern void InterruptSetSSI2Handler(PFNISR pfnSSI2);
extern void InterruptSetParallelHandler(PFNISR pfnParallel);

//
// From kbd.c:
//
extern void KbdRead(char *pcKeysPressed);
extern char KbdGetButton(void);
extern void KbdNoButton(void);

//
// From lcd.c:
//
extern void LCDLine(long lX1, long lY1, long lX2, long lY2, char cColor);
extern void LCDCircle(long lX, long lY, long lRadius, char cColor);
extern void LCDFillCircle(long lX, long lY, long lRadius, char cColor);
extern void LCDPrintChar(char cChar, long lX, long lY, char cColor);
extern void LCDPrintString(char *pcBuffer, long lX, long lY, char cColor);
extern void LCDPrintCharX2(char cChar, long lX, long lY, char cColor);
extern void LCDPrintStringX2(char *pcBuffer, long lX, long lY, char cColor);

//
// From lcd_alps.c:
//
extern void LCDEnable(void);
extern void LCDOn(void);
extern void LCDOff(void);
extern void LCDCls(void);
extern void LCDSetPixel(long lX, long lY, char cColor);
extern char LCDGetPixel(long lX, long lY);
extern void LCDBacklightOn(void);
extern void LCDBacklightOff(void);

//
// From nandflsh.c:
//
extern long NANDGetSize(unsigned long *pulDeviceSize,
                        unsigned long *pulPageSize,
                        unsigned long *pulPagesPerBlock,
                        unsigned long *pulNumBlocks);
extern void NANDReadPage(unsigned long ulPage, int bReadSpare,
                         unsigned long *pulBuffer);
extern void NANDEraseBlock(unsigned long ulBlock);
extern void NANDWritePage(unsigned long ulPage, int bWriteSpare,
                          unsigned long *pulBuffer);
extern long SMIsPresent(void);
extern long SMGetSize(unsigned long *pulDeviceSize, unsigned long *pulPageSize,
                      unsigned long *pulPagesPerBlock,
                      unsigned long *pulNumBlocks);
extern long SMReadPage(unsigned long ulPage, int bReadSpare,
                       unsigned char *pucBuffer);
extern long SMEraseBlock(unsigned long ulBlock);
extern long SMWritePage(unsigned long ulPage, int bWriteSpare,
                        unsigned char *pucBuffer);

//
// From norflsh.c:
//
extern long FlashNumSectors(void);
extern long FlashSectorInfo(long lSector, long *plSectorOffset,
                            long *plSectorLength);
extern void FlashEraseChip(unsigned long ulFlashBase);
extern void FlashEraseSector(unsigned long ulFlashBase, long lSector);
extern void FlashProgramBlock(unsigned long ulFlashBase, long lOffset,
                              unsigned char *pucData, long lNumBytes);

//
// From parallel.c:
//
extern void ParallelEnable(void);
extern void ParallelDisable(void);
extern void ParallelSendChar(char ucChar);
extern char ParallelReceiveChar(void);
extern long ParallelCharReady(void);

//
// From ssi2.c:
//
extern void SSI2Enable(int bMaster);
extern void SSI2Disable(void);
extern void SSI2SendChar(char cChar);
extern char SSI2ReceiveChar(void);

//
// From uart.c:
//
extern long UARTEnable(long lPort, long lDataRate, long lDataBits,
                       long lStopBits, long lParity, long lEvenParity);
extern void UARTDisable(long lPort);
extern void UARTSendChar(long lPort, char cChar);
extern char UARTReceiveChar(long lPort);
extern long UARTCharReady(long lPort);
