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

📄 vmeconfig.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* $Id: vmeconfig.c,v 1.1.2.4 2004/11/23 15:44:50 joel Exp $ *//* Standard VME bridge configuration for VGM type boards *//* Author: Till Straumann <strauman@slac.stanford.edu>, 3/2002 */#include <bsp.h>#include <bsp/VME.h>#include <bsp/irq.h>#include <libcpu/bat.h>#include <libcpu/spr.h>#include <bsp/motorola.h>/* Use a weak alias for the VME configuration. * This permits individual applications to override * this routine. * They may even create an 'empty' * *    void BSP_vme_config(void) {} * * which will avoid linking in the Universe driver * at all :-). */void BSP_vme_config(void) __attribute__ (( weak, alias("__BSP_default_vme_config") ));SPR_RO(DBAT0U)void__BSP_default_vme_config(void){union {	struct _BATU	bat;	unsigned long	batbits;} dbat0u;  vmeUniverseInit();  vmeUniverseReset();  /* setup a PCI area to map the VME bus */  dbat0u.batbits = _read_DBAT0U();  /* if we have page tables, BAT0 is available */  if (dbat0u.bat.vs || dbat0u.bat.vp) {	printk("WARNING: BAT0 is taken (no pagetables?); "               "VME bridge must share PCI range for VME access\n"	       "Skipping VME initialization...\n");	return;  }  setdbat(0,		  PCI_MEM_BASE + _VME_A32_WIN0_ON_PCI,		  PCI_MEM_BASE + _VME_A32_WIN0_ON_PCI,		  0x10000000,		  IO_PAGE);  /* map VME address ranges */  vmeUniverseMasterPortCfg(	0,	VME_AM_EXT_SUP_DATA,	_VME_A32_WIN0_ON_VME,	_VME_A32_WIN0_ON_PCI,	0x0F000000);  vmeUniverseMasterPortCfg(	1,	VME_AM_STD_SUP_DATA,	0x00000000,	_VME_A24_ON_PCI,	0x00ff0000);  vmeUniverseMasterPortCfg(	2,	VME_AM_SUP_SHORT_IO,	0x00000000,	_VME_A16_ON_PCI,	0x00010000);#ifdef _VME_DRAM_OFFSET  /* map our memory to VME */  vmeUniverseSlavePortCfg(	0,	VME_AM_EXT_SUP_DATA,	_VME_DRAM_OFFSET,	PCI_DRAM_OFFSET,	BSP_mem_size);  /* make sure the host bridge PCI master is enabled */  vmeUniverseWriteReg(	vmeUniverseReadReg(UNIV_REGOFF_PCI_CSR) | UNIV_PCI_CSR_BM,	UNIV_REGOFF_PCI_CSR);#endif  /* stdio is not yet initialized; the driver will revert to printk */  vmeUniverseMasterPortsShow(0);  vmeUniverseSlavePortsShow(0);  /* install the VME interrupt manager */  vmeUniverseInstallIrqMgr(0,5,1,6);  if (vmeUniverse0PciIrqLine<0)	BSP_panic("Unable to get interrupt line info from PCI config");  _BSP_vme_bridge_irq=BSP_PCI_IRQ_LOWEST_OFFSET+vmeUniverse0PciIrqLine;}

⌨️ 快捷键说明

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