]>
git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - drivers/gpu/drm/nouveau/include/nvif/object.h
1 #ifndef __NVIF_OBJECT_H__
2 #define __NVIF_OBJECT_H__
7 struct nvif_client
*client
;
10 void *priv
; /*XXX: hack */
17 int nvif_object_init(struct nvif_object
*, u32 handle
, s32 oclass
, void *, u32
,
18 struct nvif_object
*);
19 void nvif_object_fini(struct nvif_object
*);
20 int nvif_object_ioctl(struct nvif_object
*, void *, u32
, void **);
21 int nvif_object_sclass(struct nvif_object
*, s32
*, int);
22 u32
nvif_object_rd(struct nvif_object
*, int, u64
);
23 void nvif_object_wr(struct nvif_object
*, int, u64
, u32
);
24 int nvif_object_mthd(struct nvif_object
*, u32
, void *, u32
);
25 int nvif_object_map(struct nvif_object
*);
26 void nvif_object_unmap(struct nvif_object
*);
28 #define nvif_handle(a) (unsigned long)(void *)(a)
29 #define nvif_object(a) (a)->object
31 #define nvif_rd(a,f,b,c) ({ \
32 struct nvif_object *_object = (a); \
34 if (likely(_object->map.ptr)) \
35 _data = f((u8 __iomem *)_object->map.ptr + (c)); \
37 _data = nvif_object_rd(_object, (b), (c)); \
40 #define nvif_wr(a,f,b,c,d) ({ \
41 struct nvif_object *_object = (a); \
42 if (likely(_object->map.ptr)) \
43 f((d), (u8 __iomem *)_object->map.ptr + (c)); \
45 nvif_object_wr(_object, (b), (c), (d)); \
47 #define nvif_rd08(a,b) ({ ((u8)nvif_rd((a), ioread8, 1, (b))); })
48 #define nvif_rd16(a,b) ({ ((u16)nvif_rd((a), ioread16_native, 2, (b))); })
49 #define nvif_rd32(a,b) ({ ((u32)nvif_rd((a), ioread32_native, 4, (b))); })
50 #define nvif_wr08(a,b,c) nvif_wr((a), iowrite8, 1, (b), (u8)(c))
51 #define nvif_wr16(a,b,c) nvif_wr((a), iowrite16_native, 2, (b), (u16)(c))
52 #define nvif_wr32(a,b,c) nvif_wr((a), iowrite32_native, 4, (b), (u32)(c))
53 #define nvif_mask(a,b,c,d) ({ \
54 struct nvif_object *__object = (a); \
55 u32 _addr = (b), _data = nvif_rd32(__object, _addr); \
56 nvif_wr32(__object, _addr, (_data & ~(c)) | (d)); \
60 #define nvif_mthd(a,b,c,d) nvif_object_mthd((a), (b), (c), (d))
63 #include <core/object.h>
64 #define nvxx_object(a) ({ \
65 struct nvif_object *_object = (a); \
66 (struct nvkm_object *)_object->priv; \