drm_edid_read_ddc(9)
β¨ drm_edid_read_ddc(9) β¨
okay bestie, welcome to the Kernel API Manual page for drm_edid_read_ddc β it's giving "I read monitors for a living" and honestly? iconic. π
πΈ NAME πΈ
drm_edid_read_ddc β read EDID data using the given I2C adapter. that's it, that's the whole vibe π
π¦ SYNOPSIS π¦
const struct drm_edid * drm_edid_read_ddc (struct drm_connector
*connector , struct i2c_adapter *adapter );
like yes it's two args and a return type, we love a compact signature π₯
π ARGUMENTS π
connectorβ the connector you're working with. your main character π«Άadapterβ the I2C adapter to use for DDC. this is the little messenger that goes and chats with your display π
π DESCRIPTION π
so basically: read the EDID using the given I2C adapter. no cap, that's the core job.
BUT β plot twist β the EDID might get overridden π«’ either by the debugfs override_edid, or by the firmware EDID (that's drm_edid_load_firmware and the drm.edid_firmware parameter). and bestie, that's the priority order, exactly like that. if either one of them is present, it straight-up bypasses the actual EDID reads. like, no real reading happens. skipped. byeee π
π real talk though: prefer initializingconnector->ddcwithdrm_connector_init_with_ddcand usingdrm_edid_readinstead of this function. that's the glow-up path, fr fr.
also!! the returned pointer must be freed using drm_edid_free. do not ghost your allocations, bestie, that's how leaks happen π
β RETURN β
pointer to EDID π β or NULL if the probe/read failed π (iykyk, sometimes the display just doesn't wanna talk)
π§ SEE ALSO π§
the kernel file lives at ./drivers/gpu/drm/drm_edid.c β go say hi π
and the whole friend group:
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(9)drm_edid_get_product_id(9)drm_edid_print_product_id(9)drm_edid_get_panel_id(9)drm_edid_read_base_block(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)
and that's the whole page, bestie! πβ¨ this lil masterpiece lives in ./drivers/gpu/drm, dated October 2026, and it's filed under drm_edid_read_ddc(9) β go forth and read those EDIDs responsibly πππ¦
π¦ 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