162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */ 262306a36Sopenharmony_ci#ifndef __NVIF_DEVICE_H__ 362306a36Sopenharmony_ci#define __NVIF_DEVICE_H__ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <nvif/object.h> 662306a36Sopenharmony_ci#include <nvif/cl0080.h> 762306a36Sopenharmony_ci#include <nvif/user.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_cistruct nvif_device { 1062306a36Sopenharmony_ci struct nvif_object object; 1162306a36Sopenharmony_ci struct nv_device_info_v0 info; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci struct nvif_fifo_runlist { 1462306a36Sopenharmony_ci u64 engines; 1562306a36Sopenharmony_ci } *runlist; 1662306a36Sopenharmony_ci int runlists; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci struct nvif_user user; 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciint nvif_device_ctor(struct nvif_object *, const char *name, u32 handle, 2262306a36Sopenharmony_ci s32 oclass, void *, u32, struct nvif_device *); 2362306a36Sopenharmony_civoid nvif_device_dtor(struct nvif_device *); 2462306a36Sopenharmony_ciu64 nvif_device_time(struct nvif_device *); 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci/*XXX*/ 2762306a36Sopenharmony_ci#include <subdev/bios.h> 2862306a36Sopenharmony_ci#include <subdev/fb.h> 2962306a36Sopenharmony_ci#include <subdev/bar.h> 3062306a36Sopenharmony_ci#include <subdev/gpio.h> 3162306a36Sopenharmony_ci#include <subdev/clk.h> 3262306a36Sopenharmony_ci#include <subdev/i2c.h> 3362306a36Sopenharmony_ci#include <subdev/timer.h> 3462306a36Sopenharmony_ci#include <subdev/therm.h> 3562306a36Sopenharmony_ci#include <subdev/pci.h> 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define nvxx_device(a) ({ \ 3862306a36Sopenharmony_ci struct nvif_device *_device = (a); \ 3962306a36Sopenharmony_ci struct { \ 4062306a36Sopenharmony_ci struct nvkm_object object; \ 4162306a36Sopenharmony_ci struct nvkm_device *device; \ 4262306a36Sopenharmony_ci } *_udevice = _device->object.priv; \ 4362306a36Sopenharmony_ci _udevice->device; \ 4462306a36Sopenharmony_ci}) 4562306a36Sopenharmony_ci#define nvxx_bios(a) nvxx_device(a)->bios 4662306a36Sopenharmony_ci#define nvxx_fb(a) nvxx_device(a)->fb 4762306a36Sopenharmony_ci#define nvxx_gpio(a) nvxx_device(a)->gpio 4862306a36Sopenharmony_ci#define nvxx_clk(a) nvxx_device(a)->clk 4962306a36Sopenharmony_ci#define nvxx_i2c(a) nvxx_device(a)->i2c 5062306a36Sopenharmony_ci#define nvxx_iccsense(a) nvxx_device(a)->iccsense 5162306a36Sopenharmony_ci#define nvxx_therm(a) nvxx_device(a)->therm 5262306a36Sopenharmony_ci#define nvxx_volt(a) nvxx_device(a)->volt 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#include <engine/fifo.h> 5562306a36Sopenharmony_ci#include <engine/gr.h> 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define nvxx_gr(a) nvxx_device(a)->gr 5862306a36Sopenharmony_ci#endif 59