Global General Storage Registers

Zynq UltraScale plus MPSoC Power Management

Release Date
2022-07-26

Four 32-bit storage registers are available for general use. Their values are not preserved across after software reboots.

For ZynqMP:

Device file MMIO Register MMIO Access Valid Value Range
<firmware-node>/ggs0 GLOBAL_GEN_STORAGE0 0xFFD80030 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs1 GLOBAL_GEN_STORAGE1 0xFFD80034 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs2 GLOBAL_GEN_STORAGE2 0xFFD80038 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs3 GLOBAL_GEN_STORAGE3 0xFFD8003C 0x00000000 - 0xFFFFFFFF

For Versal:

Note: PLM uses PMC RAM for storing GGS values as Life of GGS registers and PMC RAM is same. So there is no fixed hardware register is involved.

Device file MMIO Register MMIO Access Valid Value Range
<firmware-node>/ggs0 NA NA 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs1 NA NA 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs2 NA NA 0x00000000 - 0xFFFFFFFF
<firmware-node>/ggs3 NA NA 0x00000000 - 0xFFFFFFFF

Read the value of a global storage register:

$ cat /sys/devices/platform/firmware:zynqmp-firmware/ggs0
# Note: For version before 2022.1
# cat /sys/firmware-zynqmp/ggs0

Write the mask and value of a global storage register:

$ echo 0xFFFFFFFF 0x1234ABCD > /sys/devices/platform/firmware:zynqmp-firmware/ggs0
# Note: For version before 2022.1
# echo 0xFFFFFFFF 0x1234ABCD > /sys/firmware-zynqmp/ggs0