Power Management for the Devices - 2023.1 English

Zynq UltraScale+ MPSoC Software Developer Guide (UG1137)

Document ID
UG1137
Release Date
2023-08-04
Version
2023.1 English

Clock Gating

Stop device clocks when they are not being used (also called Common Clock Framework.) The kernel configurations required are:

  • Common Clock Framework
    • [*] Support for AMD ZynqMP Ultrascale+ clock controllers

Runtime PM

Power off devices when they are not being used. Note that individual drivers may or may not support run-time power management. The kernel configurations required are:

  • Power management options
    • [*] Suspend to RAM and standby
  • Device Drivers
    • SoC (System-on-a-chip) specific drivers
      • [*] AMD SoC drivers
        • [*] Enable AMD Zynq MPSoC Power Management driver
        • [*] Enable Zynq MPSoC generic PM domains

Global General Storage Registers

Four 32-bit storage registers are available for general use. Their values are not preserved across after software reboots. The following table lists the global general storage registers.

Table 1. Global General Storage Registers
Device Node MMIO Register MMIO Address Valid Value Range
/sys/firmware/zynqmp/ggs0 GLOBAL_GEN_STORAGE0 0xFFD80030 0x00000000 - 0xFFFFFFFF
/sys/firmware/zynqmp/ggs1 GLOBAL_GEN_STORAGE1 0xFFD80034 0x00000000 - 0xFFFFFFFF
/sys/firmware/zynqmp/ggs2 GLOBAL_GEN_STORAGE2 0xFFD80038 0x00000000 - 0xFFFFFFFF
/sys/firmware/zynqmp/ggs3 GLOBAL_GEN_STORAGE3 0xFFD8003C 0x00000000 - 0xFFFFFFFF

Read the value of a global storage register:

$cat /sys/firmware/zynqmp/ggs0

Write the mask and value of a global storage register:

$echo 0xFFFFFFFF 0x1234ABCD > /sys/firmware/zynqmp/ggs0

Persistent Global General Storage Registers

Four 32-bit persistent global storage registers are available for general use. Their values are preserved across after software reboots. The lists the persistent global general storage registers.

Table 2. Persistent Global General Storage Registers
Device Node MMIO Register MMIO Address Valid Value Range
/sys/firmware/zynqmp/pggs0 PERS_GLOB_GEN_STORAGE0 0xFFD80050 0x00000000 -0xFFFFFFFF
/sys/firmware/zynqmp/pggs1 PERS_GLOB_GEN_STORAGE1 0xFFD80054 0x00000000 -0xFFFFFFFF
/sys/firmware/zynqmp/pggs2 PERS_GLOB_GEN_STORAGE2 0xFFD80058 0x00000000 -0xFFFFFFFF
/sys/firmware/zynqmp/pggs3 PERS_GLOB_GEN_STORAGE3 0xFFD8005C 0x00000000 -0xFFFFFFFF

Read the value of a persistent global storage register:

$cat /sys/firmware/zynqmp/pggs0

Write the mask and value of a persistent global storage register:

$echo 0xFFFFFFFF 0x1234ABCD > /sys/firmware/zynqmp/pggs0