drivers/gpu/drm/drm_displayid_internal.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/drm_displayid_internal.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/drm_displayid_internal.h
Extension
.h
Size
5454 bytes
Lines
186
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

struct displayid_header {
	u8 rev;
	u8 bytes;
	u8 prod_id;
	u8 ext_count;
} __packed;

struct displayid_block {
	u8 tag;
	u8 rev;
	u8 num_bytes;
} __packed;

struct displayid_tiled_block {
	struct displayid_block base;
	u8 tile_cap;
	u8 topo[3];
	u8 tile_size[4];
	u8 tile_pixel_bezel[5];
	u8 topology_id[8];
} __packed;

struct displayid_detailed_timings_1 {
	u8 pixel_clock[3];
	u8 flags;
	__le16 hactive;
	__le16 hblank;
	__le16 hsync;
	__le16 hsw;
	__le16 vactive;
	__le16 vblank;
	__le16 vsync;
	__le16 vsw;
} __packed;

struct displayid_detailed_timing_block {
	struct displayid_block base;
	struct displayid_detailed_timings_1 timings[];
} __packed;

struct displayid_formula_timings_9 {
	u8 flags;
	__le16 hactive;
	__le16 vactive;
	u8 vrefresh;
} __packed;

struct displayid_formula_timing_block {
	struct displayid_block base;
	struct displayid_formula_timings_9 timings[];
} __packed;

#define DISPLAYID_VESA_MSO_OVERLAP	GENMASK(3, 0)
#define DISPLAYID_VESA_MSO_MODE		GENMASK(6, 5)

struct displayid_vesa_vendor_specific_block {
	struct displayid_block base;
	u8 oui[3];
	u8 data_structure_type;
	u8 mso;
} __packed;

/*
 * DisplayID iteration.
 *
 * Do not access directly, this is private.
 */
struct displayid_iter {
	const struct drm_edid *drm_edid;

	const u8 *section;
	int length;
	int idx;
	int ext_index;

	u8 version;
	u8 primary_use;

	u8 quirks;
};

void displayid_iter_edid_begin(const struct drm_edid *drm_edid,
			       struct displayid_iter *iter);
const struct displayid_block *
__displayid_iter_next(struct displayid_iter *iter);
#define displayid_iter_for_each(__block, __iter) \
	while (((__block) = __displayid_iter_next(__iter)))
void displayid_iter_end(struct displayid_iter *iter);

u8 displayid_version(const struct displayid_iter *iter);

Annotation

Implementation Notes