blob: ee3df59bde0a543e997ef4495391fdfb25cd2da4 [file] [log] [blame]
Lingfeng Yang88c170c2016-11-30 00:52:35 +00001/*
2 * Copyright (C) 2016 Google, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 */
14
15#ifndef ANDROID_INCLUDE_HARDWARE_GOLDFISH_DMA_H
16#define ANDROID_INCLUDE_HARDWARE_GOLDFISH_DMA_H
17
Lingfeng Yange38d15c2018-09-24 16:24:01 -070018#include <inttypes.h>
Lingfeng Yang88c170c2016-11-30 00:52:35 +000019
20// userspace interface
21struct goldfish_dma_context {
Roman Kiryanov96a068f2018-06-13 17:05:05 -070022 uint64_t mapped_addr;
23 uint32_t size;
24 int32_t fd;
Lingfeng Yang88c170c2016-11-30 00:52:35 +000025};
26
Lingfeng Yang88c170c2016-11-30 00:52:35 +000027int goldfish_dma_create_region(uint32_t sz, struct goldfish_dma_context* res);
28
29void* goldfish_dma_map(struct goldfish_dma_context* cxt);
30int goldfish_dma_unmap(struct goldfish_dma_context* cxt);
31
32void goldfish_dma_write(struct goldfish_dma_context* cxt,
Roman Kiryanov96a068f2018-06-13 17:05:05 -070033 const void* to_write,
Lingfeng Yang88c170c2016-11-30 00:52:35 +000034 uint32_t sz);
35
36void goldfish_dma_free(goldfish_dma_context* cxt);
Roman Kiryanovbe1c0c22018-10-02 18:07:14 -070037uint64_t goldfish_dma_guest_paddr(const struct goldfish_dma_context* cxt);
Lingfeng Yang88c170c2016-11-30 00:52:35 +000038
39#endif