pm.h basically defines the interface for suspend/hibernate/resume variants which are already hooked by the drm. There's nothing in there to handle arbitrary device power states. I'm not even sure how you could in a generic manner. Consider power states for a NIC vs a GPU vs. mouse, etc. Some asics may have hw controlled clock gating. Others might manually adjust clocks or turn off power to certain blocks. There are also device specific requirements like making sure there is enough memory bandwidth before downclocking vram or not putting a PHY in a low power state while a NIC is transmitting.
What interface would you propose that could handle arbitrary device power states with all sorts of device specific requirements? What common kernel pm interface would you recommend? I don't see one.