linux-next/drivers/mailbox
Huisong Li 3db174e478 mailbox: pcc: Support shared interrupt for multiple subspaces
If the platform acknowledge interrupt is level triggered, then it can
be shared by multiple subspaces provided each one has a unique platform
interrupt ack preserve and ack set masks.

If it can be shared, then we can request the irq with IRQF_SHARED and
IRQF_ONESHOT flags. The first one indicating it can be shared and the
latter one to keep the interrupt disabled until the hardirq handler
finished.

Further, since there is no way to detect if the interrupt is for a given
channel as the interrupt ack preserve and ack set masks are for clearing
the interrupt and not for reading the status(in case Irq Ack register
may be write-only on some platforms), we need a way to identify if the
given channel is in use and expecting the interrupt.

PCC type0, type1 and type5 do not support shared level triggered interrupt.
The methods of determining whether a given channel for remaining types
should respond to an interrupt are as follows:
 - type2: Whether the interrupt belongs to a given channel is only
          determined by the status field in Generic Communications Channel
          Shared Memory Region, which is done in rx_callback of PCC client.
 - type3: This channel checks chan_in_use flag first and then checks the
          command complete bit(value '1' indicates that the command has
          been completed).
 - type4: Platform ensure that the default value of the command complete
          bit corresponding to the type4 channel is '1'. This command
          complete bit is '0' when receive a platform notification.

The new field, 'chan_in_use' is used by the type only support the
communication from OSPM to Platform (like type3) and should be completely
ignored by other types so as to avoid too many type unnecessary checks in
IRQ handler.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
Link: https://lore.kernel.org/r/20230801063827.25336-3-lihuisong@huawei.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
2023-09-11 10:31:17 +01: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
bcm2835-mailbox.c mailbox: bcm2835: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:48 -05: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: bcm-pdc: Fix some kernel-doc comments 2023-09-05 10:10:42 -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: Explicitly include correct DT includes 2023-09-05 10:10:58 -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: sti: Make use of the helper function devm_platform_ioremap_resource() 2021-10-16 14:39:49 -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: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
omap-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00
pcc.c mailbox: pcc: Support shared interrupt for multiple subspaces 2023-09-11 10:31:17 +01: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: ti-msgmgr: Use devm_platform_ioremap_resource_byname() 2023-09-05 10:10:42 -05:00
zynqmp-ipi-mailbox.c mailbox: Explicitly include correct DT includes 2023-09-05 10:10:58 -05:00