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

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

?? enet.c

?? Kinetis_K60開源底層驅動開發包(20120328)
?? C
字號:
/*
 * File:    enet.c
 * Purpose: Driver for the ENET controller
 *
 * Notes:
 */

#include "common.h"
#include "enet.h"
#include "nbuf.h"
#include "eth.h"


/********************************************************************/
/* Initialize the MIB counters
 *
 * Parameters:
 *  ch      FEC channel
 */
void
enet_mib_init(int ch)
{
//To do
}
/********************************************************************/
/* Display the MIB counters
 *
 * Parameters:
 *  ch      FEC channel
 */
void
enet_mib_dump(int ch)
{
//To do
}
/********************************************************************/
/*
 * Set the duplex on the selected FEC controller
 *
 * Parameters:
 *  ch      FEC channel
 *  duplex  enet_MII_FULL_DUPLEX or enet_MII_HALF_DUPLEX
 */
void
enet_duplex (int ch, ENET_DUPLEX duplex)
{
    switch (duplex)
    {
        case MII_HDX:
            ENET_RCR/*(ch)*/ |= ENET_RCR_DRT_MASK;
            ENET_TCR/*(ch)*/ &= (uint32_t)~ENET_TCR_FDEN_MASK;
            break;
        case MII_FDX:
        default:
            ENET_RCR/*(ch)*/ &= ~ENET_RCR_DRT_MASK;
            ENET_TCR/*(ch)*/ |= ENET_TCR_FDEN_MASK;
            break;
    }
}

/********************************************************************/
/*
 * Generate the hash table settings for the given address
 *
 * Parameters:
 *  addr    48-bit (6 byte) Address to generate the hash for
 *
 * Return Value:
 *  The 6 most significant bits of the 32-bit CRC result
 */
uint8_t
enet_hash_address(const uint8_t* addr)
{
    uint32_t crc;
    uint8_t byte;
    int i, j;

    crc = 0xFFFFFFFF;
    for(i=0; i<6; ++i)
    {
        byte = addr[i];
        for(j=0; j<8; ++j)
        {
            if((byte & 0x01)^(crc & 0x01))
            {
                crc >>= 1;
                crc = crc ^ 0xEDB88320;
            }
            else
                crc >>= 1;
            byte >>= 1;
        }
    }
    return (uint8_t)(crc >> 26);
}
/********************************************************************/
/*
 * Set the Physical (Hardware) Address and the Individual Address
 * Hash in the selected FEC
 *
 * Parameters:
 *  ch  FEC channel
 *  pa  Physical (Hardware) Address for the selected FEC
 */
void
enet_set_address (int ch, const uint8_t *pa)
{
    uint8_t crc;

    /*
     * Set the Physical Address
     */
    ENET_PALR/*(ch)*/ = (uint32_t)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]);
    ENET_PAUR/*(ch)*/ = (uint32_t)((pa[4]<<24) | (pa[5]<<16));

    /*
     * Calculate and set the hash for given Physical Address
     * in the  Individual Address Hash registers
     */
    crc = enet_hash_address(pa);
    if(crc >= 32)
        ENET_IAUR/*(ch)*/ |= (uint32_t)(1 << (crc - 32));
    else
        ENET_IALR/*(ch)*/ |= (uint32_t)(1 << crc);
}
/********************************************************************/
/*
 * Reset the selected FEC controller
 *
 * Parameters:
 *  ch      FEC channel
 */
void
enet_reset (int ch)
{
    int i;

    /* Set the Reset bit and clear the Enable bit */
    ENET_ECR/*(ch)*/ = ENET_ECR_RESET_MASK;

    /* Wait at least 8 clock cycles */
    for (i=0; i<10; ++i)
        asm( "NOP" );
}
/********************************************************************/
/*
 * Initialize the selected FEC
 *
 * Parameters:
 *  config: ENET parameters
 *
 *
 */
void
enet_init (ENET_CONFIG *config)
{
    /* Clear the Individual and Group Address Hash registers */
    ENET_IALR/*(ch)*/ = 0;
    ENET_IAUR/*(ch)*/ = 0;
    ENET_GALR/*(ch)*/ = 0;
    ENET_GAUR/*(ch)*/ = 0;

    /* Set the Physical Address for the selected FEC */
    enet_set_address(config->ch, config->mac);

    /* Mask all FEC interrupts */
    ENET_EIMR/*(ch)*/ = 0;//FSL:ENET_EIMR_MASK_ALL_MASK;

    /* Clear all FEC interrupt events */
    ENET_EIR/*(ch)*/ = 0xFFFFFFFF;//FSL:ENET_EIR_CLEAR_ALL_MASK;
    
    /* Initialize the Receive Control Register */
    ENET_RCR/*(ch)*/ = 0
        | ENET_RCR_MAX_FL(ETH_MAX_FRM)
        | ENET_RCR_MII_MODE_MASK /*always*/
        | ENET_RCR_CRCFWD_MASK;  /*no CRC pad required*/

    if ( config->interface == mac_rmii )
    {
      ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_MODE_MASK;
      
      /*only set speed in RMII mode*/
      if( config->speed == MII_10BASET )
      {
         ENET_RCR/*(ch)*/ |= ENET_RCR_RMII_10T_MASK;
      }
    }/*no need to configure MAC MII interface*/ 
    
    ENET_TCR/*(ch)*/ = 0;    
    
    /* Set the duplex */
    enet_duplex(config->ch, config->duplex);        
        
    if (config->prom)
    {
        ENET_RCR/*(ch)*/ |= ENET_RCR_PROM_MASK; 
    } 
    
#ifdef ENHANCED_BD
    ENET_ECR/*(ch)*/ = ENET_ECR_EN1588_MASK;
#else
    ENET_ECR/*(ch)*/ = 0;//clear register
#endif

    if(config->loopback == INTERNAL_LOOPBACK)
    {
        /*seems like RMII internal loopback works, even if it's not supported*/
        ENET_RCR/*(0)*/ |= ENET_RCR_LOOP_MASK;
    }
}
/********************************************************************/
void
enet_start (int ch)
{
  // Enable FEC
  ENET_ECR/*(ch)*/ |= ENET_ECR_ETHEREN_MASK;
}

/********************************************************************/
int 
enet_wait_for_frame_receive(int ch, int timeout)
{
	int i, return_val = 1;
        
	for (i=0; i < timeout; i++)
	{
		if (ENET_EIR/*(ch)*/ & ENET_EIR_RXF_MASK)
		{
			ENET_EIR/*(ch)*/ = ENET_EIR_RXF_MASK;
			break;		
		}
	}

	if(i == timeout)
	{
		return_val = 0;
	}
	return return_val;
}
/********************************************************************/



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频a| 香蕉av福利精品导航| 亚洲精品视频观看| 老司机精品视频在线| 99久久99久久精品免费看蜜桃| 欧美狂野另类xxxxoooo| 国产精品久久久久久久久久久免费看| 午夜精品久久久久久久99水蜜桃 | 亚洲美女少妇撒尿| 久久99深爱久久99精品| 欧美亚洲愉拍一区二区| 日韩欧美视频在线| 亚洲一区视频在线| 91在线无精精品入口| 久久久久久久久久看片| 日韩av在线免费观看不卡| 91久久一区二区| 欧美国产精品中文字幕| 韩国成人精品a∨在线观看| 一本久道中文字幕精品亚洲嫩| 久久亚洲一区二区三区四区| 日本不卡视频在线| 欧美精品久久99久久在免费线 | 国产清纯白嫩初高生在线观看91| 日韩成人精品在线观看| 欧美美女视频在线观看| 中文字幕在线免费不卡| 国产成人在线网站| 国产三级久久久| 国产一区二区中文字幕| 精品免费一区二区三区| 久久国产精品第一页| 欧美成人一区二区三区| 久久福利资源站| 久久精品一区二区三区不卡| 国产乱子伦一区二区三区国色天香| 欧美一区二区日韩一区二区| 青青草国产精品亚洲专区无| 欧美一区二区三区四区在线观看| 日韩福利电影在线| 欧美成人a∨高清免费观看| 另类调教123区| 久久精品网站免费观看| 91麻豆精品国产91久久久更新时间| 日韩毛片高清在线播放| 欧美性色综合网| 美日韩一区二区三区| 久久综合九色综合97_久久久| 国产美女一区二区| 中文字幕在线视频一区| 91老司机福利 在线| 亚洲电影你懂得| 欧美成人a∨高清免费观看| 国产精品正在播放| 亚洲欧美另类图片小说| 91超碰这里只有精品国产| 激情综合五月婷婷| 国产精品第五页| 精品视频免费看| 狠狠色丁香久久婷婷综合丁香| 亚洲国产精品二十页| 欧美亚洲高清一区二区三区不卡| 久久国产精品99精品国产| 国产精品久久久久永久免费观看| 欧美在线视频全部完| 国产在线精品视频| 亚洲最大成人网4388xx| 精品国偷自产国产一区| 99视频一区二区| 日本三级韩国三级欧美三级| 国产精品三级视频| 欧美日韩精品福利| 成人激情校园春色| 蜜臀久久久久久久| 亚洲欧洲精品一区二区精品久久久| 1024成人网色www| 欧美一区二区三区视频免费播放| 成人黄色777网| 欧美aaa在线| 亚洲人妖av一区二区| 精品国产一二三| 欧美性生活一区| 成人av综合在线| 国内精品久久久久影院色| 亚洲资源在线观看| 国产精品理论在线观看| 欧美成人福利视频| 欧美精品xxxxbbbb| 日本韩国欧美一区二区三区| 国产成人一区在线| 奇米精品一区二区三区在线观看 | 色综合激情五月| 国产精品亚洲视频| 久久99精品国产麻豆婷婷| 亚洲aⅴ怡春院| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区二区五区| 国产精品久久久99| 国产午夜一区二区三区| 精品国偷自产国产一区| 日韩一区二区在线观看| 欧美卡1卡2卡| 精品视频在线看| 在线观看成人免费视频| 色婷婷久久综合| 色综合天天狠狠| 一本到高清视频免费精品| 福利电影一区二区| 国产精品66部| 国产精品1024久久| 狠狠色狠狠色合久久伊人| 久久99久久精品| 国模冰冰炮一区二区| 国产一区在线视频| 国产精品一区不卡| 国产成人aaa| 成人一区二区三区视频在线观看| 国产成人精品一区二区三区网站观看 | 日韩精品亚洲一区二区三区免费| 一区二区三区在线视频免费 | 亚洲丝袜自拍清纯另类| 国产精品每日更新| 国产精品久久久久9999吃药| 中文字幕一区二区三区蜜月| 亚洲天堂免费看| 亚洲一区二区三区影院| 天堂成人国产精品一区| 蜜桃av噜噜一区| 国产黄色91视频| 一本到高清视频免费精品| 欧美三级电影网| 91精品国产色综合久久不卡蜜臀| 日韩欧美一级精品久久| 久久综合色婷婷| 中文字幕日本不卡| 亚洲午夜国产一区99re久久| 人人超碰91尤物精品国产| 国产一区二区按摩在线观看| 国产激情精品久久久第一区二区| 91女厕偷拍女厕偷拍高清| 欧美日韩在线观看一区二区| 欧美一区二区私人影院日本| 久久久久久久综合狠狠综合| 亚洲日本电影在线| 久久国产剧场电影| fc2成人免费人成在线观看播放| 色94色欧美sute亚洲线路一久| 欧美肥妇free| 日本一区二区三区免费乱视频| 亚洲欧美日韩一区二区 | 午夜视频一区在线观看| 精品午夜一区二区三区在线观看 | 亚洲人成人一区二区在线观看 | 国产精品成人网| 日本欧美一区二区三区| jvid福利写真一区二区三区| 欧美日韩黄色一区二区| 国产女人水真多18毛片18精品视频 | 麻豆国产一区二区| 91看片淫黄大片一级在线观看| 91精品国产免费久久综合| 午夜精品久久久久久久久久 | 亚洲视频1区2区| 久久精品久久99精品久久| 99综合影院在线| 日韩欧美电影一二三| 亚洲欧美日韩系列| 国产不卡高清在线观看视频| 欧美丰满嫩嫩电影| 亚洲美腿欧美偷拍| 丁香六月久久综合狠狠色| 欧美一区二区播放| 亚洲午夜三级在线| 不卡的av电影| 国产欧美综合色| 精品综合久久久久久8888| 欧美午夜影院一区| 亚洲黄色尤物视频| 国产91精品久久久久久久网曝门| 91麻豆精品91久久久久久清纯| 日韩一区有码在线| 国产v综合v亚洲欧| 精品福利一区二区三区免费视频| 亚洲一区二区三区四区的| 成人18精品视频| 国产精品区一区二区三| 国产麻豆精品视频| 精品久久一二三区| 开心九九激情九九欧美日韩精美视频电影| 91亚洲男人天堂| 日韩伦理电影网| 91视频一区二区| 国产精品国产a| 成人午夜激情在线| 国产精品视频看| 99久久伊人精品| 成人欧美一区二区三区1314| 成人短视频下载| 成人欧美一区二区三区视频网页| 99久久99久久精品国产片果冻|