linux/drivers/soc
Abhyuday Godhasara c7fdb2404f drivers: soc: xilinx: add xilinx event management driver
Xilinx event management driver provides an interface to subscribe or
unsubscribe for the event/callback supported by firmware. An agent can use
this driver to register for Error Event, Device Event and Suspend callback.
This driver only allows one agent per event to do registration. Driver will
return an error in case of multiple registration for the same event.

This driver gets notification from firmware through TF-A as SGI. During
initialization, event manager driver register handler for SGI used for
notification. It also provides SGI number info to TF-A by using
IOCTL_REGISTER_SGI call to TF-A.

After receiving notification from firmware, the driver makes an SMC call to
TF-A to get IPI data. From the IPI data provided by TF-A, event manager
identified the cause of event and forward that event/callback notification
to the respective subscribed driver. After this, in case of Error Event,
driver performs unregistration as firmware expecting from agent to do
re-registration if the agent wants to get notified on the second occurrence
of an error event.

Add new IOCTL id IOCTL_REGISTER_SGI = 25 which is used to register SGI on
TF-A.

Older firmware doesn't have all required support for event handling which
is required by the event manager driver. So add check for the register
notifier version in the event manager driver.

Xilinx event management driver provides support to subscribe for multiple
error events with the use of Event Mask in a single call of
xlnx_register_event(). Agent driver can provide 'Event' parameter value as
ORed of multiple event masks to register single callback for multiple
events. For example, to register callback for event=0x1 and event=0x2 for
the given node, agent can provide event=0x3 (0x1 | 0x2). It is not possible
to register multiple events for different nodes in a single registration
call.

Also provide support to receive multiple error events as in single
notification from firmware and then forward it to subscribed drivers via
registered callback one by one.

Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Tejas Patel <tejas.patel@xilinx.com>
Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com>
Signed-off-by: Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
Link: https://lore.kernel.org/r/20211129070216.30253-2-abhyuday.godhasara@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-12-03 16:08:46 +01:00
..
actions soc: actions: include header to fix missing prototype 2020-09-22 12:45:16 +05:30
amlogic soc: amlogic: meson-clk-measure: Make use of the helper function devm_platform_ioremap_resource() 2021-09-13 09:43:00 +02:00
aspeed soc: aspeed: Add UART routing support 2021-10-22 17:32:09 +02:00
atmel drivers: soc: atmel: fix type for same7 2021-02-04 21:54:31 +01:00
bcm soc: bcm: brcmstb: biuctrl: Tune MCP settings for 72116 2021-09-16 15:31:14 -07:00
canaan drivers: bus: Delete CONFIG_SIMPLE_PM_BUS 2021-10-05 17:47:22 +02:00
dove
fsl ARM: SoC fixes for v5.16 2021-11-10 11:25:37 -08:00
gemini
imx soc: imx: imx8m-blk-ctrl: off by one in imx8m_blk_ctrl_xlate() 2021-10-15 11:10:05 +08:00
ixp4xx soc: ixp4xx/qmgr: fix invalid __iomem access 2021-08-03 10:16:34 +02:00
lantiq
litex drivers/soc/litex: remove 8-bit subregister option 2021-06-11 04:35:40 +09:00
mediatek soc: mediatek: mmsys: Add reset controller support 2021-10-08 15:15:26 +02:00
qcom ARM: SoC drivers for 5.16 2021-11-03 17:00:52 -07:00
renesas soc: renesas: Identify more R-Car Gen3e SoCs 2021-09-13 10:56:29 +02:00
rockchip soc: rockchip: io-domain: Remove unneeded semicolon 2021-08-19 23:56:38 +02:00
samsung soc: samsung: exynos-chipid: add exynosautov9 SoC support 2021-10-26 09:16:53 +02:00
sifive RISC-V: sifive_l2_cache: Update L2 cache driver to support SiFive FU740 2021-01-07 17:28:27 -08:00
sunxi soc: sunxi_sram: Make use of the helper function devm_platform_ioremap_resource() 2021-09-13 09:04:05 +02:00
tegra soc/tegra: pmc: Use devm_platform_ioremap_resource() 2021-10-08 21:42:41 +02:00
ti Merge branch 'exit-cleanups-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2021-11-10 16:15:54 -08:00
ux500 soc: ux500: Use custom soc attribute group instead of device_create_file 2020-07-06 09:48:06 +01:00
versatile soc: integrator: Drop pointless static qualifier in integrator_soc_init() 2020-08-20 08:57:05 +02:00
xilinx drivers: soc: xilinx: add xilinx event management driver 2021-12-03 16:08:46 +01:00
Kconfig RISC-V Patches for the 5.12 Merge Window 2021-02-26 10:28:35 -08:00
Makefile ARM: ixp4xx: fix compile-testing soc drivers 2021-08-02 14:31:15 +02:00