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.
Tool/software: Linux
Hi Sir
we used AM4376 with TPS65218 for development. (SDK 04.01.00.06.)
After executing power-off, we found DCDC3, 1.35V for DDR always is on, while other powers(VDD_MPU, 3.3V, VDD_CORE, VLS1 and VCC_1P8V) are off.
In tps65218-regulator.c
static int tps65218_pmic_set_suspend_disable(struct regulator_dev *dev)
{
struct tps65218 *tps = rdev_get_drvdata(dev);
unsigned int rid = rdev_get_id(dev);
if (rid < TPS65218_DCDC_1 || rid > TPS65218_LDO_1)
return -EINVAL;
/*
* Certain revisions of TPS65218 will need to have DCDC3 regulator
* enabled always, otherwise an immediate system reboot will occur
* during poweroff.
*/
if (rid == TPS65218_DCDC_3 && tps->rev == TPS65218_REV_2_1)
return 0;
if (!tps->strobes[rid]) {
if (rid == TPS65218_DCDC_3)
tps->strobes[rid] = 3;
else
return -EINVAL;
}
return tps65218_set_bits(tps, dev->desc->bypass_reg,
dev->desc->bypass_mask,
tps->strobes[rid], TPS65218_PROTECT_L1);
}
In DTS,
&i2c0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
clock-frequency = <400000>;
tps65218: tps65218@24 {
reg = <0x24>;
compatible = "ti,tps65218";
interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* NMIn */
interrupt-controller;
#interrupt-cells = <2>;
dcdc1: regulator-dcdc1 {
regulator-name = "vdd_core";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <1144000>;
regulator-boot-on;
regulator-always-on;
};
dcdc2: regulator-dcdc2 {
regulator-name = "vdd_mpu";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <1378000>;
regulator-boot-on;
regulator-always-on;
};
dcdc3: regulator-dcdc3 {
regulator-name = "vdcdc3";
regulator-boot-on;
regulator-always-on;
regulator-state-mem {
regulator-on-in-suspend;
};
regulator-state-disk {
regulator-off-in-suspend;
};
};
Please advise and thanks for your help.
BR
Yimin
No offense, Biser Gatchev-XID, but I cannot tell from reading this code what it might be telling the PMIC to do.
It appears to be a low-power mode issue, where the Linux code wants to keep the DDR alive, so it would make sense that DCDC3 stays enabled if it has been told to do so by the processor.
In order to save power when DCDC3 continues running, Load Switch 1 (LS1) should be turned off at this time, which will remove power from the VDDS_DDR rail of the processor.
Can you summarize the meaning of this code and determine if this is a possibility?
Yimin,
Based on this comment and code:
yimin bai34 said:
I'd say this feature has been disabled due to the stated reason. If you are sure this is not an issue with your board, you could simply remove this code. I would be very cautious though, based on the comment.
Maybe the PMIC experts on this thread can expand on some reasons for this...
When the AM3 or AM4 processor enters suspend mode there are two types: suspend to RAM or suspend to disk. When using the suspend to RAM option, the SoC DDR rail can be turned off but the power to the DDR chips must stay on. This is why DCDC3 passes through a load-switch LS1 before reaching the SoC DDR rail, but the DDR chips are powered directly before the load-switch.
dcdc3: regulator-dcdc3 {
regulator-name = "vdcdc3";
regulator-boot-on;
regulator-always-on;
regulator-state-mem {
regulator-on-in-suspend;
};
regulator-state-disk {
regulator-off-in-suspend;
};
};
The behavior Yimin describes should not be occuring during a normal shutdown request though. The code in tps65218-regulator.c might be removing DCDC3 from the power sequence due to a previous suspend request and not adding it back in the sequence for a shutdown request.
Yimin,
If suspend is not being used, I would either remove the code in regulator.c or change the device tree property "regulator-on-in-suspend" to "regulator-off-in-suspend". Let us know if that helps.
Hi Sir
Could you comment about our experiment in TPS65218A1 and TPS65218B1 for DCDC3 on/off issue in power off status?
In GP-EVM 1.2 with TPS65218A1
we execute poweroff command and the DCDC3 is off
In our board with TPS65218B1
a. we execute poweroff command and the DCDC3 is on.
b. we do two experiments to remove the code in regulator.c or change the device tree property
"regulator-on-in-suspend" to "regulator-off-in-suspend". system will do reboot.
Does it have any side effect to keep DCDC3 on while executing power off command ?
BR
Yimin