staticstruct tegra_emc_pdata *tegra_emc_fill_pdata(struct platform_device *pdev){structclk*c=clk_get_sys(NULL, "emc");structtegra_emc_pdata*pdata;unsignedlongkhz;inti; WARN_ON(pdev->dev.platform_data); BUG_ON(IS_ERR(c)); pdata = devm_kzalloc(&pdev->dev,sizeof(*pdata), GFP_...
即通过 clock 名称获取 struct clk 指针的过程,由 clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_get_by_name、of_clk_get_from_provider 等接口负责实现,这里以 clk_get 为例,分析其实现过程: struct clk *clk_get(struct device *dev, const char *con_id) { const char *dev_id = ...
returnclk_get_sys(dev_id,con_id); } structclk*clk_get_sys(constchar*dev_id,constchar*con_id) { structclk_lookup*cl; mutex_lock(&clocks_mutex);// 根据dev_id, con_id找到正确的结构体时钟,见下面 cl=clk_find(dev_id,con_id); if(cl&&!__clk_get(cl->clk)) cl=NULL; mutex_unlock...
首先,你要明白STM8的驱动时钟可以采用外部晶振,也可采用STM8内部的RC振荡器,二者只能选其一。 三个语句中的HSI表明是采用内部RC振荡器。你先看STM8内部的时钟树结构:其中HSI RC 16MHz就是其内部含有的RC振荡器,是ST芯片在出厂前就经过校正的但有一定误差的振荡器。时钟经过HSIDIV[1:0]这个分频...
struct clk *clk_get_sys(const char *dev_id, const char *con_id); int clk_add_alias(const char *alias, const char *alias_dev_name, char *id, struct device *dev); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 2、这些操作的具体实现在/arch/rlx/bsp/clock.c文件 ...
struct clk *clk_get_sys(const char *dev_id, const char *con_id); int clk_add_alias(const char *alias, const char *alias_dev_name, char *id, struct device *dev); 2. struct clk clk结构体是平台相关的。在arch/arm/mach-mx5/clock.c中会预先描述CPU中所有的clk对象。
xsdhcips->aperclk = clk_get_sys("SDIO0_APER",NULL);elsexsdhcips->aperclk = clk_get_sys("SDIO1_APER",NULL);if(IS_ERR(xsdhcips->aperclk)) { dev_err(&pdev->dev,"APER clock not found.\n"); ret = PTR_ERR(xsdhcips->aperclk);gotoerr_free; ...
STM32F407内部自带一个16M的内部晶振,这个晶振产生的时钟信号可以直接用作系统时钟SYSCLK。也可以作为PLL...
struct clk *clk_get_parent(struct clk *clk); /** * clk_get_sys - get a clock based upon the device name * @dev_id: device name * @con_id: connection ID * * Returns a struct clk corresponding to the clock producer, or * valid IS_ERR() condition containing errno. The...
6.选择SYSCLK为PLL RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 等待SYSCLK启动 (RCC_GetSYSCLKSource() != 0x08 HSI版: voidRCC_Config() { RCC_DeInit();//RCC_HSEConfig(RCC_HSE_ON);外部晶振不准暂不启用//if(RCC_WaitForHSEStartUp() == SUCCESS)//{//}RCC_HCLKConfig(RCC_SYSCLK_Div1);...