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