Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6296 serge 1
/**************************************************************************
2
 *
3
 * Copyright © 2013 VMware, Inc., Palo Alto, CA., USA
4
 * All Rights Reserved.
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 * copy of this software and associated documentation files (the
8
 * "Software"), to deal in the Software without restriction, including
9
 * without limitation the rights to use, copy, modify, merge, publish,
10
 * distribute, sub license, and/or sell copies of the Software, and to
11
 * permit persons to whom the Software is furnished to do so, subject to
12
 * the following conditions:
13
 *
14
 * The above copyright notice and this permission notice (including the
15
 * next paragraph) shall be included in all copies or substantial portions
16
 * of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21
 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
22
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
25
 *
26
 **************************************************************************/
27
/*
28
 * Authors:
29
 *     Thomas Hellstrom 
30
 *
31
 */
32
 
33
#include "vmwgfx_drv.h"
34
#include 
35
#include 
36
 
37
/*
38
 * DMA-BUF attach- and mapping methods. No need to implement
39
 * these until we have other virtual devices use them.
40
 */
41
 
42
static int vmw_prime_map_attach(struct dma_buf *dma_buf,
43
				struct device *target_dev,
44
				struct dma_buf_attachment *attach)
45
{
46
	return -ENOSYS;
47
}
48
 
49
static void vmw_prime_map_detach(struct dma_buf *dma_buf,
50
				 struct dma_buf_attachment *attach)
51
{
52
}
53
 
54
static struct sg_table *vmw_prime_map_dma_buf(struct dma_buf_attachment *attach,
55
					      enum dma_data_direction dir)
56
{
57
	return ERR_PTR(-ENOSYS);
58
}
59
 
60
static void vmw_prime_unmap_dma_buf(struct dma_buf_attachment *attach,
61
				    struct sg_table *sgb,
62
				    enum dma_data_direction dir)
63
{
64
}
65
 
66
static void *vmw_prime_dmabuf_vmap(struct dma_buf *dma_buf)
67
{
68
	return NULL;
69
}
70
 
71
static void vmw_prime_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr)
72
{
73
}
74
 
75
static void *vmw_prime_dmabuf_kmap_atomic(struct dma_buf *dma_buf,
76
		unsigned long page_num)
77
{
78
	return NULL;
79
}
80
 
81
static void vmw_prime_dmabuf_kunmap_atomic(struct dma_buf *dma_buf,
82
		unsigned long page_num, void *addr)
83
{
84
 
85
}
86
static void *vmw_prime_dmabuf_kmap(struct dma_buf *dma_buf,
87
		unsigned long page_num)
88
{
89
	return NULL;
90
}
91
 
92
static void vmw_prime_dmabuf_kunmap(struct dma_buf *dma_buf,
93
		unsigned long page_num, void *addr)
94
{
95
 
96
}
97
 
98
static int vmw_prime_dmabuf_mmap(struct dma_buf *dma_buf,
99
				 struct vm_area_struct *vma)
100
{
101
	WARN_ONCE(true, "Attempted use of dmabuf mmap. Bad.\n");
102
	return -ENOSYS;
103
}
104
 
105
const struct dma_buf_ops vmw_prime_dmabuf_ops =  {
106
	.attach = vmw_prime_map_attach,
107
	.detach = vmw_prime_map_detach,
108
	.map_dma_buf = vmw_prime_map_dma_buf,
109
	.unmap_dma_buf = vmw_prime_unmap_dma_buf,
110
	.release = NULL,
111
	.kmap = vmw_prime_dmabuf_kmap,
112
	.kmap_atomic = vmw_prime_dmabuf_kmap_atomic,
113
	.kunmap = vmw_prime_dmabuf_kunmap,
114
	.kunmap_atomic = vmw_prime_dmabuf_kunmap_atomic,
115
	.mmap = vmw_prime_dmabuf_mmap,
116
	.vmap = vmw_prime_dmabuf_vmap,
117
	.vunmap = vmw_prime_dmabuf_vunmap,
118
};
119
 
120
int vmw_prime_fd_to_handle(struct drm_device *dev,
121
			   struct drm_file *file_priv,
122
			   int fd, u32 *handle)
123
{
124
	struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
125
 
126
	return ttm_prime_fd_to_handle(tfile, fd, handle);
127
}
128
 
129
int vmw_prime_handle_to_fd(struct drm_device *dev,
130
			   struct drm_file *file_priv,
131
			   uint32_t handle, uint32_t flags,
132
			   int *prime_fd)
133
{
134
	struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
135
 
136
	return ttm_prime_handle_to_fd(tfile, handle, flags, prime_fd);
137
}