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