drivers/gpu/drm/display/drm_hdmi_helper.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/display/drm_hdmi_helper.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/display/drm_hdmi_helper.c
Extension
.c
Size
13717 bytes
Lines
429
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: exported/initcall integration point
Status
integration 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

struct drm_hdmi_acr_n_cts_entry {
	unsigned int n;
	unsigned int cts;
};

struct drm_hdmi_acr_data {
	unsigned long tmds_clock_khz;
	struct drm_hdmi_acr_n_cts_entry n_cts_32k,
					n_cts_44k1,
					n_cts_48k;
};

static const struct drm_hdmi_acr_data hdmi_acr_n_cts[] = {
	{
		/* "Other" entry */
		.n_cts_32k =  { .n = 4096, },
		.n_cts_44k1 = { .n = 6272, },
		.n_cts_48k =  { .n = 6144, },
	}, {
		.tmds_clock_khz = 25175,
		.n_cts_32k =  { .n = 4576,  .cts = 28125, },
		.n_cts_44k1 = { .n = 7007,  .cts = 31250, },
		.n_cts_48k =  { .n = 6864,  .cts = 28125, },
	}, {
		.tmds_clock_khz = 25200,
		.n_cts_32k =  { .n = 4096,  .cts = 25200, },
		.n_cts_44k1 = { .n = 6272,  .cts = 28000, },
		.n_cts_48k =  { .n = 6144,  .cts = 25200, },
	}, {
		.tmds_clock_khz = 27000,
		.n_cts_32k =  { .n = 4096,  .cts = 27000, },
		.n_cts_44k1 = { .n = 6272,  .cts = 30000, },
		.n_cts_48k =  { .n = 6144,  .cts = 27000, },
	}, {
		.tmds_clock_khz = 27027,
		.n_cts_32k =  { .n = 4096,  .cts = 27027, },
		.n_cts_44k1 = { .n = 6272,  .cts = 30030, },
		.n_cts_48k =  { .n = 6144,  .cts = 27027, },
	}, {
		.tmds_clock_khz = 54000,
		.n_cts_32k =  { .n = 4096,  .cts = 54000, },
		.n_cts_44k1 = { .n = 6272,  .cts = 60000, },
		.n_cts_48k =  { .n = 6144,  .cts = 54000, },
	}, {
		.tmds_clock_khz = 54054,
		.n_cts_32k =  { .n = 4096,  .cts = 54054, },
		.n_cts_44k1 = { .n = 6272,  .cts = 60060, },
		.n_cts_48k =  { .n = 6144,  .cts = 54054, },
	}, {
		.tmds_clock_khz = 74176,
		.n_cts_32k =  { .n = 11648, .cts = 210937, }, /* and 210938 */
		.n_cts_44k1 = { .n = 17836, .cts = 234375, },
		.n_cts_48k =  { .n = 11648, .cts = 140625, },
	}, {
		.tmds_clock_khz = 74250,
		.n_cts_32k =  { .n = 4096,  .cts = 74250, },
		.n_cts_44k1 = { .n = 6272,  .cts = 82500, },
		.n_cts_48k =  { .n = 6144,  .cts = 74250, },
	}, {
		.tmds_clock_khz = 148352,
		.n_cts_32k =  { .n = 11648, .cts = 421875, },
		.n_cts_44k1 = { .n = 8918,  .cts = 234375, },
		.n_cts_48k =  { .n = 5824,  .cts = 140625, },
	}, {
		.tmds_clock_khz = 148500,
		.n_cts_32k =  { .n = 4096,  .cts = 148500, },
		.n_cts_44k1 = { .n = 6272,  .cts = 165000, },
		.n_cts_48k =  { .n = 6144,  .cts = 148500, },
	}, {
		.tmds_clock_khz = 296703,
		.n_cts_32k =  { .n = 5824,  .cts = 421875, },
		.n_cts_44k1 = { .n = 4459,  .cts = 234375, },
		.n_cts_48k =  { .n = 5824,  .cts = 281250, },
	}, {
		.tmds_clock_khz = 297000,
		.n_cts_32k =  { .n = 3072,  .cts = 222750, },
		.n_cts_44k1 = { .n = 4704,  .cts = 247500, },
		.n_cts_48k =  { .n = 5120,  .cts = 247500, },
	}, {
		.tmds_clock_khz = 593407,
		.n_cts_32k =  { .n = 5824,  .cts = 843750, },
		.n_cts_44k1 = { .n = 8918,  .cts = 937500, },
		.n_cts_48k =  { .n = 5824,  .cts = 562500, },
	}, {
		.tmds_clock_khz = 594000,
		.n_cts_32k =  { .n = 3072,  .cts = 445500, },
		.n_cts_44k1 = { .n = 9408,  .cts = 990000, },
		.n_cts_48k =  { .n = 6144,  .cts = 594000, },
	},
};

Annotation

Implementation Notes