xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/nouveau/include/nvif/device.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: MIT */
2*4882a593Smuzhiyun #ifndef __NVIF_DEVICE_H__
3*4882a593Smuzhiyun #define __NVIF_DEVICE_H__
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <nvif/object.h>
6*4882a593Smuzhiyun #include <nvif/cl0080.h>
7*4882a593Smuzhiyun #include <nvif/user.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun struct nvif_device {
10*4882a593Smuzhiyun 	struct nvif_object object;
11*4882a593Smuzhiyun 	struct nv_device_info_v0 info;
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun 	struct nvif_fifo_runlist {
14*4882a593Smuzhiyun 		u64 engines;
15*4882a593Smuzhiyun 	} *runlist;
16*4882a593Smuzhiyun 	int runlists;
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun 	struct nvif_user user;
19*4882a593Smuzhiyun };
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun int  nvif_device_ctor(struct nvif_object *, const char *name, u32 handle,
22*4882a593Smuzhiyun 		      s32 oclass, void *, u32, struct nvif_device *);
23*4882a593Smuzhiyun void nvif_device_dtor(struct nvif_device *);
24*4882a593Smuzhiyun u64  nvif_device_time(struct nvif_device *);
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun /*XXX*/
27*4882a593Smuzhiyun #include <subdev/bios.h>
28*4882a593Smuzhiyun #include <subdev/fb.h>
29*4882a593Smuzhiyun #include <subdev/bar.h>
30*4882a593Smuzhiyun #include <subdev/gpio.h>
31*4882a593Smuzhiyun #include <subdev/clk.h>
32*4882a593Smuzhiyun #include <subdev/i2c.h>
33*4882a593Smuzhiyun #include <subdev/timer.h>
34*4882a593Smuzhiyun #include <subdev/therm.h>
35*4882a593Smuzhiyun #include <subdev/pci.h>
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define nvxx_device(a) ({                                                      \
38*4882a593Smuzhiyun 	struct nvif_device *_device = (a);                                     \
39*4882a593Smuzhiyun 	struct {                                                               \
40*4882a593Smuzhiyun 		struct nvkm_object object;                                     \
41*4882a593Smuzhiyun 		struct nvkm_device *device;                                    \
42*4882a593Smuzhiyun 	} *_udevice = _device->object.priv;                                    \
43*4882a593Smuzhiyun 	_udevice->device;                                                      \
44*4882a593Smuzhiyun })
45*4882a593Smuzhiyun #define nvxx_bios(a) nvxx_device(a)->bios
46*4882a593Smuzhiyun #define nvxx_fb(a) nvxx_device(a)->fb
47*4882a593Smuzhiyun #define nvxx_gpio(a) nvxx_device(a)->gpio
48*4882a593Smuzhiyun #define nvxx_clk(a) nvxx_device(a)->clk
49*4882a593Smuzhiyun #define nvxx_i2c(a) nvxx_device(a)->i2c
50*4882a593Smuzhiyun #define nvxx_iccsense(a) nvxx_device(a)->iccsense
51*4882a593Smuzhiyun #define nvxx_therm(a) nvxx_device(a)->therm
52*4882a593Smuzhiyun #define nvxx_volt(a) nvxx_device(a)->volt
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #include <engine/fifo.h>
55*4882a593Smuzhiyun #include <engine/gr.h>
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define nvxx_gr(a) nvxx_device(a)->gr
58*4882a593Smuzhiyun #endif
59