Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1736353pxf; Fri, 26 Mar 2021 13:43:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJysNYpqFJCpVvuSTZOo33kSD8OYKySHeqSpoUIeL9GtiBq6NOIEQBrHQ0Q8Cdygp8pkWkTi X-Received: by 2002:a17:906:3b41:: with SMTP id h1mr16722426ejf.506.1616791402100; Fri, 26 Mar 2021 13:43:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616791402; cv=none; d=google.com; s=arc-20160816; b=gC8mfMgWvaI+nc/fhNJesOAKVOzM475arX7XqMsCI2Os34aq0aoPoVfB3ZDEWLja3C aOl1ErwH48yX1s5F/AxNbHn6sBdCB1OwvPbIvSCtOTu6LPt9W/hhXYxrtEr9iZmOXzr0 zNrJ0PPugaipFsvjAxnO1mCmMcWvTgBtqUpVad3XUtVMyioDXgxgCL9CfwX+7sRegoVq DRLa58IrcbcHvzp3M2eyO24rrs/VfzpR/zdE6gTY/6Z7gmTLgmFvYk96aw+GD7PfWUwP sOgAhMvE1ijB6Dx+akxLOfu+CS3ZmZvnRDHL7oQxvNsFrgy42UDjzKeWpzPkmBYT/H6j gG0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kmJWUQTnyNyF1uUV1/UTgNBKp8byMNl0QTWnDQNcXzM=; b=uusbM9WzScrr9ZtzbzgIw+Hh0VWbDZs9PPoOgxyAKFX7czQC1elfujn3Ntd9yzdjHq 25GpAVol98O+RXsJDPd14qh8RpCt/5jHubZr+gZ0nwXEZhJY49vkrpGi9ChihlBQhHj0 DTNyNUXPT97DRFycsIyU1PwfRGezxt2MKGFtNcqa4g7tsjekSBeXo8h4glYN5Ptn1NwC 0hVo0KH25Taknm+3Dk9aHSmnDMdIuicacmFbWa+bpPPaD/a7e3WUNWGtSh3R3JFlG9sn XEh3xzFv2E8b8L2z7k1IS4A/PGB5wFe5ydh1qx/u8kj7q297evlrzr0EPtjG6aIrqWKt seHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VGbOItZp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q17si7917928eju.412.2021.03.26.13.43.00; Fri, 26 Mar 2021 13:43:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VGbOItZp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230281AbhCZUjB (ORCPT + 99 others); Fri, 26 Mar 2021 16:39:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:36344 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230240AbhCZUil (ORCPT ); Fri, 26 Mar 2021 16:38:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1616791121; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kmJWUQTnyNyF1uUV1/UTgNBKp8byMNl0QTWnDQNcXzM=; b=VGbOItZpkLAL60B6rzzmnpn1+HXBSMyWRXuduxxRw1oM8qvHlkyivsMP6WrxIoC8/3tR9O EnPZee47f9JoHL17unV5NsQlcal+ydpC7pSO5LToybdfAq28KqsurhtLJDXU+9dbXtg+Q5 AbWIdA+TvlO4UBGj+s0r+TBJkBNUm/A= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-205-YxUCerzBOUCJkjvHCXR8Tg-1; Fri, 26 Mar 2021 16:38:25 -0400 X-MC-Unique: YxUCerzBOUCJkjvHCXR8Tg-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 36385501EC; Fri, 26 Mar 2021 20:38:23 +0000 (UTC) Received: from Whitewolf.lyude.net (ovpn-114-133.rdu2.redhat.com [10.10.114.133]) by smtp.corp.redhat.com (Postfix) with ESMTP id 058795DDAD; Fri, 26 Mar 2021 20:38:21 +0000 (UTC) From: Lyude Paul To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Thierry Reding , David Airlie , Daniel Vetter , Jonathan Hunter , linux-tegra@vger.kernel.org (open list:DRM DRIVERS FOR NVIDIA TEGRA), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 02/20] drm/tegra: Don't register DP AUX channels before connectors Date: Fri, 26 Mar 2021 16:37:49 -0400 Message-Id: <20210326203807.105754-3-lyude@redhat.com> In-Reply-To: <20210326203807.105754-1-lyude@redhat.com> References: <20210326203807.105754-1-lyude@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As pointed out by the documentation for drm_dp_aux_register(), drm_dp_aux_init() should be used in situations where the AUX channel for a display driver can potentially be registered before it's respective DRM driver. This is the case with Tegra, since the DP aux channel exists as a platform device instead of being a grandchild of the DRM device. Since we're about to add a backpointer to a DP AUX channel's respective DRM device, let's fix this so that we don't potentially allow userspace to use the AUX channel before we've associated it with it's DRM connector. Signed-off-by: Lyude Paul --- drivers/gpu/drm/tegra/dpaux.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/tegra/dpaux.c b/drivers/gpu/drm/tegra/dpaux.c index 105fb9cdbb3b..ea56c6ec25e4 100644 --- a/drivers/gpu/drm/tegra/dpaux.c +++ b/drivers/gpu/drm/tegra/dpaux.c @@ -534,9 +534,7 @@ static int tegra_dpaux_probe(struct platform_device *pdev) dpaux->aux.transfer = tegra_dpaux_transfer; dpaux->aux.dev = &pdev->dev; - err = drm_dp_aux_register(&dpaux->aux); - if (err < 0) - return err; + drm_dp_aux_init(&dpaux->aux); /* * Assume that by default the DPAUX/I2C pads will be used for HDMI, @@ -589,8 +587,6 @@ static int tegra_dpaux_remove(struct platform_device *pdev) pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - drm_dp_aux_unregister(&dpaux->aux); - mutex_lock(&dpaux_lock); list_del(&dpaux->list); mutex_unlock(&dpaux_lock); @@ -723,6 +719,10 @@ int drm_dp_aux_attach(struct drm_dp_aux *aux, struct tegra_output *output) unsigned long timeout; int err; + err = drm_dp_aux_register(aux); + if (err < 0) + return err; + output->connector.polled = DRM_CONNECTOR_POLL_HPD; dpaux->output = output; @@ -760,6 +760,7 @@ int drm_dp_aux_detach(struct drm_dp_aux *aux) unsigned long timeout; int err; + drm_dp_aux_unregister(aux); disable_irq(dpaux->irq); if (dpaux->output->panel) { -- 2.30.2