1#ifndef __NVKM_LTC_H__
2#define __NVKM_LTC_H__
3#include <core/subdev.h>
4struct nvkm_mm_node;
5
6#define NVKM_LTC_MAX_ZBC_CNT 16
7
8struct nvkm_ltc {
9	struct nvkm_subdev base;
10
11	int  (*tags_alloc)(struct nvkm_ltc *, u32 count,
12			   struct nvkm_mm_node **);
13	void (*tags_free)(struct nvkm_ltc *, struct nvkm_mm_node **);
14	void (*tags_clear)(struct nvkm_ltc *, u32 first, u32 count);
15
16	int zbc_min;
17	int zbc_max;
18	int (*zbc_color_get)(struct nvkm_ltc *, int index, const u32[4]);
19	int (*zbc_depth_get)(struct nvkm_ltc *, int index, const u32);
20};
21
22static inline struct nvkm_ltc *
23nvkm_ltc(void *obj)
24{
25	return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_LTC);
26}
27
28extern struct nvkm_oclass *gf100_ltc_oclass;
29extern struct nvkm_oclass *gk104_ltc_oclass;
30extern struct nvkm_oclass *gm107_ltc_oclass;
31#endif
32