blob: 38f8cf29301896517279366f5313e87f9c4d5c09 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* GXP support for DMA fence.
*
* Copyright (C) 2023 Google LLC
*/
#ifndef __GXP_DMA_FENCE_H__
#define __GXP_DMA_FENCE_H__
#include <gcip/gcip-dma-fence.h>
#include "gxp-vd.h"
#include "gxp.h"
/* Converts struct dma_fence to gxp_dma_fence. */
#define to_gxp_fence(fence) \
container_of(to_gcip_fence(fence), struct gxp_dma_fence, gfence)
struct gxp_dma_fence {
struct gcip_dma_fence gfence;
/* The owner of this DMA fence */
struct gxp_virtual_device *vd;
/* List of DMA fences owned by the same VD. */
struct list_head fence_list;
};
/*
* Creates a DMA fence associates with @vd.
*
* @datap->fence is set to the fence FD on success.
*
* Returns 0 on success. Otherwise a negative errno.
*/
int gxp_dma_fence_create(struct gxp_dev *gxp, struct gxp_virtual_device *vd,
struct gxp_create_sync_fence_data *datap);
#endif /* __GXP_DMA_FENCE_H__ */