mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-29 12:19:39 +00:00
![Abhyuday Godhasara](/assets/img/avatar_default.png)
As per the current implementation only single callback data gets saved per event, driver is throwing an error if try to register multiple callback for same event. So at time of unregistration of any event required things are event details and callback handler as parameter of xlnx_unregister_event(). As part of adding support of multiple callbacks for same event also require change in prototype of xlnx_unregister_event(). During unregistration of any events, now required things are event details, callback handler and agent's private data as parameter of xlnx_unregister_event(). Also modify the usage of xlnx_unregister_event() in xilinx/zynqmp_power.c driver as per new implementation. Signed-off-by: Abhyuday Godhasara <abhyuday.godhasara@xilinx.com> Link: https://lore.kernel.org/r/20220427074803.19009-3-abhyuday.godhasara@xilinx.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _FIRMWARE_XLNX_EVENT_MANAGER_H_
|
|
#define _FIRMWARE_XLNX_EVENT_MANAGER_H_
|
|
|
|
#include <linux/firmware/xlnx-zynqmp.h>
|
|
|
|
#define CB_MAX_PAYLOAD_SIZE (4U) /*In payload maximum 32bytes */
|
|
|
|
/************************** Exported Function *****************************/
|
|
|
|
typedef void (*event_cb_func_t)(const u32 *payload, void *data);
|
|
|
|
#if IS_REACHABLE(CONFIG_XLNX_EVENT_MANAGER)
|
|
int xlnx_register_event(const enum pm_api_cb_id cb_type, const u32 node_id,
|
|
const u32 event, const bool wake,
|
|
event_cb_func_t cb_fun, void *data);
|
|
|
|
int xlnx_unregister_event(const enum pm_api_cb_id cb_type, const u32 node_id,
|
|
const u32 event, event_cb_func_t cb_fun, void *data);
|
|
#else
|
|
static inline int xlnx_register_event(const enum pm_api_cb_id cb_type, const u32 node_id,
|
|
const u32 event, const bool wake,
|
|
event_cb_func_t cb_fun, void *data)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline int xlnx_unregister_event(const enum pm_api_cb_id cb_type, const u32 node_id,
|
|
const u32 event, event_cb_func_t cb_fun, void *data)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
#endif
|
|
|
|
#endif /* _FIRMWARE_XLNX_EVENT_MANAGER_H_ */
|