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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fmd.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
            pInterface->cbSize = sizeof(FMDInterface);
            pInterface->pInit = FMD_Init;
            pInterface->pDeInit = FMD_Deinit;
            pInterface->pGetInfo = FMD_GetInfo;
            pInterface->pGetInfoEx = NULL;        //FMD_GetInfoEx;
            pInterface->pGetBlockStatus = FMD_GetBlockStatus;
            pInterface->pSetBlockStatus = FMD_SetBlockStatus;
            pInterface->pReadSector = FMD_ReadSector;
            pInterface->pWriteSector = FMD_WriteSector;
            pInterface->pEraseBlock = FMD_EraseBlock;
            pInterface->pPowerUp = FMD_PowerUp;
            pInterface->pPowerDown = FMD_PowerDown;
            pInterface->pGetPhysSectorAddr = NULL;

            break;
        }

    case IOCTL_FMD_LOCK_BLOCKS:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_LOCK_BLOCKS Not Supported\r\n")));
        return FALSE;

    case IOCTL_FMD_UNLOCK_BLOCKS:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_UNLOCK_BLOCKS Not Supported\r\n")));
        return FALSE;

    case IOCTL_FMD_READ_RESERVED:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_READ_RESERVED\r\n")));
        return FALSE;

    case IOCTL_FMD_WRITE_RESERVED:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_WRITE_RESERVED\r\n")));
        return FALSE;

    case IOCTL_FMD_GET_RESERVED_TABLE:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_GET_RESERVED_TABLE\r\n")));
        return FALSE;

    case IOCTL_FMD_SET_REGION_TABLE:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_SET_REGION_TABLE\r\n")));
        return FALSE;

    case IOCTL_FMD_SET_SECTORSIZE:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_SET_SECTORSIZE\r\n")));
        return FALSE;

    case IOCTL_FMD_RAW_WRITE_BLOCKS:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_RAW_WRITE_BLOCKS\r\n")));
        return FALSE;

    case IOCTL_FMD_GET_RAW_BLOCK_SIZE:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_GET_RAW_BLOCK_SIZE\r\n")));
        return FALSE;

    case IOCTL_FMD_GET_INFO:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_GET_INFO is unsupported\r\n")));
        return FALSE;

    case  IOCTL_FMD_SET_XIPMODE    :
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_SET_XIPMODE is unsupported\r\n")));
        return FALSE;

    case  IOCTL_FMD_GET_XIPMODE:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_FMD_GET_XIPMODE is unsupported\r\n")));
        return FALSE;

    case  IOCTL_DISK_FLUSH_CACHE:
        RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] FMD_OEMIoControl() : IOCTL_DISK_FLUSH_CACHE\r\n")));
        return TRUE;

    case IOCTL_DISK_GET_STORAGEID:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : IOCTL_DISK_GET_STORAGEID is unsupported\r\n")));
        return TRUE;

    default:
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_OEMIoControl() : Unknown IOCTL (0x%08x)\r\n"), dwIoControlCode));
        return FALSE;
    }

    return TRUE;
}

BOOL FMD_Deinit(PVOID hFMD)
{
    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] FMD_Deinit() \r\n")));

    if(g_pNFConReg != NULL)
    {
        MmUnmapIoSpace((PVOID)g_pNFConReg, sizeof(S3C6410_NAND_REG));
        g_pNFConReg = NULL;
    }
    if(g_pSysConReg != NULL)
    {
        MmUnmapIoSpace((PVOID)g_pSysConReg, sizeof(S3C6410_SYSCON_REG));
        g_pSysConReg = NULL;
    }    
    return(TRUE);
}


/*
    @func   BOOL | FMD_GetInfo | Provides information on the NAND flash.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm
    @xref
*/
BOOL FMD_GetInfo(PFlashInfo pFlashInfo)
{
    UINT32 nCnt;
    UINT32 nNandID;
    UINT8 nMID, nDID;

    if (pFlashInfo == NULL)
    {
        RETAILMSG(FMD_ZONE_ERROR, (TEXT("[FMD:ERR] FMD_GetInfo() : Invalid Parameter\r\n")));
        return(FALSE);
    }

    pFlashInfo->flashType = NAND;

    nNandID = ReadFlashID();

    nMID = nNandID >> 8;
    nDID = nNandID & 0xff;

    for (nCnt = 0; astNandSpec[nCnt].nMID != 0; nCnt++)
    {
        if (nDID == astNandSpec[nCnt].nDID)
        {
            break;
        }
    }    

    pFlashInfo->flashType = NAND;

    //  OK, instead of reading it from the chip, we use the hardcoded numbers here.
    //  These information is filled on FMD_Init() into stDeviceInfo
    pFlashInfo->dwNumBlocks         = NUM_OF_BLOCKS;
    pFlashInfo->wSectorsPerBlock    = PAGES_PER_BLOCK;
    pFlashInfo->wDataBytesPerSector = NAND_PAGE_SIZE;
    pFlashInfo->dwBytesPerBlock     = (PAGES_PER_BLOCK * NAND_PAGE_SIZE);

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] FMD_GetInfo() : NUMBLOCKS = %d(0x%x), SECTORSPERBLOCK = %d(0x%x), BYTESPERSECTOR = %d(0x%x) \r\n"), pFlashInfo->dwNumBlocks, pFlashInfo->dwNumBlocks, pFlashInfo->wSectorsPerBlock, pFlashInfo->wSectorsPerBlock, pFlashInfo->wDataBytesPerSector, pFlashInfo->wDataBytesPerSector));

    return TRUE;
}


/*
    @func   DWORD | FMD_GetBlockStatus | Returns the status of the specified block.
    @rdesc  Block status (see fmd.h).
    @comm
    @xref
*/
DWORD FMD_GetBlockStatus(BLOCK_ID blockID)
{
    DWORD dwResult = 0;

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] ++FMD_GetBlockStatus(0x%08x) \r\n"), blockID));

    if ( IS_LB )
    {
        dwResult = FMD_LB_GetBlockStatus(blockID);
    }
    else
    {
        dwResult = FMD_SB_GetBlockStatus(blockID);
    }

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] --FMD_GetBlockStatus()\r\n")));

    return dwResult;
}


/*
    @func   BOOL | FMD_SetBlockStatus | Marks the block with the specified block status.
    @rdesc  TRUE = Success, FALSE = Failure.
    @comm
    @xref
*/
BOOL FMD_SetBlockStatus(BLOCK_ID blockID, DWORD dwStatus)
{
    BOOL    bRet = TRUE;

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] ++FMD_SetBlockStatus(0x%08x, 0x%08x) \r\n"), blockID, dwStatus));

    if ( IS_LB )
    {
        bRet = FMD_LB_SetBlockStatus(blockID, dwStatus);
    }
    else
    {
        bRet = FMD_SB_SetBlockStatus(blockID, dwStatus);
    }

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("[FMD] --FMD_SetBlockStatus()\r\n")));

    return bRet;
}

BOOL ECC_CorrectData(SECTOR_ADDR sectoraddr, LPBYTE pData, UINT32 nRetEcc, ECC_CORRECT_TYPE nType)
{
    DWORD  nErrStatus;
    DWORD  nErrDataNo;
    DWORD  nErrBitNo;
    UINT32 nErrDataMask;
    UINT32 nErrBitMask = 0x7;
    BOOL bRet = TRUE;

    RETAILMSG(FMD_ZONE_FUNCTION, (TEXT("#### FMD_DRIVER::ECC_CorrectData %x, %x, %x\r\n"), sectoraddr, nRetEcc, nType));

    switch(nType)
    {
    case ECC_CORRECT_MAIN:
    case ECC_CORRECT_SPARE1:
    case ECC_CORRECT_SPARE2:
        nErrStatus   = 0;
        nErrDataNo   = 7;
        nErrBitNo    = 4;
        nErrDataMask = 0x7ff;
        break;
    case ECC_CORRECT_SPARE:
        nErrStatus   = 2;
        nErrDataNo   = 21;
        nErrBitNo    = 18;
        nErrDataMask = 0xf;
        break;
    default:
        return FALSE;
    }

    switch((nRetEcc>>nErrStatus) & 0x3)
    {
        case 0:    // No Error
            bRet = TRUE;
            break;
        case 1:    // 1-bit Error(Correctable)
            RETAILMSG(FMD_ZONE_STATUS,(TEXT("%cECC correctable error(0x%x). Byte:%d, bit:%d\r\n"), ((nType==ECC_CORRECT_MAIN)?'M':'S'), sectoraddr, (nRetEcc>>nErrDataNo)&nErrDataMask, (nRetEcc>>nErrBitNo)&nErrBitMask));
            (pData)[(nRetEcc>>nErrDataNo)&nErrDataMask] ^= (1<<((nRetEcc>>nErrBitNo)&nErrBitMask));
            bRet = TRUE;
            break;
        case 2:    // Multiple Error
            RETAILMSG(FMD_ZONE_STATUS,(TEXT("%cECC Uncorrectable error(0x%x)\r\n"), ((nType==ECC_CORRECT_MAIN)?'M':'S'), sectoraddr));
            bRet = FALSE;
            break;
        case 3:    // ECC area Error
            RETAILMSG(FMD_ZONE_STATUS,(TEXT("%cECC area error\r\n"), ((nType==ECC_CORRECT_MAIN)?'M':'S')));
            // Intentional fall through to default case
        default:
            bRet = FALSE;
            break;
    }

    return bRet;
}

void Init_NandController()
{
    // Set up initial flash controller configuration.
    // TACLS, TWRPH0, TWRPH1 is defined in bsp_cfg.h
    g_pNFConReg->NFCONF = (TACLS<<BIT_TACLS) | (TWRPH0<<BIT_TWRPH0) | (TWRPH1<<BIT_TWRPH1);
    g_pNFConReg->NFCONT = NFCONT_DISABLE_LOCK_TIGHT |
                            NFCONT_DISABLE_SOFTLOCK |
                            NFCONT_DISABLE_ILLEGAL_ACCESS_INT |
                            NFCONT_DISABLE_RNB_INT |
                            NFCONT_DETECT_RNB_RISING |
                            NFCONT_LOCK_MECC |
                            NFCONT_LOCK_SECC |
                            NFCONT_INIT_MECC |
                            NFCONT_INIT_SECC |
                            NFCONT_REG_NCE1_HIGH |
                            NFCONT_REG_NCE0_HIGH |
                            NFCONT_ENABLE ;
    SETBIT32(g_pNFConReg->NFSTAT, 4);   //< Clear RnB Transition low to high interrupt status, to clear write '1'
}

#ifdef _IROMBOOT_
BOOL FMD_WriteSector_Stepldr(SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors)
{
    BOOL    bRet = TRUE;

    if(IS_LB)
        bRet = FMD_LB_WriteSector_Steploader(startSectorAddr, pSectorBuff, pSectorInfoBuff, dwNumSectors);
    else
        bRet = FMD_SB_WriteSector_Steploader(startSectorAddr, pSectorBuff, pSectorInfoBuff, dwNumSectors);

    return bRet;
}
#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产在天天线2019| 国产精品久久久久久户外露出| 日韩在线一区二区| 国产亚洲一区字幕| 91麻豆免费看片| 美洲天堂一区二卡三卡四卡视频| 国产精品免费人成网站| 欧美精品在线一区二区| 成人免费视频一区二区| 婷婷综合久久一区二区三区| 欧美韩国日本综合| 欧美一区二区久久| 色哟哟一区二区在线观看| 狠狠色丁香久久婷婷综合丁香| 夜夜精品视频一区二区| 久久久精品tv| 777亚洲妇女| 99re热这里只有精品视频| 另类调教123区| 亚洲在线观看免费视频| 中文字幕日韩一区二区| 精品国产免费久久| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区三区四区国产精品| 26uuu国产在线精品一区二区| 欧美亚洲国产bt| 成人h版在线观看| 国产在线观看免费一区| 青青草精品视频| 亚洲国产精品嫩草影院| 成人欧美一区二区三区在线播放| 欧美精品一区二区高清在线观看| 欧美日韩亚洲另类| 91麻豆精品一区二区三区| 国产a区久久久| 国产精品888| 激情另类小说区图片区视频区| 污片在线观看一区二区| 99re在线精品| av激情综合网| 成人综合日日夜夜| 国产成人av影院| 国产乱码精品一品二品| 久久99精品视频| 开心九九激情九九欧美日韩精美视频电影 | 亚洲国产中文字幕| 一区二区三区资源| 亚洲综合在线观看视频| 亚洲三级在线看| 亚洲免费观看高清完整版在线观看熊| 国产精品九色蝌蚪自拍| 国产精品人人做人人爽人人添| 国产午夜精品一区二区| 欧美极品美女视频| 国产精品欧美久久久久一区二区| 中文字幕成人网| 最新欧美精品一区二区三区| 综合久久久久久久| 一区二区三区四区五区视频在线观看| 亚洲精品一卡二卡| 亚洲一区二区三区美女| 日韩精品一二三四| 极品少妇一区二区| 国产福利一区在线观看| 成人18精品视频| 欧美亚洲国产一卡| 日韩欧美aaaaaa| 国产精品欧美久久久久无广告| 亚洲天堂免费在线观看视频| 亚洲成人动漫在线免费观看| 蜜桃一区二区三区在线| 国产精品18久久久久久久久 | 在线成人免费观看| 精品少妇一区二区三区在线播放| 久久精品亚洲乱码伦伦中文| 国产精品国产三级国产aⅴ入口 | 国产精品久久久久三级| 一区二区免费看| 奇米精品一区二区三区四区| 国产激情精品久久久第一区二区| 99精品视频一区二区| 欧美日韩中文国产| 欧美成人在线直播| 中文字幕中文字幕一区| 五月天久久比比资源色| 狠狠色综合日日| 99久久综合国产精品| 777午夜精品视频在线播放| 国产亚洲欧美一级| 亚洲精品乱码久久久久| 毛片一区二区三区| 91亚洲国产成人精品一区二区三| 欧美疯狂性受xxxxx喷水图片| 久久九九久精品国产免费直播| 亚洲人成小说网站色在线| 丝袜亚洲另类丝袜在线| 成人天堂资源www在线| 9191国产精品| 综合自拍亚洲综合图不卡区| 伦理电影国产精品| 一本色道久久综合亚洲91| 精品国产不卡一区二区三区| 樱桃国产成人精品视频| 国产精品一区专区| 欧美日韩国产首页| 国产精品福利电影一区二区三区四区| 天天亚洲美女在线视频| eeuss鲁片一区二区三区| 日韩免费一区二区| 亚洲午夜久久久久久久久久久| 国产精品一区二区在线观看不卡| 欧美日韩色综合| 国产精品的网站| 精品一区二区久久| 欧美日韩大陆一区二区| 国产精品毛片高清在线完整版| 久久av老司机精品网站导航| 欧美亚洲综合网| 国产精品国产精品国产专区不片| 国产综合成人久久大片91| 欧美日韩亚洲综合一区| 一区二区三区成人| 成人免费视频网站在线观看| 精品久久久久一区二区国产| 丝袜美腿高跟呻吟高潮一区| 在线观看区一区二| 综合分类小说区另类春色亚洲小说欧美| 久久99精品久久只有精品| 欧美一区二区播放| 亚洲福利一区二区| 色乱码一区二区三区88| 国产精品国产精品国产专区不蜜| 国产suv一区二区三区88区| 精品少妇一区二区三区在线播放| 日韩国产一二三区| 欧美天堂一区二区三区| 伊人开心综合网| 一本色道久久综合亚洲91 | 日韩av中文在线观看| 欧美丝袜丝交足nylons| 亚洲精品老司机| 欧美综合在线视频| 亚洲一区在线电影| 在线观看一区二区视频| 一区二区欧美国产| 欧美日韩国产免费| 免费在线一区观看| 日韩美一区二区三区| 精品一区二区三区免费播放| 欧美精品一区男女天堂| 久久99日本精品| 欧美国产一区二区在线观看| 国产激情视频一区二区在线观看| 国产亚洲一本大道中文在线| 国产成人精品一区二区三区四区| 欧美激情综合五月色丁香小说| 成人午夜精品在线| 日韩伦理av电影| 在线免费av一区| 石原莉奈在线亚洲二区| 日韩美女一区二区三区| 国产美女精品在线| 国产精品久久久久久久久图文区 | 大陆成人av片| 亚洲视频免费看| 欧美三级电影精品| 轻轻草成人在线| 久久免费国产精品| 91美女视频网站| 无码av免费一区二区三区试看 | 日韩毛片视频在线看| 欧美日韩国产高清一区二区三区| 麻豆免费看一区二区三区| 久久久久久日产精品| 91视频免费播放| 天堂成人国产精品一区| xf在线a精品一区二区视频网站| 成人手机电影网| 亚洲18色成人| 久久一留热品黄| 色综合色综合色综合| 日本中文字幕一区二区有限公司| 久久综合网色—综合色88| 91蜜桃视频在线| 狠狠狠色丁香婷婷综合激情| 国产精品久久久久久久岛一牛影视 | 精品国产123| 92精品国产成人观看免费| 午夜精品久久一牛影视| 欧美极品另类videosde| 欧美日高清视频| 国产成人精品一区二区三区四区| 亚洲愉拍自拍另类高清精品| 欧美岛国在线观看| 欧美在线综合视频| 久久精品国产在热久久| 玉足女爽爽91| 久久久国产一区二区三区四区小说 | 一区二区三区中文字幕精品精品| 91精品国产高清一区二区三区蜜臀|