xref: /openbmc/linux/drivers/gpu/drm/nouveau/nvkm/subdev/ltc/priv.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
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