Files
linux-nv-oot/include/linux/platform/tegra/dce/dce-client-ipc.h
Laxman Dewangan b20c5f57e3 dce: Use SPDX license GPL 2.0-only format
Use SPDX license GPL-V2.0 format and change Nvidia
copyright year to include 2023.

Bug 4078035

Change-Id: Icc0060431eb8d9c470a44f4cee50913cc1d8048a
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2890656
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Arun Swain <arswain@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
2023-04-21 11:41:56 -07:00

79 lines
2.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2019-2023, NVIDIA CORPORATION. All rights reserved.
*/
#ifndef TEGRA_DCE_CLIENT_IPC_H
#define TEGRA_DCE_CLIENT_IPC_H
#define DCE_CLIENT_IPC_TYPE_CPU_RM 0U
#define DCE_CLIENT_IPC_TYPE_HDCP_KMD 1U
#define DCE_CLIENT_IPC_TYPE_RM_EVENT 2U
#define DCE_CLIENT_IPC_TYPE_MAX 3U
#define DCE_CLIENT_MAX_IPC_MSG_SIZE 4096
/**
* struct dce_ipc_message - Contains necessary info for an ipc msg.
*
* @tx : transmit message info
* @rx : receive message info
*/
struct dce_ipc_message {
struct {
void *data;
size_t size;
} tx;
struct {
void *data;
size_t size;
} rx;
};
/*
* tegra_dce_client_ipc_callback_t - callback function to notify the
* client when the CPU Driver receives an IPC from DCE for the client.
*
* @client_id: id that represents the corresponding client.
* @interface_type: Interface on which the IPC was received.
* @msg_length: Length of the message.
* @msg_data: Message data.
* @usr_ctx: Any user context if present.
*/
typedef void (*tegra_dce_client_ipc_callback_t)(u32 handle,
u32 interface_type, u32 msg_length,
void *msg_data, void *usr_ctx);
/*
* tegra_dce_register_ipc_client() - used by clients to register with dce driver
* @interface_type: Interface for which this client is expected to send rpcs and
* receive callbacks.
* @callback_fn: callback function to be called by DCE driver on receiving IPCs
* from DCE on this interface.
* @usr_ctx: Any user context if present.
*
* Return: valid client_id if no errors else corresponding error value.
*/
int tegra_dce_register_ipc_client(u32 interface_type,
tegra_dce_client_ipc_callback_t callback_fn,
void *usr_ctx, u32 *handlep);
/*
* tegra_dce_unregister_client() - used by clients to unregister to dce driver
* @client_id : ointer to client's data
*
* Return: 0 if no errors else corresponding error value.
*/
int tegra_dce_unregister_ipc_client(u32 handle);
/*
* tegra_dce_client_ipc_send_recv() - used by clients to send rpcs to dce
* @client_id : client_id registered with dce driver
* @msg : message to be sent and received
*
* Return: 0 if no errors else corresponding error value.
*/
int tegra_dce_client_ipc_send_recv(u32 handle, struct dce_ipc_message *msg);
#endif