#include <stdio.h>
#include <csl.h>
#include <csl_emif.h> 
#include <bsl.h>
#include <bsl_ad535.h>
#include <bsl_led.h>
#include "codec_poll.h"

AD535_Handle hAD535;
AD535_Config myConfig = { AD535_LOOPBACK_DISABLE,
                          AD535_MICGAIN_OFF,
                          AD535_GAIN_0DB,
                          AD535_GAIN_0DB
                        };
void main(){
#if PRINT
  int temp;
#endif

  /* Initialize the chip support library, required */
  CSL_init();
  /* Initialize the board support library, required */
  BSL_init();

  /* dsp and periphiral initialization */    
  CHIP_CSR_SET(0x100);                 /* Disable all interrupts              */
  CHIP_IER_SET(1);                     /* Disable all interrupts except NMI   */
  CHIP_ICR_SET(0xffff);                /* Clear all pending interrupts        */

/******************************************************************************\
 * CONFIGURE EMIF                                                             *
\******************************************************************************/  
  EMIF_configB(0x00003300,            /* EMIF global control register         */
               0xFFFFFF30,            /* CE0 - SDRAM                          */
               0xFFFFFF23,            /* CE1 - 32-bit asynch                  */
               0xFFFFFF23,            /* CE2 - 32-bit asynch on daughterboard */
               0xFFFFFF23,            /* CE3 - 32-bit asynch on daughterboard */
               0x07117000,            /* SDRAM control register (100 MHz)     */
               0x0000061A,            /* SDRAM Timing register                */
               0x00054519             /* SDRAM Extension register             */
              );
/******************************************************************************\
 * OPEN and CONFIGURE local codec                                             *
\******************************************************************************/  

  hAD535 = AD535_open(AD535_localId);
  AD535_reset(hAD535);
  AD535_config(hAD535, &myConfig);
  
  #if PRINT
  temp = AD535_readReg(hAD535, AD535_REG_CTRL3);
  if (temp != 0x06)
    printf ("Error in setting up register 3.\n");
  
  temp = AD535_readReg(hAD535, AD535_REG_CTRL4);
  if (temp != 0x19)
    printf ("Error in setting up register 4.\n");
  
  temp = AD535_readReg(hAD535, AD535_REG_CTRL5);
  if ((temp & 0xfe) != 0x66)
    printf ("Error in setting up register 5.\n");
  #endif
  
/******************************************************************************\
 * POLL codec and write back data                                             *
\******************************************************************************/  
  while(1) {
    AD535_write(hAD535, AD535_read(hAD535) );
  }

}