• Dave Gerlach's avatar
    mailbox/omap: Add ti,mbox-send-noirq quirk to fix AM33xx CPU Idle · 8e3c5952
    Dave Gerlach authored
    The mailbox framework controls the transmission queue and requires
    either its controller implementations or clients to run the state
    machine for the Tx queue. The OMAP mailbox controller uses a Tx-ready
    interrupt as the equivalent of a Tx-done interrupt to run this Tx
    queue state-machine.
    
    The WkupM3 processor on AM33xx and AM43xx SoCs is used to offload
    certain PM tasks, like doing the necessary operations for Device
    PM suspend/resume or for entering lower c-states during cpuidle.
    
    The CPUIdle on AM33xx requires the messages to be sent without
    having to trigger the Tx-ready interrupts, as the interrupt
    would immediately terminate the CPUIdle operation. Support for
    this has been added by introducing a DT quirk, "ti,mbox-send-noirq"
    and using it to modify the normal OMAP mailbox controller behavior
    on the sub-mailboxes used to communicate with the WkupM3 remote
    processor. This also requires the wkup_m3_ipc driver to adjust
    its mailbox usage logic to run the Tx state machine.
    
    NOTE:
    - AM43xx does not communicate with WkupM3 for CPU Idle, so is
      not affected by this behavior. But, it uses the same IPC driver
      for PM suspend/resume functionality, so requires the quirk as
      well, because of changes to the common wkup_m3_ipc driver.
    Signed-off-by: default avatarDave Gerlach <d-gerlach@ti.com>
    [s-anna@ti.com: revise logic and update comments/patch description]
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    Signed-off-by: default avatarJassi Brar <jaswinder.singh@linaro.org>
    8e3c5952
omap-mailbox.c 22.4 KB