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

📄 hwconf.c

📁 MPC8560 for vxwork BSP
💻 C
字号:
/* hwconf.c - Hardware configuration support module *//* Copyright (c) 2005-2006 Wind River Systems, Inc. *//*modification history--------------------01j,22sep06,pmr  fix WIND00065418: incorrect parameters for 8540 serial01i,08sep06,pmr  fix brace usage.01h,30jul06,tor  Add PCI support01g,07feb06,wap  Add VxBus parameter table01f,04jan06,wap  Correct TSEC setup so interrupts work01e,26oct05,mdo  renaming header files01d,15sep05,to   01c,14sep05,mdo  Add vxb prefix01b,08aug05,mdo  Change WINDBUS to VXBUS01a,28jul05,rls  Created.*/#include <vxWorks.h>#include <vxBusLib.h>#include <hwif/vxbus/vxBus.h>#include <hwif/vxbus/hwConf.h>#include <hwif/util/vxbParamSys.h>#include <drv/pci/pciAutoConfigLib.h>#include "sysEpic.h"#include "config.h"const struct hcfResource motTsecHEnd0Resources[] = {    { "regBase", HCF_RES_INT, { (void *)(CCSBAR + 0x24000) } },    { "regBase1", HCF_RES_INT, { (void *)(CCSBAR + 0x24001) } },    { "regBase9", HCF_RES_INT, { (void *)(CCSBAR + 0x24009) } },    { "txInt", HCF_RES_INT, { (void *)EPIC_TSEC1TX_INT_VEC } },    { "txIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC1TX_INT_VEC } },    { "rxInt", HCF_RES_INT, { (void *)EPIC_TSEC1RX_INT_VEC } },    { "rxIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC1RX_INT_VEC } },    { "errInt", HCF_RES_INT, { (void *)EPIC_TSEC1ERR_INT_VEC } },    { "errIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC1ERR_INT_VEC } },};#define tsecHEnd0Num NELEMENTS(motTsecHEnd0Resources)const struct hcfResource motTsecHEnd1Resources[] = {    { "regBase", HCF_RES_INT, { (void *)(CCSBAR + 0x25000) } },    { "txInt", HCF_RES_INT, { (void *)EPIC_TSEC2TX_INT_VEC } },    { "txIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC2TX_INT_VEC } },    { "rxInt", HCF_RES_INT, { (void *)EPIC_TSEC2RX_INT_VEC } },    { "rxIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC2RX_INT_VEC } },    { "errInt", HCF_RES_INT, { (void *)EPIC_TSEC2ERR_INT_VEC } },    { "errIntLevel", HCF_RES_INT, { (void *)EPIC_TSEC2ERR_INT_VEC } },};#define tsecHEnd1Num NELEMENTS(motTsecHEnd1Resources)/* * On the wrSbc8560 board, PHYs are physically wired according * to the following table: * * 		Data port pins	Management port pins	MII address *		--------------	--------------------	----------- * PHY0:	TSEC0		TSEC0			25 * PHY1:	TSEC1		TSEC0			26 * * The tricky part is that both PHYs have their management pins * connected to TSEC0. We have to make it look like PHY1 is connected * to TSEC1, so we provide a remapping resource that will cause * PHY1 to be attached to miibus1 instead of miibus0. */const struct hcfResource phy0Resources[] = {    { "realBus", HCF_RES_INT, { (void *)0 } },    { "phyAddr", HCF_RES_INT, { (void *)26 } },    { "virtBus", HCF_RES_INT, { (void *)1 } },};#define phy0Num NELEMENTS(phy0Resources)IMPORT STATUS sysPciAutoconfigInclude();IMPORT UCHAR sysPciAutoconfigIntrAssign(PCI_SYSTEM *, PCI_LOC *, UCHAR);const struct hcfResource m85x0Pci0Resources[] = {    { "regBase", HCF_RES_INT, { (void *)PCI_REGBASE } },    { "mem32Addr", HCF_RES_ADDR, { (void *)PCI_MEM_ADRS } },    { "mem32Size", HCF_RES_INT, { (void *)PCI_MEM_SIZE } },    { "memIo32Addr", HCF_RES_ADDR, { (void *)PCI_MEMIO_ADRS } },    { "memIo32Size", HCF_RES_INT, { (void *)PCI_MEMIO_SIZE } },    { "io32Addr", HCF_RES_ADDR, { (void *)PCI_IO_ADRS } },    { "io32Size", HCF_RES_INT, { (void *)PCI_IO_SIZE } },     { "fbbEnable", HCF_RES_INT, { (void *)TRUE } },    { "cacheSize", HCF_RES_INT, { (void *)(_CACHE_ALIGN_SIZE / 4) } },     { "maxLatAllSet", HCF_RES_INT, { (void *)PCI_LAT_TIMER } },    { "autoIntRouteSet", HCF_RES_INT, { (void *)TRUE } },     { "includeFuncSet", HCF_RES_ADDR, { (void *)sysPciAutoconfigInclude } },    { "intAssignFuncSet", HCF_RES_ADDR, {(void *)sysPciAutoconfigIntrAssign }},    /* non vxbPciAutoConfig() values */    { "pimmrBase", HCF_RES_ADDR, { (void *)PCI_BRIDGE_PIMMR_BASE_ADRS } },    { "lclMemAddr", HCF_RES_ADDR, { (void *)LOCAL_MEM_LOCAL_ADRS } },    { "lclMemMapSize", HCF_RES_INT, { (void *)(512 * 1024 * 1024) } },    { "mstrMemBus", HCF_RES_ADDR, { (void *)PCI_MSTR_MEM_BUS } },};#define m85x0Pci0Num NELEMENTS(m85x0Pci0Resources)#ifdef INCLUDE_CPMconst struct hcfResource ns165500Resources[] = {     { "regBase",     HCF_RES_INT, {(void *)COM1_BRD_ADRS} },    { "irq",         HCF_RES_INT, {(void *)COM1_INT_VEC} },    { "irqLevel",    HCF_RES_INT, {(void *)COM1_INT_LVL} },    { "clkFreq",     HCF_RES_INT, {(void *)XTAL_BRD} },    { "regInterval", HCF_RES_INT, {(void *)UART_REG_INTVL} }};#define ns165500Num NELEMENTS(ns165500Resources)const struct hcfResource ns165501Resources[] = {     { "regBase",     HCF_RES_INT, {(void *)COM2_BRD_ADRS} },    { "irq",         HCF_RES_INT, {(void *)COM2_INT_VEC} },    { "irqLevel",    HCF_RES_INT, {(void *)COM2_INT_LVL} },    { "clkFreq",     HCF_RES_INT, {(void *)XTAL_BRD} },    { "regInterval", HCF_RES_INT, {(void *)UART_REG_INTVL} }};#define ns165501Num NELEMENTS(ns165501Resources)#else /* ! defined INCLUDE_CPM */const struct hcfResource ns165500Resources[] = {     { "regBase",     HCF_RES_INT, {(void *)COM1_CHIP_ADRS} },    { "irq",         HCF_RES_INT, {(void *)EPIC_DUART_INT_VEC} },    { "irqLevel",    HCF_RES_INT, {(void *)EPIC_DUART_INT_VEC} },    { "clkFreq",     HCF_RES_INT, {(void *)PLAT_FREQ_DEFAULT} },    { "regInterval", HCF_RES_INT, {(void *)UART_REG_INTVL} }};#define ns165500Num NELEMENTS(ns165500Resources)const struct hcfResource ns165501Resources[] = {     { "regBase",     HCF_RES_INT, {(void *)COM2_CHIP_ADRS} },    { "irq",         HCF_RES_INT, {(void *)EPIC_DUART_INT_VEC} },    { "irqLevel",    HCF_RES_INT, {(void *)EPIC_DUART_INT_VEC} },    { "clkFreq",     HCF_RES_INT, {(void *)PLAT_FREQ_DEFAULT} },    { "regInterval", HCF_RES_INT, {(void *)UART_REG_INTVL} }};#define ns165501Num NELEMENTS(ns165501Resources)#endif /* INCLUDE_CPM */const struct hcfResource m85xxCCSR0Resources[] = {    { "regBase", HCF_RES_INT, { (void *)CCSBAR  } },    { "LAWBAR0",    HCF_RES_STRING,     { (void *)"reserved" } },    { "LAWBAR1",    HCF_RES_STRING,     { (void *)"reserved" } },    { "LAWBAR2",    HCF_RES_STRING,     { (void *)NULL } },    { "LAWBAR3",    HCF_RES_STRING,     { (void *)"reserved" } },    { "LAWBAR4",    HCF_RES_STRING,     { (void *)"m8560Rio" } },    { "LAWBAR5",    HCF_RES_STRING,     { (void *)"m85x0Pci" } },    { "LAWBAR6",    HCF_RES_STRING,     { (void *)"m85x0Pci" } },    { "LAWBAR7",    HCF_RES_STRING,     { (void *)"m85x0Pci" } }};#define m85xxCCSR0Num NELEMENTS(m85xxCCSR0Resources)const struct hcfDevice hcfDeviceList[] = {    { "mottsecHEnd", 0, VXB_BUSID_PLB, 0, tsecHEnd0Num, motTsecHEnd0Resources },    { "mottsecHEnd", 1, VXB_BUSID_PLB, 0, tsecHEnd1Num, motTsecHEnd1Resources },    { "m85x0Pci", 0, VXB_BUSID_PLB,0, m85x0Pci0Num, m85x0Pci0Resources },    { "m85xxCCSR", 0, VXB_BUSID_PLB,0, m85xxCCSR0Num, m85xxCCSR0Resources },    { "phy", 0, VXB_BUSID_MII, 0, phy0Num, phy0Resources },    { "ns16550", 0, VXB_BUSID_PLB, 0, ns165500Num, ns165500Resources },#ifdef INCLUDE_MEZZ_COM2    { "ns16550", 1, VXB_BUSID_PLB, 0, ns165501Num, ns165501Resources },#endif /* INCLUDE_MEZZ_COM2 */};const int hcfDeviceNum = NELEMENTS(hcfDeviceList);VXB_INST_PARAM_OVERRIDE sysInstParamTable[] =    {    { NULL, 0, NULL, VXB_PARAM_END_OF_LIST, {(void *)0} }    };

⌨️ 快捷键说明

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