1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 2c39f472eSBen Skeggs #ifndef __NVKM_LTC_PRIV_H__ 3c39f472eSBen Skeggs #define __NVKM_LTC_PRIV_H__ 470bc7182SBen Skeggs #define nvkm_ltc(p) container_of((p), struct nvkm_ltc, subdev) 5c39f472eSBen Skeggs #include <subdev/ltc.h> 686b40432SBen Skeggs #include <core/enum.h> 7c39f472eSBen Skeggs 80afc1c4cSBen Skeggs int nvkm_ltc_new_(const struct nvkm_ltc_func *, struct nvkm_device *, enum nvkm_subdev_type, int, 90afc1c4cSBen Skeggs struct nvkm_ltc **); 10c39f472eSBen Skeggs 1170bc7182SBen Skeggs struct nvkm_ltc_func { 1270bc7182SBen Skeggs int (*oneinit)(struct nvkm_ltc *); 1370bc7182SBen Skeggs void (*init)(struct nvkm_ltc *); 1470bc7182SBen Skeggs void (*intr)(struct nvkm_ltc *); 15c39f472eSBen Skeggs 1670bc7182SBen Skeggs void (*cbc_clear)(struct nvkm_ltc *, u32 start, u32 limit); 1770bc7182SBen Skeggs void (*cbc_wait)(struct nvkm_ltc *); 18c39f472eSBen Skeggs 19*4500031fSBen Skeggs int zbc_color; 20*4500031fSBen Skeggs int zbc_depth; 2170bc7182SBen Skeggs void (*zbc_clear_color)(struct nvkm_ltc *, int, const u32[4]); 2270bc7182SBen Skeggs void (*zbc_clear_depth)(struct nvkm_ltc *, int, const u32); 234b2c71edSBen Skeggs void (*zbc_clear_stencil)(struct nvkm_ltc *, int, const u32); 2438a8fc78SAlexandre Courbot 2538a8fc78SAlexandre Courbot void (*invalidate)(struct nvkm_ltc *); 2638a8fc78SAlexandre Courbot void (*flush)(struct nvkm_ltc *); 27c39f472eSBen Skeggs }; 28c39f472eSBen Skeggs 2970bc7182SBen Skeggs int gf100_ltc_oneinit(struct nvkm_ltc *); 3070bc7182SBen Skeggs int gf100_ltc_oneinit_tag_ram(struct nvkm_ltc *); 3170bc7182SBen Skeggs void gf100_ltc_intr(struct nvkm_ltc *); 3270bc7182SBen Skeggs void gf100_ltc_cbc_clear(struct nvkm_ltc *, u32, u32); 3370bc7182SBen Skeggs void gf100_ltc_cbc_wait(struct nvkm_ltc *); 3470bc7182SBen Skeggs void gf100_ltc_zbc_clear_color(struct nvkm_ltc *, int, const u32[4]); 3570bc7182SBen Skeggs void gf100_ltc_zbc_clear_depth(struct nvkm_ltc *, int, const u32); 36a0a49bacSAlexandre Courbot void gf100_ltc_invalidate(struct nvkm_ltc *); 37a0a49bacSAlexandre Courbot void gf100_ltc_flush(struct nvkm_ltc *); 3886b40432SBen Skeggs extern const struct nvkm_bitfield gf100_ltc_lts_intr_name[]; 397d2813c4SBen Skeggs 407d2813c4SBen Skeggs void gm107_ltc_intr(struct nvkm_ltc *); 41a96def39SBen Skeggs void gm107_ltc_intr_lts(struct nvkm_ltc *, int ltc, int lts); 427d2813c4SBen Skeggs void gm107_ltc_cbc_clear(struct nvkm_ltc *, u32, u32); 437d2813c4SBen Skeggs void gm107_ltc_cbc_wait(struct nvkm_ltc *); 447d2813c4SBen Skeggs void gm107_ltc_zbc_clear_color(struct nvkm_ltc *, int, const u32[4]); 457d2813c4SBen Skeggs void gm107_ltc_zbc_clear_depth(struct nvkm_ltc *, int, const u32); 464b2c71edSBen Skeggs 474b2c71edSBen Skeggs int gp100_ltc_oneinit(struct nvkm_ltc *); 484b2c71edSBen Skeggs void gp100_ltc_init(struct nvkm_ltc *); 494b2c71edSBen Skeggs void gp100_ltc_intr(struct nvkm_ltc *); 500d0d4982SThierry Reding 510d0d4982SThierry Reding void gp102_ltc_zbc_clear_stencil(struct nvkm_ltc *, int, const u32); 52c39f472eSBen Skeggs #endif 53