drm/nouveau/nvif: helper to match against supported class list
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
f3a8b6645d
commit
a3f8a41fd2
@ -66,6 +66,35 @@ void nvif_object_unmap(struct nvif_object *);
|
||||
|
||||
#define nvif_mthd(a,b,c,d) nvif_object_mthd((a), (b), (c), (d))
|
||||
|
||||
struct nvif_mclass {
|
||||
s32 oclass;
|
||||
int version;
|
||||
};
|
||||
|
||||
#define nvif_mclass(o,m) ({ \
|
||||
struct nvif_object *object = (o); \
|
||||
struct nvif_sclass *sclass; \
|
||||
const typeof(m[0]) *mclass = (m); \
|
||||
int ret = -ENODEV; \
|
||||
int cnt, i, j; \
|
||||
\
|
||||
cnt = nvif_object_sclass_get(object, &sclass); \
|
||||
if (cnt >= 0) { \
|
||||
for (i = 0; ret < 0 && mclass[i].oclass; i++) { \
|
||||
for (j = 0; j < cnt; j++) { \
|
||||
if (mclass[i].oclass == sclass[j].oclass && \
|
||||
mclass[i].version >= sclass[j].minver && \
|
||||
mclass[i].version <= sclass[j].maxver) { \
|
||||
ret = i; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
nvif_object_sclass_put(&sclass); \
|
||||
} \
|
||||
ret; \
|
||||
})
|
||||
|
||||
/*XXX*/
|
||||
#include <core/object.h>
|
||||
#define nvxx_object(a) ({ \
|
||||
|
Loading…
Reference in New Issue
Block a user