drivers/gpu/drm/amd/display/dc/dml/display_mode_lib.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/dml/display_mode_lib.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/display/dc/dml/display_mode_lib.c
Extension
.c
Size
20188 bytes
Lines
322
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.

Dependency Surface

Detected Declarations

Annotated Snippet

#include "display_mode_lib.h"
#include "dc_features.h"
#include "dcn20/display_mode_vba_20.h"
#include "dcn20/display_rq_dlg_calc_20.h"
#include "dcn20/display_mode_vba_20v2.h"
#include "dcn20/display_rq_dlg_calc_20v2.h"
#include "dcn21/display_mode_vba_21.h"
#include "dcn21/display_rq_dlg_calc_21.h"
#include "dcn30/display_mode_vba_30.h"
#include "dcn30/display_rq_dlg_calc_30.h"
#include "dcn31/display_mode_vba_31.h"
#include "dcn31/display_rq_dlg_calc_31.h"
#include "dcn314/display_mode_vba_314.h"
#include "dcn314/display_rq_dlg_calc_314.h"
#include "dcn32/display_mode_vba_32.h"
#include "dcn32/display_rq_dlg_calc_32.h"
#include "dml_logger.h"

static const struct dml_funcs dml20_funcs = {
	.validate = dml20_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml20_recalculate,
	.rq_dlg_get_dlg_reg = dml20_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml20_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml20v2_funcs = {
	.validate = dml20v2_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml20v2_recalculate,
	.rq_dlg_get_dlg_reg = dml20v2_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml20v2_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml21_funcs = {
	.validate = dml21_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml21_recalculate,
	.rq_dlg_get_dlg_reg = dml21_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml21_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml30_funcs = {
	.validate = dml30_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml30_recalculate,
	.rq_dlg_get_dlg_reg = dml30_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml30_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml31_funcs = {
	.validate = dml31_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml31_recalculate,
	.rq_dlg_get_dlg_reg = dml31_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml31_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml314_funcs = {
	.validate = dml314_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml314_recalculate,
	.rq_dlg_get_dlg_reg = dml314_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg = dml314_rq_dlg_get_rq_reg
};

static const struct dml_funcs dml32_funcs = {
	.validate = dml32_ModeSupportAndSystemConfigurationFull,
	.recalculate = dml32_recalculate,
	.rq_dlg_get_dlg_reg_v2 = dml32_rq_dlg_get_dlg_reg,
	.rq_dlg_get_rq_reg_v2 = dml32_rq_dlg_get_rq_reg
};

void dml_init_instance(struct display_mode_lib *lib,
		const struct _vcs_dpi_soc_bounding_box_st *soc_bb,
		const struct _vcs_dpi_ip_params_st *ip_params,
		enum dml_project project)
{
	lib->soc = *soc_bb;
	lib->ip = *ip_params;
	lib->project = project;
	switch (project) {
	case DML_PROJECT_NAVI10:
	case DML_PROJECT_DCN201:
		lib->funcs = dml20_funcs;
		break;
	case DML_PROJECT_NAVI10v2:
		lib->funcs = dml20v2_funcs;
		break;
        case DML_PROJECT_DCN21:
                lib->funcs = dml21_funcs;
                break;
	case DML_PROJECT_DCN30:
		lib->funcs = dml30_funcs;
		break;
	case DML_PROJECT_DCN31:

Annotation

Implementation Notes