drivers/gpu/drm/amd/display/dc/soc_and_ip_translator/soc_and_ip_translator.c

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/display/dc/soc_and_ip_translator/soc_and_ip_translator.c
Extension
.c
Size
1180 bytes
Lines
43
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

// SPDX-License-Identifier: MIT
//
// Copyright 2025 Advanced Micro Devices, Inc.

#include "soc_and_ip_translator.h"
#include "soc_and_ip_translator/dcn401/dcn401_soc_and_ip_translator.h"
#include "soc_and_ip_translator/dcn42/dcn42_soc_and_ip_translator.h"

static void dc_construct_soc_and_ip_translator(struct soc_and_ip_translator *soc_and_ip_translator,
		enum dce_version dc_version)
{
	switch (dc_version) {
	case DCN_VERSION_4_01:
		dcn401_construct_soc_and_ip_translator(soc_and_ip_translator);
		break;
	case DCN_VERSION_4_2:
	case DCN_VERSION_4_2B:
		dcn42_construct_soc_and_ip_translator(soc_and_ip_translator);
		break;
	default:
		break;
	}
}

struct soc_and_ip_translator *dc_create_soc_and_ip_translator(enum dce_version dc_version)
{
	struct soc_and_ip_translator *soc_and_ip_translator;

	soc_and_ip_translator = kzalloc_obj(*soc_and_ip_translator);
	if (!soc_and_ip_translator)
		return NULL;

	dc_construct_soc_and_ip_translator(soc_and_ip_translator, dc_version);

	return soc_and_ip_translator;
}

void dc_destroy_soc_and_ip_translator(struct soc_and_ip_translator **soc_and_ip_translator)
{
	kfree(*soc_and_ip_translator);
	*soc_and_ip_translator = NULL;
}

Annotation

Implementation Notes