* [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow @ 2012-07-25 8:20 Maciej Rutecki 2012-07-25 8:29 ` Daniel Vetter 0 siblings, 1 reply; 12+ messages in thread From: Maciej Rutecki @ 2012-07-25 8:20 UTC (permalink / raw) To: Linux Kernel Mailing List; +Cc: dri-devel, airlied Last known good: 3.4.4 First bad: 3.5.0 When booting 3.5.0 resolution (in console, and after in KDE) is set to 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). Dmesg from 3.5.0: http://mrutecki.pl/download/kernel/3.5/swinka/dmesg-3.5.0.txt Dmesg from 3.4.4: http://mrutecki.pl/download/kernel/3.5/swinka/dmesg-3.4.4.txt Config 3.5.0: http://mrutecki.pl/download/kernel/3.5/swinka/config-3.5.0 lspci: http://mrutecki.pl/download/kernel/3.5/swinka/lspci.txt Regards -- Maciej Rutecki http://www.mrutecki.pl ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 8:20 [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow Maciej Rutecki @ 2012-07-25 8:29 ` Daniel Vetter 2012-07-25 8:54 ` Maciej Rutecki 0 siblings, 1 reply; 12+ messages in thread From: Daniel Vetter @ 2012-07-25 8:29 UTC (permalink / raw) To: Maciej Rutecki; +Cc: Linux Kernel Mailing List, dri-devel On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > Last known good: 3.4.4 > First bad: 3.5.0 > > When booting 3.5.0 resolution (in console, and after in KDE) is set to > 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). Can you please attach the output of xrandr --verbose for both kernels? Also, please boot with drm.debug=0xe added to your kernel cmdline and grab the dmesg (again for both kernels). Thanks, Daniel > > Dmesg from 3.5.0: > http://mrutecki.pl/download/kernel/3.5/swinka/dmesg-3.5.0.txt > > Dmesg from 3.4.4: > http://mrutecki.pl/download/kernel/3.5/swinka/dmesg-3.4.4.txt > > Config 3.5.0: > http://mrutecki.pl/download/kernel/3.5/swinka/config-3.5.0 > > lspci: > http://mrutecki.pl/download/kernel/3.5/swinka/lspci.txt > > Regards > -- > Maciej Rutecki > http://www.mrutecki.pl > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 8:29 ` Daniel Vetter @ 2012-07-25 8:54 ` Maciej Rutecki 2012-07-25 9:29 ` Daniel Vetter 0 siblings, 1 reply; 12+ messages in thread From: Maciej Rutecki @ 2012-07-25 8:54 UTC (permalink / raw) To: Daniel Vetter; +Cc: Linux Kernel Mailing List, dri-devel On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > > Last known good: 3.4.4 > > First bad: 3.5.0 > > > > When booting 3.5.0 resolution (in console, and after in KDE) is set to > > 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). > > Can you please attach the output of xrandr --verbose for both kernels? > Also, please boot with drm.debug=0xe added to your kernel cmdline and grab > the dmesg (again for both kernels). > Thanks for the ansfer. Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 http://mrutecki.pl/download/kernel/3.5/swinka/debug/ Regards -- Maciej Rutecki http://www.mrutecki.pl ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 8:54 ` Maciej Rutecki @ 2012-07-25 9:29 ` Daniel Vetter 2012-07-25 10:57 ` Maciej Rutecki 0 siblings, 1 reply; 12+ messages in thread From: Daniel Vetter @ 2012-07-25 9:29 UTC (permalink / raw) To: Maciej Rutecki; +Cc: Daniel Vetter, Linux Kernel Mailing List, dri-devel On Wed, Jul 25, 2012 at 10:54:25AM +0200, Maciej Rutecki wrote: > On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: > > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > > > Last known good: 3.4.4 > > > First bad: 3.5.0 > > > > > > When booting 3.5.0 resolution (in console, and after in KDE) is set to > > > 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). > > > > Can you please attach the output of xrandr --verbose for both kernels? > > Also, please boot with drm.debug=0xe added to your kernel cmdline and grab > > the dmesg (again for both kernels). > > > > Thanks for the ansfer. > > Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 > > http://mrutecki.pl/download/kernel/3.5/swinka/debug/ Can you please test this quick hack: diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c index 1991a44..abe1611 100644 --- a/drivers/gpu/drm/i915/intel_i2c.c +++ b/drivers/gpu/drm/i915/intel_i2c.c @@ -405,7 +405,7 @@ clear_err: * timing out seems to happen when there _is_ a ddc chip present, but * it's slow responding and only answers on the 2nd retry. */ - ret = -ENXIO; + ret = 0; if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, 10)) { DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", Thanks, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 9:29 ` Daniel Vetter @ 2012-07-25 10:57 ` Maciej Rutecki 2012-07-25 11:55 ` Daniel Vetter 0 siblings, 1 reply; 12+ messages in thread From: Maciej Rutecki @ 2012-07-25 10:57 UTC (permalink / raw) To: Daniel Vetter; +Cc: Linux Kernel Mailing List, dri-devel On środa, 25 lipca 2012 o 11:29:28 Daniel Vetter wrote: > On Wed, Jul 25, 2012 at 10:54:25AM +0200, Maciej Rutecki wrote: > > On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: > > > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > > > > Last known good: 3.4.4 > > > > First bad: 3.5.0 > > > > > > > > When booting 3.5.0 resolution (in console, and after in KDE) is set > > > > to 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). > > > > > > Can you please attach the output of xrandr --verbose for both kernels? > > > Also, please boot with drm.debug=0xe added to your kernel cmdline and > > > grab the dmesg (again for both kernels). > > > > Thanks for the ansfer. > > > > Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 > > > > http://mrutecki.pl/download/kernel/3.5/swinka/debug/ > > Can you please test this quick hack: > > > diff --git a/drivers/gpu/drm/i915/intel_i2c.c > b/drivers/gpu/drm/i915/intel_i2c.c index 1991a44..abe1611 100644 > --- a/drivers/gpu/drm/i915/intel_i2c.c > +++ b/drivers/gpu/drm/i915/intel_i2c.c > @@ -405,7 +405,7 @@ clear_err: > * timing out seems to happen when there _is_ a ddc chip present, but > * it's slow responding and only answers on the 2nd retry. > */ > - ret = -ENXIO; > + ret = 0; > if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, > 10)) { > DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", > > > Thanks, Daniel Still the same. PS. Unfortunately, this afternoon I have small a surgical operation and further tests will be possible only after 2-3 days. Regards -- Maciej Rutecki http://www.mrutecki.pl ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 10:57 ` Maciej Rutecki @ 2012-07-25 11:55 ` Daniel Vetter 2012-07-26 12:38 ` Daniel Vetter 0 siblings, 1 reply; 12+ messages in thread From: Daniel Vetter @ 2012-07-25 11:55 UTC (permalink / raw) To: maciej.rutecki; +Cc: Linux Kernel Mailing List, dri-devel On Wed, Jul 25, 2012 at 12:57 PM, Maciej Rutecki <maciej.rutecki@gmail.com> wrote: > On środa, 25 lipca 2012 o 11:29:28 Daniel Vetter wrote: >> On Wed, Jul 25, 2012 at 10:54:25AM +0200, Maciej Rutecki wrote: >> > On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: >> > > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: >> > > > Last known good: 3.4.4 >> > > > First bad: 3.5.0 >> > > > >> > > > When booting 3.5.0 resolution (in console, and after in KDE) is set >> > > > to 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). >> > > >> > > Can you please attach the output of xrandr --verbose for both kernels? >> > > Also, please boot with drm.debug=0xe added to your kernel cmdline and >> > > grab the dmesg (again for both kernels). >> > >> > Thanks for the ansfer. >> > >> > Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 >> > >> > http://mrutecki.pl/download/kernel/3.5/swinka/debug/ >> >> Can you please test this quick hack: >> >> >> diff --git a/drivers/gpu/drm/i915/intel_i2c.c >> b/drivers/gpu/drm/i915/intel_i2c.c index 1991a44..abe1611 100644 >> --- a/drivers/gpu/drm/i915/intel_i2c.c >> +++ b/drivers/gpu/drm/i915/intel_i2c.c >> @@ -405,7 +405,7 @@ clear_err: >> * timing out seems to happen when there _is_ a ddc chip present, but >> * it's slow responding and only answers on the 2nd retry. >> */ >> - ret = -ENXIO; >> + ret = 0; >> if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, >> 10)) { >> DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", >> >> >> Thanks, Daniel > > Still the same. Hm, can you attach the dmesg again (with drm.debug=0xe)? If I haven't botched up something, we should now retry at least the ddc transfer ... -Daniel > > PS. Unfortunately, this afternoon I have small a surgical operation and > further tests will be possible only after 2-3 days. > > Regards > -- > Maciej Rutecki > http://www.mrutecki.pl -- Daniel Vetter daniel.vetter@ffwll.ch - +41 (0) 79 364 57 48 - http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-25 11:55 ` Daniel Vetter @ 2012-07-26 12:38 ` Daniel Vetter 2012-07-27 11:46 ` Maciej Rutecki 0 siblings, 1 reply; 12+ messages in thread From: Daniel Vetter @ 2012-07-26 12:38 UTC (permalink / raw) To: maciej.rutecki; +Cc: Linux Kernel Mailing List, dri-devel On Wed, Jul 25, 2012 at 01:55:59PM +0200, Daniel Vetter wrote: > On Wed, Jul 25, 2012 at 12:57 PM, Maciej Rutecki > <maciej.rutecki@gmail.com> wrote: > > On środa, 25 lipca 2012 o 11:29:28 Daniel Vetter wrote: > >> On Wed, Jul 25, 2012 at 10:54:25AM +0200, Maciej Rutecki wrote: > >> > On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: > >> > > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > >> > > > Last known good: 3.4.4 > >> > > > First bad: 3.5.0 > >> > > > > >> > > > When booting 3.5.0 resolution (in console, and after in KDE) is set > >> > > > to 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). > >> > > > >> > > Can you please attach the output of xrandr --verbose for both kernels? > >> > > Also, please boot with drm.debug=0xe added to your kernel cmdline and > >> > > grab the dmesg (again for both kernels). > >> > > >> > Thanks for the ansfer. > >> > > >> > Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 > >> > > >> > http://mrutecki.pl/download/kernel/3.5/swinka/debug/ > >> > >> Can you please test this quick hack: > >> > >> > >> diff --git a/drivers/gpu/drm/i915/intel_i2c.c > >> b/drivers/gpu/drm/i915/intel_i2c.c index 1991a44..abe1611 100644 > >> --- a/drivers/gpu/drm/i915/intel_i2c.c > >> +++ b/drivers/gpu/drm/i915/intel_i2c.c > >> @@ -405,7 +405,7 @@ clear_err: > >> * timing out seems to happen when there _is_ a ddc chip present, but > >> * it's slow responding and only answers on the 2nd retry. > >> */ > >> - ret = -ENXIO; > >> + ret = 0; > >> if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, > >> 10)) { > >> DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", > >> > >> > >> Thanks, Daniel > > > > Still the same. > > Hm, can you attach the dmesg again (with drm.debug=0xe)? If I haven't > botched up something, we should now retry at least the ddc transfer > ... Also, another little snippet for you to test. Fyi I'll be on vacation next week, so final patch (this one here should really work) might take a notch longer. Yours, Daniel -- diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index bc5e2c9..85eca1c 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -338,6 +338,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + intel_gmbus_force_bit(i2c, true); edid = drm_get_edid(connector, i2c); if (edid) { @@ -546,12 +547,14 @@ static int intel_crt_get_modes(struct drm_connector *connector) struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + intel_gmbus_force_bit(i2c, true); ret = intel_ddc_get_modes(connector, i2c); if (ret || !IS_G4X(dev)) return ret; /* Try to probe digital port for output in DVI-I -> VGA mode. */ i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); + intel_gmbus_force_bit(i2c, true); return intel_ddc_get_modes(connector, i2c); } -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow 2012-07-26 12:38 ` Daniel Vetter @ 2012-07-27 11:46 ` Maciej Rutecki 2012-08-13 10:22 ` [PATCH 0/2] GMBUS EDID read bit-banging fallback Jani Nikula 0 siblings, 1 reply; 12+ messages in thread From: Maciej Rutecki @ 2012-07-27 11:46 UTC (permalink / raw) To: Daniel Vetter; +Cc: Linux Kernel Mailing List, dri-devel On czwartek, 26 lipca 2012 o 14:38:28 Daniel Vetter wrote: > On Wed, Jul 25, 2012 at 01:55:59PM +0200, Daniel Vetter wrote: > > On Wed, Jul 25, 2012 at 12:57 PM, Maciej Rutecki > > > > <maciej.rutecki@gmail.com> wrote: > > > On środa, 25 lipca 2012 o 11:29:28 Daniel Vetter wrote: > > >> On Wed, Jul 25, 2012 at 10:54:25AM +0200, Maciej Rutecki wrote: > > >> > On środa, 25 lipca 2012 o 10:29:26 Daniel Vetter wrote: > > >> > > On Wed, Jul 25, 2012 at 10:20:47AM +0200, Maciej Rutecki wrote: > > >> > > > Last known good: 3.4.4 > > >> > > > First bad: 3.5.0 > > >> > > > > > >> > > > When booting 3.5.0 resolution (in console, and after in KDE) is > > >> > > > set to 1024x768 (60Hz). In 3.4.4 was correct: 1440x900 (60Hz). > > >> > > > > >> > > Can you please attach the output of xrandr --verbose for both > > >> > > kernels? Also, please boot with drm.debug=0xe added to your > > >> > > kernel cmdline and grab the dmesg (again for both kernels). > > >> > > > >> > Thanks for the ansfer. > > >> > > > >> > Here xrandr and dmesg outputs for 3.4.4 and 3.5.0 > > >> > > > >> > http://mrutecki.pl/download/kernel/3.5/swinka/debug/ > > >> > > >> Can you please test this quick hack: > > >> > > >> > > >> diff --git a/drivers/gpu/drm/i915/intel_i2c.c > > >> b/drivers/gpu/drm/i915/intel_i2c.c index 1991a44..abe1611 100644 > > >> --- a/drivers/gpu/drm/i915/intel_i2c.c > > >> +++ b/drivers/gpu/drm/i915/intel_i2c.c > > >> > > >> @@ -405,7 +405,7 @@ clear_err: > > >> * timing out seems to happen when there _is_ a ddc chip > > >> present, but * it's slow responding and only answers on the > > >> 2nd retry. */ > > >> > > >> - ret = -ENXIO; > > >> + ret = 0; > > >> > > >> if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == > > >> 0, > > >> > > >> 10)) { > > >> > > >> DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", > > >> > > >> Thanks, Daniel > > > > > > Still the same. > > > > Hm, can you attach the dmesg again (with drm.debug=0xe)? If I haven't > > botched up something, we should now retry at least the ddc transfer > > ... > > Also, another little snippet for you to test. Fyi I'll be on vacation next > week, so final patch (this one here should really work) might take a notch > longer. > > Yours, Daniel > -- > diff --git a/drivers/gpu/drm/i915/intel_crt.c > b/drivers/gpu/drm/i915/intel_crt.c index bc5e2c9..85eca1c 100644 > --- a/drivers/gpu/drm/i915/intel_crt.c > +++ b/drivers/gpu/drm/i915/intel_crt.c > @@ -338,6 +338,7 @@ static bool intel_crt_detect_ddc(struct drm_connector > *connector) BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); > > i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); > + intel_gmbus_force_bit(i2c, true); > edid = drm_get_edid(connector, i2c); > > if (edid) { > @@ -546,12 +547,14 @@ static int intel_crt_get_modes(struct drm_connector > *connector) struct i2c_adapter *i2c; > > i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); > + intel_gmbus_force_bit(i2c, true); > ret = intel_ddc_get_modes(connector, i2c); > if (ret || !IS_G4X(dev)) > return ret; > > /* Try to probe digital port for output in DVI-I -> VGA mode. */ > i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); > + intel_gmbus_force_bit(i2c, true); > return intel_ddc_get_modes(connector, i2c); > } I have little problem with the patch: $ patch -p1 < /tmp/latka.patch patching file drivers/gpu/drm/i915/intel_crt.c Hunk #1 FAILED at 338. patch unexpectedly ends in middle of line Hunk #2 succeeded at 498 with fuzz 2 (offset -48 lines). 1 out of 2 hunks FAILED -- saving rejects to file drivers/gpu/drm/i915/intel_crt.c.rej But I add "intel_gmbus_force_bit(i2c, true);" manually and now resolution is OK. Thanks for help. PS. I also will be in vacation between 4-19 August, so my test may take longer. Regards -- Maciej Rutecki http://www.mrutecki.pl ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 0/2] GMBUS EDID read bit-banging fallback 2012-07-27 11:46 ` Maciej Rutecki @ 2012-08-13 10:22 ` Jani Nikula 2012-08-13 10:22 ` [PATCH 1/2] drm/i915: extract connector update from intel_ddc_get_modes() for reuse Jani Nikula 2012-08-13 10:22 ` [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads Jani Nikula 0 siblings, 2 replies; 12+ messages in thread From: Jani Nikula @ 2012-08-13 10:22 UTC (permalink / raw) To: maciej.rutecki, alferpal, linux-kernel, dri-devel, intel-gfx Cc: daniel, jani.nikula Alex, Maciej, please test the following to see if it fixes the issue [1], thanks. BR, Jani. [1] https://bugzilla.kernel.org/show_bug.cgi?id=45881 Jani Nikula (2): drm/i915: extract connector update from intel_ddc_get_modes() for reuse drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads drivers/gpu/drm/i915/intel_crt.c | 36 +++++++++++++++++++++++++++++++++--- drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_modes.c | 31 ++++++++++++++++++++++--------- 3 files changed, 57 insertions(+), 12 deletions(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2] drm/i915: extract connector update from intel_ddc_get_modes() for reuse 2012-08-13 10:22 ` [PATCH 0/2] GMBUS EDID read bit-banging fallback Jani Nikula @ 2012-08-13 10:22 ` Jani Nikula 2012-08-13 10:22 ` [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads Jani Nikula 1 sibling, 0 replies; 12+ messages in thread From: Jani Nikula @ 2012-08-13 10:22 UTC (permalink / raw) To: maciej.rutecki, alferpal, linux-kernel, dri-devel, intel-gfx Cc: daniel, jani.nikula Refactor the connector update part of intel_ddc_get_modes() into a separate intel_connector_update_modes() function for reuse. No functional changes. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/intel_drv.h | 2 ++ drivers/gpu/drm/i915/intel_modes.c | 31 ++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 13f0467..8a224ca 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -357,6 +357,8 @@ struct intel_fbc_work { int interval; }; +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid); int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); extern void intel_attach_force_audio_property(struct drm_connector *connector); diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c index 45848b9..29b7259 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c @@ -33,6 +33,25 @@ #include "i915_drv.h" /** + * intel_connector_update_modes - update connector from edid + * @connector: DRM connector device to use + * @edid: previously read EDID information + */ +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid) +{ + int ret; + + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + drm_edid_to_eld(connector, edid); + connector->display_info.raw_edid = NULL; + kfree(edid); + + return ret; +} + +/** * intel_ddc_get_modes - get modelist from monitor * @connector: DRM connector device to use * @adapter: i2c adapter @@ -43,18 +62,12 @@ int intel_ddc_get_modes(struct drm_connector *connector, struct i2c_adapter *adapter) { struct edid *edid; - int ret = 0; edid = drm_get_edid(connector, adapter); - if (edid) { - drm_mode_connector_update_edid_property(connector, edid); - ret = drm_add_edid_modes(connector, edid); - drm_edid_to_eld(connector, edid); - connector->display_info.raw_edid = NULL; - kfree(edid); - } + if (!edid) + return 0; - return ret; + return intel_connector_update_modes(connector, edid); } static const struct drm_prop_enum_list force_audio_names[] = { -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads 2012-08-13 10:22 ` [PATCH 0/2] GMBUS EDID read bit-banging fallback Jani Nikula 2012-08-13 10:22 ` [PATCH 1/2] drm/i915: extract connector update from intel_ddc_get_modes() for reuse Jani Nikula @ 2012-08-13 10:22 ` Jani Nikula 2012-08-16 14:35 ` Daniel Vetter 1 sibling, 1 reply; 12+ messages in thread From: Jani Nikula @ 2012-08-13 10:22 UTC (permalink / raw) To: maciej.rutecki, alferpal, linux-kernel, dri-devel, intel-gfx Cc: daniel, jani.nikula GMBUS was enabled over bit-banging as the default in commits: commit c3dfefa0a6d235bd465309e12f4c56ea16e71111 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Tue Feb 14 22:37:25 2012 +0100 drm/i915: reenable gmbus on gen3+ again and commit 0fb3f969c8683505fb7323c06bf8a999a5a45a15 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Fri Mar 2 19:38:30 2012 +0100 drm/i915: enable gmbus on gen2 Unfortunately, GMBUS seems to fail on some CRT displays. Add a bit-banging fallback to CRT EDID reads. LKML-Reference: <201207251020.47637.maciej.rutecki@gmail.com> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=45881 Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/intel_crt.c | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index bc5e2c9..80bf311 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -328,6 +328,36 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector) return ret; } +static struct edid *intel_crt_get_edid(struct drm_connector *connector, + struct i2c_adapter *i2c) +{ + struct edid *edid; + + edid = drm_get_edid(connector, i2c); + + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { + DRM_DEBUG_KMS("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n"); + intel_gmbus_force_bit(i2c, true); + edid = drm_get_edid(connector, i2c); + intel_gmbus_force_bit(i2c, false); + } + + return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + + edid = intel_crt_get_edid(connector, adapter); + if (!edid) + return 0; + + return intel_connector_update_modes(connector, edid); +} + static bool intel_crt_detect_ddc(struct drm_connector *connector) { struct intel_crt *crt = intel_attached_crt(connector); @@ -338,7 +368,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - edid = drm_get_edid(connector, i2c); + edid = intel_crt_get_edid(connector, i2c); if (edid) { bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; @@ -546,13 +576,13 @@ static int intel_crt_get_modes(struct drm_connector *connector) struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - ret = intel_ddc_get_modes(connector, i2c); + ret = intel_crt_ddc_get_modes(connector, i2c); if (ret || !IS_G4X(dev)) return ret; /* Try to probe digital port for output in DVI-I -> VGA mode. */ i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); - return intel_ddc_get_modes(connector, i2c); + return intel_crt_ddc_get_modes(connector, i2c); } static int intel_crt_set_property(struct drm_connector *connector, -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads 2012-08-13 10:22 ` [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads Jani Nikula @ 2012-08-16 14:35 ` Daniel Vetter 0 siblings, 0 replies; 12+ messages in thread From: Daniel Vetter @ 2012-08-16 14:35 UTC (permalink / raw) To: Jani Nikula Cc: maciej.rutecki, alferpal, linux-kernel, dri-devel, intel-gfx, daniel On Mon, Aug 13, 2012 at 01:22:35PM +0300, Jani Nikula wrote: > GMBUS was enabled over bit-banging as the default in commits: > > commit c3dfefa0a6d235bd465309e12f4c56ea16e71111 > Author: Daniel Vetter <daniel.vetter@ffwll.ch> > Date: Tue Feb 14 22:37:25 2012 +0100 > > drm/i915: reenable gmbus on gen3+ again > > and > > commit 0fb3f969c8683505fb7323c06bf8a999a5a45a15 > Author: Daniel Vetter <daniel.vetter@ffwll.ch> > Date: Fri Mar 2 19:38:30 2012 +0100 > > drm/i915: enable gmbus on gen2 > > Unfortunately, GMBUS seems to fail on some CRT displays. Add a bit-banging > fallback to CRT EDID reads. > > LKML-Reference: <201207251020.47637.maciej.rutecki@gmail.com> > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=45881 > Signed-off-by: Jani Nikula <jani.nikula@intel.com> Patches applied to -fixes with the tested-by result from the bug report. I've also put a cc: stable on both of them, since the regression is already in 3.4. Thanks, Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-08-16 14:34 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-07-25 8:20 [REGRESSION] [KMS] [INTEL] Wrong resolution in console and XWindow Maciej Rutecki 2012-07-25 8:29 ` Daniel Vetter 2012-07-25 8:54 ` Maciej Rutecki 2012-07-25 9:29 ` Daniel Vetter 2012-07-25 10:57 ` Maciej Rutecki 2012-07-25 11:55 ` Daniel Vetter 2012-07-26 12:38 ` Daniel Vetter 2012-07-27 11:46 ` Maciej Rutecki 2012-08-13 10:22 ` [PATCH 0/2] GMBUS EDID read bit-banging fallback Jani Nikula 2012-08-13 10:22 ` [PATCH 1/2] drm/i915: extract connector update from intel_ddc_get_modes() for reuse Jani Nikula 2012-08-13 10:22 ` [PATCH 2/2] drm/i915: fall back to bit-banging if GMBUS fails in CRT EDID reads Jani Nikula 2012-08-16 14:35 ` Daniel Vetter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox