/* SPDX-License-Identifier: MIT */
#ifndef __NV50_GR_H__
#define __NV50_GR_H__
#define nv50_gr(p) container_of((p), struct nv50_gr, base)
#include "priv.h"

struct nv50_gr {
	struct nvkm_gr base;
	const struct nv50_gr_func *func;
	spinlock_t lock;
	u32 size;
};

int nv50_gr_new_(const struct nvkm_gr_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
		 struct nvkm_gr **);
int nv50_gr_init(struct nvkm_gr *);
void nv50_gr_intr(struct nvkm_gr *);
u64 nv50_gr_units(struct nvkm_gr *);

int g84_gr_tlb_flush(struct nvkm_gr *);

#define nv50_gr_chan(p) container_of((p), struct nv50_gr_chan, object)
#include <core/object.h>

struct nv50_gr_chan {
	struct nvkm_object object;
	struct nv50_gr *gr;
};

int nv50_gr_chan_new(struct nvkm_gr *, struct nvkm_fifo_chan *,
		     const struct nvkm_oclass *, struct nvkm_object **);

extern const struct nvkm_object_func nv50_gr_object;

int  nv50_grctx_init(struct nvkm_device *, u32 *size);
void nv50_grctx_fill(struct nvkm_device *, struct nvkm_gpuobj *);
#endif
