@Matt Venn: Looking at the verilog for the GPIO pad control logic, it should always have a valid signal on the input line to the user project area whenever the management SoC cedes control of the GPIO to the user project. I looked at your code but didn't see anything obviously wrong, so I would have to clone your repo and debug.