firmware: xilinx: add register notifier in zynqmp firmware

In zynqmp-firmware, register notifier is not supported, add support of
register notifier in zynqmp-firmware.

Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Tejas Patel <tejas.patel@xilinx.com>
Signed-off-by: Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
Link: https://lore.kernel.org/r/20211026042525.26612-2-abhyuday.godhasara@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Abhyuday Godhasara 2021-10-25 21:25:20 -07:00 committed by Greg Kroah-Hartman
parent fbf3443f77
commit 1881eadb20
2 changed files with 33 additions and 1 deletions

View File

@ -1116,6 +1116,29 @@ int zynqmp_pm_aes_engine(const u64 address, u32 *out)
} }
EXPORT_SYMBOL_GPL(zynqmp_pm_aes_engine); EXPORT_SYMBOL_GPL(zynqmp_pm_aes_engine);
/**
* zynqmp_pm_register_notifier() - PM API for register a subsystem
* to be notified about specific
* event/error.
* @node: Node ID to which the event is related.
* @event: Event Mask of Error events for which wants to get notified.
* @wake: Wake subsystem upon capturing the event if value 1
* @enable: Enable the registration for value 1, disable for value 0
*
* This function is used to register/un-register for particular node-event
* combination in firmware.
*
* Return: Returns status, either success or error+reason
*/
int zynqmp_pm_register_notifier(const u32 node, const u32 event,
const u32 wake, const u32 enable)
{
return zynqmp_pm_invoke_fn(PM_REGISTER_NOTIFIER, node, event,
wake, enable, NULL);
}
EXPORT_SYMBOL_GPL(zynqmp_pm_register_notifier);
/** /**
* zynqmp_pm_system_shutdown - PM call to request a system shutdown or restart * zynqmp_pm_system_shutdown - PM call to request a system shutdown or restart
* @type: Shutdown or restart? 0 for shutdown, 1 for restart * @type: Shutdown or restart? 0 for shutdown, 1 for restart

View File

@ -2,7 +2,7 @@
/* /*
* Xilinx Zynq MPSoC Firmware layer * Xilinx Zynq MPSoC Firmware layer
* *
* Copyright (C) 2014-2019 Xilinx * Copyright (C) 2014-2021 Xilinx
* *
* Michal Simek <michal.simek@xilinx.com> * Michal Simek <michal.simek@xilinx.com>
* Davorin Mista <davorin.mista@aggios.com> * Davorin Mista <davorin.mista@aggios.com>
@ -66,6 +66,7 @@
enum pm_api_id { enum pm_api_id {
PM_GET_API_VERSION = 1, PM_GET_API_VERSION = 1,
PM_REGISTER_NOTIFIER = 5,
PM_SYSTEM_SHUTDOWN = 12, PM_SYSTEM_SHUTDOWN = 12,
PM_REQUEST_NODE = 13, PM_REQUEST_NODE = 13,
PM_RELEASE_NODE = 14, PM_RELEASE_NODE = 14,
@ -427,6 +428,8 @@ int zynqmp_pm_pinctrl_get_config(const u32 pin, const u32 param,
int zynqmp_pm_pinctrl_set_config(const u32 pin, const u32 param, int zynqmp_pm_pinctrl_set_config(const u32 pin, const u32 param,
u32 value); u32 value);
int zynqmp_pm_load_pdi(const u32 src, const u64 address); int zynqmp_pm_load_pdi(const u32 src, const u64 address);
int zynqmp_pm_register_notifier(const u32 node, const u32 event,
const u32 wake, const u32 enable);
#else #else
static inline int zynqmp_pm_get_api_version(u32 *version) static inline int zynqmp_pm_get_api_version(u32 *version)
{ {
@ -658,6 +661,12 @@ static inline int zynqmp_pm_load_pdi(const u32 src, const u64 address)
{ {
return -ENODEV; return -ENODEV;
} }
static inline int zynqmp_pm_register_notifier(const u32 node, const u32 event,
const u32 wake, const u32 enable)
{
return -ENODEV;
}
#endif #endif
#endif /* __FIRMWARE_ZYNQMP_H__ */ #endif /* __FIRMWARE_ZYNQMP_H__ */