How to set CPU frequency on u-boot?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

How to set CPU frequency on u-boot?

4,245 次查看
LiLinfei
Contributor I

Hi,

How to set CPU frequency on u-boot?

Our machine must keep working at 800Mhz.But I see the frequency under U-boot is 396Mhz.

U-boot version : 2016.03

SOC:IMX6ULL 

Thanks!

标签 (1)
0 项奖励
回复
4 回复数

190 次查看
tomas-paukrt
Contributor I

I dealt with the same issue on U-Boot 2025.10 and ended up with this solution:

#include <asm/io.h>
#include <asm/arch/crm_regs.h>
#include <asm/arch/sys_proto.h>

int board_early_init_f(void)
{
  struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;

  /* exit if the CPU does not support 792 MHz */
  if (get_cpu_speed_grade_hz() < 792000000)
    return 0;

  /* increase VDD_SOC from 1.150 V to 1.175 V */
  set_ldo_voltage(LDO_SOC, 1175);

  /* increase VDD_ARM from 1.150 V to 1.225 V */
  set_ldo_voltage(LDO_ARM, 1225);

  /* increase ARM clock from 396 MHz to 792 MHz */
  writel(0, &imx_ccm->cacrr);

  return 0;
}

 

0 项奖励
回复

4,216 次查看
joanxie
NXP TechSupport
NXP TechSupport

you can find the cpu frequency settings in the dtsi file as below:

"https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/dts/imx6ull.dtsi?h=imx_v2019.04_4..."

0 项奖励
回复

4,082 次查看
avijitnsec
Contributor III

How to change the default frequency in the dts file? If I set it in the uboot, does it persist when kernel boots up? Or kernel overwrite the value? 

0 项奖励
回复

2,876 次查看
AlfTeleco
Contributor III

On the U-boot version U-Boot 2021.04-lf_v2021.04 write the CCM Arm Clock Root Register (CCM_CACRR) at the function get_mcu_main_clk() on the file /arch/arm/mach-imx/mx6/clock.c. The content of the function must be like this:

=====================================================================

u32 reg, freq;

reg = __raw_readl(&imx_ccm->cacrr);
reg &= ~MXC_CCM_CACRR_ARM_PODF_MASK;
__raw_writel(reg, &imx_ccm->cacrr);

reg = __raw_readl(&imx_ccm->cacrr);
reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
freq = decode_pll(PLL_SYS, MXC_HCLK);

return freq / (reg + 1);

=====================================================================

We are setting the register CCM_CACRR to have NO divider, like it is said in the datasheet:

AlfTeleco_0-1707405319109.png

Also boost the LDO_SOC voltage from 1.175 to 1.225 at the function /arch/arm/mach-imx/mx6/soc.c: board_postclk_init()

set_ldo_voltage(LDO_SOC, 1225); /* Set VDDSOC to 1.225V */

 

BR

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E5%9C%A8%20u-boot%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%20CPU%20%E9%A2%91%E7%8E%87%EF%BC%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%3CP%3E%E5%A6%82%E4%BD%95%E5%9C%A8%20u-boot%20%E4%B8%8A%E8%AE%BE%E7%BD%AE%20CPU%20%E9%A2%91%E7%8E%87%EF%BC%9F%3C%2FP%3E%3CP%3E%3CSPAN%3E%E6%88%91%E4%BB%AC%E7%9A%84%E6%9C%BA%E5%99%A8%E5%BF%85%E9%A1%BB%E7%BB%A7%E7%BB%AD%E5%9C%A8%20800MHz%20%E7%9A%84%E9%A2%91%E7%8E%87%E4%B8%8B%E5%B7%A5%E4%BD%9C%E3%80%82%E4%BD%86%E6%88%91%E7%9C%8B%E5%88%B0%20U-%E5%90%AF%E5%8A%A8%20%E4%B8%8B%E7%9A%84%E9%A2%91%E7%8E%87%E6%98%AF%20396Mhz%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EU-%E5%90%AF%E5%8A%A8%20%E7%89%88%E6%9C%AC%EF%BC%9A2016.03%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESOC%3AIMX6ULL%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E8%B0%A2%E8%B0%A2%E6%82%A8%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX6UL%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2251513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2251513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E5%9C%A8%20%3CSTRONG%3EU-%E5%90%AF%E5%8A%A8%202025.10%3C%2FSTRONG%3E%20%E4%B8%8A%E9%81%87%E5%88%B0%E4%BA%86%E5%90%8C%E6%A0%B7%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E6%9C%80%E5%90%8E%E6%89%BE%E5%88%B0%E4%BA%86%E8%BF%99%E4%B8%AA%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%23include%20%3CASM%3E%0A%23include%20%3CASM%3E%0A%23include%20%3CASM%3E%0A%0Aint%20board_early_init_f(void)%0A%7B%0A%20%20struct%20mxc_ccm_reg%20*imx_ccm%20%3D%20(struct%20mxc_ccm_reg%20*)CCM_BASE_ADDR%3B%0A%0A%20%20%2F*%20exit%20if%20the%20CPU%20does%20not%20support%20792%20MHz%20*%2F%0A%20%20if%20(get_cpu_speed_grade_hz()%20%26lt%3B%20792000000)%0A%20%20%20%20return%200%3B%0A%0A%20%20%2F*%20increase%20VDD_SOC%20from%201.150%20V%20to%201.175%20V%20*%2F%0A%20%20set_ldo_voltage(LDO_SOC%2C%201175)%3B%0A%0A%20%20%2F*%20increase%20VDD_ARM%20from%201.150%20V%20to%201.225%20V%20*%2F%0A%20%20set_ldo_voltage(LDO_ARM%2C%201225)%3B%0A%0A%20%20%2F*%20increase%20ARM%20clock%20from%20396%20MHz%20to%20792%20MHz%20*%2F%0A%20%20writel(0%2C%20%26amp%3Bimx_ccm-%26gt%3Bcacrr)%3B%0A%0A%20%20return%200%3B%0A%7D%3C%2FASM%3E%3C%2FASM%3E%3C%2FASM%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1804195%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1804195%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%9C%A8%20U-boot%20%E7%89%88%E6%9C%AC%20U-Boot%202021.04-lf_v2021.04%20%E4%B8%AD%EF%BC%8C%E5%9C%A8%20%2Farch%2Farm%2Fmach-imx%2Fmx6%2Fclock.c%20%E6%96%87%E4%BB%B6%E7%9A%84%20get_mcu_main_clk()%20%E5%87%BD%E6%95%B0%E5%A4%84%E5%86%99%E5%85%A5%20CCM%20Arm%20%E6%97%B6%E9%92%9F%E6%A0%B9%E5%AF%84%E5%AD%98%E5%99%A8%20(CCM_CACRR)%E3%80%82%E5%87%BD%E6%95%B0%E7%9A%84%E5%86%85%E5%AE%B9%E5%BF%85%E9%A1%BB%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3Eu32%20reg%2C%20freq%EF%BC%9B%3C%2FP%3E%3CP%3E%3CEM%3E%3CSTRONG%3Ereg%20%3D%20__raw_readl(%26amp%3Bimx_ccm-%26gt%3Bcacrr)%EF%BC%9B%3C%2FSTRONG%3E%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%3CSTRONG%3Ereg%26amp%3B%3D%20~MXC_CCM_CACRR_ARM_PODF_MASK%EF%BC%9B%3C%2FSTRONG%3E%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%3CSTRONG%3E__raw_writel(reg%2C%26amp%3Bimx_ccm-%26gt%3Bcacrr)%EF%BC%9B%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3Ereg%20%3D%20__raw_readl(%26amp%3Bimx_ccm-%26gt%3Bcacrr)%EF%BC%9B%3CBR%20%2F%3Ereg%26amp%3B%3D%20MXC_CCM_CACRR_ARM_PODF_MASK%EF%BC%9B%3CBR%20%2F%3Ereg%26gt%3B%26gt%3B%20%3D%20MXC_CCM_CACRR_ARM_PODF_OFFSET%EF%BC%9B%3CBR%20%2F%3Efreq%20%3D%20decode_pll(PLL_SYS%EF%BC%8CMXC_HCLK)%EF%BC%9B%3C%2FP%3E%3CP%3E%E8%BF%94%E5%9B%9E%20freq%20%2F%20(reg%20%2B%201)%EF%BC%9B%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%E6%88%91%E4%BB%AC%E6%AD%A3%E5%9C%A8%E5%B0%86%E5%AF%84%E5%AD%98%E5%99%A8%20CCM_CACRR%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%E6%B2%A1%E6%9C%89%E5%88%86%E9%A2%91%E5%99%A8%EF%BC%8C%E5%B0%B1%E5%83%8F%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E6%89%80%E8%AF%B4%E7%9A%84%E9%82%A3%E6%A0%B7%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22AlfTeleco_0-1707405319109.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22AlfTeleco_0-1707405319109.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F262549i21BB8E66A7503F6A%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22AlfTeleco_0-1707405319109.png%22%20alt%3D%22AlfTeleco_0-1707405319109.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E8%BF%98%E8%A6%81%E5%B0%86%20%2Farch%2Farm%2Fmach-imx%2Fmx6%2Fsoc.c%20%E5%87%BD%E6%95%B0%E4%B8%8B%E7%9A%84%20LDO_SOC%20%E7%94%B5%E5%8E%8B%E4%BB%8E%201.175%20%E6%8F%90%E9%AB%98%E5%88%B0%201.225%EF%BC%9Aboard_postclk_init%20()%3C%2FP%3E%3CP%3Eset_ldo_voltage(LDO_SOC%2C%201225)%3B%20%2F*%20%E5%B0%86%20VDDSOC%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%201.225V%20*%2F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EBR%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1502804%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1502804%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20dts%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E9%BB%98%E8%AE%A4%E9%A2%91%E7%8E%87%EF%BC%9F%E5%A6%82%E6%9E%9C%E5%9C%A8%20uboot%20%E4%B8%AD%E8%BF%9B%E8%A1%8C%E8%AE%BE%E7%BD%AE%EF%BC%8C%E5%86%85%E6%A0%B8%E5%90%AF%E5%8A%A8%E6%97%B6%E6%98%AF%E5%90%A6%E4%BC%9A%E6%8C%81%E7%BB%AD%E5%AD%98%E5%9C%A8%EF%BC%9F%E8%BF%98%E6%98%AF%E5%86%85%E6%A0%B8%E8%A6%86%E7%9B%96%E6%95%B0%E5%80%BC%EF%BC%9F%20%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1414906%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1414906%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%9C%A8%20dtsi%20%E6%96%87%E4%BB%B6%E4%B8%AD%E6%89%BE%E5%88%B0%20CPU%20%E9%A2%91%E7%8E%87%E8%AE%BE%E7%BD%AE%EF%BC%8C%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%22%3CA%20href%3D%22https%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fuboot-imx%2Ftree%2Farch%2Farm%2Fdts%2Fimx6ull.dtsi%3Fh%3Dimx_v2019.04_4.19.35_1.1.0%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fuboot-imx%2Ftree%2Farch%2Farm%2Fdts%2Fimx6ull.dtsi%3Fh%3Dimx_v2019.04_4.19.35_1.1.0%3C%2FA%3E%22%3C%2FP%3E%3C%2FLINGO-BODY%3E