mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-07 23:28:55 +00:00
drm/nouveau/object: store object type data outside of handle
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
a1e8873622
commit
493f189dc0
6 changed files with 8 additions and 8 deletions
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include <subdev/mmu.h>
|
#include <subdev/mmu.h>
|
||||||
|
|
||||||
#define NV_ENGCTX_(eng,var) (NV_ENGCTX_CLASS | ((var) << 8) | (eng))
|
#define NV_ENGCTX_(eng,var) (((var) << 8) | (eng))
|
||||||
#define NV_ENGCTX(name,var) NV_ENGCTX_(NVDEV_ENGINE_##name, (var))
|
#define NV_ENGCTX(name,var) NV_ENGCTX_(NVDEV_ENGINE_##name, (var))
|
||||||
|
|
||||||
struct nvkm_engctx {
|
struct nvkm_engctx {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define __NVKM_ENGINE_H__
|
#define __NVKM_ENGINE_H__
|
||||||
#include <core/subdev.h>
|
#include <core/subdev.h>
|
||||||
|
|
||||||
#define NV_ENGINE_(eng,var) (NV_ENGINE_CLASS | ((var) << 8) | (eng))
|
#define NV_ENGINE_(eng,var) (((var) << 8) | (eng))
|
||||||
#define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var))
|
#define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var))
|
||||||
|
|
||||||
struct nvkm_engine {
|
struct nvkm_engine {
|
||||||
|
|
|
@ -11,10 +11,10 @@
|
||||||
#define NV_MEMOBJ_CLASS 0x04000000
|
#define NV_MEMOBJ_CLASS 0x04000000
|
||||||
#define NV_GPUOBJ_CLASS 0x02000000
|
#define NV_GPUOBJ_CLASS 0x02000000
|
||||||
#define NV_ENGCTX_CLASS 0x01000000
|
#define NV_ENGCTX_CLASS 0x01000000
|
||||||
#define NV_OBJECT_CLASS 0x0000ffff
|
|
||||||
|
|
||||||
struct nvkm_object {
|
struct nvkm_object {
|
||||||
struct nvkm_oclass *oclass;
|
struct nvkm_oclass *oclass;
|
||||||
|
u32 pclass;
|
||||||
struct nvkm_object *parent;
|
struct nvkm_object *parent;
|
||||||
struct nvkm_engine *engine;
|
struct nvkm_engine *engine;
|
||||||
atomic_t refcount;
|
atomic_t refcount;
|
||||||
|
@ -70,8 +70,8 @@ struct nvkm_oclass {
|
||||||
|
|
||||||
#define nv_oclass(o) nv_object(o)->oclass
|
#define nv_oclass(o) nv_object(o)->oclass
|
||||||
#define nv_hclass(o) nv_oclass(o)->handle
|
#define nv_hclass(o) nv_oclass(o)->handle
|
||||||
#define nv_iclass(o,i) (nv_hclass(o) & (i))
|
#define nv_iclass(o,i) (nv_object(o)->pclass & (i))
|
||||||
#define nv_mclass(o) nv_iclass(o, NV_OBJECT_CLASS)
|
#define nv_mclass(o) nv_oclass(o)->handle
|
||||||
|
|
||||||
static inline struct nvkm_object *
|
static inline struct nvkm_object *
|
||||||
nv_pclass(struct nvkm_object *parent, u32 oclass)
|
nv_pclass(struct nvkm_object *parent, u32 oclass)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define __NVKM_SUBDEV_H__
|
#define __NVKM_SUBDEV_H__
|
||||||
#include <core/object.h>
|
#include <core/object.h>
|
||||||
|
|
||||||
#define NV_SUBDEV_(sub,var) (NV_SUBDEV_CLASS | ((var) << 8) | (sub))
|
#define NV_SUBDEV_(sub,var) (((var) << 8) | (sub))
|
||||||
#define NV_SUBDEV(name,var) NV_SUBDEV_(NVDEV_SUBDEV_##name, (var))
|
#define NV_SUBDEV(name,var) NV_SUBDEV_(NVDEV_SUBDEV_##name, (var))
|
||||||
|
|
||||||
struct nvkm_subdev {
|
struct nvkm_subdev {
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct nvkm_fifo_base {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define nvkm_fifo_context_create(p,e,c,g,s,a,f,d) \
|
#define nvkm_fifo_context_create(p,e,c,g,s,a,f,d) \
|
||||||
nvkm_gpuobj_create((p), (e), (c), 0, (g), (s), (a), (f), (d))
|
nvkm_gpuobj_create((p), (e), (c), NV_ENGCTX_CLASS, (g), (s), (a), (f), (d))
|
||||||
#define nvkm_fifo_context_destroy(p) \
|
#define nvkm_fifo_context_destroy(p) \
|
||||||
nvkm_gpuobj_destroy(&(p)->gpuobj)
|
nvkm_gpuobj_destroy(&(p)->gpuobj)
|
||||||
#define nvkm_fifo_context_init(p) \
|
#define nvkm_fifo_context_init(p) \
|
||||||
|
|
|
@ -107,7 +107,7 @@ nvkm_object_create_(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||||
nvkm_object_ref(parent, &object->parent);
|
nvkm_object_ref(parent, &object->parent);
|
||||||
nvkm_object_ref(engine, (struct nvkm_object **)&object->engine);
|
nvkm_object_ref(engine, (struct nvkm_object **)&object->engine);
|
||||||
object->oclass = oclass;
|
object->oclass = oclass;
|
||||||
object->oclass->handle |= pclass;
|
object->pclass = pclass;
|
||||||
atomic_set(&object->refcount, 1);
|
atomic_set(&object->refcount, 1);
|
||||||
atomic_set(&object->usecount, 0);
|
atomic_set(&object->usecount, 0);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue