📄 arch.c
字号:
/* @(#) pSOSystem/PPC V221 */
/***********************************************************************/
/* */
/* MODULE: mpc8xx/ecom/src/arch.c */
/* DATE: 99/10/22 */
/* AUTHOR: Dong Aiping */
/* PURPOSE: */
/* */
/*---------------------------------------------------------------------*/
/* */
/* Copyright 1999 - 2000, ZHONGXING TELECOM CO.,LTD. */
/* ALL RIGHTS RESERVED */
/* */
/*---------------------------------------------------------------------*/
/* */
/* */
/***********************************************************************/
#include "board.h"
#include "bspcomm.h"
#include "ecom8xx.h"
IOIPinMapStruct IOIPinMap[MAX_IOI_ENTRIES]=
{
/* -------------- */ /* av port bit par dir odr so inttype */
/* up8986 enable */ { TRUE, PORTB, 14, 0, 1, 0, 0, 0},
/* dn8986 enable */ { TRUE, PORTB, 15, 0, 1, 0, 0, 0},
/* BID_0 */ { TRUE, PORTB, 16, 0, 0, 0, 0, 0},
/* MST_2 */ { TRUE, PORTB, 17, 0, 0, 0, 0, 0},
/* MST_1 */ { TRUE, PORTB, 18, 0, 0, 0, 0, 0},
/* -------------- */ /* av port bit par dir odr so inttype */
/* RUN LED */ { TRUE, PORTB, 26, 0, 1, 0, 0, 0, 2},
/* Alarm LED */ { TRUE, PORTB, 27, 0, 1, 0, 0, 0, 2},
/* Clock Los */ { TRUE, PORTB, 28, 0, 0, 0, 0, 0},
/* Clear Clk Alm */ { TRUE, PORTB, 30, 0, 1, 0, 0, 0, 1},
/* 8986 2M OR 8M */ { TRUE, PORTB, 31, 0, 0, 0, 0, 0},
/* -------------- */ /* av port bit par dir odr so inttype */
/* MMI SMC1 -RXD { TRUE, PORTB, 24, 1, 0, 0, 0, 0, 0}, */
/* MMI SMC1 -TXD { TRUE, PORTB, 25, 1, 0, 0, 0, 0, 0}, */
/* -------------- */ /* av port bit par dir odr so inttype */
/* Ethernet/enable { TRUE, PORTC, 8, 0, 1, 0, 0, 0}, */
/* Ethernet/loop */ { TRUE, PORTC, 4, 0, 1, 0, 0, 0, 0},
/* Ethernet/tpfldl*/ { TRUE, PORTC, 5, 0, 1, 0, 0, 0, 1},
/* Ethernet/tpsqel*/ { TRUE, PORTC, 6, 0, 1, 0, 0, 0, 1},
/* Ethernet/rena */ { TRUE, PORTC, 10, 0, 0, 0, 1, 0},
/* Ethernet/clsn */ { TRUE, PORTC, 11, 0, 0, 0, 1, 0},
/* Ethernet TENA */ { TRUE, PORTB, 19, 1, 1, 0, 0, 0},
/* Ethernet Rx */ { TRUE, PORTA, 15, 1, 0, 0, 0, 0},
/* Ethernet TCLK */ { TRUE, PORTA, 4, 1, 0, 0, 0, 0},
/* Ethernet RCLK */ { TRUE, PORTA, 6, 1, 0, 0, 0, 0},
/* Ethernet Tx */ { TRUE, PORTA, 14, 1, 0, 0, 0, 0},
/* SCC2 and SCC4 are used for QMC */
/* TDMB --------- */ /* av port bit par dir odr so inttype */
/* QMC_2M_RCLKB */ { TRUE, PORTA, 2, 1, 0, 0, 0, 0},
/* QMC_RXDB */ { TRUE, PORTA, 10, 1, 1, 0, 0, 0},
/* QMC_TXDB */ { TRUE, PORTA, 11, 1, 1, 0, 0, 0},
/* QMC_8K_RSYNCB */ { TRUE, PORTD, 12, 1, 0, 0, 0, 0},
/* TDMA --------- */ /* av port bit par dir odr so inttype */
/* QMC_2M_RCLKA */ { TRUE, PORTA, 7, 1, 0, 0, 0, 0},
/* QMC_RXDA */ { TRUE, PORTA, 8, 1, 1, 0, 0, 0},
/* QMC_TXDA */ { TRUE, PORTA, 9, 1, 1, 0, 0, 0},
/* QMC_8K_RSYNCA */ { TRUE, PORTD, 14, 1, 0, 0, 0, 0},
};
void BoardSpecInit(void)
{
unsigned long tmp_long;
unsigned long *siumcr;
char * pDpram;
SetLED(LED_ALL,0);
SetLED(LED_RUN,1);
/*---------------------------------------------*/
/* set SIUMCR_DPC */
/* DP[0-3]/IRQ[3-6] function as DP[0-3] */
/*---------------------------------------------*/
siumcr=(unsigned long *)(S_REGISTER_BASE+0x0L);
SPLX(*siumcr |= 0x0000A000;)
/*---------------------------------------------*/
/* set the Recieve/Transmit clock for scc1 */
/* R1CS->CLK2; T1CS->CLK4; */
/*---------------------------------------------*/
SPLX(E_SI_ClockRouteReg=(E_SI_ClockRouteReg&~0xFF)|0x2F);
/*---------------------------------------------*/
/* Reserved dpram for QMC's BD */
/*---------------------------------------------*/
dpram_reserve(0, BD_DPRAM_OFF,(BD_QMC_CHAN_NUM1+BD_QMC_CHAN_NUM2)*64 );
/*-----------Zero Dpram------------------------*/
pDpram=(char *)CS4_BASE;
memset(pDpram,0,0x1000);
pDpram=(char *)CS5_BASE;
memset(pDpram,0,0x1000);
/*---------------------------------------------*/
/* Initialize IRQ interrupt */
/*---------------------------------------------*/
InitInt();
}
ULONG GetBoardID(void)
{
return 0xff;
}
ULONG GetDefaultIP(void)
{
return 0x8a010a38;
}
void LanEnable(void){}
void SetLED(ULONG led, int status )
{
if (status == 0)
{
if((led&LED_RUN)==LED_RUN) BD_RUN_DISABLE
if((led&LED_ALARM)==LED_ALARM) BD_ALM_DISABLE
}
else if (status == 1)
{
if((led&LED_RUN)==LED_RUN) BD_RUN_ENABLE
if((led&LED_ALARM)==LED_ALARM) BD_ALM_ENABLE
}
else if (status == -1)
ReverseLED(led);
}
unsigned short GetBoardType (void)
{
return (unsigned short)32;
}
void InitTDM(void)
{
int i;
PDA *pda= (PDA *)(GetIMMR() & IO_MAP_MASK);
/*fill SRAM */
for(i=0;i<128;i++)((unsigned long *)pda->si_siram)[i]=0x00010000;
/* Init SIRAM TDMA and TDMB */
InitTDMA();
InitTDMB();
}
void InitTDMA(void)
{
int i;
PDA *pda= (PDA *)(GetIMMR() & IO_MAP_MASK);
/* Init SIRAM TDMA */
for(i=0;i<BD_QMC_CHAN_NUM1;i++)
{
((unsigned long *)pda->si_siram)[i]=0x00820000;
((unsigned long *)pda->si_siram)[64+i]=0x00820000;
}
((unsigned long *)pda->si_siram)[i-1]=0x00830000;
((unsigned long *)pda->si_siram)[64+i-1]=0x00830000;
SPLX(pda->si_simode&=0xfffff000;)
SPLX(pda->si_simode|=0x00000048;)
SPLX(pda->si_sigmr |= 0x02;)
SPLX(pda->si_sigmr &= 0xfb;)
}
void InitTDMB(void)
{
int i;
PDA *pda= (PDA *)(GetIMMR() & IO_MAP_MASK);
/* Init SIRAM TDMB */
for(i=0;i<BD_QMC_CHAN_NUM2;i++)
{
((unsigned long *)pda->si_siram)[i+32]=0x01020000;
((unsigned long *)pda->si_siram)[64+32+i]=0x01020000;
}
((unsigned long *)pda->si_siram)[32+i-1]=0x01030000;
((unsigned long *)pda->si_siram)[64+32+i-1]=0x01030000;
SPLX(pda->si_simode&=0xf000ffff; )
SPLX(pda->si_simode|=0x00480000; )
SPLX(pda->si_sigmr |= 0x02;)
SPLX(pda->si_sigmr &= 0xf7;)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -