3.3.8. Debug Information

3.3.8.1. Low Power Modes

As described in the S/W Architecture section, implementing Low Power Modes like Deep Sleep requires a synchronization between multiple software components. Debugging a LPM issue requires finding out which component (Linux, TF-A, TIFS or DM R5) might be at fault.

The comprehensive way of debugging Deep Sleep starts by looking at all the commands that have been executed by the DM R5. The steps for getting this trace and interpreting the logs has been documented in the following FAQ: How can we debug Deep Sleep on AM62x/AM62A/AM62P using SYSFW Trace?

3.3.8.1.1. Decoding set constraint debug messages

The logs after resume can be used to debug the constraints sent during suspend. Alternatively, the console suspend can be delayed to get these logs at suspend time using the below command:

root@<machine>:~# echo N | sudo tee /sys/module/printk/parameters/console_suspend

Device constraints

Example of setting device constraint is shown below.

[   45.640758] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 179: state: 1: ret 0

The above log implies that the device constraint has been set (state: 1) on device 179 successfully (ret: 0) The device can be found using

Interpreting the device number

The device: X contains information about which device the constraint is set on. This will essentially be the same as the number in front of k3_pds as shown below: (It’s 179 for usb1)

usbss1: dwc3-usb@f910000 {
        compatible = "ti,am62-usb";
        reg = <0x00 0x0f910000 0x00 0x800>,
              <0x00 0x0f918000 0x00 0x400>;
        clocks = <&k3_clks 162 3>;
        clock-names = "ref";
        ti,syscon-phy-pll-refclk = <&usb1_phy_ctrl 0x0>;
        #address-cells = <2>;
        #size-cells = <2>;
        power-domains = <&k3_pds 179 TI_SCI_PD_EXCLUSIVE>;
        ranges;
        status = "disabled";

        usb1: usb@31100000 {
                compatible = "snps,dwc3";
                reg =<0x00 0x31100000 0x00 0x50000>;
                interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "host", "peripheral";
                maximum-speed = "high-speed";
                dr_mode = "otg";
        };
};

Latency constraint

[   45.648993] cpu cpu3: ti_sci_suspend: sending max CPU latency=100
[   45.649033] ti-sci 44043000.system-controller: ti_sci_cmd_set_latency_constraint: latency: 100: state: 1: ret 0

The above log implies that the latency constraint has been set (state: 1) by system CPUs successfully (ret: 0)