Lines Matching +full:a +full:- +full:h
1 /* SPDX-License-Identifier: MIT */
18 * - added support for tiled system memory buffer objects
19 * - added support for NOUVEAU_GETPARAM_GRAPH_UNITS on [nvc0,nve0].
20 * - added support for compressed memory storage types on [nvc0,nve0].
21 * - added support for software methods 0x600,0x644,0x6ac on nvc0
26 * - fixes multiple bugs in flip completion events and timestamping
28 * - object api exposed to userspace
29 * - fermi,kepler,maxwell zbc
31 * - allow concurrent access to bo's mapped read/write.
33 * - add NOUVEAU_GEM_DOMAIN_COHERENT flag
35 * - NVIF ABI modified, safe because only (current) users are test
38 * - implemented limited ABI16/NVIF interop
41 #include <linux/notifier.h>
43 #include <nvif/client.h>
44 #include <nvif/device.h>
45 #include <nvif/ioctl.h>
46 #include <nvif/mmu.h>
47 #include <nvif/vmm.h>
49 #include <drm/drm_connector.h>
50 #include <drm/drm_device.h>
51 #include <drm/drm_drv.h>
52 #include <drm/drm_file.h>
54 #include <drm/ttm/ttm_bo.h>
55 #include <drm/ttm/ttm_placement.h>
57 #include <drm/drm_audio_component.h>
59 #include "uapi/drm/nouveau_drm.h"
64 #include "nouveau_fence.h"
65 #include "nouveau_bios.h"
66 #include "nouveau_sched.h"
67 #include "nouveau_vmm.h"
68 #include "nouveau_uvmm.h"
127 return cli ? cli->uvmm.ptr : NULL; in nouveau_cli_uvmm()
135 mutex_lock(&cli->mutex); in nouveau_cli_uvmm_locked()
137 mutex_unlock(&cli->mutex); in nouveau_cli_uvmm_locked()
149 return &uvmm->vmm; in nouveau_cli_vmm()
151 if (cli->svm.cli) in nouveau_cli_vmm()
152 return &cli->svm; in nouveau_cli_vmm()
154 return &cli->vmm; in nouveau_cli_vmm()
163 cli->uvmm.disabled = true; in __nouveau_cli_disable_uvmm_noinit()
169 mutex_lock(&cli->mutex); in nouveau_cli_disable_uvmm_noinit()
171 mutex_unlock(&cli->mutex); in nouveau_cli_disable_uvmm_noinit()
180 return fpriv ? fpriv->driver_priv : NULL; in nouveau_cli()
196 return ERR_PTR(-EOVERFLOW); in u_memcpya()
200 #include <nvif/object.h>
201 #include <nvif/parent.h>
258 int chan_nr; /* 0 if per-runlist CHIDs. */
269 /* context for accelerated drm-internal operations */
275 /* nv10-nv40 tiling regions */
315 return dev->dev_private; in nouveau_drm()
321 struct nvif_mmu *mmu = &drm->client.mmu; in nouveau_drm_use_coherent_gpu_mapping()
322 return !(mmu->type[drm->ttm.type_host[0]].type & NVIF_MEM_UNCACHED); in nouveau_drm_use_coherent_gpu_mapping()
329 #include <nvkm/core/tegra.h>
336 #define NV_PRINTK(l,c,f,a...) do { \ argument
338 dev_##l(_cli->drm->dev->dev, "%s: "f, _cli->name, ##a); \
341 #define NV_PRINTK_(l,drm,f,a...) do { \ argument
342 dev_##l((drm)->nvkm->dev, "drm: "f, ##a); \
344 #define NV_FATAL(drm,f,a...) NV_PRINTK_(crit, (drm), f, ##a) argument
345 #define NV_ERROR(drm,f,a...) NV_PRINTK_(err, (drm), f, ##a) argument
346 #define NV_WARN(drm,f,a...) NV_PRINTK_(warn, (drm), f, ##a) argument
347 #define NV_INFO(drm,f,a...) NV_PRINTK_(info, (drm), f, ##a) argument
349 #define NV_DEBUG(drm,f,a...) do { \ argument
351 NV_PRINTK_(info, (drm), f, ##a); \
353 #define NV_ATOMIC(drm,f,a...) do { \ argument
355 NV_PRINTK_(info, (drm), f, ##a); \
358 #define NV_PRINTK_ONCE(l,c,f,a...) NV_PRINTK(l##_once,c,f, ##a) argument
360 #define NV_ERROR_ONCE(drm,f,a...) NV_PRINTK_ONCE(err, &(drm)->client, f, ##a) argument
361 #define NV_WARN_ONCE(drm,f,a...) NV_PRINTK_ONCE(warn, &(drm)->client, f, ##a) argument
362 #define NV_INFO_ONCE(drm,f,a...) NV_PRINTK_ONCE(info, &(drm)->client, f, ##a) argument
368 * These accessors are used in a few places (mostly older code paths)
369 * to get direct access to NVKM structures, where a more well-defined
373 * This is especially important when considering GSP-RM, as a lot the
375 * the GSP-RM paths to be bootstrapped.
377 #include <subdev/bios.h>
378 #include <subdev/fb.h>
379 #include <subdev/gpio.h>
380 #include <subdev/clk.h>
381 #include <subdev/i2c.h>
382 #include <subdev/timer.h>
383 #include <subdev/therm.h>
388 return drm->nvkm; in nvxx_device()
391 #define nvxx_bios(a) nvxx_device(a)->bios argument
392 #define nvxx_fb(a) nvxx_device(a)->fb argument
393 #define nvxx_gpio(a) nvxx_device(a)->gpio argument
394 #define nvxx_clk(a) nvxx_device(a)->clk argument
395 #define nvxx_i2c(a) nvxx_device(a)->i2c argument
396 #define nvxx_iccsense(a) nvxx_device(a)->iccsense argument
397 #define nvxx_therm(a) nvxx_device(a)->therm argument
398 #define nvxx_volt(a) nvxx_device(a)->volt argument
400 #include <engine/gr.h>
402 #define nvxx_gr(a) nvxx_device(a)->gr argument