This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TPS659037:U-boot 中的 PMIC 配置

Guru**** 1133960 points
Other Parts Discussed in Thread: TPS659037, AM5749
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1277130/tps659037-pmic-configuration-in-u-boot

器件型号:TPS659037
主题中讨论的其他器件: AM5749

您好!  

我有一个关于 PMIC 配置的问题。

在我的系统中、我将 AM5749与 TPS659037电源管理单元配合使用。 系统引导时、U-boot 会首先执行已配置 PMIC 的早期硬件初始化。 该配置会改变不同稳压器的输出电压、以便为主 SoC 内核电源域供电。 评估板使用这些电压为系统的其他元件(例如 eMMC)供电。  

在 U-boot 中、PMIC 输出电压值存储在结构 vcore 数据中。 调用一个"scale_vcores"函数、以使用该结构配置 PMIC。 首先、它会进行缩放(通常较低)以达到从 SoC 检索的融合值。

在定制电路板上、我使用 PMIC 以其默认输出电压为系统供电。 因此、我需要对 U-boot 进行更改、以防止它配置 PMIC 的不同稳压器。

我的方法是定义一个结构 vcore 数据、该数据的值字段进行了归零、如下所示。

struct vcores_data custom_am574x_idk_volts = {

.mpu.value[OPP_NOM] = 0,

.mpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_MPU_NOM,

.mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,

.mpu.addr = TPS659038_REG_ADDR_SMPS12,

.mpu.pmic = &tps659038,

.mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,



.eve.value[OPP_NOM] = 0,

.eve.value[OPP_OD] = 0,

.eve.value[OPP_HIGH] = 0,

.eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,

.eve.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_DSPEVE_OD,

.eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,

.eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,

.eve.addr = TPS659038_REG_ADDR_SMPS45,

.eve.pmic = &tps659038,

.eve.abb_tx_done_mask = OMAP_ABB_EVE_TXDONE_MASK,



.gpu.value[OPP_NOM] = 0,

.gpu.value[OPP_OD] = 0,

.gpu.value[OPP_HIGH] = 0,

.gpu.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_GPU_NOM,

.gpu.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_GPU_OD,

.gpu.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_GPU_HIGH,

.gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,

.gpu.addr = TPS659038_REG_ADDR_SMPS6,

.gpu.pmic = &tps659038,

.gpu.abb_tx_done_mask = OMAP_ABB_GPU_TXDONE_MASK,



.core.value[OPP_NOM] = 0,

.core.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_CORE_NOM,

.core.efuse.reg_bits = DRA752_EFUSE_REGBITS,

.core.addr = TPS659038_REG_ADDR_SMPS7,

.core.pmic = &tps659038,



.iva.value[OPP_NOM] = 0,

.iva.value[OPP_OD] = 0,

.iva.value[OPP_HIGH] = 0,

.iva.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_IVA_NOM,

.iva.efuse.reg[OPP_OD] = STD_FUSE_OPP_VMIN_IVA_OD,

.iva.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_IVA_HIGH,

.iva.efuse.reg_bits = DRA752_EFUSE_REGBITS,

.iva.addr = TPS659038_REG_ADDR_SMPS8,

.iva.pmic = &tps659038,

.iva.abb_tx_done_mask = OMAP_ABB_IVA_TXDONE_MASK,

};

我的问题:这是配置 u-boot 以保持 PMIC 的默认输出电压的正确方法吗?

谢谢

大卫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:  

    代码看起来是正确的、但我不确定是否有首选的电压值重置方法。 我将把这个主题分配给支持 AM5749的团队、看看他们是否可以提供进一步的反馈。

    此致、

    马特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    我的问题:这是配置 u-boot 以保持 PMIC 的默认输出电压的正确方法吗?

    [/报价]

    如果您不想更改电压、那么您可以只注释 scale_vcore 或从此处"回读0"吗?

    -基尔西

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Keerthy、您好!

    感谢您的回答。 实际上、这就是我一开始尝试的    方法、但引导失败了、因为 scale_vcore 函数执行 IO 延迟重校准。

    我 当然可以移除函数中正在改变电压的部分并保留其余部分、但我认为它更像是黑客而不是正确的配置。 我认为,维护人员必须设置一种方法来正确地做它。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David:

    感谢您的尝试。 通常、您所做的更改会处理不同的 PMIC。 scale_vcore 还负责 U-Boot 读数电子保险丝中的自适应电压调节、以便对引导的特定 OPP 的优化电压进行编程。 如果您希望使用复位电压值进行引导、则必须至少注释掉该器件。

    此致、

    基尔西  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Keerthy 的交换。 在本例中、我将关闭该主题。 (实现式解决方案是发布在问题中的解决方案)