drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h- Extension
.h- Size
- 3777 bytes
- Lines
- 119
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
subdev/acr.h
Detected Declarations
struct lsb_header_tailstruct nvkm_acr_fwifstruct nvkm_acr_lsfstruct nvkm_acr_funcstruct nvkm_acr_hsfwstruct nvkm_acr_hsf_fwifstruct nvkm_acr_lsfenum nvkm_acr_hsf_id
Annotated Snippet
struct nvkm_acr_fwif {
int version;
int (*load)(struct nvkm_acr *, int version,
const struct nvkm_acr_fwif *);
const struct nvkm_acr_func *func;
};
int gm200_acr_nofw(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
int gm20b_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
int gp102_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *);
struct nvkm_acr_lsf;
struct nvkm_acr_func {
const struct nvkm_acr_hsf_fwif *load;
const struct nvkm_acr_hsf_fwif *ahesasc;
const struct nvkm_acr_hsf_fwif *asb;
const struct nvkm_acr_hsf_fwif *unload;
int (*wpr_parse)(struct nvkm_acr *);
u32 (*wpr_layout)(struct nvkm_acr *);
int (*wpr_alloc)(struct nvkm_acr *, u32 wpr_size);
int (*wpr_build)(struct nvkm_acr *, struct nvkm_acr_lsf *rtos);
int (*wpr_patch)(struct nvkm_acr *, s64 adjust);
void (*wpr_check)(struct nvkm_acr *, u64 *start, u64 *limit);
int (*init)(struct nvkm_acr *);
void (*fini)(struct nvkm_acr *);
u64 bootstrap_falcons;
};
extern const struct nvkm_acr_func gm200_acr;
int gm200_acr_wpr_parse(struct nvkm_acr *);
u32 gm200_acr_wpr_layout(struct nvkm_acr *);
int gm200_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *);
int gm200_acr_wpr_patch(struct nvkm_acr *, s64);
void gm200_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *);
void gm200_acr_wpr_build_lsb_tail(struct nvkm_acr_lsfw *,
struct lsb_header_tail *);
int gm200_acr_init(struct nvkm_acr *);
int gm20b_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size);
int gp102_acr_wpr_parse(struct nvkm_acr *);
u32 gp102_acr_wpr_layout(struct nvkm_acr *);
int gp102_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size);
int gp102_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *);
int gp102_acr_wpr_build_lsb(struct nvkm_acr *, struct nvkm_acr_lsfw *);
int gp102_acr_wpr_patch(struct nvkm_acr *, s64);
int tu102_acr_init(struct nvkm_acr *);
void ga100_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *);
struct nvkm_acr_hsfw {
struct nvkm_falcon_fw fw;
enum nvkm_acr_hsf_id {
NVKM_ACR_HSF_PMU,
NVKM_ACR_HSF_SEC2,
NVKM_ACR_HSF_GSP,
} falcon_id;
u32 boot_mbox0;
u32 intr_clear;
struct list_head head;
};
int nvkm_acr_hsfw_boot(struct nvkm_acr *, const char *name);
struct nvkm_acr_hsf_fwif {
int version;
int (*load)(struct nvkm_acr *, const char *bl, const char *fw,
const char *name, int version,
const struct nvkm_acr_hsf_fwif *);
const struct nvkm_falcon_fw_func *func;
enum nvkm_acr_hsf_id falcon_id;
u32 boot_mbox0;
u32 intr_clear;
};
int gm200_acr_hsfw_ctor(struct nvkm_acr *, const char *, const char *, const char *, int,
const struct nvkm_acr_hsf_fwif *);
int gm200_acr_hsfw_load_bld(struct nvkm_falcon_fw *);
extern const struct nvkm_falcon_fw_func gm200_acr_unload_0;
extern const struct nvkm_falcon_fw_func gm20b_acr_load_0;
int gp102_acr_load_setup(struct nvkm_falcon_fw *);
extern const struct nvkm_falcon_fw_func gp108_acr_load_0;
Annotation
- Immediate include surface: `subdev/acr.h`.
- Detected declarations: `struct lsb_header_tail`, `struct nvkm_acr_fwif`, `struct nvkm_acr_lsf`, `struct nvkm_acr_func`, `struct nvkm_acr_hsfw`, `struct nvkm_acr_hsf_fwif`, `struct nvkm_acr_lsf`, `enum nvkm_acr_hsf_id`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.