No, that's not how it works. It would go like this:
The modem IRQ handler queues its event to the input subsystem.
As it does so the input subsystem enables a suspend blocker,
causing the system to stay awake after the IRQ is done.
The user program enables its own suspend blocker before reading
the input queue. When the queue is empty, the input subsystem
releases its suspend blocker.
When the user program finishes processing the event, it
releases its suspend blocker. Now the system can go back to
sleep.
At no point does the user program have to communicate anything to the
modem driver, and at no point does it have to do anything out of the
ordinary except to enable and disable a suspend blocker.
Alan Stern
--