drivers/gpu/drm/nouveau/nvif/outp.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nvif/outp.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/nouveau/nvif/outp.c- Extension
.c- Size
- 14232 bytes
- Lines
- 557
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
nvif/outp.hnvif/disp.hnvif/printf.hnvif/class.h
Detected Declarations
function filesfunction nvif_outp_dp_mst_id_putfunction nvif_outp_dp_mst_id_getfunction nvif_outp_dp_sstfunction nvif_outp_dp_drivefunction nvif_outp_dp_trainfunction nvif_outp_dp_ratesfunction nvif_outp_dp_aux_xferfunction nvif_outp_dp_aux_pwrfunction nvif_outp_hda_eldfunction nvif_outp_infoframefunction nvif_outp_hdmifunction nvif_outp_lvdsfunction nvif_outp_bl_setfunction nvif_outp_bl_getfunction nvif_outp_releasefunction nvif_outp_acquirefunction nvif_outp_acquire_piorfunction nvif_outp_acquire_sorfunction nvif_outp_acquire_dacfunction nvif_outp_inheritfunction nvif_outp_inherit_lvdsfunction nvif_outp_inherit_tmdsfunction nvif_outp_inherit_dpfunction nvif_outp_inherit_rgb_crtfunction nvif_outp_load_detectfunction nvif_outp_edid_getfunction nvif_outp_detectfunction nvif_outp_dtorfunction nvif_outp_ctor
Annotated Snippet
#include <nvif/outp.h>
#include <nvif/disp.h>
#include <nvif/printf.h>
#include <nvif/class.h>
int
nvif_outp_dp_mst_vcpi(struct nvif_outp *outp, int head,
u8 start_slot, u8 num_slots, u16 pbn, u16 aligned_pbn)
{
struct nvif_outp_dp_mst_vcpi_v0 args;
int ret;
args.version = 0;
args.head = head;
args.start_slot = start_slot;
args.num_slots = num_slots;
args.pbn = pbn;
args.aligned_pbn = aligned_pbn;
ret = nvif_object_mthd(&outp->object, NVIF_OUTP_V0_DP_MST_VCPI, &args, sizeof(args));
NVIF_ERRON(ret, &outp->object,
"[DP_MST_VCPI head:%d start_slot:%02x num_slots:%02x pbn:%04x aligned_pbn:%04x]",
args.head, args.start_slot, args.num_slots, args.pbn, args.aligned_pbn);
return ret;
}
int
nvif_outp_dp_mst_id_put(struct nvif_outp *outp, u32 id)
{
struct nvif_outp_dp_mst_id_get_v0 args;
int ret;
args.version = 0;
args.id = id;
ret = nvif_object_mthd(&outp->object, NVIF_OUTP_V0_DP_MST_ID_PUT, &args, sizeof(args));
NVIF_ERRON(ret, &outp->object, "[DP_MST_ID_PUT id:%08x]", args.id);
return ret;
}
int
nvif_outp_dp_mst_id_get(struct nvif_outp *outp, u32 *id)
{
struct nvif_outp_dp_mst_id_get_v0 args;
int ret;
args.version = 0;
ret = nvif_object_mthd(&outp->object, NVIF_OUTP_V0_DP_MST_ID_GET, &args, sizeof(args));
NVIF_ERRON(ret, &outp->object, "[DP_MST_ID_GET] id:%08x", args.id);
if (ret)
return ret;
*id = args.id;
return 0;
}
int
nvif_outp_dp_sst(struct nvif_outp *outp, int head, u32 watermark, u32 hblanksym, u32 vblanksym)
{
struct nvif_outp_dp_sst_v0 args;
int ret;
args.version = 0;
args.head = head;
args.watermark = watermark;
args.hblanksym = hblanksym;
args.vblanksym = vblanksym;
ret = nvif_object_mthd(&outp->object, NVIF_OUTP_V0_DP_SST, &args, sizeof(args));
NVIF_ERRON(ret, &outp->object,
"[DP_SST head:%d watermark:%d hblanksym:%d vblanksym:%d]",
args.head, args.watermark, args.hblanksym, args.vblanksym);
return ret;
}
int
nvif_outp_dp_drive(struct nvif_outp *outp, u8 link_nr, u8 pe[4], u8 vs[4])
{
struct nvif_outp_dp_drive_v0 args;
int ret;
args.version = 0;
args.lanes = link_nr;
memcpy(args.pe, pe, sizeof(args.pe));
memcpy(args.vs, vs, sizeof(args.vs));
ret = nvif_object_mthd(&outp->object, NVIF_OUTP_V0_DP_DRIVE, &args, sizeof(args));
NVIF_ERRON(ret, &outp->object, "[DP_DRIVE lanes:%d]", args.lanes);
return ret;
}
Annotation
- Immediate include surface: `nvif/outp.h`, `nvif/disp.h`, `nvif/printf.h`, `nvif/class.h`.
- Detected declarations: `function files`, `function nvif_outp_dp_mst_id_put`, `function nvif_outp_dp_mst_id_get`, `function nvif_outp_dp_sst`, `function nvif_outp_dp_drive`, `function nvif_outp_dp_train`, `function nvif_outp_dp_rates`, `function nvif_outp_dp_aux_xfer`, `function nvif_outp_dp_aux_pwr`, `function nvif_outp_hda_eld`.
- 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.