Using PMU GPOs to control power states

Zynq UltraScale plus MPSoC Power Management

Release Date
2023-04-24

There are 32 PMU->PL General Purpose Outputs (GPOs) provided for general purpose usage. These are like EMIOs, but they can only be accessed and controlled by PMU. These GPOs can be re-purposed to be used as resets, clock-gates, sleep controls or power mode switches for PL IPs.

Here is a screen shot on enabling these GPOs in Vivado PCW wizard:

Here is a screen shot of a design which uses GPO[0] as a sleep control signal for BRAM:

PMUFW provides EEMI reset control APIs to change the state of these GPOs. The node IDs for these GPOs are provided below:

PM_RESET_GPO3_PL_0

1081

PM_RESET_GPO3_PL_1

1082

PM_RESET_GPO3_PL_2

1083

PM_RESET_GPO3_PL_3

1084

PM_RESET_GPO3_PL_4

1085

PM_RESET_GPO3_PL_5

1086

PM_RESET_GPO3_PL_6

1087

PM_RESET_GPO3_PL_7

1088

PM_RESET_GPO3_PL_8

1089

PM_RESET_GPO3_PL_9

1090

PM_RESET_GPO3_PL_10

1091

PM_RESET_GPO3_PL_11

1092

PM_RESET_GPO3_PL_12

1093

PM_RESET_GPO3_PL_13

1094

PM_RESET_GPO3_PL_14

1095

PM_RESET_GPO3_PL_15

1096

PM_RESET_GPO3_PL_16

1097

PM_RESET_GPO3_PL_17

1098

PM_RESET_GPO3_PL_18

1099

PM_RESET_GPO3_PL_19

1100

PM_RESET_GPO3_PL_20

1101

PM_RESET_GPO3_PL_21

1102

PM_RESET_GPO3_PL_22

1103

PM_RESET_GPO3_PL_23

1104

PM_RESET_GPO3_PL_24

1105

PM_RESET_GPO3_PL_25

1106

PM_RESET_GPO3_PL_26

1107

PM_RESET_GPO3_PL_27

1108

PM_RESET_GPO3_PL_28

1109

PM_RESET_GPO3_PL_29

1110

PM_RESET_GPO3_PL_30

1111

PM_RESET_GPO3_PL_31

1112

Here is a debugfs example of these APIs which can control the PMU->PL GPOs:

# Control PMU->PL GPO[0]- set to 1 echo pm_reset_assert 1081 1 >/sys/kernel/debug/zynqmp-firmware/pm