Commit | Line | Data |
---|---|---|
f64122c1 DA |
1 | /* |
2 | * Copyright 2013 Red Hat Inc. | |
3 | * | |
4 | * Permission is hereby granted, free of charge, to any person obtaining a | |
5 | * copy of this software and associated documentation files (the "Software"), | |
6 | * to deal in the Software without restriction, including without limitation | |
7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | |
8 | * and/or sell copies of the Software, and to permit persons to whom the | |
9 | * Software is furnished to do so, subject to the following conditions: | |
10 | * | |
11 | * The above copyright notice and this permission notice shall be included in | |
12 | * all copies or substantial portions of the Software. | |
13 | * | |
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |
17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | |
18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | |
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
20 | * OTHER DEALINGS IN THE SOFTWARE. | |
21 | * | |
22 | * Authors: Dave Airlie | |
23 | * Alon Levy | |
24 | */ | |
25 | #ifndef QXL_OBJECT_H | |
26 | #define QXL_OBJECT_H | |
27 | ||
28 | #include "qxl_drv.h" | |
29 | ||
9c4cbb3a | 30 | static inline int qxl_bo_reserve(struct qxl_bo *bo) |
f64122c1 DA |
31 | { |
32 | int r; | |
33 | ||
9c4cbb3a | 34 | r = ttm_bo_reserve(&bo->tbo, true, false, NULL); |
f64122c1 DA |
35 | if (unlikely(r != 0)) { |
36 | if (r != -ERESTARTSYS) { | |
e0828d54 | 37 | struct drm_device *ddev = bo->tbo.base.dev; |
408799eb | 38 | |
5472bdee | 39 | dev_err(ddev->dev, "%p reserve failed\n", bo); |
f64122c1 DA |
40 | } |
41 | return r; | |
42 | } | |
43 | return 0; | |
44 | } | |
45 | ||
46 | static inline void qxl_bo_unreserve(struct qxl_bo *bo) | |
47 | { | |
48 | ttm_bo_unreserve(&bo->tbo); | |
49 | } | |
50 | ||
f64122c1 DA |
51 | static inline unsigned long qxl_bo_size(struct qxl_bo *bo) |
52 | { | |
e11bfb99 | 53 | return bo->tbo.base.size; |
f64122c1 DA |
54 | } |
55 | ||
f64122c1 DA |
56 | static inline u64 qxl_bo_mmap_offset(struct qxl_bo *bo) |
57 | { | |
b96f3e7c | 58 | return drm_vma_node_offset_addr(&bo->tbo.base.vma_node); |
f64122c1 DA |
59 | } |
60 | ||
f64122c1 DA |
61 | extern int qxl_bo_create(struct qxl_device *qdev, |
62 | unsigned long size, | |
4f49ec92 | 63 | bool kernel, bool pinned, u32 domain, |
4fff19ae | 64 | u32 priority, |
f64122c1 DA |
65 | struct qxl_surface *surf, |
66 | struct qxl_bo **bo_ptr); | |
49a3f51d | 67 | extern int qxl_bo_kmap(struct qxl_bo *bo, struct dma_buf_map *map); |
f64122c1 DA |
68 | extern void qxl_bo_kunmap(struct qxl_bo *bo); |
69 | void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, struct qxl_bo *bo, int page_offset); | |
70 | void qxl_bo_kunmap_atomic_page(struct qxl_device *qdev, struct qxl_bo *bo, void *map); | |
71 | extern struct qxl_bo *qxl_bo_ref(struct qxl_bo *bo); | |
72 | extern void qxl_bo_unref(struct qxl_bo **bo); | |
545592fb | 73 | extern int qxl_bo_pin(struct qxl_bo *bo); |
f64122c1 | 74 | extern int qxl_bo_unpin(struct qxl_bo *bo); |
9d36d432 | 75 | extern void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain); |
f64122c1 DA |
76 | extern bool qxl_ttm_bo_is_qxl_bo(struct ttm_buffer_object *bo); |
77 | ||
f64122c1 | 78 | #endif |