1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 227f3d6cfSBen Skeggs #ifndef __NVKM_GR_PRIV_H__ 327f3d6cfSBen Skeggs #define __NVKM_GR_PRIV_H__ 427f3d6cfSBen Skeggs #define nvkm_gr(p) container_of((p), struct nvkm_gr, engine) 527f3d6cfSBen Skeggs #include <engine/gr.h> 6c85ee6caSBen Skeggs #include <core/enum.h> 7c85ee6caSBen Skeggs struct nvkm_fb_tile; 8c546656fSBen Skeggs struct nvkm_chan; 927f3d6cfSBen Skeggs 10864d37c3SBen Skeggs int nvkm_gr_ctor(const struct nvkm_gr_func *, struct nvkm_device *, enum nvkm_subdev_type, int, 11864d37c3SBen Skeggs bool enable, struct nvkm_gr *); 12c85ee6caSBen Skeggs 13c85ee6caSBen Skeggs bool nv04_gr_idle(struct nvkm_gr *); 14c85ee6caSBen Skeggs 1527f3d6cfSBen Skeggs struct nvkm_gr_func { 16c85ee6caSBen Skeggs void *(*dtor)(struct nvkm_gr *); 17c85ee6caSBen Skeggs int (*oneinit)(struct nvkm_gr *); 18c85ee6caSBen Skeggs int (*init)(struct nvkm_gr *); 19d2753f40SAlexandre Courbot int (*fini)(struct nvkm_gr *, bool); 20f1f4d918SBen Skeggs int (*reset)(struct nvkm_gr *); 21*55e1a599SBen Skeggs int (*nonstall)(struct nvkm_gr *); 22c85ee6caSBen Skeggs void (*intr)(struct nvkm_gr *); 23c85ee6caSBen Skeggs void (*tile)(struct nvkm_gr *, int region, struct nvkm_fb_tile *); 24c85ee6caSBen Skeggs int (*tlb_flush)(struct nvkm_gr *); 25c546656fSBen Skeggs int (*chan_new)(struct nvkm_gr *, struct nvkm_chan *, 2627f3d6cfSBen Skeggs const struct nvkm_oclass *, struct nvkm_object **); 2727f3d6cfSBen Skeggs int (*object_get)(struct nvkm_gr *, int, struct nvkm_sclass *); 28c85ee6caSBen Skeggs /* Returns chipset-specific counts of units packed into an u64. 29c85ee6caSBen Skeggs */ 30c85ee6caSBen Skeggs u64 (*units)(struct nvkm_gr *); 3171ce33a2SBen Skeggs bool (*chsw_load)(struct nvkm_gr *); 32169f30b3SBen Skeggs struct { 33169f30b3SBen Skeggs int (*pause)(struct nvkm_gr *); 34169f30b3SBen Skeggs int (*resume)(struct nvkm_gr *); 35ae5ea7f6SBen Skeggs u32 (*inst)(struct nvkm_gr *); 36169f30b3SBen Skeggs } ctxsw; 3727f3d6cfSBen Skeggs struct nvkm_sclass sclass[]; 3827f3d6cfSBen Skeggs }; 3927f3d6cfSBen Skeggs 40c85ee6caSBen Skeggs extern const struct nvkm_bitfield nv04_gr_nsource[]; 4127f3d6cfSBen Skeggs extern const struct nvkm_object_func nv04_gr_object; 42c85ee6caSBen Skeggs 43c85ee6caSBen Skeggs extern const struct nvkm_bitfield nv10_gr_intr_name[]; 44c85ee6caSBen Skeggs extern const struct nvkm_bitfield nv10_gr_nstatus[]; 45c85ee6caSBen Skeggs 46c85ee6caSBen Skeggs extern const struct nvkm_enum nv50_data_error_names[]; 4727f3d6cfSBen Skeggs #endif 48