The remote firmware does not need to know whether Linux is asleep. The GPIO is not used
to wake Linux directly; instead, it serves as a wake-up source for the remote firmware if configured
accordingly. Once the remote firmware is awake, it sends a notification message to Linux. This
notification is the actual event that wakes Linux.
This works because there is always a physical interface connecting Linux and the remote firmware.
On i.MX platforms, this interface is the MU block. When the remoteproc driver is running, the MU
block is automatically configured as a wake-up source for Linux by default. As a result, the notification
message can wake the Linux system if it is asleep.
You need to add a lot more documentation to the specification to make
this clear. As you said, the firmware and Linux have different
sleep/wake life cycles. How does the firmware know it is safe to go to
sleep, if it has no idea Linux is running or suspended?
Andrew