mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 09:22:08 +00:00

Add support to register subsystem restart events from firmware for Versal and Versal NET platforms. This event is received when firmware requests for subsystem restart. After receiving this event, the kernel needs to be restarted. Signed-off-by: Jay Buddhabhatti <jay.buddhabhatti@amd.com> Link: https://lore.kernel.org/r/20240424124900.29287-1-jay.buddhabhatti@amd.com Signed-off-by: Michal Simek <michal.simek@amd.com>
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Xilinx Event Management Driver
|
|
*
|
|
* Copyright (C) 2024, Advanced Micro Devices, Inc.
|
|
*/
|
|
|
|
#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 */
|
|
|
|
#define EVENT_SUBSYSTEM_RESTART (4U)
|
|
|
|
#define PM_DEV_ACPU_0_0 (0x1810c0afU)
|
|
#define PM_DEV_ACPU_0 (0x1810c003U)
|
|
|
|
/************************** 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_ */
|