⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csl_emifb.h

📁 SEED的VPM642测试程序-板级支持库
💻 H
字号:
/******************************************************************************\
*           Copyright (C) 2001 Texas Instruments Incorporated.
*                           All Rights Reserved
*------------------------------------------------------------------------------
* FILENAME...... csl_emifb.h
* DATE CREATED.. 03/27/2001 
* LAST MODIFIED. 01/31/2002 SDCTL reg. setting after SDEXT reg.setting
\******************************************************************************/
#ifndef _CSL_EMIFB_H_
#define _CSL_EMIFB_H_

#include <csl_chip.h>
#include <csl_irq.h>
#include <csl_emifbhal.h>


#if (EMIFB_SUPPORT)
/******************************************************************************\
* scope and inline control macros
\******************************************************************************/
#ifdef __cplusplus
#define CSLAPI extern "C" far
#else
#define CSLAPI extern far
#endif

#undef  USEDEFS
#undef  IDECL
#undef  IDEF

#ifdef  _EMIFB_MOD_
  #define IDECL CSLAPI
  #define USEDEFS
  #define IDEF
#else
  #ifdef  _INLINE
    #define IDECL static inline
    #define USEDEFS
    #define IDEF  static inline
  #else
    #define IDECL CSLAPI
  #endif
#endif


/******************************************************************************\
* global macro declarations
\******************************************************************************/


/******************************************************************************\
* global typedef declarations
\******************************************************************************/

/* device configuration structure */
typedef struct {
  Uint32 gblctl;
  Uint32 cectl0;
  Uint32 cectl1;
  Uint32 cectl2;
  Uint32 cectl3;
  Uint32 sdctl;
  Uint32 sdtim;
  Uint32 sdext;
  Uint32 cesec0;
  Uint32 cesec1;
  Uint32 cesec2;
  Uint32 cesec3;
} EMIFB_Config;


/******************************************************************************\
* global variable declarations
\******************************************************************************/


/******************************************************************************\
* global function declarations
\******************************************************************************/


/******************************************************************************\
* inline function declarations
\******************************************************************************/
#if (CHIP_6414 | CHIP_6415 | CHIP_6416 ) 
IDECL void EMIFB_config(EMIFB_Config *config);
IDECL void EMIFB_configArgs(Uint32 gblctl, Uint32 cectl0, Uint32 cectl1,
    Uint32 cectl2, Uint32 cectl3, Uint32 sdctl, Uint32 sdtim, Uint32 sdext, Uint32 cesec0,
    Uint32 cesec1, Uint32 cesec2, Uint32 cesec3);
IDECL void EMIFB_getConfig(EMIFB_Config *config);
#endif

/******************************************************************************\
* inline function definitions
\******************************************************************************/
#ifdef USEDEFS
/*----------------------------------------------------------------------------*/
#if (CHIP_6414 | CHIP_6415 | CHIP_6416 ) 
IDEF void EMIFB_config(EMIFB_Config *config) {

  Uint32 gie;
  volatile Uint32 *base = (volatile Uint32 *)_EMIFB_BASE_GLOBAL;
  register int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11;

  gie = IRQ_globalDisable();

  /* the compiler generates more efficient code if the loads */
  /* and stores are grouped together raher than intermixed   */
  x0  = config->gblctl;
  x1  = config->cectl0;
  x2  = config->cectl1;
  x3  = config->cectl2;
  x4  = config->cectl3;
  x5  = config->sdctl;
  x6  = config->sdtim;
  x7  = config->sdext;
  x8  = config->cesec0;
  x9  = config->cesec1;
  x10 = config->cesec2;
  x11 = config->cesec3;

  base[_EMIFB_GBLCTL_OFFSET]  = x0;
  base[_EMIFB_CECTL0_OFFSET]  = x1;
  base[_EMIFB_CECTL1_OFFSET]  = x2;
  base[_EMIFB_CECTL2_OFFSET]  = x3;
  base[_EMIFB_CECTL3_OFFSET]  = x4;
  base[_EMIFB_SDTIM_OFFSET]   = x6;
  base[_EMIFB_SDEXT_OFFSET]   = x7;
  base[_EMIFB_CESEC0_OFFSET]  = x8;
  base[_EMIFB_CESEC1_OFFSET]  = x9;
  base[_EMIFB_CESEC2_OFFSET]  = x10;
  base[_EMIFB_CESEC3_OFFSET]  = x11;

  base[_EMIFB_SDCTL_OFFSET]   = x5;


  IRQ_globalRestore(gie);
}
#endif /* C64_SUPPORT */
/*----------------------------------------------------------------------------*/
#if (CHIP_6414 | CHIP_6415 | CHIP_6416 ) 
IDEF void EMIFB_configArgs(Uint32 gblctl, Uint32 cectl0, Uint32 cectl1,
  Uint32 cectl2, Uint32 cectl3, Uint32 sdctl, Uint32 sdtim, Uint32 sdext,
  Uint32 cesec0, Uint32 cesec1, Uint32 cesec2, Uint32 cesec3) {

  Uint32 gie;
  volatile Uint32 *base = (volatile Uint32 *)_EMIFB_BASE_GLOBAL;

  gie = IRQ_globalDisable();

  base[_EMIFB_GBLCTL_OFFSET]  = gblctl;
  base[_EMIFB_CECTL0_OFFSET]  = cectl0;
  base[_EMIFB_CECTL1_OFFSET]  = cectl1;
  base[_EMIFB_CECTL2_OFFSET]  = cectl2;
  base[_EMIFB_CECTL3_OFFSET]  = cectl3;
  base[_EMIFB_SDTIM_OFFSET]   = sdtim;
  base[_EMIFB_SDEXT_OFFSET]   = sdext;
  base[_EMIFB_CESEC0_OFFSET]  = cesec0;
  base[_EMIFB_CESEC1_OFFSET]  = cesec1;
  base[_EMIFB_CESEC2_OFFSET]  = cesec2;
  base[_EMIFB_CESEC3_OFFSET]  = cesec3;

  base[_EMIFB_SDCTL_OFFSET]   = sdctl;

  IRQ_globalRestore(gie);
}

#endif 
/*----------------------------------------------------------------------------*/
#if (CHIP_6414 | CHIP_6415 | CHIP_6416 ) 
IDEF void EMIFB_getConfig(EMIFB_Config *config) {

  Uint32 gie;
  volatile Uint32 *base = (volatile Uint32 *)_EMIFB_BASE_GLOBAL;
  volatile EMIFB_Config* cfg = (volatile EMIFB_Config*)config;
  register int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11;

  gie = IRQ_globalDisable();

  /* the compiler generates more efficient code if the loads */
  /* and stores are grouped together raher than intermixed   */

  x0  = base[_EMIFB_GBLCTL_OFFSET];
  x1  = base[_EMIFB_CECTL0_OFFSET];
  x2  = base[_EMIFB_CECTL1_OFFSET];
  x3  = base[_EMIFB_CECTL2_OFFSET];
  x4  = base[_EMIFB_CECTL3_OFFSET];
  x5  = base[_EMIFB_SDCTL_OFFSET];
  x6  = base[_EMIFB_SDTIM_OFFSET];
  x7  = base[_EMIFB_SDEXT_OFFSET];
  x8  = base[_EMIFB_CESEC0_OFFSET];
  x9  = base[_EMIFB_CESEC1_OFFSET];
  x10 = base[_EMIFB_CESEC2_OFFSET];
  x11 = base[_EMIFB_CESEC3_OFFSET];

  cfg->gblctl  = x0;
  cfg->cectl0  = x1;
  cfg->cectl1  = x2;
  cfg->cectl2  = x3;
  cfg->cectl3  = x4;
  cfg->sdctl   = x5;
  cfg->sdtim   = x6;
  cfg->sdext   = x7;
  cfg->cesec0  = x8;
  cfg->cesec1  = x9;
  cfg->cesec2  = x10;
  cfg->cesec3  = x11;

  IRQ_globalRestore(gie);
}
#endif /* C64_SUPPORT */
/*----------------------------------------------------------------------------*/
#endif /* USEDEFS */


#endif /* EMIFB_SUPPORT */
#endif /* _CSL_EMIFB_H_ */
/******************************************************************************\
* End of csl_emifb.h
\******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -