blob: 3d92697628a2012fc0d45fe19b62c4be30771e1b [file] [log] [blame]
/*
* Google LWIS Declarations of Platform-specific DMA Functions
*
* Copyright (c) 2018 Google, LLC
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef LWIS_PLATFORM_DMA_H_
#define LWIS_PLATFORM_DMA_H_
#include <linux/dma-buf.h>
#include "lwis_device.h"
#include "lwis_buffer.h"
/* Allocates a DMA buffer of size of PAGE_ALIGN(len) with allocation flags.
* This returns dma_buf structure or an ERR_PTR on error.
*/
struct dma_buf *lwis_platform_dma_buffer_alloc(size_t len, unsigned int flags);
/*
* Does the actual platform specific parts of mapping a DMA buffer into the
* device memory space, returning an IOMMU DMA virtual-address or an ERR_PTR
* on error.
*/
dma_addr_t lwis_platform_dma_buffer_map(struct lwis_device *lwis_dev,
struct lwis_enrolled_buffer *lwis_buffer, off_t offset,
size_t size, int flags);
/*
* Does the actual platform specific parts of unmapping a DMA buffer from the
* device memory space.
*/
int lwis_platform_dma_buffer_unmap(struct lwis_device *lwis_dev,
struct dma_buf_attachment *attachment, dma_addr_t address);
#endif /* LWIS_PLATFORM_DMA_H_ */