12799bba6SBen Skeggs #ifndef __NVKM_LTC_H__ 22799bba6SBen Skeggs #define __NVKM_LTC_H__ 3c39f472eSBen Skeggs #include <core/subdev.h> 42799bba6SBen Skeggs struct nvkm_mm_node; 5c39f472eSBen Skeggs 62799bba6SBen Skeggs #define NVKM_LTC_MAX_ZBC_CNT 16 7c39f472eSBen Skeggs 82799bba6SBen Skeggs struct nvkm_ltc { 92799bba6SBen Skeggs struct nvkm_subdev base; 10c39f472eSBen Skeggs 112799bba6SBen Skeggs int (*tags_alloc)(struct nvkm_ltc *, u32 count, 122799bba6SBen Skeggs struct nvkm_mm_node **); 132799bba6SBen Skeggs void (*tags_free)(struct nvkm_ltc *, struct nvkm_mm_node **); 142799bba6SBen Skeggs void (*tags_clear)(struct nvkm_ltc *, u32 first, u32 count); 15c39f472eSBen Skeggs 16c39f472eSBen Skeggs int zbc_min; 17c39f472eSBen Skeggs int zbc_max; 182799bba6SBen Skeggs int (*zbc_color_get)(struct nvkm_ltc *, int index, const u32[4]); 192799bba6SBen Skeggs int (*zbc_depth_get)(struct nvkm_ltc *, int index, const u32); 20c39f472eSBen Skeggs }; 21c39f472eSBen Skeggs 222799bba6SBen Skeggs static inline struct nvkm_ltc * 232799bba6SBen Skeggs nvkm_ltc(void *obj) 24c39f472eSBen Skeggs { 252799bba6SBen Skeggs return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_LTC); 26c39f472eSBen Skeggs } 27c39f472eSBen Skeggs 282799bba6SBen Skeggs extern struct nvkm_oclass *gf100_ltc_oclass; 292799bba6SBen Skeggs extern struct nvkm_oclass *gk104_ltc_oclass; 302799bba6SBen Skeggs extern struct nvkm_oclass *gm107_ltc_oclass; 31c39f472eSBen Skeggs 32c39f472eSBen Skeggs #endif 33