diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2016-05-19 19:22:55 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2016-05-20 00:43:04 -0400 |
commit | 4dc28134a8c124aa01b441e1e5b8b54312edc5dd (patch) | |
tree | 0b6e340765d2a67c1c92a30f2a1223ed111c66bc /drivers/gpu/drm/nouveau/nouveau_drv.h | |
parent | 7c10ddf87472c07eabc206e273dc59f77c700858 (diff) |
drm/nouveau: rename nouveau_drm.h to nouveau_drv.h
Fixes out-of-tree build issue where uapi/drm/nouveau_drm.h gets picked
up instead.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drv.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.h | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h new file mode 100644 index 000000000000..822a0212cd48 --- /dev/null +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h | |||
@@ -0,0 +1,207 @@ | |||
1 | #ifndef __NOUVEAU_DRV_H__ | ||
2 | #define __NOUVEAU_DRV_H__ | ||
3 | |||
4 | #define DRIVER_AUTHOR "Nouveau Project" | ||
5 | #define DRIVER_EMAIL "nouveau@lists.freedesktop.org" | ||
6 | |||
7 | #define DRIVER_NAME "nouveau" | ||
8 | #define DRIVER_DESC "nVidia Riva/TNT/GeForce/Quadro/Tesla" | ||
9 | #define DRIVER_DATE "20120801" | ||
10 | |||
11 | #define DRIVER_MAJOR 1 | ||
12 | #define DRIVER_MINOR 3 | ||
13 | #define DRIVER_PATCHLEVEL 1 | ||
14 | |||
15 | /* | ||
16 | * 1.1.1: | ||
17 | * - added support for tiled system memory buffer objects | ||
18 | * - added support for NOUVEAU_GETPARAM_GRAPH_UNITS on [nvc0,nve0]. | ||
19 | * - added support for compressed memory storage types on [nvc0,nve0]. | ||
20 | * - added support for software methods 0x600,0x644,0x6ac on nvc0 | ||
21 | * to control registers on the MPs to enable performance counters, | ||
22 | * and to control the warp error enable mask (OpenGL requires out of | ||
23 | * bounds access to local memory to be silently ignored / return 0). | ||
24 | * 1.1.2: | ||
25 | * - fixes multiple bugs in flip completion events and timestamping | ||
26 | * 1.2.0: | ||
27 | * - object api exposed to userspace | ||
28 | * - fermi,kepler,maxwell zbc | ||
29 | * 1.2.1: | ||
30 | * - allow concurrent access to bo's mapped read/write. | ||
31 | * 1.2.2: | ||
32 | * - add NOUVEAU_GEM_DOMAIN_COHERENT flag | ||
33 | * 1.3.0: | ||
34 | * - NVIF ABI modified, safe because only (current) users are test | ||
35 | * programs that get directly linked with NVKM. | ||
36 | * 1.3.1: | ||
37 | * - implemented limited ABI16/NVIF interop | ||
38 | */ | ||
39 | |||
40 | #include <nvif/client.h> | ||
41 | #include <nvif/device.h> | ||
42 | #include <nvif/ioctl.h> | ||
43 | |||
44 | #include <drmP.h> | ||
45 | |||
46 | #include <drm/ttm/ttm_bo_api.h> | ||
47 | #include <drm/ttm/ttm_bo_driver.h> | ||
48 | #include <drm/ttm/ttm_placement.h> | ||
49 | #include <drm/ttm/ttm_memory.h> | ||
50 | #include <drm/ttm/ttm_module.h> | ||
51 | #include <drm/ttm/ttm_page_alloc.h> | ||
52 | |||
53 | #include "uapi/drm/nouveau_drm.h" | ||
54 | |||
55 | struct nouveau_channel; | ||
56 | struct platform_device; | ||
57 | |||
58 | #define DRM_FILE_PAGE_OFFSET (0x100000000ULL >> PAGE_SHIFT) | ||
59 | |||
60 | #include "nouveau_fence.h" | ||
61 | #include "nouveau_bios.h" | ||
62 | |||
63 | struct nouveau_drm_tile { | ||
64 | struct nouveau_fence *fence; | ||
65 | bool used; | ||
66 | }; | ||
67 | |||
68 | enum nouveau_drm_object_route { | ||
69 | NVDRM_OBJECT_NVIF = NVIF_IOCTL_V0_OWNER_NVIF, | ||
70 | NVDRM_OBJECT_USIF, | ||
71 | NVDRM_OBJECT_ABI16, | ||
72 | NVDRM_OBJECT_ANY = NVIF_IOCTL_V0_OWNER_ANY, | ||
73 | }; | ||
74 | |||
75 | enum nouveau_drm_notify_route { | ||
76 | NVDRM_NOTIFY_NVIF = 0, | ||
77 | NVDRM_NOTIFY_USIF | ||
78 | }; | ||
79 | |||
80 | enum nouveau_drm_handle { | ||
81 | NVDRM_CHAN = 0xcccc0000, /* |= client chid */ | ||
82 | NVDRM_NVSW = 0x55550000, | ||
83 | }; | ||
84 | |||
85 | struct nouveau_cli { | ||
86 | struct nvif_client base; | ||
87 | struct nvkm_vm *vm; /*XXX*/ | ||
88 | struct list_head head; | ||
89 | struct mutex mutex; | ||
90 | void *abi16; | ||
91 | struct list_head objects; | ||
92 | struct list_head notifys; | ||
93 | char name[32]; | ||
94 | struct drm_device *dev; | ||
95 | }; | ||
96 | |||
97 | static inline struct nouveau_cli * | ||
98 | nouveau_cli(struct drm_file *fpriv) | ||
99 | { | ||
100 | return fpriv ? fpriv->driver_priv : NULL; | ||
101 | } | ||
102 | |||
103 | #include <nvif/object.h> | ||
104 | #include <nvif/device.h> | ||
105 | |||
106 | extern int nouveau_runtime_pm; | ||
107 | |||
108 | struct nouveau_drm { | ||
109 | struct nouveau_cli client; | ||
110 | struct drm_device *dev; | ||
111 | |||
112 | struct nvif_device device; | ||
113 | struct list_head clients; | ||
114 | |||
115 | struct { | ||
116 | struct agp_bridge_data *bridge; | ||
117 | u32 base; | ||
118 | u32 size; | ||
119 | bool cma; | ||
120 | } agp; | ||
121 | |||
122 | /* TTM interface support */ | ||
123 | struct { | ||
124 | struct drm_global_reference mem_global_ref; | ||
125 | struct ttm_bo_global_ref bo_global_ref; | ||
126 | struct ttm_bo_device bdev; | ||
127 | atomic_t validate_sequence; | ||
128 | int (*move)(struct nouveau_channel *, | ||
129 | struct ttm_buffer_object *, | ||
130 | struct ttm_mem_reg *, struct ttm_mem_reg *); | ||
131 | struct nouveau_channel *chan; | ||
132 | struct nvif_object copy; | ||
133 | int mtrr; | ||
134 | } ttm; | ||
135 | |||
136 | /* GEM interface support */ | ||
137 | struct { | ||
138 | u64 vram_available; | ||
139 | u64 gart_available; | ||
140 | } gem; | ||
141 | |||
142 | /* synchronisation */ | ||
143 | void *fence; | ||
144 | |||
145 | /* context for accelerated drm-internal operations */ | ||
146 | struct nouveau_channel *cechan; | ||
147 | struct nouveau_channel *channel; | ||
148 | struct nvkm_gpuobj *notify; | ||
149 | struct nouveau_fbdev *fbcon; | ||
150 | struct nvif_object nvsw; | ||
151 | struct nvif_object ntfy; | ||
152 | struct nvif_notify flip; | ||
153 | |||
154 | /* nv10-nv40 tiling regions */ | ||
155 | struct { | ||
156 | struct nouveau_drm_tile reg[15]; | ||
157 | spinlock_t lock; | ||
158 | } tile; | ||
159 | |||
160 | /* modesetting */ | ||
161 | struct nvbios vbios; | ||
162 | struct nouveau_display *display; | ||
163 | struct backlight_device *backlight; | ||
164 | |||
165 | /* power management */ | ||
166 | struct nouveau_hwmon *hwmon; | ||
167 | struct nouveau_debugfs *debugfs; | ||
168 | |||
169 | /* display power reference */ | ||
170 | bool have_disp_power_ref; | ||
171 | |||
172 | struct dev_pm_domain vga_pm_domain; | ||
173 | struct pci_dev *hdmi_device; | ||
174 | }; | ||
175 | |||
176 | static inline struct nouveau_drm * | ||
177 | nouveau_drm(struct drm_device *dev) | ||
178 | { | ||
179 | return dev->dev_private; | ||
180 | } | ||
181 | |||
182 | int nouveau_pmops_suspend(struct device *); | ||
183 | int nouveau_pmops_resume(struct device *); | ||
184 | |||
185 | #include <nvkm/core/tegra.h> | ||
186 | |||
187 | struct drm_device * | ||
188 | nouveau_platform_device_create(const struct nvkm_device_tegra_func *, | ||
189 | struct platform_device *, struct nvkm_device **); | ||
190 | void nouveau_drm_device_remove(struct drm_device *dev); | ||
191 | |||
192 | #define NV_PRINTK(l,c,f,a...) do { \ | ||
193 | struct nouveau_cli *_cli = (c); \ | ||
194 | dev_##l(_cli->dev->dev, "%s: "f, _cli->name, ##a); \ | ||
195 | } while(0) | ||
196 | #define NV_FATAL(drm,f,a...) NV_PRINTK(crit, &(drm)->client, f, ##a) | ||
197 | #define NV_ERROR(drm,f,a...) NV_PRINTK(err, &(drm)->client, f, ##a) | ||
198 | #define NV_WARN(drm,f,a...) NV_PRINTK(warn, &(drm)->client, f, ##a) | ||
199 | #define NV_INFO(drm,f,a...) NV_PRINTK(info, &(drm)->client, f, ##a) | ||
200 | #define NV_DEBUG(drm,f,a...) do { \ | ||
201 | if (unlikely(drm_debug & DRM_UT_DRIVER)) \ | ||
202 | NV_PRINTK(info, &(drm)->client, f, ##a); \ | ||
203 | } while(0) | ||
204 | |||
205 | extern int nouveau_modeset; | ||
206 | |||
207 | #endif | ||