linux/include/linux/dma-heap.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * DMABUF Heaps Allocation Infrastructure
   4 *
   5 * Copyright (C) 2011 Google, Inc.
   6 * Copyright (C) 2019 Linaro Ltd.
   7 */
   8
   9#ifndef _DMA_HEAPS_H
  10#define _DMA_HEAPS_H
  11
  12#include <linux/cdev.h>
  13#include <linux/types.h>
  14
  15struct dma_heap;
  16
  17/**
  18 * struct dma_heap_ops - ops to operate on a given heap
  19 * @allocate:           allocate dmabuf and return struct dma_buf ptr
  20 *
  21 * allocate returns dmabuf on success, ERR_PTR(-errno) on error.
  22 */
  23struct dma_heap_ops {
  24        struct dma_buf *(*allocate)(struct dma_heap *heap,
  25                                    unsigned long len,
  26                                    unsigned long fd_flags,
  27                                    unsigned long heap_flags);
  28};
  29
  30/**
  31 * struct dma_heap_export_info - information needed to export a new dmabuf heap
  32 * @name:       used for debugging/device-node name
  33 * @ops:        ops struct for this heap
  34 * @priv:       heap exporter private data
  35 *
  36 * Information needed to export a new dmabuf heap.
  37 */
  38struct dma_heap_export_info {
  39        const char *name;
  40        const struct dma_heap_ops *ops;
  41        void *priv;
  42};
  43
  44/**
  45 * dma_heap_get_drvdata() - get per-heap driver data
  46 * @heap: DMA-Heap to retrieve private data for
  47 *
  48 * Returns:
  49 * The per-heap data for the heap.
  50 */
  51void *dma_heap_get_drvdata(struct dma_heap *heap);
  52
  53/**
  54 * dma_heap_get_name() - get heap name
  55 * @heap: DMA-Heap to retrieve private data for
  56 *
  57 * Returns:
  58 * The char* for the heap name.
  59 */
  60const char *dma_heap_get_name(struct dma_heap *heap);
  61
  62/**
  63 * dma_heap_add - adds a heap to dmabuf heaps
  64 * @exp_info:           information needed to register this heap
  65 */
  66struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info);
  67
  68#endif /* _DMA_HEAPS_H */
  69