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 *
nvkm_ltc(void * obj)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