[PATCH] drm/dp: Set the connector's TILE property even for DP SST connectors

Alex Deucher alexdeucher at gmail.com
Wed Mar 13 18:48:36 UTC 2019


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


More information about the dri-devel mailing list