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

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

?? clock.c

?? RTOS系統
?? C
字號:
/* $Id: //depot/software/SDK/Triscend/a7hal/src/clock.c#23 $ *//* ********************************************************** *  clock.c *  Copyright(C) 2001-2003 Triscend Corporation. All Rights Reserved. *  This file is licensed under the terms of Triscend SDK License Agreement.  ********************************************************** */#include "hal_conf.h"#if A7HAL_USE_CLOCK/** * \file * Contains functions to get/set the CPU clock speed. * The functions within this file are only accessible if A7HAL_USE_CLOCK * is #defined as YES in hal_conf.h *//** \defgroup clock Clock Driver * @{ */#include "triscend_a7.h"#include "clock.h"#ifdef __KERNEL__#include <linux/autoconf.h>#ifndef CONFIG_OSC_FREQ  #define CONFIG_OSC_FREQ	25000000#endif#endifstatic unsigned long a7hal_ring_freq = A7HAL_RING_FREQ;#ifdef __KERNEL__static unsigned long a7hal_xclk_freq = CONFIG_OSC_FREQ;#elsestatic unsigned long a7hal_xclk_freq = A7HAL_XCLK_FREQ;#endifstatic unsigned long a7hal_xtal_freq = A7HAL_XTAL_FREQ;/** * \brief Initialize the clock driver. * * This function is called from the a7hal_driverInit function * to initialize the clock driver. It calls a7hal_clock_reset * to set the default clock values. * * \return N/A * * \see a7hal_clock_reset, a7hal_driverInit */void a7hal_clock_init( void ){    a7hal_clock_reset(  );}/** * \brief Get the clock device base address. * * \return This function always returns 0. * * \note The clock driver accesses a number of clock registers, * there is no one base address for this device. */unsigned long a7hal_clock_getDeviceAddress( void ){    return ( 0 );}/** * \brief Reset the clock driver. * * This function sets the the PLL, external clock, * and ring oscillator to their default values. * * \return N/A * * \note This function will not change the actual * clock speed, since this is controlled by hardware, * it does not write to any clock registers. This function * is for software configuration only. */void a7hal_clock_reset( void ){    a7hal_ring_freq = A7HAL_RING_FREQ;#ifdef __KERNEL__    a7hal_xclk_freq = CONFIG_OSC_FREQ;#else    a7hal_xclk_freq = A7HAL_XCLK_FREQ;#endif    a7hal_xtal_freq = A7HAL_XTAL_FREQ;}/** * \brief Get the CPU clock speed. * * This function is called to return the CPU clock frequency in Hz. * It can be called before or after RAM is initialized, if called * before RAM is initialized a non zero value MUST be specified for * the 'noRAM' parameter. In this case the clock frequency returned * will be based on the values of A7HAL_RING_FREQ, A7HAL_XCLK_FREQ, * and A7HAL_XTAL_FREQ defined in clock.h * * If the 'noRAM' parameter is zero, the clock frequency returned * will be based on the values set by a7hal_clock_setPllClock, * a7hal_clock_setXClock, and a7hal_clock_setRing. * * \param noRAM Should be non zero if this function is called before RAM is initialized * * \return Clock frequency in Hz. * * \see a7hal_clock_setPllClock, a7hal_clock_setXClock, a7hal_clock_setRing, a7hal_sdram_init * * \note The a7hal_clock_get... and a7hal_clock_set... function * calls use global variables to store the clock values. These * global variables will proberly not exist untill after the * RAM system has been initialized. For this reason, the 'noRAM' * parameter is used to tell this function to use the #defined * clock values in clock.h */unsigned long a7hal_clock_getFreq( int noRAM ){    unsigned int freq;    unsigned long local_a7hal_ring_freq;    unsigned long local_a7hal_xclk_freq;    unsigned long local_a7hal_xtal_freq;#if defined(A7VE) || defined(A7VC) || defined(A7VT) || defined(A7VL)    unsigned long feedbackDivider;    unsigned long outputDivider;    unsigned long referenceDivider;#else    unsigned int scale;#endif    /* If this function is called before the SDRAM     * is initialized, we can not use any global vars     * so we use the hard coded values for the clocks     * defined in clock.h     */    if ( noRAM )    {        local_a7hal_ring_freq = A7HAL_RING_FREQ;#ifdef __KERNEL__        local_a7hal_xclk_freq = CONFIG_OSC_FREQ;#else        local_a7hal_xclk_freq = A7HAL_XCLK_FREQ;#endif        local_a7hal_xtal_freq = A7HAL_XTAL_FREQ;    }    else    {        local_a7hal_ring_freq = a7hal_ring_freq;        local_a7hal_xclk_freq = a7hal_xclk_freq;        local_a7hal_xtal_freq = a7hal_xtal_freq;    }    freq = local_a7hal_ring_freq;    /*     * if (clock is not ring)     *   if (clock is xtal/PLL) calculate freq from PLL settings.     *   else clock is ext.osc. and user MUST define clock freq.     *   else clock is ring and approximate freq = 20,000,000.     */    if ( GET_BIT( SYS_CLOCK_CONTROL_REG, CLK_SEL_BIT ) )    {        if ( GET_BIT( SYS_CLOCK_CONTROL_REG, PLL_SEL_BIT ) )        {#if defined(A7VE) || defined(A7VC) || defined(A7VT) || defined(A7VL)            feedbackDivider = GET_FIELD( SYS_PLL_CONTROL_REG,                                         PLL_CLKF_FIELD, NBITS_PLL_CLKF ) + 1;            outputDivider = GET_FIELD( SYS_PLL_CONTROL_REG,                                       PLL_CLKOD_FIELD, NBITS_PLL_CLKOD ) + 1;            referenceDivider = GET_FIELD( SYS_PLL_CONTROL_REG,                                          PLL_CLKR_FIELD,                                          NBITS_PLL_CLKR ) + 1;            /*             * Is the input to the PLL the 32KHz xtal or the external osc.             */            if ( GET_BIT( SYS_PLL_CONTROL_REG, PLL_REFSEL_BIT ) )            {                freq = ( local_a7hal_xclk_freq /                                ( referenceDivider * outputDivider )) * feedbackDivider;            }            else            {                freq = ( local_a7hal_xtal_freq * feedbackDivider ) /                    ( referenceDivider * outputDivider );            }#else            freq =                local_a7hal_xtal_freq * GET_FIELD( SYS_CLOCK_CONTROL_REG,                                                   PLL_DIV_FIELD,                                                   NBITS_PLL_DIV );            scale =                GET_FIELD( SYS_CLOCK_CONTROL_REG, PLL_SCALE_FIELD,                           NBITS_PLL_SCALE );            while ( scale )            {                freq >>= 1;                scale >>= 1;            }#endif        }        else        {            freq = local_a7hal_xclk_freq;        }    }    return freq;}/** * \brief Set the frequency of the clock that drives the PLL. * * \param freq Frequency in Hertz of the PLL driver clock * * \return N/A * * \see a7hal_clock_getPllClock, a7hal_clock_getFreq * * \note This function will not change the actual * clock speed, since this is controlled by hardware, * it does not write to any clock registers. This function * is for software configuration only. */void a7hal_clock_setPllClock( unsigned long freq ){    a7hal_xtal_freq = freq;}/** * \brief Get the frequency of the clock that drives the PLL. * * \return The frequency in Hz of the clock that drives the PLL. * * \see a7hal_clock_getPllClock, a7hal_clock_getFreq * * \note The default value for clock that drives the PLL is A7HAL_XTAL_FREQ, * defined in clock.h */unsigned long a7hal_clock_getPllClock( void ){    return ( a7hal_xtal_freq );}/** * \brief Set the frequency of the external clock. * * \param freq Frequency in Hertz of the external clock * * \return N/A * * \see a7hal_clock_getXClock, a7hal_clock_getFreq * * \note This function will not change the actual * clock speed, since this is controlled by hardware, * it does not write to any clock registers. This function * is for software configuration only. */void a7hal_clock_setXClock( unsigned long freq ){    a7hal_xclk_freq = freq;}/** * \brief Get the frequency of the external clock. * * \return The frequency in Hz of the external clock. * * \see a7hal_clock_setXClock, a7hal_clock_getFreq * * \note The default value for the external clock is A7HAL_XCLK_FREQ, * defined in clock.h */unsigned long a7hal_clock_getXClock( void ){    return ( a7hal_xclk_freq );}/** * \brief Set the frequency of the ring oscillator. * * \param freq Frequency in Hertz ring oscillator * * \return N/A * * \see a7hal_clock_getRing, a7hal_clock_getFreq * * \note This function will not change the actual * clock speed, since this is controlled by hardware, * it does not write to any clock registers. This function * is for software configuration only. */void a7hal_clock_setRing( unsigned long freq ){    a7hal_ring_freq = freq;}/** * \brief Get the frequency of the ring oscillator. * * \return The frequency in Hz of the ring oscillator. * * \see a7hal_clock_setRing, a7hal_clock_getFreq * * \note The default value for the ring oscillator is A7HAL_RING_FREQ, * defined in clock.h */unsigned long a7hal_clock_getRing( void ){    return ( a7hal_ring_freq );}/** @} */#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品88av| 国产视频一区在线观看| 成人av资源站| 日韩一区和二区| 亚洲国产一区二区三区青草影视| 国产91色综合久久免费分享| 久久久不卡网国产精品二区| 免费观看在线综合| 欧美电影一区二区三区| 亚洲六月丁香色婷婷综合久久| 99re66热这里只有精品3直播 | 天堂一区二区在线免费观看| 成人深夜视频在线观看| 中文字幕高清一区| 国产99久久久国产精品 | 欧美狂野另类xxxxoooo| 日本一区二区三区高清不卡| 国产精品一区一区| 国产亚洲精品久| 久久99久久久欧美国产| 亚洲综合在线电影| 精品视频1区2区| 九九视频精品免费| 国产网站一区二区| 色噜噜久久综合| 亚洲电影你懂得| 日韩欧美国产一区二区三区 | 亚洲欧美在线视频观看| 成人午夜电影久久影院| 亚洲男人天堂一区| 欧美日韩一区成人| 精品在线观看免费| 亚洲美女淫视频| 欧美性xxxxx极品少妇| 蜜臀av亚洲一区中文字幕| 欧美一级专区免费大片| 国产精品99久| 亚洲午夜av在线| 欧美一区日本一区韩国一区| 国产一区日韩二区欧美三区| 亚洲欧洲日韩av| 欧美一区二区视频在线观看 | 中文字幕不卡在线| 99久久久精品| 国产精品网曝门| 91碰在线视频| 毛片基地黄久久久久久天堂| 中文天堂在线一区| 91麻豆国产精品久久| 亚洲最大成人综合| 日韩一级完整毛片| 成人免费不卡视频| 婷婷国产v国产偷v亚洲高清| 日韩免费视频线观看| 99久久免费精品| 韩国成人福利片在线播放| 亚洲午夜久久久| 久久久久久久精| 在线国产亚洲欧美| 91欧美激情一区二区三区成人| 日韩电影在线观看网站| 亚洲精品免费在线播放| 久久久亚洲精品一区二区三区| 成人性生交大片免费看视频在线| 精品亚洲成a人| 亚洲综合免费观看高清在线观看| 国产精品久久久久久久久免费桃花 | 国产女主播一区| 成人永久aaa| 免费看精品久久片| 一区二区在线电影| 中文欧美字幕免费| 精品国产自在久精品国产| 欧美日韩国产一二三| 成人app在线观看| 国产一区二区不卡| 久草这里只有精品视频| 亚洲成人免费电影| 亚洲综合男人的天堂| 亚洲欧洲成人精品av97| 久久你懂得1024| 日韩美女一区二区三区| 91精品国产色综合久久不卡电影 | 日韩小视频在线观看专区| 白白色亚洲国产精品| 国产一区二区三区| 久久99在线观看| 久久成人久久爱| 免费三级欧美电影| 秋霞电影一区二区| 免费看日韩a级影片| 免费在线看一区| 日韩电影在线观看电影| 午夜视频一区在线观看| 五月天激情综合| 日韩精品五月天| 精品午夜久久福利影院| 韩国毛片一区二区三区| 国产成人无遮挡在线视频| 韩国欧美国产1区| 国产精品一卡二| 成人性生交大片| 欧美三级电影一区| 欧美日本一区二区在线观看| 日韩欧美二区三区| 久久综合九色欧美综合狠狠| 久久先锋影音av| 国产精品久久久久aaaa樱花| 国产精品福利一区二区三区| 亚洲免费观看在线视频| 亚洲午夜日本在线观看| 午夜精品久久久久久久99樱桃 | 欧美成va人片在线观看| 精品成人免费观看| 精品国产3级a| 国产精品久久久久久久久晋中| 中文字幕佐山爱一区二区免费| 亚洲国产综合色| 亚洲超丰满肉感bbw| 午夜久久久久久久久久一区二区| 久久精品国产秦先生| 国产精品综合在线视频| 91免费国产在线| 91精品婷婷国产综合久久性色| 欧美一区二区三区在线视频| 国产情人综合久久777777| 中文字幕中文字幕一区| 亚洲国产另类av| 美女网站在线免费欧美精品| 成熟亚洲日本毛茸茸凸凹| 欧美在线视频日韩| 国内精品免费在线观看| 日韩av一区二区三区| 国产一区二区伦理片| 成人av动漫在线| 日韩欧美三级在线| 最新热久久免费视频| 亚洲成av人片在www色猫咪| 国产乱色国产精品免费视频| 一本久久a久久精品亚洲| 国产校园另类小说区| 亚洲国产一区二区三区| eeuss影院一区二区三区| 6080午夜不卡| 国产亚洲欧美中文| 蜜臀精品久久久久久蜜臀| 91看片淫黄大片一级在线观看| 国产亚洲成年网址在线观看| 亚洲小少妇裸体bbw| 国产一区二区三区精品视频| 欧美三级中文字幕在线观看| 国产午夜一区二区三区| 美女视频网站久久| 欧美羞羞免费网站| 亚洲色图丝袜美腿| 成人性生交大片| 日韩欧美亚洲另类制服综合在线| 午夜av区久久| 99国产精品国产精品久久| 欧美国产禁国产网站cc| 麻豆久久一区二区| 日韩丝袜美女视频| 亚洲一区二区三区自拍| 国产成人在线看| 国产女同互慰高潮91漫画| 精油按摩中文字幕久久| 日韩欧美黄色影院| 日韩精品乱码av一区二区| 欧美亚洲图片小说| 亚洲卡通欧美制服中文| 国产精品一区二区三区四区| 欧美一区二区久久| 日韩一区欧美二区| 午夜精品福利在线| 国产欧美一区二区在线观看| 国产精品妹子av| 国产黑丝在线一区二区三区| 久久综合狠狠综合久久综合88| 日韩精品电影在线| 日韩一区二区三区电影在线观看| 一区二区三区精品| 在线欧美日韩国产| 亚洲国产成人porn| 欧美性生活一区| 五月天激情小说综合| 日韩欧美一级片| 精品一区二区三区的国产在线播放 | 在线成人午夜影院| 欧美aaaaaa午夜精品| 日韩小视频在线观看专区| 国内久久精品视频| 精品国产区一区| 成人av电影免费在线播放| 中文字幕一区二区三区乱码在线| 91啪九色porn原创视频在线观看| 亚洲精品老司机| 91免费版在线| 亚洲情趣在线观看| 成人免费毛片片v| 国产日韩精品一区二区三区在线|