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

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

?? sdram.c

?? st boot Linux 源碼示范程序。 可以移植到其他平臺
?? C
字號:
/*******************************************************************************
File Name   : sdram.c

Description : SDRAM configuration according to a given frequency.

COPYRIGHT (C) STMicroelectronics 1999.

Date               Modification                             Name
----               ------------                             ----
15 Sept 99          Created                                  HG
20 Sept 99          Modified PLL setup for audio interface
                    to correct definitions                   ??
15 Oct 99           Suppressed external dependance for
                    registers definitions                    HG
15 Jan 2000         5510/12/05/08/18 management              FP
13 July 2001        5514 support                             AdlF
22 Feb  2002        5516 support                             SJR

Reference   :
    STi5505 MPEG/System Clocks and SDRAM Initialization, DVD-DOC-079 1.1
    STi3520A PLL Application Note, AN879/0996
*******************************************************************************/

/* Includes --------------------------------------------------------------- */

#include "stlite.h"             /* STLite includes */

#include "stdevice.h"           /* Device includes */
#include "stddefs.h"

#include "stsys.h"              /* STAPI includes */
#include "stcommon.h"	        /* Clock information */

#include "stboot.h"             /* Device_t type */
#include "sdram.h"              /* Local includes */
#include "bereg.h"              /* Localy used registers */
#include "macro.h"              /* Localy used registers */

/* Private types/constants ------------------------------------------------ */

#define TRYS_SDRAM_INIT         5

/* Private variables ------------------------------------------------------ */

/* Private function prototypes -------------------------------------------- */
static BOOL MpegSearchPhase(void);
static BOOL ConfigureSDRAM(U32 Frequency, STBOOT_DramMemorySize_t MemorySize);
static BOOL PLLAlreadyInitialized(void);

/* external function prototypes -------------------------------------------- */
extern void stboot_ConfigurePLL(U32 Frequency);

/* Function definitions --------------------------------------------------- */

/*******************************************************************************
Name        : stboot_InitSDRAM
Description : Init and Configure SDRAM
Parameters  : None
Assumptions :
Limitations :
Returns     : TRUE if Init has failed. FALSE if init was successful.
*****************************************************************************/

BOOL stboot_InitSDRAM(U32 Frequency, STBOOT_DramMemorySize_t MemorySize)
{
    BOOL RetError = FALSE;
    U32 i = 0;

    if ( !PLLAlreadyInitialized() )
    {
#if !defined (ST_5510)
        /* Unlock the CFG_DRC, CFG_MFC, CFG_CCF registers  */
        STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + VID_LCK), VID_LCK_DIS);
#endif

        /* Try to init SDRAM a maximum of 5 times */
        do
        {
            stboot_ConfigurePLL(Frequency);
            RetError = ConfigureSDRAM(Frequency, MemorySize);
            i++;
        } while ((RetError) && (i < TRYS_SDRAM_INIT));
 

#if !defined (ST_5510)
        /* Lock the CFG_DRC, CFG_MFC, CFG_CCF registers  */
        STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + VID_LCK), VID_LCK_ENA);
#endif
    }

    return (RetError);
}


/*******************************************************************************
Name        : PLLAlreadyInitialized
Description : Check if the PLL has already been set by the CFG file.
Parameters  : None
Assumptions :
Limitations :
Returns     : TRUE if already initialized. FALSE if not.
*******************************************************************************/

static BOOL PLLAlreadyInitialized(void)
{
    U8 tmp;
    BOOL RetError;

    /* Test if the PLL has already has been programmed */
    RetError = FALSE;

    tmp = STSYS_ReadRegDev8( (void *)(VIDEO_BASE_ADDRESS + CFG_DRC) );

    if ( (tmp & 0x0f) != 0x00 )
    {
        RetError = TRUE;
    }

    return (RetError);
}

/*******************************************************************************
Name        : MpegSearchPhase
Description : Search MPEG SDRAM clock correct phase
Parameters  : None
Assumptions :
Limitations :
Returns     : FALSE if finds a phase that works, TRUE otherwise
*******************************************************************************/

static BOOL MpegSearchPhase(void)
{
    U8 DramConfigRegister;
    U8 Phase;
    volatile U32 *SdramAddress_p = (U32 *) SDRAM_BASE_ADDRESS;
    BOOL RetError = TRUE;

#if defined(ST_5514) || defined(ST_5516) || defined(ST_5517)
    return FALSE;
#endif

    DramConfigRegister = STSYS_ReadRegDev8( (void *)(VIDEO_BASE_ADDRESS + CFG_DRC) );

    /* The following procedure must be followed:
    - write a 32-bit word to SDRAM
    - read back the word from SDRAM
    - if not read back correctly, increment the value of phase until the read is correct.*/
    for (Phase = 0 ; Phase < 4; Phase++)
    {
        /* Set phase */
        DramConfigRegister = (DramConfigRegister & 0xF3) | (Phase << 2);
        STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_DRC), DramConfigRegister);
        /* Write a word into SDRAM */
        *SdramAddress_p = 0x12345678;
        /* Read the byte from SDRAM */
        if (*SdramAddress_p == 0x12345678)
        {
            /* Success: Phase was found ! */
            RetError = FALSE;
            break;
        }
    }

    return(RetError);
}

/*****************************************************************************
Name        : ConfigureSDRAM
Description : Sequence init, refresh programmation, Phase locking
Parameters  : Frequency
Assumptions :
Limitations :
Returns     : FALSE if SDRAM test is OK, TRUE otherwise
*****************************************************************************/

static BOOL ConfigureSDRAM(U32 Frequency, STBOOT_DramMemorySize_t MemorySize)
{
    BOOL RetError;
    U8 RefreshTime;

    /* Reset refresh time */
    STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_MCF), 0);

    /* Reset SDRAM first ! */
    STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_DRC), 0);

    /* Prepare SDR */
    STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_DRC), CFG_DRC_SDR);

    /* Action of writing MRS launches the initialisation sequence */
    STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_DRC), CFG_DRC_SDR | CFG_DRC_MRS);

    /* Now enable the requests to the LMC */
    STSYS_WriteRegDev8 ((void *) (VIDEO_BASE_ADDRESS + CFG_DRC),
                        CFG_DRC_SDR | CFG_DRC_MRS | CFG_DRC_ERQ );

#if !defined (ST_5510) /* SDRAM > 32MBit not supported on STi5510 */
    if (MemorySize == STBOOT_DRAM_MEMORY_SIZE_64_MBIT)
    {
        /* Shared SDRAM is 64Mbits */
        STSYS_WriteRegDev8 ((void *) (VIDEO_BASE_ADDRESS + CFG_DRC),
                            CFG_DRC_SDR | CFG_DRC_MRS | CFG_DRC_ERQ | CFG_DRC_M64);
    }
    /* NOTE: With STi5514 STi5516 SMI can be up to 128Mbits in size */
    /* Currently this routine is not used to configure 5514/16 SMI
       so no extra configuration of the CFG_DRC is required */
#endif

    /* Memory refresh */
    REFRESH(RefreshTime,Frequency);
    STSYS_WriteRegDev8((void *) (VIDEO_BASE_ADDRESS + CFG_MCF), RefreshTime);

    /* Wait for at least 2 refresh cycle (RefreshTime is in units of 32 SDRAM clock periods) */
    task_delay( ST_GetClocksPerSecond() / 20);

    RetError = MpegSearchPhase();

    return(RetError);
}

/* End of sdram.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久aaaa樱花| 欧美一级片免费看| 精油按摩中文字幕久久| 首页国产丝袜综合| 亚洲国产精品久久久久婷婷884 | 亚洲伦理在线精品| 国产精品第五页| 中文字幕综合网| 亚洲少妇中出一区| 亚洲一区二区三区四区在线免费观看 | 亚洲欧洲美洲综合色网| 1024成人网| 亚洲国产精品综合小说图片区| 亚洲成人av一区| 男女男精品视频| 国产精品456| gogogo免费视频观看亚洲一| 91首页免费视频| 欧美视频在线一区二区三区| 91麻豆精品国产无毒不卡在线观看| 91精品国产福利在线观看| 精品国产乱码久久久久久老虎| 久久久99久久| 亚洲自拍欧美精品| 久久成人麻豆午夜电影| 懂色一区二区三区免费观看| 91麻豆福利精品推荐| 欧美久久久久久蜜桃| 久久久久久久网| 一区二区三区在线视频观看| 麻豆91精品视频| 豆国产96在线|亚洲| 欧美日韩www| 国产欧美日韩不卡免费| 亚洲国产视频网站| 国产精品888| 欧美日韩另类国产亚洲欧美一级| 久久在线观看免费| 亚洲欧美另类久久久精品2019| 七七婷婷婷婷精品国产| 99国产精品视频免费观看| 69av一区二区三区| 亚洲特黄一级片| 黑人巨大精品欧美黑白配亚洲 | 国产欧美日韩在线| 性久久久久久久久久久久| 国产成人精品网址| 欧美精品丝袜久久久中文字幕| 国产欧美一区二区三区在线看蜜臀 | 亚洲人成网站影音先锋播放| 久色婷婷小香蕉久久| 色婷婷综合久久久久中文一区二区| 精品乱码亚洲一区二区不卡| 亚洲一区二区四区蜜桃| 成人黄页在线观看| 久久嫩草精品久久久久| 日韩精品五月天| 欧美亚洲综合久久| 中文字幕一区二区三区不卡在线 | 欧美日韩综合色| 国产精品免费网站在线观看| 激情综合色综合久久综合| 欧美精品色一区二区三区| 一区二区三区美女| 99re热视频精品| 国产精品初高中害羞小美女文| 狠狠色丁香久久婷婷综合_中| 欧美一区二区精品| 性感美女极品91精品| 91国模大尺度私拍在线视频| √…a在线天堂一区| 成人动漫中文字幕| 国产精品欧美一级免费| 国产suv精品一区二区6| 国产欧美日韩中文久久| 成人一区二区三区| 国产精品网曝门| 99精品桃花视频在线观看| 日本一二三四高清不卡| 成人看片黄a免费看在线| 欧美激情资源网| 99国产精品久| 伊人婷婷欧美激情| 欧美日韩在线免费视频| 亚洲成人免费在线观看| 欧美一二三区在线| 精东粉嫩av免费一区二区三区| 日韩你懂的在线观看| 国产精一区二区三区| 国产精品欧美久久久久一区二区| 成人福利视频在线看| 亚洲免费视频成人| 欧美精品v国产精品v日韩精品 | 99久久99久久综合| 一区二区三区四区亚洲| 51精品秘密在线观看| 精品亚洲国内自在自线福利| 中文字幕高清不卡| 欧美天天综合网| 久久国产精品99久久久久久老狼| 久久九九99视频| 99久久99精品久久久久久| 亚洲成人在线免费| 2021中文字幕一区亚洲| 91香蕉视频mp4| 秋霞av亚洲一区二区三| 国产精品久久久久久久久久久免费看 | 夜夜嗨av一区二区三区网页| 6080日韩午夜伦伦午夜伦| 国产精品夜夜嗨| 亚洲综合在线五月| 久久一日本道色综合| 一本大道综合伊人精品热热| 精品中文字幕一区二区| 亚洲人成网站色在线观看| 日韩视频永久免费| 91香蕉视频污在线| 国产精一品亚洲二区在线视频| 亚洲一区在线看| 日本一区二区三级电影在线观看| 欧美日韩综合不卡| 成人av中文字幕| 蜜臀久久久久久久| 一个色综合av| 综合久久久久久| 久久久一区二区三区捆绑**| 精品视频在线免费看| 成人97人人超碰人人99| 国内精品伊人久久久久av影院| 亚洲一区二区三区在线播放| 国产精品毛片a∨一区二区三区| 日韩一区二区免费电影| 欧美在线free| 91蜜桃视频在线| 成人爽a毛片一区二区免费| 蜜臀精品久久久久久蜜臀| 亚洲午夜成aⅴ人片| 亚洲人成精品久久久久| 欧美经典三级视频一区二区三区| 日韩欧美国产一区二区在线播放| 欧美午夜宅男影院| 色婷婷一区二区| 91在线观看高清| www.成人网.com| av一区二区三区在线| 高清视频一区二区| 国产精品66部| 国产成人一级电影| 国产福利精品一区| 国产乱妇无码大片在线观看| 久99久精品视频免费观看| 丝袜亚洲另类欧美综合| 天天操天天综合网| 日韩精品电影一区亚洲| 日精品一区二区三区| 天天影视网天天综合色在线播放 | 国产一区二区影院| 国产一区二区三区四区在线观看 | 亚洲欧洲日产国产综合网| 国产精品视频一区二区三区不卡| 久久精品免费在线观看| 中文字幕av一区二区三区免费看| 中文欧美字幕免费| 亚洲视频香蕉人妖| 亚洲一区二区视频在线观看| 亚洲va欧美va国产va天堂影院| 天天综合色天天综合色h| 美国毛片一区二区三区| 激情五月激情综合网| 国产精品一区二区果冻传媒| 高清日韩电视剧大全免费| 91视频免费观看| 欧美二区三区91| 久久精品欧美一区二区三区不卡| 中文字幕精品一区| 亚洲午夜久久久| 狠狠色丁香婷婷综合| 99热精品国产| 欧美日本一区二区在线观看| 精品国产第一区二区三区观看体验 | 日本大胆欧美人术艺术动态| 激情文学综合插| 色一情一伦一子一伦一区| 欧美剧在线免费观看网站| 久久久久久久久久电影| 亚洲精品免费在线| 韩国午夜理伦三级不卡影院| 99精品久久免费看蜜臀剧情介绍| 欧美午夜精品久久久久久超碰| 欧美videofree性高清杂交| 国产精品国产三级国产三级人妇| 午夜精品一区二区三区电影天堂 | 中文字幕综合网| 麻豆freexxxx性91精品| av在线不卡网| 精品国产3级a| 午夜成人在线视频| 99久久伊人网影院| 久久天天做天天爱综合色| 亚洲福利国产精品|