Files
linux-nv-oot/include/linux/tegra-capture-ivc.h
Frank Chen 304123a3bf video: camera: Port RTCPU drivers to OOT tree
Port RTCPU drivers from kernel/nvidia to kernel/nvidia-oot.
In addition to copying the files this patch:
1) Modifies make files to build rtcpu drivers as modules
2) Modifies licenses of all ported files to SPDX
3) Adds MODULE_LICENSE macro to all modules
4) Removes checks for old kernel versions and the dead code after those checks
5) Fixes style errors according to checkpatch.pl

Change-Id: If64296a22ce958e5326c7509cb69f8f7154f598e
Signed-off-by: Frank Chen <frankc@nvidia.com>
Signed-off-by: Matti Ryttylainen <mryttylainen@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2783040
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Ankur Pawar <ankurp@nvidia.com>
Reviewed-by: Semi Malinen <smalinen@nvidia.com>
Reviewed-by: Pekka Pessi <ppessi@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
2022-12-01 11:00:35 -08:00

137 lines
4.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*/
#ifndef INCLUDE_CAPTURE_IVC_H
#define INCLUDE_CAPTURE_IVC_H
#include <linux/types.h>
/**
* @brief Submit the control message binary blob to capture-IVC driver,
* which is to be transferred over control IVC channel to RTCPU.
*
* @param[in] control_desc binary blob containing control message
* descriptor, is opaque to capture-IVC driver.
* @param[in] len size of control_desc.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_control_submit(
const void *control_desc,
size_t len);
/**
* @brief Submit the capture message binary blob to capture-IVC driver,
* which is to be transferred over capture IVC channel to RTCPU.
*
* @param[in] capture_desc binary blob containing capture message
* descriptor, is opaque to KMDs.
* @param[in] len size of capture_desc.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_capture_submit(
const void *capture_desc,
size_t len);
/**
* @brief Callback function to be registered by client to receive the rtcpu
* notifications through control or capture IVC channel.
*
* @param[in] resp_desc binary blob containing the response message
* received from rtcpu through control or capture
* IVC channel, its opaque to KMDs.
* @param[in] priv_context Client's private context, opaque to
* capture-IVC driver.
*/
typedef void (*tegra_capture_ivc_cb_func)(
const void *resp_desc,
const void *priv_context);
/**
* @brief Register callback function to receive response messages from rtcpu
* through control IVC channel.
*
* @param[in] control_resp_cb callback function to be registered for
* control IVC channel.
* @param[in] priv_context client's private context, opaque to
* capture-IVC driver.
* @param[out] trans_id temporary id assigned by capture-IVC driver,
* for the clients whose unique chan_id is not
* yet allocated by RTCPU, to match their
* responses with the requests.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_register_control_cb(
tegra_capture_ivc_cb_func control_resp_cb,
uint32_t *trans_id,
const void *priv_context);
/**
* @brief Notify clients channel ID to capture-IVC driver.
* Once client gets the newly allocated channel ID from RTCPU, it has to
* notify it to capture-IVC driver also, so that it can replace the
* temporary ID trans_id with the new channel ID chan_id in its internal
* context. IVC driver uses this unique channel ID for mapping upcoming
* responses with the client requests.
*
* @param[in] chan_id new channel id allocated by RTCPU for the
* client, capture-IVC driver uses to refer the
* client for its future control responses.
* @param[in] trans_id temporary id assigned by capture-IVC driver,
* for the client.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_notify_chan_id(
uint32_t chan_id,
uint32_t trans_id);
/**
* @brief Register callback function to receive status-indication messages from
* rtcpu through capture IVC channel.
*
* @param[in] capture_status_ind_cb callback function to be registered for
* capture ivc channel.
* @param[in] chan_id client's channel id, capture-IVC driver
* uses it refer the client for its capture
* responses.
* @param[in] priv_context client's private context, opaque to
* capture-IVC driver.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_register_capture_cb(
tegra_capture_ivc_cb_func capture_status_ind_cb,
uint32_t chan_id,
const void *priv_context);
/**
* @brief Un-register callback function to stop receiving messages over
* control ivc channel.
*
* @param[in] id client's channel id or transaction id, for which the
* callback needs to be unregistered.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_unregister_control_cb(
uint32_t id);
/**
* @brief Un-register callback function to stop receiving messages over
* capture ivc channel.
*
* @param[in] chan_id client's channel id, for which the callback needs to be
* unregistered.
*
* @returns 0 (success), neg. errno (failure)
*/
int tegra_capture_ivc_unregister_capture_cb(
uint32_t chan_id);
#endif /* INCLUDE_CAPTURE_IVC_H */