The dw_hdmi_connector_get_modes() function accidentally forgets to return the number of modes it added, although it has this information stored in a local variable. Let's fix that.
Without this fix, drm_helper_probe_single_connector_modes_merge_bits() could get confused and always call drm_add_modes_noedid(). That's not right.
Signed-off-by: Doug Anderson dianders@chromium.org --- drivers/gpu/drm/bridge/dw_hdmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c index 594f84c..816d104 100644 --- a/drivers/gpu/drm/bridge/dw_hdmi.c +++ b/drivers/gpu/drm/bridge/dw_hdmi.c @@ -1395,7 +1395,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, connector); struct edid *edid; - int ret; + int ret = 0;
if (!hdmi->ddc) return 0; @@ -1412,7 +1412,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) dev_dbg(hdmi->dev, "failed to get edid\n"); }
- return 0; + return ret; }
static enum drm_mode_status
Doug,
在 2015/6/5 2:04, Doug Anderson 写道:
The dw_hdmi_connector_get_modes() function accidentally forgets to return the number of modes it added, although it has this information stored in a local variable. Let's fix that.
Without this fix, drm_helper_probe_single_connector_modes_merge_bits() could get confused and always call drm_add_modes_noedid(). That's not right.
Signed-off-by: Doug Andersondianders@chromium.org
Test-by: Yakir Yang ykk@rock-chips.com
Thanks for your patch, it looks good to me. I And I test it on my 1080p TV, found that the 800x600@56Hz resolution which don't indicate in edid would no longer report, that is right :)
33 31 connected HDMI-A 510x290 17 31 modes: name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot) 800x600 60 800 840 968 1056 600 601 605 628 flags: phsync, pvsync; type: driver 800x600 56 800 824 896 1024 600 601 603 625 flags: phsync, pvsync; type: driver 640x480 60 640 656 752 800 480 490 492 525 flags: nhsync, nvsync; type: driver 640x480 60 640 656 752 800 480 489 492 525 flags: nhsync, nvsync; type: driver
First detailed timing is preferred timing Established timings supported: 720x400@70Hz 640x480@60Hz 640x480@75Hz 800x600@60Hz 800x600@75Hz 1024x768@60Hz 1024x768@75Hz 1280x1024@75Hz Standard timings supported: 1152x864@75Hz 1280x1024@60Hz 1920x1080@60Hz
Thanks ! - Yakir
drivers/gpu/drm/bridge/dw_hdmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c index 594f84c..816d104 100644 --- a/drivers/gpu/drm/bridge/dw_hdmi.c +++ b/drivers/gpu/drm/bridge/dw_hdmi.c @@ -1395,7 +1395,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi, connector); struct edid *edid;
- int ret;
int ret = 0;
if (!hdmi->ddc) return 0;
@@ -1412,7 +1412,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) dev_dbg(hdmi->dev, "failed to get edid\n"); }
- return 0;
return ret; }
static enum drm_mode_status
On Thu, Jun 04, 2015 at 11:04:36AM -0700, Doug Anderson wrote:
The dw_hdmi_connector_get_modes() function accidentally forgets to return the number of modes it added, although it has this information stored in a local variable. Let's fix that.
Without this fix, drm_helper_probe_single_connector_modes_merge_bits() could get confused and always call drm_add_modes_noedid(). That's not right.
Signed-off-by: Doug Anderson dianders@chromium.org
drivers/gpu/drm/bridge/dw_hdmi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Applied, thanks.
Thierry
dri-devel@lists.freedesktop.org