| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-4.19/Documentation/media/uapi/v4l/ |
| D | vidioc-g-edid.rst | 12 VIDIOC_G_EDID - VIDIOC_S_EDID - VIDIOC_SUBDEV_G_EDID - VIDIOC_SUBDEV_S_EDID - Get or set the EDID o… 45 These ioctls can be used to get or set an EDID associated with an input 55 pad of the subdevice. If there is no EDID support for the given ``pad`` 58 To get the EDID data the application has to fill in the ``pad``, 59 ``start_block``, ``blocks`` and ``edid`` fields, zero the ``reserved`` 60 array and call :ref:`VIDIOC_G_EDID <VIDIOC_G_EDID>`. The current EDID from block 62 ``edid`` points to. The ``edid`` pointer must point to memory at least 66 ``blocks`` to the actual number of blocks. If there are no EDID blocks 74 total number of available EDID blocks and it will return 0 without 75 copying any data. This is an easy way to discover how many EDID blocks [all …]
|
| /kernel/linux/linux-4.19/drivers/gpu/drm/ |
| D | drm_edid.c | 44 #define version_greater(edid, maj, min) \ argument 45 (((edid)->version > (maj)) || \ 46 ((edid)->version == (maj) && (edid)->revision > (min))) 53 * EDID blocks out in the wild have a variety of bugs, try to collect 90 struct edid *edid; member 175 /* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/ 590 * modes are old-school Mac modes. The EDID spec says the 1152x864@75 mode 1330 * drm_edid_header_is_valid - sanity check the header of the base EDID block 1331 * @raw_edid: pointer to raw base EDID block 1333 * Sanity check the header of the base EDID block. [all …]
|
| D | drm_edid_load.c | 2 drm_edid_load.c: use a built-in EDID data set or load it via the firmware 31 MODULE_PARM_DESC(edid_firmware, "Do not probe monitor, use specified EDID blob " 52 "edid/800x600.bin", 53 "edid/1024x768.bin", 54 "edid/1280x1024.bin", 55 "edid/1600x1200.bin", 56 "edid/1680x1050.bin", 57 "edid/1920x1080.bin", 171 static int edid_size(const u8 *edid, int data_size) in edid_size() argument 176 return (edid[0x7e] + 1) * EDID_LENGTH; in edid_size() [all …]
|
| /kernel/linux/linux-4.19/drivers/media/i2c/adv748x/ |
| D | adv748x-hdmi.c | 466 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument 470 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid() 472 if (!hdmi->edid.present) in adv748x_hdmi_get_edid() 475 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid() 476 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid() 480 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid() 483 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid() 484 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid() 486 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid() 487 edid->blocks * 128); in adv748x_hdmi_get_edid() [all …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/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*/ 583 * modes are old-school Mac modes. The EDID spec says the 1152x864@75 mode 1563 * drm_edid_header_is_valid - sanity check the header of the base EDID block 1564 * @raw_edid: pointer to raw base EDID block 1566 * 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 …]
|
| /kernel/linux/linux-5.10/Documentation/admin-guide/ |
| D | edid.rst | 4 EDID title 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 …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-4.19/drivers/gpu/drm/i915/ |
| D | intel_modes.c | 34 * intel_connector_update_modes - update connector from edid 36 * @edid: previously read EDID information 39 struct edid *edid) in intel_connector_update_modes() argument 43 drm_connector_update_edid_property(connector, edid); in intel_connector_update_modes() 44 ret = drm_add_edid_modes(connector, edid); in intel_connector_update_modes() 54 * Fetch the EDID information from @connector using the DDC bus. 59 struct edid *edid; in intel_ddc_get_modes() local 62 edid = drm_get_edid(connector, adapter); in intel_ddc_get_modes() 63 if (!edid) in intel_ddc_get_modes() 66 ret = intel_connector_update_modes(connector, edid); in intel_ddc_get_modes() [all …]
|
| /kernel/linux/linux-4.19/Documentation/EDID/ |
| D | HOWTO.txt | 9 - The graphics board is unable to detect any EDID data. 10 - The graphics board incorrectly forwards EDID data to the driver. 11 - The monitor sends no or bogus EDID data. 12 - A KVM sends its own EDID data instead of querying the connected monitor. 18 individually prepared or corrected EDID data set in the /lib/firmware 24 of the built-in binary EDID blobs and to facilitate the creation of 28 To create binary EDID and C source code files from the existing data 31 If you want to create your own EDID file, copy the file 1024x768.S, 33 Makefile. Please note that the EDID data structure expects the timing 40 EDID: [all …]
|
| /kernel/linux/linux-4.19/drivers/gpu/drm/bridge/ |
| D | nxp-ptn3460.c | 41 struct edid *edid; member 104 /* Load the selected edid into SRAM (accessed at PTN3460_EDID_ADDR) */ in ptn3460_select_edid() 108 DRM_ERROR("Failed to transfer EDID to sram, ret=%d\n", ret); in ptn3460_select_edid() 112 /* Enable EDID emulation and select the desired EDID */ in ptn3460_select_edid() 118 DRM_ERROR("Failed to write EDID value, ret=%d\n", ret); in ptn3460_select_edid() 153 DRM_ERROR("Select EDID failed ret=%d\n", ret); in ptn3460_pre_enable() 199 u8 *edid; in ptn3460_get_modes() local 205 if (ptn_bridge->edid) in ptn3460_get_modes() 206 return drm_add_edid_modes(connector, ptn_bridge->edid); in ptn3460_get_modes() 211 edid = kmalloc(EDID_LENGTH, GFP_KERNEL); in ptn3460_get_modes() [all …]
|
| /kernel/linux/linux-4.19/include/media/ |
| D | cec.h | 237 struct edid; 251 const struct edid *edid); 325 * @edid: pointer to the EDID data 326 * @size: size in bytes of the EDID data 328 * bytes in the EDID will be returned here. This is set to 0 333 u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, 358 const struct edid *edid) in cec_s_phys_addr_from_edid() argument 362 static inline u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, in cec_get_edid_phys_addr() argument 388 * @edid: the EDID 389 * @size: the size of the EDID [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/msm/dp/ |
| D | dp_panel.c | 133 struct edid *edid) in dp_panel_update_modes() argument 137 if (edid) { in dp_panel_update_modes() 138 rc = drm_connector_update_edid_property(connector, edid); in dp_panel_update_modes() 140 DRM_ERROR("failed to update edid property %d\n", rc); in dp_panel_update_modes() 143 rc = drm_add_edid_modes(connector, edid); in dp_panel_update_modes() 150 DRM_ERROR("failed to update edid property %d\n", rc); in dp_panel_update_modes() 192 kfree(dp_panel->edid); in dp_panel_read_sink_caps() 193 dp_panel->edid = NULL; in dp_panel_read_sink_caps() 195 dp_panel->edid = drm_get_edid(connector, in dp_panel_read_sink_caps() 197 if (!dp_panel->edid) { in dp_panel_read_sink_caps() [all …]
|
| /kernel/linux/linux-4.19/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 …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/udl/ |
| D | udl_connector.c | 35 DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret); in udl_get_edid_block() 53 drm_connector_update_edid_property(connector, udl_connector->edid); in udl_get_modes() 54 if (udl_connector->edid) in udl_get_modes() 55 return drm_add_edid_modes(connector, udl_connector->edid); in udl_get_modes() 81 /* cleanup previous edid */ in udl_detect() 82 if (udl_connector->edid != NULL) { in udl_detect() 83 kfree(udl_connector->edid); in udl_detect() 84 udl_connector->edid = NULL; in udl_detect() 87 udl_connector->edid = drm_do_get_edid(connector, udl_get_edid_block, udl); in udl_detect() 88 if (!udl_connector->edid) in udl_detect() [all …]
|
| /kernel/linux/linux-5.10/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()
|
| /kernel/linux/linux-5.10/include/media/ |
| D | cec.h | 177 * read the EDID and is not dependent on an external HDMI driver. 287 struct edid; 302 const struct edid *edid); 378 * @edid: pointer to the EDID data 379 * @size: size in bytes of the EDID data 381 * bytes in the EDID will be returned here. This is set to 0 386 u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, 414 const struct edid *edid) in cec_s_phys_addr_from_edid() argument 418 static inline u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size, in cec_get_edid_phys_addr() argument 456 * @edid: the EDID [all …]
|
| /kernel/linux/linux-4.19/include/drm/ |
| D | drm_edid.h | 282 struct edid { struct 290 /* EDID version */ 336 int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads); argument 337 int drm_edid_to_speaker_allocation(struct edid *edid, u8 **sadb); 342 struct edid *drm_load_edid_firmware(struct drm_connector *connector); 346 static inline struct edid * 459 struct edid *drm_do_get_edid(struct drm_connector *connector, 463 struct edid *drm_get_edid(struct drm_connector *connector, 465 struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, 467 struct edid *drm_edid_duplicate(const struct edid *edid); [all …]
|
| /kernel/linux/linux-4.19/drivers/gpu/drm/amd/display/amdgpu_dm/ |
| D | amdgpu_dm_helpers.c | 46 * Parse edid caps 48 * @edid: [in] pointer to edid 49 * edid_caps: [in] pointer to edid caps 55 const struct dc_edid *edid, in dm_helpers_parse_edid_caps() argument 58 struct edid *edid_buf = (struct edid *) edid->raw_edid; in dm_helpers_parse_edid_caps() 68 if (!edid_caps || !edid) in dm_helpers_parse_edid_caps() 98 (struct edid *) edid->raw_edid); in dm_helpers_parse_edid_caps() 100 sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads); in dm_helpers_parse_edid_caps() 117 sadb_count = drm_edid_to_speaker_allocation((struct edid *) edid->raw_edid, &sadb); in dm_helpers_parse_edid_caps() 482 struct edid *edid; in dm_helpers_read_local_edid() local [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/i915/display/ |
| D | intel_connector.c | 100 if (!IS_ERR_OR_NULL(intel_connector->edid)) in intel_connector_destroy() 101 kfree(intel_connector->edid); in intel_connector_destroy() 178 * intel_connector_update_modes - update connector from edid 180 * @edid: previously read EDID information 183 struct edid *edid) in intel_connector_update_modes() argument 187 drm_connector_update_edid_property(connector, edid); in intel_connector_update_modes() 188 ret = drm_add_edid_modes(connector, edid); in intel_connector_update_modes() 198 * Fetch the EDID information from @connector using the DDC bus. 203 struct edid *edid; in intel_ddc_get_modes() local 206 edid = drm_get_edid(connector, adapter); in intel_ddc_get_modes() [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/amd/display/amdgpu_dm/ |
| D | amdgpu_dm_helpers.c | 46 * Parse edid caps 48 * @edid: [in] pointer to edid 49 * edid_caps: [in] pointer to edid caps 55 const struct dc_edid *edid, in dm_helpers_parse_edid_caps() argument 58 struct edid *edid_buf = (struct edid *) edid->raw_edid; in dm_helpers_parse_edid_caps() 68 if (!edid_caps || !edid) in dm_helpers_parse_edid_caps() 98 (struct edid *) edid->raw_edid); in dm_helpers_parse_edid_caps() 100 sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads); in dm_helpers_parse_edid_caps() 114 sadb_count = drm_edid_to_speaker_allocation((struct edid *) edid->raw_edid, &sadb); in dm_helpers_parse_edid_caps() 561 struct edid *edid; in dm_helpers_read_local_edid() local [all …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-4.19/drivers/gpu/drm/tegra/ |
| D | output.c | 21 struct edid *edid = NULL; in tegra_output_connector_get_modes() local 34 if (output->edid) in tegra_output_connector_get_modes() 35 edid = kmemdup(output->edid, sizeof(*edid), GFP_KERNEL); in tegra_output_connector_get_modes() 37 edid = drm_get_edid(connector, output->ddc); in tegra_output_connector_get_modes() 39 cec_notifier_set_phys_addr_from_edid(output->notifier, edid); in tegra_output_connector_get_modes() 40 drm_connector_update_edid_property(connector, edid); in tegra_output_connector_get_modes() 42 if (edid) { in tegra_output_connector_get_modes() 43 err = drm_add_edid_modes(connector, edid); in tegra_output_connector_get_modes() 44 kfree(edid); in tegra_output_connector_get_modes() 119 output->edid = of_get_property(output->of_node, "nvidia,edid", &size); in tegra_output_probe()
|