/******************************************************************************\
*           Copyright (C) 2000 Texas Instruments Incorporated.
*                           All Rights Reserved
*------------------------------------------------------------------------------
* FILENAME...... bsl.c
* DATE CREATED.. Thu 06/15/2001 
* LAST MODIFIED. Thu 07/12/2001 
*
\******************************************************************************/
#define _BSL_MOD_
#define _BOARD_MOD_ 

/****************************************\
* include files
\****************************************/

#include "bsl.h"
#include "bsl_board.h"

/******************************************************************************\
*                         L O C A L   S E C T I O N
\******************************************************************************/

/****************************************\
* BSL static macro declarations
\****************************************/

/****************************************\
* BSL static typedef declarations
\****************************************/

/****************************************\
* BSL static function declarations
\****************************************/

/****************************************\
* BSL static variable definitions
\****************************************/
static char dateStamp[] = "DATE STAMP ["__DATE__"] ["__TIME__"]";

/****************************************\
* BSL static function definitions
\****************************************/
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/

/******************************************************************************\
*                        G L O B A L   S E C T I O N
\******************************************************************************/

/****************************************\
* BSL global variable definitions
\****************************************/

/****************************************\
* BSL global function definitions
\****************************************/
/*----------------------------------------------------------------------------*/
/* Here we will define a function whose name matches the library name         */
/* It will be called by BSL_init() and is used to detect when the             */
/* incorrect library is linked in.                                            */
/*----------------------------------------------------------------------------*/
#if (BOARD_6711DSK)
  void BSL6711DSK_LIB_() {}
#endif

/*----------------------------------------------------------------------------*/
#if (BOARD_6211DSK)
  void BSL6211DSK_LIB_() {}
#endif

/*----------------------------------------------------------------------------*/
#if (BOARD_6201EVM)
  void BSL6201EVM_LIB_() {}
#endif

/*----------------------------------------------------------------------------*/
void BSL_init() {
  static int initialized = 0;
  
  UNREFERENCED_PARAMETER(dateStamp[0]);
  
  if (!initialized) {
  #if (BOARD_6711DSK | BOARD_6211DSK)
    EMIF_configArgs(0x00003040,      /* EMIF global control register          */
                 0xFFFFFF30,      /* CE0 - SDRAM                           */
                 0xFFFFFF23,      /* CE1 - 32-bit asynch access after boot */    
                 0xFFFFFF23,      /* CE2 - 32-bit asynch access after boot */    
                 0xFFFFFF23,      /* CE3 - 32-bit asynch access after boot */    
                 0x07117000,      /* SDRAM control register (100 MHz)      */
                 0x0000061A,      /* SDRAM Timing register                 */
                 0x00054519       /* SDRAM Extension register              */
                 );
  #endif
 
  #if (BOARD_6201EVM)
/* RBTR8 preemtion, SBSRAM at 1/2, clk1&2 disable, hold enabled, no clock inv */
/* CE0 space SBSRAM, all other field are dont cares                           */
/* CE1 space async expansion and CODEC, holds setups and strobes maximum val  */
/* CE2,CE3 space SDRAM, all other fields are dont cares                       */
/* SDRAM, default TRC TRP TRCD, init SDRAM, refresh enable, 16 bit devices    */
/* SDRAM default refresh period                                               */

    EMIF_configArgs(0x00003060,      /* EMIF global control register          */
                 0x00000040,      /* CE0 - SBSRAM                          */
                 0x40F40323,      /* CE1 - 32-bit asynch                   */
                 0x00000030,      /* CE2 - SDRAM                           */
                 0x00000030,      /* CE3 - SDRAM                           */
                 0x07229000,      /* SDRAM control register (100 MHz)      */
                 0x00000619,      /* SDRAM Timing register                 */
                 0x00054519       /* SDRAM Extension register              */
                 );
  #endif

  #if (BOARD_6711DSK)
    BSL6711DSK_LIB_();
  #endif

  #if (BOARD_6211DSK)
    BSL6211DSK_LIB_();
  #endif

  #if (BOARD_6201EVM)
    BSL6201EVM_LIB_();
  #endif

    _BOARD_init();

    #if (LED_SUPPORT)
    _LED_init();
    #endif

    #if (DIP_SUPPORT)
    _DIP_init();
    #endif

    #if (FLASH_SUPPORT)
    _FLASH_init();
    #endif

    #if (AD535_SUPPORT)
    _AD535_init();
    #endif

    initialized = 1;
  }
}
/*----------------------------------------------------------------------------*/

/******************************************************************************\
* End of bsl.c
\******************************************************************************/