亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? skgeinit.c

?? 移植好的楊創(chuàng)utu2440F ARM9 的uboot1.1.4代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
}	/* SkGePollRxD *//****************************************************************************** * *	SkGePollTxD() - Enable / Disable Descriptor Polling of TxD Rings * * Description: *	Enable or disable the descriptor polling of the transmit descriptor *	ring(s) (TxD) for port 'Port'. *	The new configuration is *not* saved over any SkGeStopPort() and *	SkGeInitPort() calls. * * Returns: *	nothing */void SkGePollTxD(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* IO context */int		Port,		/* Port Index (MAC_1 + n) */SK_BOOL PollTxD)	/* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */{	SK_GEPORT *pPrt;	SK_U32	DWord;	pPrt = &pAC->GIni.GP[Port];	DWord = (PollTxD) ? CSR_ENA_POL : CSR_DIS_POL;	if (pPrt->PXSQSize != 0) {		SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), DWord);	}	if (pPrt->PXAQSize != 0) {		SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), DWord);	}}	/* SkGePollTxD *//****************************************************************************** * *	SkGeYellowLED() - Switch the yellow LED on or off. * * Description: *	Switch the yellow LED on or off. * * Note: *	This function may be called any time after SkGeInit(Level 1). * * Returns: *	nothing */void SkGeYellowLED(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* IO context */int		State)		/* yellow LED state, 0 = OFF, 0 != ON */{	if (State == 0) {		/* Switch yellow LED OFF */		SK_OUT8(IoC, B0_LED, LED_STAT_OFF);	}	else {		/* Switch yellow LED ON */		SK_OUT8(IoC, B0_LED, LED_STAT_ON);	}}	/* SkGeYellowLED *//****************************************************************************** * *	SkGeXmitLED() - Modify the Operational Mode of a transmission LED. * * Description: *	The Rx or Tx LED which is specified by 'Led' will be *	enabled, disabled or switched on in test mode. * * Note: *	'Led' must contain the address offset of the LEDs INI register. * * Usage: *	SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA); * * Returns: *	nothing */void SkGeXmitLED(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* IO context */int		Led,		/* offset to the LED Init Value register */int		Mode)		/* Mode may be SK_LED_DIS, SK_LED_ENA, SK_LED_TST */{	SK_U32	LedIni;	switch (Mode) {	case SK_LED_ENA:		LedIni = SK_XMIT_DUR * (SK_U32)pAC->GIni.GIHstClkFact / 100;		SK_OUT32(IoC, Led + XMIT_LED_INI, LedIni);		SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);		break;	case SK_LED_TST:		SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_ON);		SK_OUT32(IoC, Led + XMIT_LED_CNT, 100);		SK_OUT8(IoC, Led + XMIT_LED_CTRL, LED_START);		break;	case SK_LED_DIS:	default:		/*		 * Do NOT stop the LED Timer here. The LED might be		 * in on state. But it needs to go off.		 */		SK_OUT32(IoC, Led + XMIT_LED_CNT, 0);		SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_OFF);		break;	}	/*	 * 1000BT: The Transmit LED is driven by the PHY.	 * But the default LED configuration is used for	 * Level One and Broadcom PHYs.	 * (Broadcom: It may be that PHY_B_PEC_EN_LTR has to be set.)	 * (In this case it has to be added here. But we will see. XXX)	 */}	/* SkGeXmitLED *//****************************************************************************** * *	DoCalcAddr() - Calculates the start and the end address of a queue. * * Description: *	This function calculates the start and the end address of a queue. *  Afterwards the 'StartVal' is incremented to the next start position. *	If the port is already initialized the calculated values *	will be checked against the configured values and an *	error will be returned, if they are not equal. *	If the port is not initialized the values will be written to *	*StartAdr and *EndAddr. * * Returns: *	0:	success *	1:	configuration error */static int DoCalcAddr(SK_AC		*pAC, 			/* adapter context */SK_GEPORT	*pPrt,			/* port index */int			QuSize,			/* size of the queue to configure in kB */SK_U32		*StartVal,		/* start value for address calculation */SK_U32		*QuStartAddr,	/* start addr to calculate */SK_U32		*QuEndAddr)		/* end address to calculate */{	SK_U32	EndVal;	SK_U32	NextStart;	int		Rtv;	Rtv = 0;	if (QuSize == 0) {		EndVal = *StartVal;		NextStart = EndVal;	}	else {		EndVal = *StartVal + ((SK_U32)QuSize * 1024) - 1;		NextStart = EndVal + 1;	}	if (pPrt->PState >= SK_PRT_INIT) {		if (*StartVal != *QuStartAddr || EndVal != *QuEndAddr) {			Rtv = 1;		}	}	else {		*QuStartAddr = *StartVal;		*QuEndAddr = EndVal;	}	*StartVal = NextStart;	return(Rtv);}	/* DoCalcAddr *//****************************************************************************** * *	SkGeInitAssignRamToQueues() - allocate default queue sizes * * Description: *	This function assigns the memory to the different queues and ports. *	When DualNet is set to SK_TRUE all ports get the same amount of memory. *  Otherwise the first port gets most of the memory and all the *	other ports just the required minimum. *	This function can only be called when pAC->GIni.GIRamSize and *	pAC->GIni.GIMacsFound have been initialized, usually this happens *	at init level 1 * * Returns: *	0 - ok *	1 - invalid input values *	2 - not enough memory */int SkGeInitAssignRamToQueues(SK_AC	*pAC,			/* Adapter context */int		ActivePort,		/* Active Port in RLMT mode */SK_BOOL	DualNet)		/* adapter context */{	int	i;	int	UsedKilobytes;			/* memory already assigned */	int	ActivePortKilobytes;	/* memory available for active port */	SK_GEPORT *pGePort;	UsedKilobytes = 0;	if (ActivePort >= pAC->GIni.GIMacsFound) {		SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,			("SkGeInitAssignRamToQueues: ActivePort (%d) invalid\n",			ActivePort));		return(1);	}	if (((pAC->GIni.GIMacsFound * (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE)) +		((RAM_QUOTA_SYNC == 0) ? 0 : SK_MIN_TXQ_SIZE)) > pAC->GIni.GIRamSize) {		SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT,			("SkGeInitAssignRamToQueues: Not enough memory (%d)\n",			 pAC->GIni.GIRamSize));		return(2);	}	if (DualNet) {		/* every port gets the same amount of memory */		ActivePortKilobytes = pAC->GIni.GIRamSize / pAC->GIni.GIMacsFound;		for (i = 0; i < pAC->GIni.GIMacsFound; i++) {			pGePort = &pAC->GIni.GP[i];			/* take away the minimum memory for active queues */			ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);			/* receive queue gets the minimum + 80% of the rest */			pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((				ActivePortKilobytes * (unsigned long) RAM_QUOTA_RX) / 100))				+ SK_MIN_RXQ_SIZE;			ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);			/* synchronous transmit queue */			pGePort->PXSQSize = 0;			/* asynchronous transmit queue */			pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes +				SK_MIN_TXQ_SIZE);		}	}	else {		/* Rlmt Mode or single link adapter */		/* Set standby queue size defaults for all standby ports */		for (i = 0; i < pAC->GIni.GIMacsFound; i++) {			if (i != ActivePort) {				pGePort = &pAC->GIni.GP[i];				pGePort->PRxQSize = SK_MIN_RXQ_SIZE;				pGePort->PXAQSize = SK_MIN_TXQ_SIZE;				pGePort->PXSQSize = 0;				/* Count used RAM */				UsedKilobytes += pGePort->PRxQSize + pGePort->PXAQSize;			}		}		/* what's left? */		ActivePortKilobytes = pAC->GIni.GIRamSize - UsedKilobytes;		/* assign it to the active port */		/* first take away the minimum memory */		ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE);		pGePort = &pAC->GIni.GP[ActivePort];		/* receive queue get's the minimum + 80% of the rest */		pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((ActivePortKilobytes *			(unsigned long) RAM_QUOTA_RX) / 100)) + SK_MIN_RXQ_SIZE;		ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE);		/* synchronous transmit queue */		pGePort->PXSQSize = 0;		/* asynchronous transmit queue */		pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes) +			SK_MIN_TXQ_SIZE;	}#ifdef VCPU	VCPUprintf(0, "PRxQSize=%u, PXSQSize=%u, PXAQSize=%u\n",		pGePort->PRxQSize, pGePort->PXSQSize, pGePort->PXAQSize);#endif /* VCPU */	return(0);}	/* SkGeInitAssignRamToQueues *//****************************************************************************** * *	SkGeCheckQSize() - Checks the Adapters Queue Size Configuration * * Description: *	This function verifies the Queue Size Configuration specified *	in the variables PRxQSize, PXSQSize, and PXAQSize of all *	used ports. *	This requirements must be fullfilled to have a valid configuration: *		- The size of all queues must not exceed GIRamSize. *		- The queue sizes must be specified in units of 8 kB. *		- The size of Rx queues of available ports must not be *		  smaller than 16 kB. *		- The size of at least one Tx queue (synch. or asynch.) *        of available ports must not be smaller than 16 kB *        when Jumbo Frames are used. *		- The RAM start and end addresses must not be changed *		  for ports which are already initialized. *	Furthermore SkGeCheckQSize() defines the Start and End Addresses *  of all ports and stores them into the HWAC port	structure. * * Returns: *	0:	Queue Size Configuration valid *	1:	Queue Size Configuration invalid */static int SkGeCheckQSize(SK_AC	 *pAC,		/* adapter context */int		 Port)		/* port index */{	SK_GEPORT *pPrt;	int	UsedMem;	/* total memory used (max. found ports) */	int	i;	int	Rtv;	int	Rtv2;	SK_U32	StartAddr;	UsedMem = 0;	Rtv = 0;	for (i = 0; i < pAC->GIni.GIMacsFound; i++) {		pPrt = &pAC->GIni.GP[i];		if ((pPrt->PRxQSize & QZ_UNITS) != 0 ||			(pPrt->PXSQSize & QZ_UNITS) != 0 ||			(pPrt->PXAQSize & QZ_UNITS) != 0) {			SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);			return(1);		}		if (i == Port && pPrt->PRxQSize < SK_MIN_RXQ_SIZE) {			SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E011, SKERR_HWI_E011MSG);			return(1);		}		/*		 * the size of at least one Tx queue (synch. or asynch.) has to be > 0.		 * if Jumbo Frames are used, this size has to be >= 16 kB.		 */		if ((i == Port && pPrt->PXSQSize == 0 && pPrt->PXAQSize == 0) ||			(pAC->GIni.GIPortUsage == SK_JUMBO_LINK &&	    ((pPrt->PXSQSize > 0 && pPrt->PXSQSize < SK_MIN_TXQ_SIZE) ||			 (pPrt->PXAQSize > 0 && pPrt->PXAQSize < SK_MIN_TXQ_SIZE)))) {				SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E023, SKERR_HWI_E023MSG);				return(1);		}		UsedMem += pPrt->PRxQSize + pPrt->PXSQSize + pPrt->PXAQSize;	}	if (UsedMem > pAC->GIni.GIRamSize) {		SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG);		return(1);	}	/* Now start address calculation */	StartAddr = pAC->GIni.GIRamOffs;	for (i = 0; i < pAC->GIni.GIMacsFound; i++) {		pPrt = &pAC->GIni.GP[i];		/* Calculate/Check values for the receive queue */		Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PRxQSize, &StartAddr,			&pPrt->PRxQRamStart, &pPrt->PRxQRamEnd);		Rtv |= Rtv2;		/* Calculate/Check values for the synchronous Tx queue */		Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXSQSize, &StartAddr,			&pPrt->PXsQRamStart, &pPrt->PXsQRamEnd);		Rtv |= Rtv2;		/* Calculate/Check values for the asynchronous Tx queue */		Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PXAQSize, &StartAddr,			&pPrt->PXaQRamStart, &pPrt->PXaQRamEnd);		Rtv |= Rtv2;		if (Rtv) {			SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E013, SKERR_HWI_E013MSG);			return(1);		}	}	return(0);}	/* SkGeCheckQSize *//****************************************************************************** * *	SkGeInitMacArb() - Initialize the MAC Arbiter * * Description: *	This function initializes the MAC Arbiter. *	It must not be called if there is still an *	initialized or active port. * * Returns: *	nothing */static void SkGeInitMacArb(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC)		/* IO context */{	/* release local reset */	SK_OUT16(IoC, B3_MA_TO_CTRL, MA_RST_CLR);	/* configure timeout values */	SK_OUT8(IoC, B3_MA_TOINI_RX1, SK_MAC_TO_53);	SK_OUT8(IoC, B3_MA_TOINI_RX2, SK_MAC_TO_53);	SK_OUT8(IoC, B3_MA_TOINI_TX1, SK_MAC_TO_53);	SK_OUT8(IoC, B3_MA_TOINI_TX2, SK_MAC_TO_53);	SK_OUT8(IoC, B3_MA_RCINI_RX1, 0);	SK_OUT8(IoC, B3_MA_RCINI_RX2, 0);	SK_OUT8(IoC, B3_MA_RCINI_TX1, 0);	SK_OUT8(IoC, B3_MA_RCINI_TX2, 0);	/* recovery values are needed for XMAC II Rev. B2 only */	/* Fast Output Enable Mode was intended to use with Rev. B2, but now? */	/*	 * There is no start or enable button to push, therefore	 * the MAC arbiter is configured and enabled now.	 */}	/* SkGeInitMacArb *//****************************************************************************** * *	SkGeInitPktArb() - Initialize the Packet Arbiter * * Description:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区主播在线| 日韩精品一区二区三区视频在线观看| 在线免费观看日本欧美| 欧美xxxxxxxxx| 一区二区三区色| 国产成人aaaa| 日韩午夜精品电影| 亚洲国产日日夜夜| 99久免费精品视频在线观看| 精品黑人一区二区三区久久| 亚洲国产一区二区在线播放| aaa欧美大片| 国产欧美一区二区精品性色超碰| 奇米精品一区二区三区四区| 91在线丨porny丨国产| 国产欧美日韩在线| 久久99久久久欧美国产| 欧美精品v日韩精品v韩国精品v| 综合电影一区二区三区 | 日韩午夜中文字幕| 亚洲一二三区在线观看| 91在线视频播放地址| 久久九九久久九九| 久久99精品久久久久久| 6080午夜不卡| 日本欧洲一区二区| 在线不卡a资源高清| 日韩av高清在线观看| 91精品国产综合久久蜜臀| 日本aⅴ亚洲精品中文乱码| 欧美精品久久天天躁| 偷拍一区二区三区| 久久久99久久| 国产精品系列在线播放| 久久香蕉国产线看观看99| 激情亚洲综合在线| 国产日韩av一区二区| 成人午夜激情影院| 一区在线观看免费| 在线观看av一区二区| 午夜精彩视频在线观看不卡| 欧美理论在线播放| 狠狠色伊人亚洲综合成人| 国产亚洲成年网址在线观看| 成人久久18免费网站麻豆 | 夜夜嗨av一区二区三区网页 | 久久噜噜亚洲综合| 成人蜜臀av电影| 亚洲一区二区精品视频| 欧美一二三四区在线| 精品一二线国产| 国产精品素人一区二区| 在线一区二区三区四区| 亚洲成人免费在线| 久久免费的精品国产v∧| 成人综合日日夜夜| 亚洲午夜久久久久久久久电影网| 欧美一区二区三区在线视频| 国产在线一区二区综合免费视频| 国产精品久久久久久久久免费相片| 91蜜桃婷婷狠狠久久综合9色| 视频一区欧美日韩| 久久精品在这里| 欧美日韩专区在线| 国产精品99久久久| 亚洲综合久久av| 久久综合久久综合久久综合| 成人亚洲精品久久久久软件| 亚洲一区二区三区四区在线| 精品国产制服丝袜高跟| 91欧美激情一区二区三区成人| 五月激情六月综合| 国产精品看片你懂得| 欧美午夜精品久久久| 国产精品1区2区| 日韩激情一二三区| 一区二区三区波多野结衣在线观看| 日韩一卡二卡三卡四卡| 91美女福利视频| 国产美女精品在线| 午夜影院在线观看欧美| 中文字幕永久在线不卡| 欧美电影免费观看高清完整版在 | 国产一二三精品| 亚洲成人一区二区在线观看| 国产精品乱码一区二区三区软件 | 欧美男男青年gay1069videost| 六月婷婷色综合| 亚洲成人激情自拍| 亚洲精品国产无天堂网2021 | 国产精品亚洲综合一区在线观看| 亚洲成人高清在线| 亚洲另类中文字| 欧美国产精品劲爆| 久久久www成人免费无遮挡大片 | 欧美aⅴ一区二区三区视频| 国产精品国产a级| 国产色爱av资源综合区| 日韩精品一区二区在线观看| 欧美人妖巨大在线| 欧美午夜电影网| 91国内精品野花午夜精品| www.av亚洲| 91最新地址在线播放| 不卡欧美aaaaa| 成人免费高清视频| 成人手机电影网| 成人av午夜影院| 粉嫩aⅴ一区二区三区四区| 国产精品自拍在线| 国产一区二区三区高清播放| 精品一区二区三区香蕉蜜桃| 久久精品国产免费| 狠狠色丁香婷婷综合| 麻豆91在线观看| 国产一区二区三区久久悠悠色av | 99久久精品久久久久久清纯| 国产a久久麻豆| jlzzjlzz亚洲日本少妇| 9久草视频在线视频精品| 99久久99久久久精品齐齐| jlzzjlzz亚洲日本少妇| 色婷婷av一区| 欧美日韩和欧美的一区二区| 欧美日本一道本在线视频| 欧美一级一级性生活免费录像| 日韩免费性生活视频播放| 精品播放一区二区| 国产精品美女久久久久久2018 | 久久色成人在线| 国产精品美女久久久久久| 一色桃子久久精品亚洲| 亚洲成人精品一区| 国内精品自线一区二区三区视频| 国产成人免费视| 色婷婷av一区二区三区大白胸| 欧美精品aⅴ在线视频| 久久新电视剧免费观看| 自拍偷拍国产精品| 日精品一区二区三区| 国产一区二区毛片| 91黄色免费版| 久久亚洲精华国产精华液 | 6080国产精品一区二区| 亚洲精品在线电影| 亚洲欧美日韩国产中文在线| 日本午夜精品一区二区三区电影| 国产一区二区主播在线| 在线观看一区不卡| 久久久国际精品| 午夜精品在线看| 成人黄色电影在线| 欧美一区二区三区成人| 中文字幕欧美激情一区| 日韩高清一级片| 91丨porny丨中文| 欧美电影免费观看完整版| 亚洲欧美偷拍另类a∨色屁股| 美国毛片一区二区| 91丝袜美腿高跟国产极品老师 | 欧美一区二区视频在线观看2022| 久久久99久久| 日韩精品一二三区| 色综合欧美在线| 国产日韩成人精品| 日本午夜精品一区二区三区电影| 99国产精品久久久| 久久久久亚洲综合| 麻豆一区二区在线| 欧美日韩精品三区| 亚洲乱码中文字幕| 成人免费观看男女羞羞视频| 精品国产一区二区三区久久影院| 亚洲精品ww久久久久久p站| 国产成人亚洲精品青草天美| 日韩一区二区精品| 亚洲在线视频免费观看| 国产成人精品在线看| 日韩女优av电影在线观看| 日韩精品乱码免费| 在线观看视频一区二区| 国产精品久久久久久亚洲伦| 国产一区二区三区国产| 精品国产凹凸成av人导航| 日本三级亚洲精品| 欧美福利视频导航| 一区二区三区免费观看| 91亚洲午夜精品久久久久久| 中文字幕不卡在线观看| 国产不卡在线一区| 久久人人爽人人爽| 国产经典欧美精品| 国产人成亚洲第一网站在线播放 | 蜜臀av一区二区| 日韩亚洲欧美一区二区三区| 丝袜亚洲精品中文字幕一区| 欧美日本一区二区在线观看| 亚洲电影你懂得| 欧美喷水一区二区| 日本美女一区二区三区|