1 #ifndef __NVKM_LTC_H__
2 #define __NVKM_LTC_H__
3 #include <core/subdev.h>
4 struct nvkm_mm_node;
5 
6 #define NVKM_LTC_MAX_ZBC_CNT 16
7 
8 struct 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 
22 static inline struct nvkm_ltc *
23 nvkm_ltc(void *obj)
24 {
25 	return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_LTC);
26 }
27 
28 extern struct nvkm_oclass *gf100_ltc_oclass;
29 extern struct nvkm_oclass *gk104_ltc_oclass;
30 extern struct nvkm_oclass *gm107_ltc_oclass;
31 #endif
32