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: 11148679 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 AC86D1708 for ; Tue, 17 Sep 2019 12:09:51 +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 94C5421881 for ; Tue, 17 Sep 2019 12:09:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 94C5421881 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C13BD6EC0C; Tue, 17 Sep 2019 12:09:48 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09A446EC07 for ; Tue, 17 Sep 2019 12:09:45 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id v38so3082655edm.7 for ; Tue, 17 Sep 2019 05:09:44 -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=hK+AskUw0bVHkQcuMzyUD6qBZAg7vVwH7W12IlRtbTuiE5CWEpNfXomMhXIWwhrgQY miMbbfxTBziPCgN2xTnFBde6YSQKHmZ65GQNrd+4g4tfraPeNeepbX6gl8y9fD7kQAOs gTpLvxLj0BfwzDcobRQzkUwjK4itoJH3CLvuKIZ+DeryUMD9v9dswO2Bv3MdSLT/2xnA 9I8BChIoJl/8txrQczksl0Ty3dUyQrb5wCuup7XnR+k22I7yEjcdcjRIBpEcQDIsNIww UZtYFDow+Op6HqId7OZY0AlrL4wdPwAWwafT9DsKiNKXJHVbxBSiBqAgAHLn51EONDmm pp/Q== X-Gm-Message-State: APjAAAXYWz1Axm6GjkcI6+O0ls/+OJXaTcgVoubagjVExMBHbXQA6fB2 T2i2GMLNBg7F6Q0sV7gcjelg9ByFIxk= 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 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= Subject: [Intel-gfx] [PATCH 2/2] drm/doc: Improve docs around connector (un)registration X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" 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. */