~thopiekar/arm-mali/libvdpau-sunxi

« back to all changes in this revision

Viewing changes to kernel-headers/ion_sunxi.h

  • Committer: Jens Kuske
  • Date: 2016-02-16 13:12:22 UTC
  • Revision ID: git-v1:685769372a8281bf67046a958883323aaf14d232
Use libcedrus

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * include/linux/ion_sunxi.h
3
 
 *
4
 
 * Copyright(c) 2013-2015 Allwinnertech Co., Ltd.
5
 
 *      http://www.allwinnertech.com
6
 
 *
7
 
 * Author: liugang <liugang@allwinnertech.com>
8
 
 *
9
 
 * sunxi ion header file
10
 
 *
11
 
 * This program is free software; you can redistribute it and/or modify
12
 
 * it under the terms of the GNU General Public License as published by
13
 
 * the Free Software Foundation; either version 2 of the License, or
14
 
 * (at your option) any later version.
15
 
 */
16
 
 
17
 
#ifndef __ION_SUNXI_H
18
 
#define __ION_SUNXI_H
19
 
 
20
 
#define ION_HEAP_TYPE_SUNXI_START (ION_HEAP_TYPE_CUSTOM + 1)
21
 
#define ION_HEAP_TYPE_SECURE      (ION_HEAP_TYPE_SUNXI_START)
22
 
 
23
 
typedef struct {
24
 
        long    start;
25
 
        long    end;
26
 
}sunxi_cache_range;
27
 
 
28
 
typedef struct {
29
 
        void *handle;
30
 
        unsigned long phys_addr;
31
 
        unsigned long size;
32
 
}sunxi_phys_data;
33
 
 
34
 
#define DMA_BUF_MAXCNT  8
35
 
 
36
 
typedef struct {
37
 
        unsigned int src_va;
38
 
        unsigned int src_pa;
39
 
        unsigned int dst_va;
40
 
        unsigned int dst_pa;
41
 
        unsigned int size;
42
 
}dma_buf_item;
43
 
 
44
 
typedef struct {
45
 
        int multi_dma;
46
 
        unsigned int cnt;
47
 
        dma_buf_item item[DMA_BUF_MAXCNT];
48
 
}dma_buf_group;
49
 
 
50
 
#define ION_IOC_SUNXI_FLUSH_RANGE           5
51
 
#define ION_IOC_SUNXI_FLUSH_ALL             6
52
 
#define ION_IOC_SUNXI_PHYS_ADDR             7
53
 
#define ION_IOC_SUNXI_DMA_COPY              8
54
 
#define ION_IOC_SUNXI_DUMP                  9
55
 
 
56
 
#ifdef __KERNEL__
57
 
 
58
 
int flush_clean_user_range(long start, long end);
59
 
int flush_user_range(long start, long end);
60
 
void flush_dcache_all(void);
61
 
 
62
 
/**
63
 
 * sunxi_buf_alloc - alloc phys contigous memory in SUNXI platform.
64
 
 * @size: size in bytes to allocate.
65
 
 * @paddr: store the start phys address allocated.
66
 
 *
67
 
 * return the start virtual address, or 0 if failed.
68
 
 */
69
 
void *sunxi_buf_alloc(unsigned int size, unsigned int *paddr);
70
 
/**
71
 
 * sunxi_buf_free - free buffer allocated by sunxi_buf_alloc.
72
 
 * @vaddr: the kernel virt addr of the area.
73
 
 * @paddr: the start phys addr of the area.
74
 
 * @size: size in bytes of the area.
75
 
 */
76
 
void sunxi_buf_free(void *vaddr, unsigned int paddr, unsigned int size);
77
 
/**
78
 
 * sunxi_alloc_phys - alloc phys contigous memory in SUNXI platform.
79
 
 * @size: size in bytes to allocate.
80
 
 *
81
 
 * return the start phys addr, or 0 if failed.
82
 
 */
83
 
u32 sunxi_alloc_phys(size_t size);
84
 
/**
85
 
 * sunxi_free_phys - free phys contigous memory allocted by sunxi_alloc_phys.
86
 
 * @paddr: the start phys addr of the area.
87
 
 * @size: size in bytes of the area.
88
 
 */
89
 
void sunxi_free_phys(u32 paddr, size_t size);
90
 
/**
91
 
 * sunxi_map_kernel - map phys contigous memory to kernel virtual space.
92
 
 * @paddr: the start phys addr of the area.
93
 
 * @size: size in bytes of the area.
94
 
 *
95
 
 * return the start virt addr which is in vmalloc space, or NULL if failed.
96
 
 */
97
 
void *sunxi_map_kernel(unsigned int paddr, unsigned int size);
98
 
/**
99
 
 * sunxi_unmap_kernel - unmap phys contigous memory from kernel space.
100
 
 * @vaddr: the kernel virt addr of the area.
101
 
 * @paddr: the start phys addr of the area.
102
 
 * @size: size in bytes of the area.
103
 
 */
104
 
void sunxi_unmap_kernel(void *vaddr, unsigned int paddr, unsigned int size);
105
 
 
106
 
#endif /* __KERNEL__ */
107
 
 
108
 
#endif