drm_edid_read_base_block(9)
π drm_edid_read_base_block(9) π
okay bestie, so this page is straight out of the Kernel API Manual, and it's genuinely one of the more chill ones β it's all about grabbing a panel's EDID base block and honestly? kind of iconic of it. let's get into it β¨
πΈ NAME πΈ
drm_edid_read_base_block β get a panel's EDID base block. that's the whole vibe. no notes. π
π¦ SYNOPSIS π¦
const struct drm_edid * drm_edid_read_base_block (struct i2c_adapter *adapter );
like, yes, that's the whole signature. she's compact, she's efficient, she ate. π₯
π ARGUMENTS π
adapterβ the I2C adapter you're gonna use for DDC. that's it. that's the only arg. she's low maintenance. π«Ά
β¨ DESCRIPTION β¨
so what does she actually do? this function returns the drm_edid containing the first block of the EDID of a panel. literally just the first block. that's the whole assignment. π―
and here's the thing β this function is intended to be used during early probing, on devices where more than one panel might be present. yup, plural panels, it's giving "which one of y'all is the real one" energy. π
because of that intended use, it has to assume that the EDID of the panel is correct β at least as far as the base block is concerned. in other words (and i'm quoting the universe here): we don't process any overrides here. no override processing. none. zero. nada. periodt. π
β οΈ bestie, don't forget this part: the caller should call drm_edid_free after use. like, please free your stuff. it's not a suggestion, it's a lifestyle. π§
π NOTE π
so it's expected that this function and drm_do_get_edid will both be reading the EDID β but lowkey there's no caching between them. π nope, no shared memory, no "i gotchu from last time", nothing. but since we're only reading the first block, hopefully this extra overhead won't be too big. fingers crossed, fingers crossed. π€
π¨ WARNING: only use this function when the connector is unknown. for example, during the early probe of a panel. the EDID you read from this function is temporary and should be replaced by the full EDID returned from other drm_edid_read. don't get attached, she's not staying. π
β RETURN β
pointer to the allocated EDID base block β or NULL on any failure. any failure at all. she does not discriminate. π«‘
π SEE ALSO π
kernel file: ./drivers/gpu/drm/drm_edid.c β go read it, it's a whole journey. π
and now, the friend group (yes, all of them, i'm not skipping a single one, i would never π):
drm_edid_header_is_valid(9)drm_edid_is_valid(9)drm_edid_valid(9)drm_do_probe_ddc_edid(9)drm_edid_override_connector_update(9)drm_edid_raw(9)drm_edid_alloc(9)drm_edid_dup(9)drm_edid_free(9)drm_probe_ddc(9)drm_get_edid(9)drm_edid_read_custom(9)drm_edid_read_ddc(9)drm_edid_read(9)drm_edid_get_product_id(9)drm_edid_print_product_id(9)drm_edid_get_panel_id(9)drm_get_edid_switcheroo(9)drm_edid_read_switcheroo(9)drm_edid_duplicate(9)edid_get_quirks(9)drm_match_cea_mode(9)drm_display_mode_from_cea_vic(9)drm_edid_match(9)drm_edid_get_monitor_name(9)drm_edid_to_sad(9)drm_edid_to_speaker_allocation(9)drm_av_sync_delay(9)drm_detect_hdmi_monitor(9)drm_detect_monitor_audio(9)drm_default_rgb_quant_range(9)drm_edid_connector_update(9)drm_edid_connector_add_modes(9)drm_connector_update_edid_property(9)drm_add_edid_modes(9)drm_add_modes_noedid(9)drm_hdmi_avi_infoframe_from_display_mode(9)drm_hdmi_avi_infoframe_quant_range(9)drm_hdmi_vendor_infoframe_from_display_mode(9)drm_edid_is_digital(9)
xoxo, this page lives in ./drivers/gpu/drm and it's dated October 2026 β stay hydrated, free your EDID, and don't use this one when the connector is known πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms