On Fri, 2018-08-17 at 16:11 +0200, Hans Verkuil wrote:
> From: Hans Verkuil <hans.verk...@cisco.com>
> 
> Add DisplayPort CEC-Tunneling-over-AUX support to nouveau.
> 
> Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
> ---
>  drivers/gpu/drm/nouveau/nouveau_connector.c | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c
> b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 51932c72334e..eb4f766b5958 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -400,8 +400,10 @@ nouveau_connector_destroy(struct drm_connector
> *connector)
>       kfree(nv_connector->edid);
>       drm_connector_unregister(connector);
>       drm_connector_cleanup(connector);
> -     if (nv_connector->aux.transfer)
> +     if (nv_connector->aux.transfer) {
With the comments I made about this on patch 1 addressed/resolved:

Reviewed-by: Lyude Paul <ly...@redhat.com>

> +             drm_dp_cec_unregister_connector(&nv_connector->aux);
>               drm_dp_aux_unregister(&nv_connector->aux);
> +     }
>       kfree(connector);
>  }
>  
> @@ -608,6 +610,7 @@ nouveau_connector_detect(struct drm_connector *connector,
> bool force)
>  
>               nouveau_connector_set_encoder(connector, nv_encoder);
>               conn_status = connector_status_connected;
> +             drm_dp_cec_set_edid(&nv_connector->aux, nv_connector->edid);
>               goto out;
>       }
>  
> @@ -1108,11 +1111,14 @@ nouveau_connector_hotplug(struct nvif_notify *notify)
>  
>       if (rep->mask & NVIF_NOTIFY_CONN_V0_IRQ) {
>               NV_DEBUG(drm, "service %s\n", name);
> +             drm_dp_cec_irq(&nv_connector->aux);
>               if ((nv_encoder = find_encoder(connector, DCB_OUTPUT_DP)))
>                       nv50_mstm_service(nv_encoder->dp.mstm);
>       } else {
>               bool plugged = (rep->mask != NVIF_NOTIFY_CONN_V0_UNPLUG);
>  
> +             if (!plugged)
> +                     drm_dp_cec_unset_edid(&nv_connector->aux);
>               NV_DEBUG(drm, "%splugged %s\n", plugged ? "" : "un", name);
>               if ((nv_encoder = find_encoder(connector, DCB_OUTPUT_DP))) {
>                       if (!plugged)
> @@ -1302,7 +1308,6 @@ nouveau_connector_create(struct drm_device *dev, int
> index)
>                       kfree(nv_connector);
>                       return ERR_PTR(ret);
>               }
> -
>               funcs = &nouveau_connector_funcs;
>               break;
>       default:
> @@ -1356,6 +1361,14 @@ nouveau_connector_create(struct drm_device *dev, int
> index)
>               break;
>       }
>  
> +     switch (type) {
> +     case DRM_MODE_CONNECTOR_DisplayPort:
> +     case DRM_MODE_CONNECTOR_eDP:
> +             drm_dp_cec_register_connector(&nv_connector->aux,
> +                                           connector->name, dev->dev);
> +             break;
> +     }
> +
>       ret = nvif_notify_init(&disp->disp.object, nouveau_connector_hotplug,
>                              true, NV04_DISP_NTFY_CONN,
>                              &(struct nvif_notify_conn_req_v0) {

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to