Withdrawing this patch. The root cause turned out to be a userspace script running SimulateUserActivity in a loop, which prevented DPMS from ever cycling. With DPMS working correctly, the HDMI link re-negotiates on wake without any kernel changes needed.
Apologies for the noise. Miguel Sedek
