dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Harish Chegondi <harish.chegondi@intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: "Ashutosh Dixit" <ashutosh.dixit@intel.com>,
	"Dave Airlie" <airlied@redhat.com>,
	"Ilpo Järvinen" <ilpo.jarvinen@cs.helsinki.fi>,
	dri-devel@lists.freedesktop.org
Subject: Re: DRM/AST regression (likely 4.14 -> 4.19+), providing EDID manually fails
Date: Tue, 4 Jun 2019 18:48:24 -0700	[thread overview]
Message-ID: <20190605014823.GA78113@intel.com> (raw)
In-Reply-To: <874l554vcx.fsf@intel.com>

On Tue, Jun 04, 2019 at 11:18:06AM +0300, Jani Nikula wrote:
> On Mon, 03 Jun 2019, Harish Chegondi <harish.chegondi@intel.com> wrote:
> > On Wed, May 29, 2019 at 01:22:30PM +0300, Jani Nikula wrote:
> >> On Wed, 29 May 2019, Ilpo Järvinen <ilpo.jarvinen@cs.helsinki.fi> wrote:
> >> > On Tue, 28 May 2019, Jani Nikula wrote:
> >> >
> >> >> On Mon, 27 May 2019, Ashutosh Dixit <ashutosh.dixit@intel.com> wrote:
> >> >> > On Sun, 26 May 2019 12:50:51 -0700, Ilpo Järvinen wrote:
> >> >> >>
> >> >> >> Hi all,
> >> >> >>
> >> >> >> I've a workstation which has internal VGA that is detected as AST 2400 and
> >> >> >> with it EDID has been always quite flaky (except for some time it worked
> >> >> >> with 4.14 long enough that I thought the problems would be past until the
> >> >> >> problems reappeared also with 4.14). Thus, I've provided manually the EDID
> >> >> >> that I extracted from the monitor using other computer (the monitor itself
> >> >> >> worked just fine on the earlier computer so it is likely fine).
> >> >> >>
> >> >> >> I setup the manual EDID using drm_kms_helper.edid_firmware, however,
> >> >> >> after upgrading to 4.19.45 it stopped working (no "Got external EDID base
> >> >> >> block" appears in dmesg, the text mode is kept in the lower res mode, and
> >> >> >> Xorg logs no longer dumps the EDID info like it did with 4.14). So I guess
> >> >> >> the EDID I provided manually on the command line is not correctly put into
> >> >> >> use with 4.19+ kernels.
> >> >> >>
> >> >> >> The 4.19 dmesg indicated that drm_kms_helper.edid_firmware is deprecated
> >> >> >> so I also tested with drm.edid_firmware it suggested as the replacement
> >> >> >> but with no luck (but I believe also the drm_kms_helper one should have
> >> >> >> worked as it was only "deprecated").
> >> >> >>
> >> >> >> I also tried 5.1.2 but it did not work any better (and with it also tried
> >> >> >> removing all the manual *.edid_firmware from the command line so I still
> >> >> >> need to provide one manually to have it reliable working it seems).
> >> >> >
> >> >> > I believe there is a bug already tracking this, here:
> >> >> >
> >> >> > https://bugs.freedesktop.org/show_bug.cgi?id=107583
> >> >> 
> >> >> Ilpo, does video=VGA-1:e command-line option work around the problem for
> >> >> you?
> >> >
> >> > Yes it does; together with the modeline stuff for Xorg (after reading the 
> >> > referenced bug report I realized I can fix the X side with it). So I now 
> >> > have the desired modes/resolutions in use. Thank you all!
> >> 
> >> Great! It should be enough to just have the replacement firmware EDID
> >> for the modes, as long as you have an EDID that represents the
> >> capabilities of the display. The modelines for Xorg should not be
> >> needed.
> >> 
> >> BR,
> >> Jani.
> >> 
> >
> > Ilpo,
> >
> > I have a patch which I think will fix this problem without needing
> > the video=VGA-1:e command-line option work around. Will you be able to
> > help me with testing it on your system?
> 
> Alas the patch you provided in the referenced bugzilla will regress in
> other ways; specifically losing the ability to use DDC probe for
> detecting displays. This is very old happy day scenario functionality
> that should not be messed with.
> 
> BR,
> Jani.

Hi Jani,

Please allow me to explain the reason behind my patch which I came up
after analyzing the code in drm_get_edid() and drm_do_get_edid().

I see the DDC probe function drm_probe_ddc() only calls
drm_do_probe_ddc_edid(adapter, &out, 0, 1). So, it is probing by reading
1 byte of EDID data via I2C. With my patch which I pasted below for
reference, drm_probe_ddc() is not called but drm_do_get_edid() is called
with drm_do_probe_ddc_edid() passed as a function pointer argument.
drm_do_get_edid() function first handles the EDID override case and then
calls drm_do_probe_ddc_edid(data, edid, 0, EDID_LENGTH) via function
pointer argument get_edid_block. So, even with my patch, isn't the code
probing the display by calling drm_do_probe_ddc_edid(, , , EDID_LENGTH)
which reads EDID_LENGTH bytes of EDID data via I2C? The only difference
is that drm_probe_ddc() probes the display by reading just 1 byte of
EDID data. Please let me know your thoughts on my analysis.

Thank You!
Harish.

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index d87f574feeca..41c420706532 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1724,9 +1724,6 @@ struct edid *drm_get_edid(struct drm_connector *connector,
 	if (connector->force == DRM_FORCE_OFF)
 		return NULL;

-	if (connector->force == DRM_FORCE_UNSPECIFIED && !drm_probe_ddc(adapter))
-		return NULL;
-
 	edid = drm_do_get_edid(connector, drm_do_probe_ddc_edid, adapter);
 	if (edid)
 		drm_get_displayid(connector, edid);

> 
> 
> -- 
> Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2019-06-05  1:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-26 19:50 DRM/AST regression (likely 4.14 -> 4.19+), providing EDID manually fails Ilpo Järvinen
2019-05-27 16:42 ` Ashutosh Dixit
2019-05-28  7:30   ` Jani Nikula
2019-05-29  8:31     ` Ilpo Järvinen
2019-05-29 10:22       ` Jani Nikula
2019-06-04  6:15         ` Harish Chegondi
2019-06-04  8:10           ` Ilpo Järvinen
2019-06-07 11:08             ` Jani Nikula
2019-06-04  8:18           ` Jani Nikula
2019-06-05  1:48             ` Harish Chegondi [this message]
2019-06-12 10:55 ` Jani Nikula

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=20190605014823.GA78113@intel.com \
    --to=harish.chegondi@intel.com \
    --cc=airlied@redhat.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ilpo.jarvinen@cs.helsinki.fi \
    --cc=jani.nikula@linux.intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).