drivers/gpu/drm/amd/display/dc/gpio/dcn42b/hw_translate_dcn42b.c

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/display/dc/gpio/dcn42b/hw_translate_dcn42b.c
Extension
.c
Size
4090 bytes
Lines
193
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

switch (en) {
		/* Not in DCN42B
		case GPIO_DDC_LINE_DDC
			info->offset = REG(DC_GPIO_DDC1_A);
			break;
		case GPIO_DDC_LINE_DDC
			info->offset = REG(DC_GPIO_DDC2_A);
			break;
		case GPIO_DDC_LINE_DDC
			info->offset = REG(DC_GPIO_DDC3_A);
			break;
		case GPIO_DDC_LINE_DDC
			info->offset = REG(DC_GPIO_DDC4_A);
			break;
		case GPIO_DDC_LINE_DDC5:
			info->offset = REG(DC_GPIO_DDC5_A);
			break;
		*/
		case GPIO_DDC_LINE_DDC_VGA:
			info->offset = REG(DC_GPIO_DDCVGA_A);
			break;
		case GPIO_DDC_LINE_I2C_PAD:
		default:
			ASSERT_CRITICAL(false);
			result = false;
		}
		break;
	case GPIO_ID_DDC_CLOCK:
		info->mask = DC_GPIO_DDCVGA_A__DC_GPIO_DDCVGACLK_A_MASK;
		switch (en) {
		/* Not in DCN42B
		case GPIO_DDC_LINE_DDC1:
				info->offset = REG(DC_GPIO_DDC1_A);
				break;
		case GPIO_DDC_LINE_DDC2:
				info->offset = REG(DC_GPIO_DDC2_A);
				break;
		case GPIO_DDC_LINE_DDC3:
				info->offset = REG(DC_GPIO_DDC3_A);
				break;
		case GPIO_DDC_LINE_DDC4:
				info->offset = REG(DC_GPIO_DDC4_A);
				break;
		case GPIO_DDC_LINE_DDC5:
				info->offset = REG(DC_GPIO_DDC5_A);
				break;
		*/
		case GPIO_DDC_LINE_DDC_VGA:
			info->offset = REG(DC_GPIO_DDCVGA_A);
			break;
		case GPIO_DDC_LINE_I2C_PAD:
		default:
			ASSERT_CRITICAL(false);
			result = false;
		}
			break;
	case GPIO_ID_SYNC:
	case GPIO_ID_VIP_PAD:
	default:
		ASSERT_CRITICAL(false);
		result = false;
	}

	if (result) {
		info->offset_y = info->offset + 2;
		info->offset_en = info->offset + 1;
		info->offset_mask = info->offset - 1;

		info->mask_y = info->mask;
		info->mask_en = info->mask;
		info->mask_mask = info->mask;
	}

	return result;
}

/* function table */
static const struct hw_translate_funcs funcs = {
	.offset_to_id = offset_to_id,
	.id_to_offset = id_to_offset,
};

/*
 * dal_hw_translate_dcn42b_init
 *
 * @brief
 * Initialize Hw translate function pointers.
 *
 * @param
 * struct hw_translate *tr - [out] struct of function pointers

Annotation

Implementation Notes