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.

[参考译文] TPS6594-Q1:Linux 驱动程序初始化过程与 PMIC 文档

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1348407/tps6594-q1-linux-driver-initialization-procedure-vs-pmic-documentation

器件型号:TPS6594-Q1

您好!

根据 PMIC 文档、以下是 PMIC 所需的初始化过程:

6.1 Initialization
Upon a successful power up, the BIST_PASS_INT and ENABLE_INT interrupts are set. Any other interrupts
indicate an issue but the automated recovery attempt was successful. The recommended procedure is to:
1. Interrogate the interrupts
2. Determine the course of action
3. Set the NSLEEP bits
4. Clear the interrupts

但是、在驱动器中、至少在我看来、我们只有这样:

int tps6594_device_init(struct tps6594 *tps, bool enable_crc)
{
    ...
    
	/* Keep PMIC in ACTIVE state */
	ret = regmap_set_bits(tps->regmap, TPS6594_REG_FSM_NSLEEP_TRIGGERS,
			      TPS6594_BIT_NSLEEP1B | TPS6594_BIT_NSLEEP2B);
	if (ret)
		return dev_err_probe(dev, ret, "Failed to set PMIC state\n");

    ...

	return 0;
}

您能否确认驾驶员工作正常?

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

    简单说明一下、问题是没有清除中断标志。

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

    你好、FD、

    我假设这是 J7处理器电源按钮的 Toradex 设置正确吗?

    是否存在与之相关的意外行为?

    将联系更好地了解 Linux 驱动程序方面的软件工程师。

    谢谢您和 BR、

    尼古拉斯

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

    我假设这是 J7处理器电源按钮的 Toradex 设置正确吗?

    [/报价]

    正确、这是上下文。

    是否存在与之相关的意外行为?

    [/报价]

    我们无法立即测试完整的 PMIC/硬件/软件组合。

    在查看此类 PMIC 配置的软件实现时 、我们注意到了驱动程序和文档之间的这种差异、因此我们想再次与您确认一下。

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

    你好、FD、

    是的、驱动器正常、睡眠位不影响 FSM、因此这些位的设置与 Toradex PMIC 代码无关。

    Br、

    尼古拉斯

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

    睡眠位不会影响 FSM、因此这些位的设置与 Toradex PMIC 代码无关。

    [/报价]

    这不是我的问题, 如果不清楚,道歉。

    根据文档、有一个所描述的特定初始化序列(请见我的第一条消息)、并且 Linux 驱动程序不执行它。  这种行为合适吗?  具体而言、设置 SLEEP 位是文档和代码之间唯一相同的操作。 文档和代码之间的区别在于检查中断状态和清除中断

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

    你好、FD、

    现在我明白了驱动程序是否处理中断、这些中断如何使器件保持在活动状态、但其他中断会被存储。

    大家了解的是、客户将会通过其他中断来实现自己的代码、例如出现热警告中断、短路等情况时要执行的操作。

    Br、

    尼古拉斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    理解是,客户将使用其他中断实施自己的代码,例如出现热警告中断、短路等情况时应执行的操作。

    我懂了。

    但是这不是预期行为、我本来希望 TI 提供的驱动程序实现 标准 Linux PMIC 错误处理、例如请参阅 https://github.com/torvalds/linux/blob/master/include/linux/regulator/consumer.h#L100 作为入口点。

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

    你好、FD、

    您是否了解过: https://github.com/torvalds/linux/blob/master/drivers/regulator/tps6594-regulator.c

    Br、

    尼古拉斯

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

    您是否了解过: https://github.com/torvalds/linux/blob/master/drivers/regulator/tps6594-regulator.c

    [/报价]

    哎呀、我漏掉了这个。 请接受我的道歉。  

    那么、清除中断又会怎样呢?   同样、问题是文档和驱动程序之间存在差异。 我回答"很好、驱动器 实现了 PMIC 正常运行所需的功能"、很好。

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

    你好、FD、

    与软件团队交谈后、驱动程序实现 PMIC 正常运行所需的功能。

    Br、

    尼古拉斯