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.

[参考译文] TPS65224-Q1:PMIC 探针失败、出现错误–22

Guru**** 2563960 points
Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error--22

器件型号:TPS65224-Q1
主题:AM62P 中讨论的其他器件

工具/软件:

您好:

我的定制电路板上有 soc “AM62P",“,导致、导致 PMIC 无法完全正常运行。
我在 DTS 中有以下 PMIC 节点、您可以看到 IRQ 被注释、因为我们没有接线:

&wkup_i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&wkup_i2c0_pins_default>;
	clock-frequency = <40000>;
	status = "okay";
	//bootph-all;

	tps65224: pmic@48 {
		compatible = "ti,tps65224-q1";
		reg = <0x48>;
//		pinctrl-names = "default";
//		pinctrl-0 = <&pmic_irq_pins_default>;
//		interrupt-parent = <&main_gpio0>;
//		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
		ti,primary-pmic;

		gpio-controller;
		#gpio-cells = <2>;

    buck12-supply = <&vcc_5v0>;
    buck3-supply = <&vcc_5v0>;
    buck4-supply = <&vcc_5v0>;

    ldo1-supply = <&vcc_5v0>;
	  ldo2-supply = <&vcc_5v0>;
	  ldo3-supply = <&buck3>;

	  regulators {
		  buck12: buck12 {
		    regulator-name = "vcc_core_buck12";
		    regulator-min-microvolt = <715000>;
		    regulator-max-microvolt = <895000>;
		    regulator-boot-on;
		    regulator-always-on;
		  };

		  buck3: buck3 {
		    regulator-name = "vcc1v8_sys_buck3";
			  regulator-min-microvolt = <1800000>;
			  regulator-max-microvolt = <1800000>;
			  regulator-boot-on;
			  regulator-always-on;
		  };

		  buck4: buck4 {
			  regulator-name = "vcc1v1_buck4";
			  regulator-min-microvolt = <1100000>;
			  regulator-max-microvolt = <1100000>;
			  regulator-boot-on;
			  regulator-always-on;
		  };

		  ldo1: ldo1 {
			  regulator-name = "vdda1v8_ldo1";
			  regulator-min-microvolt = <1800000>;
			  regulator-max-microvolt = <1800000>;
			  regulator-boot-on;
			  regulator-always-on;
		  };

		  ldo2: ldo2 {
			  regulator-name = "dvdd3v3_ldo2";
			  regulator-min-microvolt = <3300000>;
			  regulator-max-microvolt = <3300000>;
			  regulator-boot-on;
			  regulator-always-on;
		  };

		  ldo3: ldo3 {
			  regulator-name = "vcc_0v85_ldo3";
			  regulator-min-microvolt = <850000>;
			  regulator-max-microvolt = <850000>;
			  regulator-boot-on;
			  regulator-always-on;
		  };
    };
	};
};

wkup-i2c 的引脚多路复用:

&mcu_pmx0 {
	bootph-all;

	wkup_i2c0_pins_default: wkup-i2c0-default-pins {
		pinctrl-single,pins = <
			AM62PX_MCU_IOPAD(0x04c, PIN_INPUT_PULLUP, 0)	/* (A13) WKUP_I2C0_SCL */
			AM62PX_MCU_IOPAD(0x050, PIN_INPUT_PULLUP, 0)	/* (C11) WKUP_I2C1_SDA */
		>;
		bootph-all;
	};
};


我可以在用户空间中的“/sys/firmware/devicetree/base/bus@f0000/bus@b00000/i2c@2b200000/PMIC@48/regulators“下看到稳压器。

我有以下问题:
1.如何让 PMIC 以正确的方式运行? 是否必须拥有 IRQ?
2.从控制台执行关机不起作用,Linux 尝试执行关机,但一切都保持通电状态,消耗的电流仍然相同。
3.我已在 Linux 中将 GPIO_pin 配置为“KEY_POWER",“,以便、以便 在 Linux 中长按按钮时执行关机、但 也可以使用短按吗?


dmesg 日志:

dmesg | grep -I tPS
[1.133006]   tps6594 0-0048:无法请求 tps6594-3-0x48 的 IRQ 0:–22
[1.140142]   tps6594 0-0048:错误-EINVAL:无法添加 regmap IRQ
[1.146622]   tps6594 0-0048:带有驱动程序 tps6594 的探测器失败、错误为–22

 
谢谢。此致、
Mohamed

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

    尊敬的 Mohamed:

    [quote userid=“647005" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22 如何使 PMIC 以正确的方式运行? 是否必须拥有 IRQ?


    根据 PMIC 的器件树绑定、中断属性被视为必需属性: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml?h=ti-linux-6.12.y#n99

    [quote userid=“647005" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22 从控制台执行关机不起作用、Linux 会尝试执行关机、但所有设备都保持开机状态、并且当前消耗的电流仍然相同。

    Linux 命令行关闭将暂停操作系统、但不会与 PMIC 交互。 其他内核、外设等可能仍在运行、因此消耗电流。

    [quote userid=“647005" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22 我已在 Linux 中将 GPIO_pin 配置为“KEY_POWER",“,以便、以便 在 Linux 中长按按钮时执行关机、但 也适用于短按?

    您能解释一下您的意思吗? 您是否测试过长按已成功关闭 Linux? 如果它是有效的,我看不到为什么短按不起作用的原因。

    谢谢、

    Anshu

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

    尊敬的 Anshu:
    感谢您的答复。

    [quote userid=“566841" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22/6043860 通过 PMIC 的器件树绑定、中断属性被视为必需属性: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml?h=ti-linux-6.12.y#n99

    这意味着  中断引脚需要连接在 PMIC 上、不能悬空? 我查看了原理图、没有看到引脚“nINT/EN_DRV"连接“连接到任何位置。

    [引述 userid=“566841" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22/6043860

    Linux 命令行关闭将暂停操作系统、但不会与 PMIC 交互。 其他内核、外设等可能仍在运行、因此消耗电流。

    [/报价]

    我期望 SOC 通过 I2C 与 PMIC 通信并请求整个系统断电。 在我的情况下、如何关闭电源?
    一位同事告诉我、我可以 将 SOC GPIO1_31 切换为“高->低“、以从 PMIC 执行关断。
    我向 DTS 添加了该引脚作为 POWEROFF_GPIO、并配置为 OUTPUT/ACTIVE_LOW、但不起作用。

    [引述 userid=“566841" url="“ url="~“~/support/power-management-group/power-management/f/power-management-forum/1569473/tps65224-q1-pmic-probe-failed-with-error-–22/6043860

    您能解释一下您的意思吗? 您是否测试过长按已成功关闭 Linux? 如果它是有效的,我看不到为什么短按不起作用的原因。

    [/报价]

    有一个误解。 我的意思是它应该在长按“2 秒“上执行关机,但它会在很短的按压时做出反应,并执行关机。
    指定  logind.conf.in, I configuered the longpress:
    HandlePowerKeyLongPress=poweroff


    应届毕业生、
    Mohamed

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

    尊敬的 Mohamed:

    我需要研究一下、然后由星期五回复您。

    谢谢、

    Anshu

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

    尊敬的 Anshu:
    有关如何通过 I2C 关断 PMIC 的任何更新?

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

    您好、Mohamed、

    感谢您的 ping。 在软件方面、Linux 命令不会与 PMIC 交互。

    可以在通过 I2C 关断之前写入 PMIC、但在关断序列结束与 PMIC 断电序列之间可能存在竞态条件。

    我的一位同事告诉我、我可以 切换 SOC GPIO1_31 的“高->低“、以便从 PMIC 执行关闭。
    我向 DTS 中添加了该引脚作为 POWEROFF_GPIO、并配置为 OUTPUT/ACTIVE_LOW、但不起作用。

    您能进一步解释一下吗? SoC GPIO 如何连接到 PMIC? 结果是什么?

    我认为 PMIC 由 GPIO 控制、然后 PMIC 将在 SoC 之前关闭。

    谢谢、

    Anshu

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

    尊敬的 Anshu:

    您能进一步解释一下吗? SoC GPIO 如何连接到 PMIC? 结果是什么?
    [/报价]

    关于此问题、我想它与我们的硬件有关、因此它会在切换该 GPIO 引脚时关闭电源。 很抱歉不清楚。

    这与 PMIC 有关。

    我仍然不清楚如何通过 I2C 与 PMIC 进行通信、在我的硬件上、以下 PMIC_GPIO 按如下方式进行编程:
    GPIO1->SDA_I2C2
    GPIO2->SCL_I2C2

    因此、我想就以下两件事与 PMIC 通信:
    1、重置/禁用 WD、因为它每~10 分钟重置一次我的主板。
    2.关闭 PMIC。


    谢谢。此致、
    Mohamed  

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

    尊敬的  Mohamed:

    让我在 PMIC 团队中循环、评论要用于关断的寄存器。

    谢谢、

    Anshu

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

    尊敬的 Mohamed:

    您正在使用 AM62P SoC、因此我假设您的 PMIC 是 TPS6522 430  如果我错了、请纠正我、因为这种行为很大程度上取决于 OPN。  

    首先了解一些基本信息:

    • 您可以在安全文件夹中找到 PMIC 用户指南、您可以 在此处申请访问
    • 此 PMIC 具有两条不同的物理 I2C 总线  
      • I2C1(引脚 1 和 2)和 I2C2 作为 GPIO1 和 GPIO2(引脚 35 和 36)的函数  
      • I2C1 是主 I2C、用于配置 PMIC、读取中断等
      • I2C2 是辅助和可选总线、仅用于通过寄存器 0x4yy 与 Q&A 看门狗进行交互(配置和服务)

    在用户指南中、您可以在图 5-1 中找到 PFSM(可预配置的有限状态机)信息和图表。 我知道您想从工作状态进入待机状态、 对于此过渡、您有三个选项(触发器)

    1.  FORCE_STANDBY_>HIGH、这意味着 EN/PB/VSENSE 引脚变为低电平。 您可能无法使用软件对此进行任何控制
    2. PB_LONG_TRIGGER->RISE、这是您提到的按钮。 这是 PMIC GPIO3 的一项功能、您应该能够通过将 GPIO3 引脚保持为低电平 8 秒来执行此触发。
    3. I2C_0->RISE、您可以写入寄存器 0x85 中的 TRIGGER_I2C_0 位来执行关断序列。

    可以通过两种方式禁用看门狗

    1. 通过硬件在启动前将 GPIO6 拉高来实现。
    2. 通过软件在长窗口中将 WD_PWRHOLD 写入 0x1。 该位可以停止长窗口过期。

    如果仍有困难、请从寄存器 INT_TOP (0x5A) 开始阅读数据表中所述的中断寄存器、因为这可以判断您的电路板是否存在一些错误或某些内容未正确执行。

    此致、

    Niko