diff mbox

drm/probe-helper: Fix modes reporting for writeback connector

Message ID 1531385282-17196-1-git-send-email-alexandru-cosmin.gheorghe@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alexandru-Cosmin Gheorghe July 12, 2018, 8:48 a.m. UTC
Writeback connector is reported as disconnected, currently this causes
the setting of the edid property to null and then exit.
In order to properly get the modes for writeback we need to add an
exception when connector type is DRM_MODE_CONNECTOR_WRITEBACK.

Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
---
 drivers/gpu/drm/drm_probe_helper.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Daniel Vetter July 12, 2018, 8:55 a.m. UTC | #1
On Thu, Jul 12, 2018 at 09:48:02AM +0100, Alexandru Gheorghe wrote:
> Writeback connector is reported as disconnected, currently this causes
> the setting of the edid property to null and then exit.
> In order to properly get the modes for writeback we need to add an
> exception when connector type is DRM_MODE_CONNECTOR_WRITEBACK.
> 
> Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>

Why do you even need a mode list for writeback?

Also, if you're already faking a mode list for the writeback connector,
why can't you also fake it's connection status?
-Daniel

> ---
>  drivers/gpu/drm/drm_probe_helper.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index 52774339..c7bdbe2 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -472,7 +472,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
>  
>  	dev->mode_config.poll_running = drm_kms_helper_poll;
>  
> -	if (connector->status == connector_status_disconnected) {
> +	if (connector->status == connector_status_disconnected &&
> +	    connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK) {
>  		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n",
>  			connector->base.id, connector->name);
>  		drm_mode_connector_update_edid_property(connector, NULL);
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Alexandru-Cosmin Gheorghe July 12, 2018, 9:20 a.m. UTC | #2
On Thu, Jul 12, 2018 at 10:55:47AM +0200, Daniel Vetter wrote:
> On Thu, Jul 12, 2018 at 09:48:02AM +0100, Alexandru Gheorghe wrote:
> > Writeback connector is reported as disconnected, currently this causes
> > the setting of the edid property to null and then exit.
> > In order to properly get the modes for writeback we need to add an
> > exception when connector type is DRM_MODE_CONNECTOR_WRITEBACK.
> > 
> > Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
> 
> Why do you even need a mode list for writeback?

It's used by userspace to know how big the writeback buffer could be.

> 
> Also, if you're already faking a mode list for the writeback connector,
> why can't you also fake it's connection status?
> -Daniel

AFAIK Reporting it as disconnected was a way of making sure it will be
ignored by userspace that's not aware of writeback connectorsa. Do you
think it's superfluous with DRM_CLIENT_CAP_WRITEBACK_CONNECTORS ?

> 
> > ---
> >  drivers/gpu/drm/drm_probe_helper.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> > index 52774339..c7bdbe2 100644
> > --- a/drivers/gpu/drm/drm_probe_helper.c
> > +++ b/drivers/gpu/drm/drm_probe_helper.c
> > @@ -472,7 +472,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
> >  
> >  	dev->mode_config.poll_running = drm_kms_helper_poll;
> >  
> > -	if (connector->status == connector_status_disconnected) {
> > +	if (connector->status == connector_status_disconnected &&
> > +	    connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK) {
> >  		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n",
> >  			connector->base.id, connector->name);
> >  		drm_mode_connector_update_edid_property(connector, NULL);
> > -- 
> > 2.7.4
> > 
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
Daniel Vetter July 12, 2018, 1:08 p.m. UTC | #3
On Thu, Jul 12, 2018 at 10:20:35AM +0100, Alexandru-Cosmin Gheorghe wrote:
> On Thu, Jul 12, 2018 at 10:55:47AM +0200, Daniel Vetter wrote:
> > On Thu, Jul 12, 2018 at 09:48:02AM +0100, Alexandru Gheorghe wrote:
> > > Writeback connector is reported as disconnected, currently this causes
> > > the setting of the edid property to null and then exit.
> > > In order to properly get the modes for writeback we need to add an
> > > exception when connector type is DRM_MODE_CONNECTOR_WRITEBACK.
> > > 
> > > Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
> > 
> > Why do you even need a mode list for writeback?
> 
> It's used by userspace to know how big the writeback buffer could be.
> 
> > 
> > Also, if you're already faking a mode list for the writeback connector,
> > why can't you also fake it's connection status?
> > -Daniel
> 
> AFAIK Reporting it as disconnected was a way of making sure it will be
> ignored by userspace that's not aware of writeback connectorsa. Do you
> think it's superfluous with DRM_CLIENT_CAP_WRITEBACK_CONNECTORS ?

Yes, since we're filtering writeback connectors from userspace that can't
deal with them I think a cleaner solution would be to just mark them as
connected. Old userspace won't ever see them, new userspace should already
correctly ignore them.
-Daniel

> 
> > 
> > > ---
> > >  drivers/gpu/drm/drm_probe_helper.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> > > index 52774339..c7bdbe2 100644
> > > --- a/drivers/gpu/drm/drm_probe_helper.c
> > > +++ b/drivers/gpu/drm/drm_probe_helper.c
> > > @@ -472,7 +472,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
> > >  
> > >  	dev->mode_config.poll_running = drm_kms_helper_poll;
> > >  
> > > -	if (connector->status == connector_status_disconnected) {
> > > +	if (connector->status == connector_status_disconnected &&
> > > +	    connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK) {
> > >  		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n",
> > >  			connector->base.id, connector->name);
> > >  		drm_mode_connector_update_edid_property(connector, NULL);
> > > -- 
> > > 2.7.4
> > > 
> > > _______________________________________________
> > > dri-devel mailing list
> > > dri-devel@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> > 
> > -- 
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch
> 
> -- 
> Cheers,
> Alex G
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index 52774339..c7bdbe2 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -472,7 +472,8 @@  int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
 
 	dev->mode_config.poll_running = drm_kms_helper_poll;
 
-	if (connector->status == connector_status_disconnected) {
+	if (connector->status == connector_status_disconnected &&
+	    connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK) {
 		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] disconnected\n",
 			connector->base.id, connector->name);
 		drm_mode_connector_update_edid_property(connector, NULL);