File Index
Files and directories
Sign in
FILE

priv.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h C
  1#ifndef __NVKM_ACR_PRIV_H__
  2#define __NVKM_ACR_PRIV_H__
  3#include <subdev/acr.h>
  4struct lsb_header_tail;
  5
  6struct nvkm_acr_fwif {
  7	int version;
  8	int (*load)(struct nvkm_acr *, int version,
  9		    const struct nvkm_acr_fwif *);
 10	const struct nvkm_acr_func *func;
 11};
 12
 13int gm200_acr_nofw(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
 14int gm20b_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
 15int gp102_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
 16
 17struct nvkm_acr_lsf;
 18struct nvkm_acr_func {
 19	const struct nvkm_acr_hsf_fwif *load;
 20	const struct nvkm_acr_hsf_fwif *ahesasc;
 21	const struct nvkm_acr_hsf_fwif *asb;
 22	const struct nvkm_acr_hsf_fwif *unload;
 23	int (*wpr_parse)(struct nvkm_acr *);
 24	u32 (*wpr_layout)(struct nvkm_acr *);
 25	int (*wpr_alloc)(struct nvkm_acr *, u32 wpr_size);
 26	int (*wpr_build)(struct nvkm_acr *, struct nvkm_acr_lsf *rtos);
 27	int (*wpr_patch)(struct nvkm_acr *, s64 adjust);
 28	void (*wpr_check)(struct nvkm_acr *, u64 *start, u64 *limit);
 29	int (*init)(struct nvkm_acr *);
 30	void (*fini)(struct nvkm_acr *);
 31	u64 bootstrap_falcons;
 32};
 33
 34extern const struct nvkm_acr_func gm200_acr;
 35int gm200_acr_wpr_parse(struct nvkm_acr *);
 36u32 gm200_acr_wpr_layout(struct nvkm_acr *);
 37int gm200_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *);
 38int gm200_acr_wpr_patch(struct nvkm_acr *, s64);
 39void gm200_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *);
 40void gm200_acr_wpr_build_lsb_tail(struct nvkm_acr_lsfw *,
 41				  struct lsb_header_tail *);
 42int gm200_acr_init(struct nvkm_acr *);
 43
 44int gm20b_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size);
 45
 46int gp102_acr_wpr_parse(struct nvkm_acr *);
 47u32 gp102_acr_wpr_layout(struct nvkm_acr *);
 48int gp102_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size);
 49int gp102_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *);
 50int gp102_acr_wpr_build_lsb(struct nvkm_acr *, struct nvkm_acr_lsfw *);
 51int gp102_acr_wpr_patch(struct nvkm_acr *, s64);
 52
 53int tu102_acr_init(struct nvkm_acr *);
 54
 55void ga100_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *);
 56
 57struct nvkm_acr_hsfw {
 58	struct nvkm_falcon_fw fw;
 59
 60	enum nvkm_acr_hsf_id {
 61		NVKM_ACR_HSF_PMU,
 62		NVKM_ACR_HSF_SEC2,
 63		NVKM_ACR_HSF_GSP,
 64	} falcon_id;
 65	u32 boot_mbox0;
 66	u32 intr_clear;
 67
 68	struct list_head head;
 69};
 70
 71int nvkm_acr_hsfw_boot(struct nvkm_acr *, const char *name);
 72
 73struct nvkm_acr_hsf_fwif {
 74	int version;
 75	int (*load)(struct nvkm_acr *, const char *bl, const char *fw,
 76		    const char *name, int version,
 77		    const struct nvkm_acr_hsf_fwif *);
 78	const struct nvkm_falcon_fw_func *func;
 79
 80	enum nvkm_acr_hsf_id falcon_id;
 81	u32 boot_mbox0;
 82	u32 intr_clear;
 83};
 84
 85
 86int gm200_acr_hsfw_ctor(struct nvkm_acr *, const char *, const char *, const char *, int,
 87			const struct nvkm_acr_hsf_fwif *);
 88int gm200_acr_hsfw_load_bld(struct nvkm_falcon_fw *);
 89extern const struct nvkm_falcon_fw_func gm200_acr_unload_0;
 90
 91extern const struct nvkm_falcon_fw_func gm20b_acr_load_0;
 92
 93int gp102_acr_load_setup(struct nvkm_falcon_fw *);
 94
 95extern const struct nvkm_falcon_fw_func gp108_acr_load_0;
 96
 97extern const struct nvkm_falcon_fw_func gp108_acr_hsfw_0;
 98int gp108_acr_hsfw_load_bld(struct nvkm_falcon_fw *);
 99
100int ga100_acr_hsfw_ctor(struct nvkm_acr *, const char *, const char *, const char *, int,
101			const struct nvkm_acr_hsf_fwif *);
102
103int nvkm_acr_new_(const struct nvkm_acr_fwif *, struct nvkm_device *, enum nvkm_subdev_type,
104		  int inst, struct nvkm_acr **);
105
106struct nvkm_acr_lsf {
107	const struct nvkm_acr_lsf_func *func;
108	struct nvkm_falcon *falcon;
109	enum nvkm_acr_lsf_id id;
110	struct list_head head;
111};
112
113struct nvkm_acr_lsfw *nvkm_acr_lsfw_add(const struct nvkm_acr_lsf_func *,
114					struct nvkm_acr *, struct nvkm_falcon *,
115					enum nvkm_acr_lsf_id);
116void nvkm_acr_lsfw_del(struct nvkm_acr_lsfw *);
117void nvkm_acr_lsfw_del_all(struct nvkm_acr *);
118#endif
~/ Read-only file preview.