/linux/Documentation/userspace-api/media/v4l/ |
H A 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/drivers/media/i2c/adv748x/ |
H A D | adv748x-hdmi.c | 470 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument 474 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid() 476 if (!hdmi->edid.present) in adv748x_hdmi_get_edid() 479 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid() 480 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid() 484 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid() 487 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid() 488 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid() 490 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid() 491 edid->blocks * 128); in adv748x_hdmi_get_edid() [all …]
|
/linux/drivers/gpu/drm/ |
H A D | drm_edid.c | 63 * EDID blocks out in the wild have a variety of bugs, try to collect 200 /* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/ 614 * modes are old-school Mac modes. The EDID spec says the 1152x864@75 mode 1590 * The opaque EDID type, internal to drm_edid.c. 1593 /* Size allocated for edid */ 1595 const struct edid *edid; member 1598 static int edid_hfeeodb_extension_block_count(const struct edid *edid); 1600 static int edid_hfeeodb_block_count(const struct edid *edid) in edid_hfeeodb_block_count() argument 1602 int eeodb = edid_hfeeodb_extension_block_count(edid); in edid_hfeeodb_block_count() 1607 static int edid_extension_block_count(const struct edid *edid) in edid_extension_block_count() argument [all …]
|
H A D | drm_panel_backlight_quirks.c | 47 const struct drm_edid *edid) in drm_panel_min_backlight_quirk_matches() argument 52 if (!drm_edid_match(edid, &quirk->ident)) in drm_panel_min_backlight_quirk_matches() 60 * @edid: EDID of the panel to check 71 int drm_get_panel_min_brightness_quirk(const struct drm_edid *edid) in drm_get_panel_min_brightness_quirk() argument 79 if (!edid) in drm_get_panel_min_brightness_quirk() 85 if (drm_panel_min_backlight_quirk_matches(quirk, edid)) in drm_get_panel_min_brightness_quirk()
|
H A D | drm_edid_load.c | 3 drm_edid_load.c: use a built-in EDID data set or load it via the firmware 24 "Do not probe monitor, use specified EDID blob from /lib/firmware instead."); 35 "[CONNECTOR:%d:%s] Requesting EDID firmware \"%s\" failed (err=%d)\n", in edid_load() 41 drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Loaded external firmware EDID \"%s\"\n", in edid_load() 46 drm_err(connector->dev, "Invalid firmware EDID \"%s\"\n", name); in edid_load() 65 * If there are multiple edid files specified and separated in drm_edid_load_firmware()
|
/linux/drivers/video/fbdev/core/ |
H A 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 …]
|
H A 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() 119 return edid; in fb_ddc_read() 125 MODULE_DESCRIPTION("DDC/EDID reading support");
|
/linux/drivers/video/fbdev/via/ |
H A 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/drivers/gpu/drm/amd/display/amdgpu_dm/ |
H A D | amdgpu_dm_helpers.c | 51 static u32 edid_extract_panel_id(struct edid *edid) in edid_extract_panel_id() argument 53 return (u32)edid->mfg_id[0] << 24 | in edid_extract_panel_id() 54 (u32)edid->mfg_id[1] << 16 | in edid_extract_panel_id() 55 (u32)EDID_PRODUCT_ID(edid); in edid_extract_panel_id() 58 static void apply_edid_quirks(struct drm_device *dev, struct edid *edid, struct dc_edid_caps *edid_… in apply_edid_quirks() argument 60 uint32_t panel_id = edid_extract_panel_id(edid); in apply_edid_quirks() 94 * dm_helpers_parse_edid_caps() - Parse edid caps 97 * @edid: [in] pointer to edid 98 * @edid_caps: [in] pointer to edid caps 104 const struct dc_edid *edid, in dm_helpers_parse_edid_caps() argument [all …]
|
/linux/Documentation/admin-guide/ |
H A 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
|
/linux/drivers/media/test-drivers/vivid/ |
H A D | vivid-vid-common.c | 1077 struct v4l2_edid *edid) in vidioc_g_edid() argument 1085 memset(edid->reserved, 0, sizeof(edid->reserved)); in vidioc_g_edid() 1087 if (edid->pad >= dev->num_inputs) in vidioc_g_edid() 1089 if (dev->input_type[edid->pad] != HDMI) in vidioc_g_edid() 1093 if (edid->pad >= dev->num_outputs) in vidioc_g_edid() 1095 if (dev->output_type[edid->pad] != HDMI) in vidioc_g_edid() 1097 dev_rx = dev->output_to_input_instance[edid->pad]; in vidioc_g_edid() 1101 unsigned int hdmi_output = dev->output_to_iface_index[edid->pad]; in vidioc_g_edid() 1105 if (edid->start_block == 0 && edid->blocks == 0) { in vidioc_g_edid() 1106 edid->blocks = dev_rx->edid_blocks; in vidioc_g_edid() [all …]
|
/linux/drivers/video/fbdev/nvidia/ |
H A 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()
|
H A D | nv_i2c.c | 26 #include "../edid.h" 155 u8 *edid = NULL; in nvidia_probe_i2c_connector() local 158 edid = fb_ddc_read(&par->chan[conn - 1].adapter); in nvidia_probe_i2c_connector() 160 if (!edid && conn == 1) { in nvidia_probe_i2c_connector() 165 edid = kmemdup(e, EDID_LENGTH, GFP_KERNEL); in nvidia_probe_i2c_connector() 168 *out_edid = edid; in nvidia_probe_i2c_connector() 170 return (edid) ? 0 : 1; in nvidia_probe_i2c_connector()
|
/linux/include/media/ |
H A 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/drivers/media/platform/synopsys/hdmirx/ |
H A D | Kconfig | 20 bool "Load default EDID" 23 Preload default EDID (Extended Display Identification Data) 30 For a higher display modes you will need to load customized EDID 34 non-functional until EDID will be loaded from userspace. 36 commercial product that should utilize own branded EDID.
|
/linux/Documentation/fb/ |
H A D | udlfb.rst | 22 Mode setting, EDID read, etc are other bulk or control transfers. Mode 59 DisplayLink chips (Alex and Ollie family). It will then attempt to read the EDID 139 edid If a valid EDID blob is written to this file (typically 140 by a udev rule), then udlfb will use this EDID as a 141 backup in case reading the actual EDID of the monitor 144 communicate their capabilities via EDID. Reading 145 this file returns the current EDID of the attached 147 useful to get the EDID of the attached monitor, 148 which can be passed to utilities like parse-edid.
|
/linux/drivers/video/fbdev/i810/ |
H A D | i810-i2c.c | 20 #include "../edid.h" 34 #define DEBUG /* define this for verbose EDID parsing output */ 158 u8 *edid = NULL; in i810_probe_i2c_connector() local 162 edid = fb_ddc_read(&par->chan[conn].adapter); in i810_probe_i2c_connector() 167 DPRINTK("i810-i2c: Getting EDID from BIOS\n"); in i810_probe_i2c_connector() 168 edid = kmemdup(e, EDID_LENGTH, GFP_KERNEL); in i810_probe_i2c_connector() 172 *out_edid = edid; in i810_probe_i2c_connector() 174 return (edid) ? 0 : 1; in i810_probe_i2c_connector()
|
/linux/drivers/gpu/drm/gma500/ |
H A D | oaktrail_lvds.c | 299 struct edid *edid; in oaktrail_lvds_init() local 351 * 1) check for EDID on DDC in oaktrail_lvds_init() 359 edid = NULL; in oaktrail_lvds_init() 364 edid = drm_get_edid(connector, i2c_adap); in oaktrail_lvds_init() 366 if (edid == NULL && dev_priv->lpc_gpio_base) { in oaktrail_lvds_init() 370 edid = drm_get_edid(connector, i2c_adap); in oaktrail_lvds_init() 385 if (edid) { in oaktrail_lvds_init() 386 drm_connector_update_edid_property(connector, edid); in oaktrail_lvds_init() 387 drm_add_edid_modes(connector, edid); in oaktrail_lvds_init() 388 kfree(edid); in oaktrail_lvds_init() [all …]
|
/linux/Documentation/devicetree/bindings/powerpc/fsl/ |
H A D | diu.txt | 13 - edid : verbatim EDID data block describing attached display. 31 edid = [edid-data];
|
/linux/Documentation/devicetree/bindings/display/ |
H A D | sm501fb.txt | 16 - edid : verbatim EDID data block describing attached display. 31 edid = [edid-data];
|
/linux/drivers/video/fbdev/ |
H A D | smscufx.c | 32 #include "edid.h" 102 u8 *edid; /* null until we read edid from hw or get from sysfs */ member 942 u8 __user *edid = (u8 __user *)arg; in ufx_ops_ioctl() local 943 if (copy_to_user(edid, dev->edid, dev->edid_size)) in ufx_ops_ioctl() 1350 /* A0h is std for any EDID, right shifted by one */ in ufx_i2c_configure() 1393 /* reads a 128-byte EDID block from the currently selected port and TAR */ 1394 static int ufx_read_edid(struct ufx_data *dev, u8 *edid, int edid_len) in ufx_read_edid() argument 1397 u32 *edid_u32 = (u32 *)edid; in ufx_read_edid() 1407 memset(edid, 0xff, EDID_LENGTH); in ufx_read_edid() 1409 /* Read the 128-byte EDID as 2 bursts of 64 bytes */ in ufx_read_edid() [all …]
|
/linux/drivers/video/fbdev/aty/ |
H A D | radeon_i2c.c | 16 #include "../edid.h" 144 u8 *edid; in radeon_probe_i2c_connector() local 146 edid = fb_ddc_read(&rinfo->i2c[conn-1].adapter); in radeon_probe_i2c_connector() 149 *out_edid = edid; in radeon_probe_i2c_connector() 150 if (!edid) { in radeon_probe_i2c_connector() 154 if (edid[0x14] & 0x80) { in radeon_probe_i2c_connector()
|
/linux/drivers/video/fbdev/savage/ |
H A D | savagefb-i2c.c | 221 u8 *edid; in savagefb_probe_i2c_connector() local 224 edid = fb_ddc_read(&par->chan.adapter); in savagefb_probe_i2c_connector() 226 edid = NULL; in savagefb_probe_i2c_connector() 228 if (!edid) { in savagefb_probe_i2c_connector() 233 edid = kmemdup(e, EDID_LENGTH, GFP_KERNEL); in savagefb_probe_i2c_connector() 236 *out_edid = edid; in savagefb_probe_i2c_connector() 238 return (edid) ? 0 : 1; in savagefb_probe_i2c_connector()
|
/linux/drivers/gpu/drm/vboxvideo/ |
H A D | vbox_mode.c | 636 * Generate EDID data with a mode-unique serial number for the virtual 645 unsigned char edid[EDID_SIZE] = { in vbox_set_edid() local 652 0x01, 0x03, /* EDID version */ in vbox_set_edid() 690 edid[12] = width & 0xff; in vbox_set_edid() 691 edid[13] = width >> 8; in vbox_set_edid() 692 edid[14] = height & 0xff; in vbox_set_edid() 693 edid[15] = height >> 8; in vbox_set_edid() 694 edid[54] = clock & 0xff; in vbox_set_edid() 695 edid[55] = clock >> 8; in vbox_set_edid() 696 edid[56] = width & 0xff; in vbox_set_edid() [all …]
|
/linux/drivers/media/i2c/ |
H A D | tc358743.c | 94 /* edid */ 362 /* --------------- HOTPLUG / HDCP / EDID --------------- */ 406 /* DDC access to EDID is also disabled when hotplug is disabled. See in tc358743_disable_edid() 416 v4l2_dbg(2, debug, sd, "%s: no EDID -> no hotplug\n", __func__); in tc358743_enable_edid() 423 /* Enable hotplug after 100 ms. DDC access to EDID is also enabled when in tc358743_enable_edid() 1381 v4l2_info(sd, "0x8C00-0x8FFF: HDMIRX EDID-RAM (1024bytes)\n"); in tc358743_print_register_map() 1766 struct v4l2_subdev_edid *edid) in tc358743_g_edid() argument 1770 memset(edid->reserved, 0, sizeof(edid->reserved)); in tc358743_g_edid() 1772 if (edid->pad != 0) in tc358743_g_edid() 1775 if (edid->start_block == 0 && edid->blocks == 0) { in tc358743_g_edid() [all …]
|