/Linux-v5.4/Documentation/media/uapi/v4l/ |
D | vidioc-g-edid.rst | 19 VIDIOC_G_EDID - VIDIOC_S_EDID - VIDIOC_SUBDEV_G_EDID - VIDIOC_SUBDEV_S_EDID - Get or set the EDID o… 52 These ioctls can be used to get or set an EDID associated with an input 62 pad of the subdevice. If there is no EDID support for the given ``pad`` 65 To get the EDID data the application has to fill in the ``pad``, 66 ``start_block``, ``blocks`` and ``edid`` fields, zero the ``reserved`` 67 array and call :ref:`VIDIOC_G_EDID <VIDIOC_G_EDID>`. The current EDID from block 69 ``edid`` points to. The ``edid`` pointer must point to memory at least 73 ``blocks`` to the actual number of blocks. If there are no EDID blocks 81 total number of available EDID blocks and it will return 0 without 82 copying any data. This is an easy way to discover how many EDID blocks [all …]
|
/Linux-v5.4/drivers/gpu/drm/ |
D | drm_edid.c | 47 #define version_greater(edid, maj, min) \ argument 48 (((edid)->version > (maj)) || \ 49 ((edid)->version == (maj) && (edid)->revision > (min))) 56 * EDID blocks out in the wild have a variety of bugs, try to collect 91 struct edid *edid; member 168 /* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/ 582 * modes are old-school Mac modes. The EDID spec says the 1152x864@75 mode 1322 * drm_edid_header_is_valid - sanity check the header of the base EDID block 1323 * @raw_edid: pointer to raw base EDID block 1325 * Sanity check the header of the base EDID block. [all …]
|
D | drm_edid_load.c | 3 drm_edid_load.c: use a built-in EDID data set or load it via the firmware 22 MODULE_PARM_DESC(edid_firmware, "Do not probe monitor, use specified EDID blob " 43 "edid/800x600.bin", 44 "edid/1024x768.bin", 45 "edid/1280x1024.bin", 46 "edid/1600x1200.bin", 47 "edid/1680x1050.bin", 48 "edid/1920x1080.bin", 162 static int edid_size(const u8 *edid, int data_size) in edid_size() argument 167 return (edid[0x7e] + 1) * EDID_LENGTH; in edid_size() [all …]
|
/Linux-v5.4/drivers/media/i2c/adv748x/ |
D | adv748x-hdmi.c | 462 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument 466 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid() 468 if (!hdmi->edid.present) in adv748x_hdmi_get_edid() 471 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid() 472 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid() 476 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid() 479 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid() 480 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid() 482 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid() 483 edid->blocks * 128); in adv748x_hdmi_get_edid() [all …]
|
/Linux-v5.4/drivers/gpu/drm/bridge/ |
D | nxp-ptn3460.c | 31 struct edid *edid; member 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() 143 DRM_ERROR("Select EDID failed ret=%d\n", ret); in ptn3460_pre_enable() 189 u8 *edid; in ptn3460_get_modes() local 195 if (ptn_bridge->edid) in ptn3460_get_modes() 196 return drm_add_edid_modes(connector, ptn_bridge->edid); in ptn3460_get_modes() 201 edid = kmalloc(EDID_LENGTH, GFP_KERNEL); in ptn3460_get_modes() [all …]
|
D | megachips-stdpxxxx-ge-b850v3-fw.c | 15 * only needed to read EDID from the STDP2690 and to handle HPD events from the 63 struct edid *edid; member 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() 140 kfree(ge_b850v3_lvds_ptr->edid); in ge_b850v3_lvds_get_modes() 141 ge_b850v3_lvds_ptr->edid = (struct edid *)stdp2690_get_edid(client); in ge_b850v3_lvds_get_modes() 143 if (ge_b850v3_lvds_ptr->edid) { in ge_b850v3_lvds_get_modes() 145 ge_b850v3_lvds_ptr->edid); in ge_b850v3_lvds_get_modes() [all …]
|
/Linux-v5.4/Documentation/driver-api/ |
D | edid.rst | 4 EDID chapter 15 - The graphics board is unable to detect any EDID data. 16 - The graphics board incorrectly forwards EDID data to the driver. 17 - The monitor sends no or bogus EDID data. 18 - A KVM sends its own EDID data instead of querying the connected monitor. 24 individually prepared or corrected EDID data set in the /lib/firmware 30 of the built-in binary EDID blobs and to facilitate the creation of 34 To create binary EDID and C source code files from the existing data 37 If you want to create your own EDID file, copy the file 1024x768.S, 39 Makefile. Please note that the EDID data structure expects the timing [all …]
|
/Linux-v5.4/include/media/ |
D | cec.h | 267 struct edid; 282 const struct edid *edid); 358 * @edid: pointer to the EDID data 359 * @size: size in bytes of the EDID data 361 * bytes in the EDID will be returned here. This is set to 0 366 u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, 394 const struct edid *edid) in cec_s_phys_addr_from_edid() argument 398 static inline u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, in cec_get_edid_phys_addr() argument 482 * @edid: the EDID 483 * @size: the size of the EDID [all …]
|
/Linux-v5.4/drivers/gpu/drm/gma500/ |
D | psb_intel_modes.c | 47 * Fetch the EDID information from @connector using the DDC bus. 52 struct edid *edid; in psb_intel_ddc_get_modes() local 55 edid = drm_get_edid(connector, adapter); in psb_intel_ddc_get_modes() 56 if (edid) { in psb_intel_ddc_get_modes() 57 drm_connector_update_edid_property(connector, edid); in psb_intel_ddc_get_modes() 58 ret = drm_add_edid_modes(connector, edid); in psb_intel_ddc_get_modes() 59 kfree(edid); in psb_intel_ddc_get_modes()
|
D | cdv_intel_hdmi.c | 133 struct edid *edid = NULL; in cdv_hdmi_detect() local 136 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter); in cdv_hdmi_detect() 140 if (edid) { in cdv_hdmi_detect() 141 if (edid->input & DRM_EDID_INPUT_DIGITAL) { in cdv_hdmi_detect() 144 drm_detect_hdmi_monitor(edid); in cdv_hdmi_detect() 146 drm_detect_monitor_audio(edid); in cdv_hdmi_detect() 148 kfree(edid); in cdv_hdmi_detect() 215 struct edid *edid = NULL; in cdv_hdmi_get_modes() local 218 edid = drm_get_edid(connector, &gma_encoder->i2c_bus->adapter); in cdv_hdmi_get_modes() 219 if (edid) { in cdv_hdmi_get_modes() [all …]
|
/Linux-v5.4/drivers/gpu/drm/i915/display/ |
D | intel_connector.c | 99 if (!IS_ERR_OR_NULL(intel_connector->edid)) in intel_connector_destroy() 100 kfree(intel_connector->edid); in intel_connector_destroy() 174 * intel_connector_update_modes - update connector from edid 176 * @edid: previously read EDID information 179 struct edid *edid) in intel_connector_update_modes() argument 183 drm_connector_update_edid_property(connector, edid); in intel_connector_update_modes() 184 ret = drm_add_edid_modes(connector, edid); in intel_connector_update_modes() 194 * Fetch the EDID information from @connector using the DDC bus. 199 struct edid *edid; in intel_ddc_get_modes() local 202 edid = drm_get_edid(connector, adapter); in intel_ddc_get_modes() [all …]
|
/Linux-v5.4/drivers/gpu/drm/i915/gvt/ |
D | edid.c | 51 struct intel_vgpu_i2c_edid *edid = &vgpu->display.i2c_edid; in edid_get_byte() local 54 if (edid->state == I2C_NOT_SPECIFIED || !edid->slave_selected) { in edid_get_byte() 55 gvt_vgpu_err("Driver tries to read EDID without proper sequence!\n"); in edid_get_byte() 58 if (edid->current_edid_read >= EDID_SIZE) { in edid_get_byte() 59 gvt_vgpu_err("edid_get_byte() exceeds the size of EDID!\n"); in edid_get_byte() 63 if (!edid->edid_available) { in edid_get_byte() 64 gvt_vgpu_err("Reading EDID but EDID is not available!\n"); in edid_get_byte() 68 if (intel_vgpu_has_monitor_on_port(vgpu, edid->port)) { in edid_get_byte() 70 intel_vgpu_port(vgpu, edid->port)->edid; in edid_get_byte() 72 chr = edid_data->edid_block[edid->current_edid_read]; in edid_get_byte() [all …]
|
/Linux-v5.4/drivers/gpu/drm/udl/ |
D | udl_connector.c | 34 DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret); in udl_get_edid_block() 52 drm_connector_update_edid_property(connector, udl_connector->edid); in udl_get_modes() 53 if (udl_connector->edid) in udl_get_modes() 54 return drm_add_edid_modes(connector, udl_connector->edid); in udl_get_modes() 80 /* cleanup previous edid */ in udl_detect() 81 if (udl_connector->edid != NULL) { in udl_detect() 82 kfree(udl_connector->edid); in udl_detect() 83 udl_connector->edid = NULL; in udl_detect() 86 udl_connector->edid = drm_do_get_edid(connector, udl_get_edid_block, udl); in udl_detect() 87 if (!udl_connector->edid) in udl_detect() [all …]
|
/Linux-v5.4/drivers/gpu/drm/tegra/ |
D | output.c | 18 struct edid *edid = NULL; in tegra_output_connector_get_modes() local 31 if (output->edid) in tegra_output_connector_get_modes() 32 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_output_connector_get_modes() 34 edid = drm_get_edid(connector, output->ddc); in tegra_output_connector_get_modes() 36 cec_notifier_set_phys_addr_from_edid(output->cec, edid); in tegra_output_connector_get_modes() 37 drm_connector_update_edid_property(connector, edid); in tegra_output_connector_get_modes() 39 if (edid) { in tegra_output_connector_get_modes() 40 err = drm_add_edid_modes(connector, edid); in tegra_output_connector_get_modes() 41 kfree(edid); in tegra_output_connector_get_modes() 110 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
|
/Linux-v5.4/drivers/media/i2c/ |
D | ad9389b.c | 63 /* Number of EDID read retries left */ 86 struct ad9389b_state_edid edid; member 343 struct ad9389b_state_edid *edid = &state->edid; in ad9389b_log_status() local 347 "reading EDID", in ad9389b_log_status() 371 v4l2_info(sd, "%s hotplug, %s Rx Sense, %s EDID (%d block(s))\n", in ad9389b_log_status() 376 edid->segments ? "found" : "no", edid->blocks); in ad9389b_log_status() 491 /* Set number of attempts to read the EDID */ in ad9389b_s_power() 503 /* The datasheet says that the EDID ready interrupt should be in ad9389b_set_isr() 664 static int ad9389b_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in ad9389b_get_edid() argument 668 if (edid->pad != 0) in ad9389b_get_edid() [all …]
|
D | adv7511-v4l2.c | 77 /* Number of EDID read retries left */ 120 struct adv7511_state_edid edid; member 582 struct adv7511_state_edid *edid = &state->edid; in adv7511_log_status() local 587 "reading EDID", in adv7511_log_status() 608 v4l2_info(sd, "%s hotplug, %s Rx Sense, %s EDID (%d block(s))\n", in adv7511_log_status() 611 edid->segments ? "found" : "no", in adv7511_log_status() 612 edid->blocks); in adv7511_log_status() 652 v4l2_info(sd, "i2c edid addr: 0x%x\n", state->i2c_edid_addr); in adv7511_log_status() 722 /* Set number of attempts to read the EDID */ in adv7511_s_power() 918 /* The datasheet says that the EDID ready interrupt should be in adv7511_set_isr() [all …]
|
/Linux-v5.4/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-v5.4/drivers/gpu/drm/amd/display/amdgpu_dm/ |
D | amdgpu_dm_helpers.c | 45 * Parse edid caps 47 * @edid: [in] pointer to edid 48 * edid_caps: [in] pointer to edid caps 54 const struct dc_edid *edid, in dm_helpers_parse_edid_caps() argument 57 struct edid *edid_buf = (struct edid *) edid->raw_edid; in dm_helpers_parse_edid_caps() 67 if (!edid_caps || !edid) in dm_helpers_parse_edid_caps() 97 (struct edid *) edid->raw_edid); in dm_helpers_parse_edid_caps() 99 sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads); in dm_helpers_parse_edid_caps() 116 sadb_count = drm_edid_to_speaker_allocation((struct edid *) edid->raw_edid, &sadb); in dm_helpers_parse_edid_caps() 582 struct edid *edid; in dm_helpers_read_local_edid() local [all …]
|
D | amdgpu_dm_mst_types.c | 147 if (amdgpu_dm_connector->edid) { in dm_dp_mst_connector_destroy() 148 kfree(amdgpu_dm_connector->edid); in dm_dp_mst_connector_destroy() 149 amdgpu_dm_connector->edid = NULL; in dm_dp_mst_connector_destroy() 200 if (!aconnector->edid) { in dm_dp_mst_get_modes() 201 struct edid *edid; in dm_dp_mst_get_modes() local 202 edid = drm_dp_mst_get_edid(connector, &aconnector->mst_port->mst_mgr, aconnector->port); in dm_dp_mst_get_modes() 204 if (!edid) { in dm_dp_mst_get_modes() 211 aconnector->edid = edid; in dm_dp_mst_get_modes() 226 (uint8_t *)aconnector->edid, in dm_dp_mst_get_modes() 227 (aconnector->edid->extensions + 1) * EDID_LENGTH, in dm_dp_mst_get_modes() [all …]
|
/Linux-v5.4/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-v5.4/include/drm/ |
D | drm_edid.h | 285 struct edid { struct 293 /* EDID version */ 340 int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads); argument 341 int drm_edid_to_speaker_allocation(struct edid *edid, u8 **sadb); 346 struct edid *drm_load_edid_firmware(struct drm_connector *connector); 350 static inline struct edid * 471 struct edid *drm_do_get_edid(struct drm_connector *connector, 475 struct edid *drm_get_edid(struct drm_connector *connector, 477 struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, 479 struct edid *drm_edid_duplicate(const struct edid *edid); [all …]
|
/Linux-v5.4/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() 75 printk(KERN_DEBUG "nvidiafb: Found OF EDID for head %d\n", conn); in nvidia_probe_of_connector()
|
/Linux-v5.4/drivers/gpu/drm/exynos/ |
D | exynos_drm_vidi.c | 42 struct edid *raw_edid; 196 /* use fake edid data for test. */ in vidi_store_connection() 198 ctx->raw_edid = (struct edid *)fake_edid_info; in vidi_store_connection() 201 if (ctx->raw_edid != (struct edid *)fake_edid_info) { in vidi_store_connection() 202 DRM_DEV_DEBUG_KMS(dev, "edid data is not fake data.\n"); in vidi_store_connection() 241 struct edid *raw_edid; in vidi_connection_ioctl() 243 raw_edid = (struct edid *)(unsigned long)vidi->edid; in vidi_connection_ioctl() 246 "edid data is invalid.\n"); in vidi_connection_ioctl() 258 * only if raw edid data isn't same as fake data. in vidi_connection_ioctl() 261 (struct edid *)fake_edid_info) { in vidi_connection_ioctl() [all …]
|
/Linux-v5.4/drivers/gpu/drm/nouveau/ |
D | nouveau_connector.c | 140 /* We allow 'None' for EDID modes, even on a fixed in nouveau_conn_atomic_set_property() 145 * 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() 472 const void *edid = of_get_property(cn, "EDID", NULL); in nouveau_connector_of_detect() local 475 if (nv_encoder->dcb->i2c_index == idx && edid) { in nouveau_connector_of_detect() 476 nv_connector->edid = in nouveau_connector_of_detect() 477 kmemdup(edid, EDID_LENGTH, GFP_KERNEL); in nouveau_connector_of_detect() 540 /* Cleanup the previous EDID block. */ in nouveau_connector_detect() 541 if (nv_connector->edid) { in nouveau_connector_detect() 543 kfree(nv_connector->edid); in nouveau_connector_detect() [all …]
|