From: Sonika Jindal <sonika.jindal@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Shashank Sharma <contactshashanksharma@gmail.com>
Subject: [PATCH 2/3] drm/i915: Add HDMI probe function
Date: Tue, 30 Jun 2015 11:13:57 +0530 [thread overview]
Message-ID: <1435643038-3078-2-git-send-email-sonika.jindal@intel.com> (raw)
In-Reply-To: <1435643038-3078-1-git-send-email-sonika.jindal@intel.com>
From: Shashank Sharma <contactshashanksharma@gmail.com>
This patch adds a separate probe function for HDMI
EDID read over DDC channel. This function has been
registered as a .hot_plug handler for HDMI encoder.
The reason behind addition of this separate function needs
brief explaination. The current implementation of hdmi_detect()
function re-sets the cached HDMI edid (in connector->detect_edid) in
every detect call.This function gets called many times, sometimes
directly from userspace probes, forcing drivers to read EDID every
detect function call.This causes several problems like:
1. Race conditions in multiple hot_plug / unplug cases, between
interrupts bottom halves and userspace detections.
2. Many Un-necessary EDID reads for single hotplug/unplug
3. HDMI complaince failures which expects only one EDID read per hotplug
This function will be serving the purpose of really reading the EDID
by really probing the DDC channel, and updating the cached EDID.
The plan is to:
1. i915 IRQ handler bottom half function already calls
intel_encoder->hotplug() function. Adding This probe function which
will read the EDID only in case of a hotplug / unplug.
2. Reuse the cached EDID in hdmi_detect() function UNLESS we are forced
to probe the EDID by the force=1 variable.The next patch in the
series does this.
3. Make sure that we are using this force variable properly.
Signed-off-by: Shashank Sharma <contactshashanksharma@gmail.com>
---
drivers/gpu/drm/i915/intel_hdmi.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index af4d1e6..064ddd8 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1340,6 +1340,24 @@ intel_hdmi_set_edid(struct drm_connector *connector)
return connected;
}
+void intel_hdmi_probe(struct intel_encoder *intel_encoder)
+{
+ struct intel_hdmi *intel_hdmi =
+ enc_to_intel_hdmi(&intel_encoder->base);
+ struct intel_connector *intel_connector =
+ intel_hdmi->attached_connector;
+ /*
+ * We are here, means there is a hotplug or a force
+ * detection. Clear the cached EDID and probe the
+ * DDC bus to check the current status of HDMI.
+ */
+ intel_hdmi_unset_edid(&intel_connector->base);
+ if (intel_hdmi_set_edid(&intel_connector->base))
+ DRM_DEBUG_DRIVER("DDC probe: got EDID\n");
+ else
+ DRM_DEBUG_DRIVER("DDC probe: no EDID\n");
+}
+
static enum drm_connector_status
intel_hdmi_detect(struct drm_connector *connector, bool force)
{
@@ -1997,6 +2015,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
intel_connector->unregister = intel_connector_unregister;
intel_hdmi_add_properties(intel_hdmi, connector);
+ intel_encoder->hot_plug = intel_hdmi_probe;
intel_connector_attach_encoder(intel_connector, intel_encoder);
drm_connector_register(connector);
--
1.7.10.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-06-30 5:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-30 5:43 [PATCH 1/3] drm/i915: add attached connector to hdmi container Sonika Jindal
2015-06-30 5:43 ` Sonika Jindal [this message]
2015-06-30 5:43 ` [PATCH 3/3] drm/i915: Read HDMI EDID only when required Sonika Jindal
2015-06-30 11:06 ` Daniel Vetter
2015-06-30 16:19 ` Shashank Sharma
2015-07-01 12:56 ` Daniel Vetter
2015-07-02 2:54 ` Sharma, Shashank
2015-07-06 7:38 ` Daniel Vetter
2015-07-06 8:01 ` Jindal, Sonika
2015-07-01 13:28 ` shuang.he
2015-07-14 11:51 [PATCH 0/3] HDMI optimization series Sonika Jindal
2015-07-14 11:51 ` [PATCH 2/3] drm/i915: Add HDMI probe function Sonika Jindal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1435643038-3078-2-git-send-email-sonika.jindal@intel.com \
--to=sonika.jindal@intel.com \
--cc=contactshashanksharma@gmail.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.