Commit a3f8a41f authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/nvif: helper to match against supported class list



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent f3a8b664
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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) ({                                                      \