[PATCH] drm/dp: Set the connector's TILE property even for DP SST connectors
Manasi Navare
manasi.d.navare at intel.com
Thu Mar 14 18:43:47 UTC 2019
Pushed to drm-misc, thanks for the patch and the review!
Regards
Manasi
On Wed, Mar 13, 2019 at 02:48:36PM -0400, Alex Deucher wrote:
> On Tue, Mar 12, 2019 at 10:15 PM Manasi Navare
> <manasi.d.navare at intel.com> wrote:
> >
> > Current driver sets the tile property only for DP MST connectors.
> > However there are some tiled displays where each SST connector
> > carries a single tile. So we need to attach this property object
> > for every connector and set it for every connector (DP SST and MST).
> > Plus since the tile information is obtained as a result of EDID
> > parsing, the best place to update tile property is where we update
> > edid property.
> > Also now we dont need to explicitly set this now for MST connectors.
> >
> > This has been tested with xrandr --props and modetest and verified
> > that TILE property is exposed correctly.
> >
> > Cc: Dave Airlie <airlied at redhat.com>
> > Cc: Jani Nikula <jani.nikula at linux.intel.com>
> > Cc: Daniel Vetter <daniel.vetter at intel.com>
> > Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
>
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
> > ---
> > drivers/gpu/drm/drm_connector.c | 13 ++++++++++++-
> > drivers/gpu/drm/drm_dp_mst_topology.c | 1 -
> > 2 files changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> > index 07d65a16c623..2355124849db 100644
> > --- a/drivers/gpu/drm/drm_connector.c
> > +++ b/drivers/gpu/drm/drm_connector.c
> > @@ -245,6 +245,7 @@ int drm_connector_init(struct drm_device *dev,
> > INIT_LIST_HEAD(&connector->modes);
> > mutex_init(&connector->mutex);
> > connector->edid_blob_ptr = NULL;
> > + connector->tile_blob_ptr = NULL;
> > connector->status = connector_status_unknown;
> > connector->display_info.panel_orientation =
> > DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
> > @@ -272,6 +273,9 @@ int drm_connector_init(struct drm_device *dev,
> > drm_object_attach_property(&connector->base,
> > config->non_desktop_property,
> > 0);
> > + drm_object_attach_property(&connector->base,
> > + config->tile_property,
> > + 0);
> >
> > if (drm_core_check_feature(dev, DRIVER_ATOMIC)) {
> > drm_object_attach_property(&connector->base, config->prop_crtc_id, 0);
> > @@ -1712,6 +1716,8 @@ EXPORT_SYMBOL(drm_connector_set_path_property);
> > * This looks up the tile information for a connector, and creates a
> > * property for userspace to parse if it exists. The property is of
> > * the form of 8 integers using ':' as a separator.
> > + * This is used for dual port tiled displays with DisplayPort SST
> > + * or DisplayPort MST connectors.
> > *
> > * Returns:
> > * Zero on success, errno on failure.
> > @@ -1755,6 +1761,9 @@ EXPORT_SYMBOL(drm_connector_set_tile_property);
> > *
> > * This function creates a new blob modeset object and assigns its id to the
> > * connector's edid property.
> > + * Since we also parse tile information from EDID's displayID block, we also
> > + * set the connector's tile property here. See drm_connector_set_tile_property()
> > + * for more details.
> > *
> > * Returns:
> > * Zero on success, negative errno on failure.
> > @@ -1796,7 +1805,9 @@ int drm_connector_update_edid_property(struct drm_connector *connector,
> > edid,
> > &connector->base,
> > dev->mode_config.edid_property);
> > - return ret;
> > + if (ret)
> > + return ret;
> > + return drm_connector_set_tile_property(connector);
> > }
> > EXPORT_SYMBOL(drm_connector_update_edid_property);
> >
> > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> > index dc7ac0c60547..c630ed157994 100644
> > --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> > @@ -3022,7 +3022,6 @@ struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_
> > edid = drm_edid_duplicate(port->cached_edid);
> > else {
> > edid = drm_get_edid(connector, &port->aux.ddc);
> > - drm_connector_set_tile_property(connector);
> > }
> > port->has_audio = drm_detect_monitor_audio(edid);
> > drm_dp_mst_topology_put_port(port);
> > --
> > 2.19.1
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list