blob: 278e035509bfc5b9df315c122674a7e293174b79 [file] [log] [blame]
Lingfeng Yang92a62a92020-05-01 10:59:52 -07001// Copyright 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Lingfeng Yang88c170c2016-11-30 00:52:35 +000014
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