linux/drivers/mailbox
AngeloGioacchino Del Regno 8afe816b0c mailbox: mtk-cmdq-mailbox: Implement Runtime PM with autosuspend
MediaTek found an issue with display HW registers configuration, and
located the reason in the CMDQ Mailbox driver; reporting the original
comment with the analysis of this problem by Jason-JH Lin:

  GCE should config HW in every vblanking duration.
  The stream done event is the start signal of vblanking.

  If stream done event is sent between GCE clk_disable
  and clk_enable. After GCE clk_enable the stream done event
  may not appear immediately and have about 3us delay.

  Normal case:
  clk_disable -> get EventA -> clk_enable -> clear EventA
  -> wait EventB -> get EventB -> config HW

  Abnormal case:
  clk_disable -> get EventA -> clk_enable -> EventA delay appear
  -> clear EventA fail -> wait EventB but get EventA -> config HW
  This abnormal case may configure display HW in the vactive or
  non-vblanking duration.

From his analysis we get that the GCE may finish its event processing
after some amount of time (and not immediately after sending commands
to it); since the GCE is used for more than just display, and it gets
used frequently, solve this issue by implementing Runtime PM handlers
with autosuspend: this allows us to overcome to the remote processor
delay issues and reduce the clock enable()/disable() calls, while also
still managing to save some power, which is something that we wouldn't
be able to do if we just enable the GCE clocks at probe.

Speaking of which: if Runtime PM is not available there will obviously
be no way to get this power saving action so, in this case, the clocks
will be enabled at probe() time, kept enabled for the entire driver's
life and disabled at remove().

Reported-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tested-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
2023-10-15 12:39:16 -05:00
..
apple-mailbox.c mailbox: apple: Implement poll_data() operation 2022-09-15 13:14:01 -05:00
arm_mhu_db.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
arm_mhu.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
arm_mhuv2.c mailbox: arm_mhuv2: Fix return value check in mhuv2_probe() 2022-12-18 20:40:30 -06:00
armada-37xx-rwtm-mailbox.c treewide: change my e-mail address, fix my name 2021-04-09 14:54:23 -07:00
bcm-flexrm-mailbox.c mailbox: bcm-ferxrm-mailbox: Use devm_platform_get_and_ioremap_resource() 2023-09-05 10:10:42 -05:00
bcm-pdc-mailbox.c mailbox: Use device_get_match_data() 2023-10-15 12:39:16 -05:00
bcm2835-mailbox.c mailbox: bcm2835: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:48 -05:00
hi3660-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
hi6220-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
imx-mailbox.c mailbox: imx: support channel type tx doorbell v2 2023-10-15 12:39:16 -05:00
Kconfig - mailbox api: allow direct registration to a channel 2023-05-07 10:17:33 -07:00
mailbox-altera.c mailbox: altera: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:48 -05:00
mailbox-mpfs.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
mailbox-sti.c mailbox: Use device_get_match_data() 2023-10-15 12:39:16 -05:00
mailbox-test.c mailbox: mailbox-test: Fix an error check in mbox_test_probe() 2023-09-05 10:10:42 -05:00
mailbox-xgene-slimpro.c mailbox: xgene-slimpro: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:49 -05:00
mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
mailbox.h mailbox: fix various typos in comments 2021-04-13 20:07:35 -05:00
Makefile mailbox: mediatek: add support for adsp mailbox controller 2022-03-12 19:24:57 -06:00
mtk-adsp-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
mtk-cmdq-mailbox.c mailbox: mtk-cmdq-mailbox: Implement Runtime PM with autosuspend 2023-10-15 12:39:16 -05:00
omap-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
pcc.c mailbox: pcc: Use mbox_bind_client 2023-04-18 11:48:56 -05:00
pl320-ipc.c mailbox: fix various typos in comments 2021-04-13 20:07:35 -05:00
platform_mhu.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
qcom-apcs-ipc-mailbox.c mailbox: qcom-apcs-ipc: do not grow the of_device_id 2023-05-04 00:59:56 -05:00
qcom-ipcc.c mailbox: qcom-ipcc: fix incorrect num_chans counting 2023-09-05 10:11:01 -05:00
rockchip-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
sprd-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
stm32-ipcc.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
sun6i-msgbox.c mailbox: sun6i: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:49 -05:00
tegra-hsp.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
ti-msgmgr.c mailbox: Use device_get_match_data() 2023-10-15 12:39:16 -05:00
zynqmp-ipi-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00