/Linux-v6.6/Documentation/userspace-api/media/v4l/ |
D | vidioc-g-edid.rst | 13 VIDIOC_G_EDID - VIDIOC_S_EDID - VIDIOC_SUBDEV_G_EDID - VIDIOC_SUBDEV_S_EDID - Get or set the EDID o… 46 These ioctls can be used to get or set an EDID associated with an input 56 pad of the subdevice. If there is no EDID support for the given ``pad`` 59 To get the EDID data the application has to fill in the ``pad``, 60 ``start_block``, ``blocks`` and ``edid`` fields, zero the ``reserved`` 61 array and call :ref:`VIDIOC_G_EDID <VIDIOC_G_EDID>`. The current EDID from block 63 ``edid`` points to. The ``edid`` pointer must point to memory at least 67 ``blocks`` to the actual number of blocks. If there are no EDID blocks 75 total number of available EDID blocks and it will return 0 without 76 copying any data. This is an easy way to discover how many EDID blocks [all …]
|
/Linux-v6.6/drivers/media/i2c/adv748x/ |
D | adv748x-hdmi.c | 473 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument 477 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid() 479 if (!hdmi->edid.present) in adv748x_hdmi_get_edid() 482 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid() 483 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid() 487 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid() 490 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid() 491 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid() 493 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid() 494 edid->blocks * 128); in adv748x_hdmi_get_edid() [all …]
|
/Linux-v6.6/drivers/gpu/drm/ |
D | drm_edid.c | 58 * EDID blocks out in the wild have a variety of bugs, try to collect 188 /* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/ 602 * modes are old-school Mac modes. The EDID spec says the 1152x864@75 mode 1578 * The opaque EDID type, internal to drm_edid.c. 1581 /* Size allocated for edid */ 1583 const struct edid *edid; member 1586 static int edid_hfeeodb_extension_block_count(const struct edid *edid); 1588 static int edid_hfeeodb_block_count(const struct edid *edid) in edid_hfeeodb_block_count() argument 1590 int eeodb = edid_hfeeodb_extension_block_count(edid); in edid_hfeeodb_block_count() 1595 static int edid_extension_block_count(const struct edid *edid) in edid_extension_block_count() argument [all …]
|
/Linux-v6.6/drivers/gpu/drm/bridge/ |
D | nxp-ptn3460.c | 94 /* Load the selected edid into SRAM (accessed at PTN3460_EDID_ADDR) */ in ptn3460_select_edid() 98 DRM_ERROR("Failed to transfer EDID to sram, ret=%d\n", ret); in ptn3460_select_edid() 102 /* Enable EDID emulation and select the desired EDID */ in ptn3460_select_edid() 108 DRM_ERROR("Failed to write EDID value, ret=%d\n", ret); in ptn3460_select_edid() 138 DRM_ERROR("Select EDID failed ret=%d\n", ret); in ptn3460_pre_enable() 157 static struct edid *ptn3460_get_edid(struct drm_bridge *bridge, in ptn3460_get_edid() 162 u8 *edid; in ptn3460_get_edid() local 168 edid = kmalloc(EDID_LENGTH, GFP_KERNEL); in ptn3460_get_edid() 169 if (!edid) { in ptn3460_get_edid() 170 DRM_ERROR("Failed to allocate EDID\n"); in ptn3460_get_edid() [all …]
|
D | megachips-stdpxxxx-ge-b850v3-fw.c | 15 * only needed to read EDID from the STDP2690 and to handle HPD events from the 93 DRM_ERROR("Unable to read EDID.\n"); in stdp2690_get_edid() 98 DRM_ERROR("Invalid EDID data\n"); in stdp2690_get_edid() 117 DRM_ERROR("Unable to read EDID extension blocks.\n"); in stdp2690_get_edid() 121 DRM_ERROR("Invalid EDID data\n"); in stdp2690_get_edid() 133 static struct edid *ge_b850v3_lvds_get_edid(struct drm_bridge *bridge, in ge_b850v3_lvds_get_edid() 140 return (struct edid *)stdp2690_get_edid(client); in ge_b850v3_lvds_get_edid() 145 struct edid *edid; in ge_b850v3_lvds_get_modes() local 148 edid = ge_b850v3_lvds_get_edid(&ge_b850v3_lvds_ptr->bridge, connector); in ge_b850v3_lvds_get_modes() 150 drm_connector_update_edid_property(connector, edid); in ge_b850v3_lvds_get_modes() [all …]
|
D | simple-bridge.c | 54 struct edid *edid; in simple_bridge_get_modes() local 58 edid = drm_bridge_get_edid(sbridge->next_bridge, connector); in simple_bridge_get_modes() 59 if (!edid) in simple_bridge_get_modes() 60 DRM_INFO("EDID read failed. Fallback to standard modes\n"); in simple_bridge_get_modes() 62 edid = NULL; in simple_bridge_get_modes() 65 if (!edid) { in simple_bridge_get_modes() 76 drm_connector_update_edid_property(connector, edid); in simple_bridge_get_modes() 77 ret = drm_add_edid_modes(connector, edid); in simple_bridge_get_modes() 78 kfree(edid); in simple_bridge_get_modes()
|
/Linux-v6.6/Documentation/admin-guide/ |
D | edid.rst | 4 EDID chapter 16 - The graphics board is unable to detect any EDID data. 17 - The graphics board incorrectly forwards EDID data to the driver. 18 - The monitor sends no or bogus EDID data. 19 - A KVM sends its own EDID data instead of querying the connected monitor. 26 individually prepared or corrected EDID data set in the /lib/firmware 32 of the built-in binary EDID blobs and to facilitate the creation of 36 To create binary EDID and C source code files from the existing data 37 material, simply type "make" in tools/edid/. 39 If you want to create your own EDID file, copy the file 1024x768.S, [all …]
|
/Linux-v6.6/Documentation/devicetree/bindings/media/i2c/ |
D | adv7604.yaml | 36 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 37 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 38 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 39 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 40 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 41 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 42 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 43 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 44 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] 45 - enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ] [all …]
|
D | adv748x.yaml | 38 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 39 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 40 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 41 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 42 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 43 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 44 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 45 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 46 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] 47 - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ] [all …]
|
/Linux-v6.6/drivers/gpu/drm/msm/dp/ |
D | dp_panel.c | 158 struct edid *edid) in dp_panel_update_modes() argument 162 if (edid) { in dp_panel_update_modes() 163 rc = drm_connector_update_edid_property(connector, edid); in dp_panel_update_modes() 165 DRM_ERROR("failed to update edid property %d\n", rc); in dp_panel_update_modes() 168 rc = drm_add_edid_modes(connector, edid); in dp_panel_update_modes() 174 DRM_ERROR("failed to update edid property %d\n", rc); in dp_panel_update_modes() 222 kfree(dp_panel->edid); in dp_panel_read_sink_caps() 223 dp_panel->edid = NULL; in dp_panel_read_sink_caps() 225 dp_panel->edid = drm_get_edid(connector, in dp_panel_read_sink_caps() 227 if (!dp_panel->edid) { in dp_panel_read_sink_caps() [all …]
|
/Linux-v6.6/drivers/gpu/drm/i915/gvt/ |
D | edid.c | 54 struct intel_vgpu_i2c_edid *edid = &vgpu->display.i2c_edid; in edid_get_byte() local 57 if (edid->state == I2C_NOT_SPECIFIED || !edid->slave_selected) { in edid_get_byte() 58 gvt_vgpu_err("Driver tries to read EDID without proper sequence!\n"); in edid_get_byte() 61 if (edid->current_edid_read >= EDID_SIZE) { in edid_get_byte() 62 gvt_vgpu_err("edid_get_byte() exceeds the size of EDID!\n"); in edid_get_byte() 66 if (!edid->edid_available) { in edid_get_byte() 67 gvt_vgpu_err("Reading EDID but EDID is not available!\n"); in edid_get_byte() 71 if (intel_vgpu_has_monitor_on_port(vgpu, edid->port)) { in edid_get_byte() 73 intel_vgpu_port(vgpu, edid->port)->edid; in edid_get_byte() 75 chr = edid_data->edid_block[edid->current_edid_read]; in edid_get_byte() [all …]
|
/Linux-v6.6/drivers/gpu/drm/gma500/ |
D | psb_intel_modes.c | 50 * Fetch the EDID information from @connector using the DDC bus. 55 struct edid *edid; in psb_intel_ddc_get_modes() local 58 edid = drm_get_edid(connector, adapter); in psb_intel_ddc_get_modes() 59 if (edid) { in psb_intel_ddc_get_modes() 60 drm_connector_update_edid_property(connector, edid); in psb_intel_ddc_get_modes() 61 ret = drm_add_edid_modes(connector, edid); in psb_intel_ddc_get_modes() 62 kfree(edid); in psb_intel_ddc_get_modes()
|
D | cdv_intel_hdmi.c | 131 struct edid *edid = NULL; in cdv_hdmi_detect() local 134 edid = drm_get_edid(connector, connector->ddc); in cdv_hdmi_detect() 138 if (edid) { in cdv_hdmi_detect() 139 if (edid->input & DRM_EDID_INPUT_DIGITAL) { in cdv_hdmi_detect() 142 drm_detect_hdmi_monitor(edid); in cdv_hdmi_detect() 144 drm_detect_monitor_audio(edid); in cdv_hdmi_detect() 146 kfree(edid); in cdv_hdmi_detect() 212 struct edid *edid = NULL; in cdv_hdmi_get_modes() local 215 edid = drm_get_edid(connector, connector->ddc); in cdv_hdmi_get_modes() 216 if (edid) { in cdv_hdmi_get_modes() [all …]
|
/Linux-v6.6/include/media/ |
D | cec.h | 197 * read the EDID and is not dependent on an external HDMI driver. 311 struct edid; 326 const struct edid *edid); 402 * @edid: pointer to the EDID data 403 * @size: size in bytes of the EDID data 405 * bytes in the EDID will be returned here. This is set to 0 410 u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, 438 const struct edid *edid) in cec_s_phys_addr_from_edid() argument 442 static inline u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, in cec_get_edid_phys_addr() argument 480 * @edid: the EDID [all …]
|
D | cec-notifier.h | 16 struct edid; 89 * cec_notifier_set_phys_addr_from_edid - set parse the PA from the EDID. 91 * @edid: the struct edid pointer 93 * Parses the EDID to obtain the new CEC physical address and set it. 97 const struct edid *edid); 142 const struct edid *edid) in cec_notifier_set_phys_addr_from_edid() argument
|
/Linux-v6.6/drivers/video/fbdev/core/ |
D | fbmon.c | 8 * The EDID Parser is a conglomeration from the following sources: 33 #include <video/edid.h> 36 #include "../edid.h" 39 * EDID parser 42 #undef DEBUG /* define this for verbose EDID parsing output */ 145 static int check_edid(unsigned char *edid) in check_edid() argument 147 unsigned char *block = edid + ID_MANUFACTURER_NAME, manufacturer[4]; in check_edid() 170 if (edid[i] != edid_v1_header[i]) { in check_edid() 177 b = edid + EDID_STRUCT_DISPLAY; in check_edid() 184 b = edid + DETAILED_TIMING_DESCRIPTIONS_START; in check_edid() [all …]
|
D | fb_ddc.c | 2 * drivers/video/fb_ddc.c - DDC/EDID read support. 18 #include "../edid.h" 41 dev_warn(&adapter->dev, "unable to allocate memory for EDID " in fb_do_probe_ddc_edid() 49 dev_warn(&adapter->dev, "unable to read EDID block.\n"); in fb_do_probe_ddc_edid() 57 unsigned char *edid = NULL; in fb_ddc_read() local 90 edid = fb_do_probe_ddc_edid(adapter); in fb_ddc_read() 110 if (edid) in fb_ddc_read() 120 return edid; in fb_ddc_read() 126 MODULE_DESCRIPTION("DDC/EDID reading support");
|
/Linux-v6.6/drivers/gpu/drm/tegra/ |
D | output.c | 23 struct edid *edid = NULL; in tegra_output_connector_get_modes() local 36 if (output->edid) in tegra_output_connector_get_modes() 37 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_output_connector_get_modes() 39 edid = drm_get_edid(connector, output->ddc); in tegra_output_connector_get_modes() 41 cec_notifier_set_phys_addr_from_edid(output->cec, edid); in tegra_output_connector_get_modes() 42 drm_connector_update_edid_property(connector, edid); in tegra_output_connector_get_modes() 44 if (edid) { in tegra_output_connector_get_modes() 45 err = drm_add_edid_modes(connector, edid); in tegra_output_connector_get_modes() 46 kfree(edid); in tegra_output_connector_get_modes() 126 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
|
/Linux-v6.6/drivers/media/i2c/ |
D | adv7511-v4l2.c | 76 /* Number of EDID read retries left */ 119 struct adv7511_state_edid edid; member 548 struct adv7511_state_edid *edid = &state->edid; in adv7511_log_status() local 553 "reading EDID", in adv7511_log_status() 574 v4l2_info(sd, "%s hotplug, %s Rx Sense, %s EDID (%d block(s))\n", in adv7511_log_status() 577 edid->segments ? "found" : "no", in adv7511_log_status() 578 edid->blocks); in adv7511_log_status() 618 v4l2_info(sd, "i2c edid addr: 0x%x\n", state->i2c_edid_addr); in adv7511_log_status() 688 /* Set number of attempts to read the EDID */ in adv7511_s_power() 884 /* The datasheet says that the EDID ready interrupt should be in adv7511_set_isr() [all …]
|
/Linux-v6.6/drivers/video/fbdev/via/ |
D | via_aux_edid.c | 6 * generic EDID driver 12 #include "../edid.h" 15 static const char *name = "EDID"; 21 unsigned char edid[EDID_LENGTH]; in query_edid() local 33 if (via_aux_read(drv, 0x00, edid, EDID_LENGTH)) { in query_edid() 34 fb_edid_to_monspecs(edid, spec); in query_edid() 42 printk(KERN_DEBUG "EDID: %s %s\n", spec->manufacturer, spec->monitor); in query_edid() 83 /* as EDID devices can be connected/disconnected just add the driver */ in via_aux_edid_probe()
|
/Linux-v6.6/include/drm/ |
D | drm_edid.h | 330 struct edid { struct 338 /* EDID version */ 385 int drm_edid_to_sad(const struct edid *edid, struct cea_sad **sads); argument 386 int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb); 395 bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2); 562 struct edid *drm_do_get_edid(struct drm_connector *connector, 566 struct edid *drm_get_edid(struct drm_connector *connector, 569 struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, 571 struct edid *drm_edid_duplicate(const struct edid *edid); 572 int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); [all …]
|
/Linux-v6.6/drivers/gpu/drm/nouveau/ |
D | nouveau_connector.c | 139 /* We allow 'None' for EDID modes, even on a fixed in nouveau_conn_atomic_set_property() 144 * Non-EDID modes will force the use of GPU scaling in nouveau_conn_atomic_set_property() 400 kfree(nv_connector->edid); in nouveau_connector_destroy() 475 const void *edid = of_get_property(cn, "EDID", NULL); in nouveau_connector_of_detect() local 478 if (nv_encoder->dcb->i2c_index == idx && edid) { in nouveau_connector_of_detect() 479 nv_connector->edid = in nouveau_connector_of_detect() 480 kmemdup(edid, EDID_LENGTH, GFP_KERNEL); in nouveau_connector_of_detect() 538 struct edid *edid) in nouveau_connector_set_edid() argument 540 if (nv_connector->edid != edid) { in nouveau_connector_set_edid() 541 struct edid *old_edid = nv_connector->edid; in nouveau_connector_set_edid() [all …]
|
/Linux-v6.6/drivers/gpu/drm/exynos/ |
D | exynos_drm_vidi.c | 44 struct edid *raw_edid; 198 /* use fake edid data for test. */ in vidi_store_connection() 200 ctx->raw_edid = (struct edid *)fake_edid_info; in vidi_store_connection() 203 if (ctx->raw_edid != (struct edid *)fake_edid_info) { in vidi_store_connection() 204 DRM_DEV_DEBUG_KMS(dev, "edid data is not fake data.\n"); in vidi_store_connection() 249 struct edid *raw_edid; in vidi_connection_ioctl() 251 raw_edid = (struct edid *)(unsigned long)vidi->edid; in vidi_connection_ioctl() 254 "edid data is invalid.\n"); in vidi_connection_ioctl() 266 * only if raw edid data isn't same as fake data. in vidi_connection_ioctl() 269 (struct edid *)fake_edid_info) { in vidi_connection_ioctl() [all …]
|
/Linux-v6.6/drivers/video/fbdev/nvidia/ |
D | nv_of.c | 26 #include "../edid.h" 34 "DFP,EDID", "LCD,EDID", "EDID", "EDID1", in nvidia_probe_of_connector() 35 "EDID,B", "EDID,A", NULL }; in nvidia_probe_of_connector() 74 printk(KERN_DEBUG "nvidiafb: Found OF EDID for head %d\n", conn); in nvidia_probe_of_connector()
|
/Linux-v6.6/drivers/gpu/drm/amd/display/amdgpu_dm/ |
D | amdgpu_dm_helpers.c | 47 static u32 edid_extract_panel_id(struct edid *edid) in edid_extract_panel_id() argument 49 return (u32)edid->mfg_id[0] << 24 | in edid_extract_panel_id() 50 (u32)edid->mfg_id[1] << 16 | in edid_extract_panel_id() 51 (u32)EDID_PRODUCT_ID(edid); in edid_extract_panel_id() 54 static void apply_edid_quirks(struct edid *edid, struct dc_edid_caps *edid_caps) in apply_edid_quirks() argument 56 uint32_t panel_id = edid_extract_panel_id(edid); in apply_edid_quirks() 72 * dm_helpers_parse_edid_caps() - Parse edid caps 75 * @edid: [in] pointer to edid 76 * @edid_caps: [in] pointer to edid caps 82 const struct dc_edid *edid, in dm_helpers_parse_edid_caps() argument [all …]
|