From patchwork Tue Sep 17 12:09:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 11148677 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9016C1708 for ; Tue, 17 Sep 2019 12:09:50 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7894821881 for ; Tue, 17 Sep 2019 12:09:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7894821881 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8C60F6EC0D; Tue, 17 Sep 2019 12:09:46 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 542B66EC09 for ; Tue, 17 Sep 2019 12:09:45 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id y91so3076383ede.9 for ; Tue, 17 Sep 2019 05:09:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uoNxYn2nhvjPSGE7EeOkhJ437kQbsmarcp1tf/DXfT4=; b=Gd2iBkpCGqAOWkOVMGs8872nO9qYOosWgwpSil9HUmEWvQnsfa7bBdj2DEhS3G1mM0 CuItOC7Yi+S3n8gcW+buDgkgRIyjZVy+cOVDUoTQ4VdFHoB8776S2Qd7JrjOhtsAmTPh 8iU1xYE9lpZywpCJD3vBVhfpVjuFp2VtD0H6K+GQyR1Ceh1O8zNkLm8KZl/NDGzhB24B 5H8pH/hxfSaaZ8jfPBYk76saQmHVDV7SyK05cBrxp1MH51QeZOhiCOsrpXagbo9RES/2 p43+/3seBrk8BKutuik8Suk0eR3zBbdRjFVD5S2oAm5zRRQHocuzLZJV/Wncwm9sYdVY gzyQ== X-Gm-Message-State: APjAAAXXevKyqDxu05s4zw90M6YZRhxtem0kTNgrclw+EQBPGIKZp0sV UKi0aDlseMxXsB1wagQd9Dr3IfjS+oA= X-Google-Smtp-Source: APXvYqyMT3by64vqg0/kP21aKL/HQ2EKsdFgWkDyqPqwjk9yedDoJrG0xMk7ui+zwdLnWSIgHuhKJg== X-Received: by 2002:a17:906:6448:: with SMTP id l8mr4421628ejn.233.1568722183520; Tue, 17 Sep 2019 05:09:43 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-96.fiber7.init7.net. [212.51.149.96]) by smtp.gmail.com with ESMTPSA id t9sm251326eji.26.2019.09.17.05.09.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Sep 2019 05:09:42 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH 2/2] drm/doc: Improve docs around connector (un)registration Date: Tue, 17 Sep 2019 14:09:36 +0200 Message-Id: <20190917120936.7501-2-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190917120936.7501-1-daniel.vetter@ffwll.ch> References: <20190917120936.7501-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uoNxYn2nhvjPSGE7EeOkhJ437kQbsmarcp1tf/DXfT4=; b=FskHLrrfTOoiEChEPeZSfz4V8e4XP7Y6503IBJnY/NcN0mAHaDCpJs9ajPaVXsdxLg Ti4i1aHl6xE4tbaAjsBNAQu34cI2NRaKyvslEtZKeMwuYkPy+u0nMFDVLQnbu4KBWGCc KqPcVuVQ3sSsq9MgVBIXXUZrFb4FTxafFa1Lk= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , Intel Graphics Development , =?utf-8?q?Mic?= =?utf-8?q?hel_D=C3=A4nzer?= , Daniel Vetter Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Current code is quite a mess unfortunately, so also add a todo.rst entry to maybe fix it up eventually. Cc: Michel Dänzer Signed-off-by: Daniel Vetter Reviewed-by: Lyude Paul --- Documentation/gpu/todo.rst | 12 ++++++++++++ drivers/gpu/drm/drm_connector.c | 10 ++++++++-- drivers/gpu/drm/drm_dp_helper.c | 8 ++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index 32787acff0a8..8dc147c93c9c 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -284,6 +284,18 @@ drm_fb_helper tasks removed: drm_fb_helper_single_add_all_connectors(), drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector(). +connector register/unregister fixes +----------------------------------- + +- For most connectors it's a no-op to call drm_connector_register/unregister + directly from driver code, drm_dev_register/unregister take care of this + already. We can remove all of them. + +- For dp drivers it's a bit more a mess, since we need the connector to be + registered when calling drm_dp_aux_register. Fix this by instead calling + drm_dp_aux_init, and moving the actual registering into a late_register + callback as recommended in the kerneldoc. + Core refactorings ================= diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 4c766624b20d..cd5048ceab1d 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -480,7 +480,10 @@ EXPORT_SYMBOL(drm_connector_cleanup); * drm_connector_register - register a connector * @connector: the connector to register * - * Register userspace interfaces for a connector + * Register userspace interfaces for a connector. Only call this for connectors + * which can be hotplugged after drm_dev_register() has been called already, + * e.g. DP MST connectors. All other connectors will be registered automatically + * when calling drm_dev_register(). * * Returns: * Zero on success, error code on failure. @@ -526,7 +529,10 @@ EXPORT_SYMBOL(drm_connector_register); * drm_connector_unregister - unregister a connector * @connector: the connector to unregister * - * Unregister userspace interfaces for a connector + * Unregister userspace interfaces for a connector. Only call this for + * connectors which have registered explicitly by calling drm_dev_register(), + * since connectors are unregistered automatically when drm_dev_unregister() is + * called. */ void drm_connector_unregister(struct drm_connector *connector) { diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c index ffc68d305afe..f373798d82f6 100644 --- a/drivers/gpu/drm/drm_dp_helper.c +++ b/drivers/gpu/drm/drm_dp_helper.c @@ -1109,6 +1109,14 @@ EXPORT_SYMBOL(drm_dp_aux_init); * @aux: DisplayPort AUX channel * * Automatically calls drm_dp_aux_init() if this hasn't been done yet. + * This should only be called when the underlying &struct drm_connector is + * initialiazed already. Therefore the best place to call this is from + * &drm_connector_funcs.late_register. Not that drivers which don't follow this + * will Oops when CONFIG_DRM_DP_AUX_CHARDEV is enabled. + * + * Drivers which need to use the aux channel before that point (e.g. at driver + * load time, before drm_dev_register() has been called) need to call + * drm_dp_aux_init(). * * Returns 0 on success or a negative error code on failure. */