Dears,
I’m working on the Verdin AM623 S 512MB WB IT V1.2A.
This is the manifest of the BSP and other layers in use (aligned to latest Toradex manifest repo, updated to yocto scarthgap 7.4.0):
<project name="bitbake.git" path="layers/openembedded-core/bitbake" remote="oe" revision="1c9ec1ffde75809de34c10d3ec2b40d84d258cb4" upstream="2.8"/>
<project name="meta-openembedded.git" path="layers/meta-openembedded" remote="oe" revision="e621da947048842109db1b4fd3917a02e0501aa2" upstream="scarthgap"/>
<project name="meta-yocto" path="layers/meta-yocto" remote="yocto" revision="82602cda1a89644d1acbe230a81c93e3fb5031c8" upstream="scarthgap"/>
<project name="openembedded-core.git" path="layers/openembedded-core" remote="oe" revision="4cf131ebd157b79226533b5a5074691dd0e1a4ab" upstream="scarthgap"/>
<project name="meta-toradex-bsp-common.git" path="layers/meta-toradex-bsp-common" remote="tdx" revision="bf9b67ca1dae378c612ba9fc89e491a11b314e05" upstream="scarthgap-7.x.y"/>
<project name="meta-toradex-nxp.git" path="layers/meta-toradex-nxp" remote="tdx" revision="5aaa24b977db19e5096ade3e0258db19933aba16" upstream="scarthgap-7.x.y"/>
<project name="meta-toradex-ti.git" path="layers/meta-toradex-ti" remote="tdx" revision="0e50c759b1e509c2b97b305916702acad3a7f734" upstream="scarthgap-7.x.y"/>
<project name="meta-freescale-3rdparty.git" path="layers/meta-freescale-3rdparty" remote="githf" revision="70c83e96c7f75e73245cb77f1b0cada9ed4bbc6d" upstream="scarthgap" replace="true"/>
<project name="meta-freescale-distro.git" path="layers/meta-freescale-distro" remote="githf" revision="b9d6a5d9931922558046d230c1f5f4ef6ee72345" upstream="scarthgap" replace="true"/>
<project name="meta-freescale.git" path="layers/meta-freescale" remote="githf" revision="62423c69631d7f7cffe2bd20997412d76caa94ef" upstream="scarthgap" replace="true"/>
To test properly the power consumption of the SoM itself versus the 5V input power, we are using the Verdin Development Board V1.1F, and measure the shunt resistor between TP21 and TP22 as per documentation, ratio is 100 (1mV = 100mA).
Using a simple, minimalistic device tree as:
/dts-v1/;
#include "k3-am625.dtsi"
#include "k3-am62-verdin.dtsi"
//#include "k3-am62-verdin-wifi.dtsi"
/ {
model = "Datamars Midrange Indicator";
compatible = "datamars,midrange-indicator",
"toradex,verdin-am62-wifi-dev",
"toradex,verdin-am62-wifi",
"toradex,verdin-am62",
"ti,am625";
};
/dts-v1/;
#include "k3-am625.dtsi"
#include "k3-am62-verdin.dtsi"
/ {
compatible = "datamars,midrange-indicator",
"toradex,verdin-am62-wifi-dev",
"toradex,verdin-am62-wifi",
"toradex,verdin-am62",
"ti,am625";
};
/* ===== Power-prune overrides for deep sleep testing ===== */
/* Keep console UART alive for monitoring */
&main_uart0 {
status = "okay";
/delete-property/ wakeup-source;
};
/* Disable Wi‑Fi/BT (SDIO + UART5) */
&sdhci2 {
status = "disabled";
};
&main_uart5 {
status = "disabled";
};
/* Disable Ethernet MAC + PHY */
&cpsw3g {
status = "disabled";
};
&cpsw_port1 {
status = "disabled";
};
&cpsw_port2 {
status = "disabled";
};
&cpsw3g_mdio {
status = "disabled";
};
/* Ensure Ethernet regulators power down in suspend */
®_1v0_eth {
regulator-state-mem {
regulator-off-in-suspend;
};
};
®_1v8_eth {
regulator-state-mem {
regulator-off-in-suspend;
};
};
/* Disable USB connector node and force VBUS off in suspend */
&{/connector} {
status = "disabled";
};
®_usb0_vbus {
regulator-state-mem {
regulator-off-in-suspend;
};
};
/* Tame eMMC host (disable CQE to allow full suspend) */
&sdhci0 {
disable-cqe;
};
In the sdk configuration, the flags related to power management are set:
CONFIG_PM=y
CONFIG_PM_DEBUG=y
CONFIG_PM_SLEEP=y
Anyway, as we send the command to go in deep sleep
echo mem > /sys/power/state
we see on multimeter the drop from 2.2mV to 0.9mV. That means, 90mA power consumption in deep sleep of the module that is too high.
It is clear that the disable of the peripherals in the device tree overlay itself is not enough to cut all the non required power sources.
How can we get a clue of which modules are not properly switched off?
Is there a set of already known instructions or console commands that must be executed before giving the command to go in deep sleep?