From patchwork Fri Jun 3 14:36:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 9153289 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B289660221 for ; Fri, 3 Jun 2016 14:38:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A383726C9B for ; Fri, 3 Jun 2016 14:38:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 98AC0282E8; Fri, 3 Jun 2016 14:38:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1F00226C9B for ; Fri, 3 Jun 2016 14:38:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9EB2B6EDE1; Fri, 3 Jun 2016 14:37:59 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 642576EDB6 for ; Fri, 3 Jun 2016 14:37:39 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id e3so24021968wme.2 for ; Fri, 03 Jun 2016 07:37:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=hIUfwxk1I7wAJwCuIlLzRhpxguqQHXdlHGWX8bx4qzQ=; b=Ap1fxST8ROKkOP49EBJ7FjN9nn5WIUah5vdCe1TZLFdmF6pGIUHuPxrhPVzRBW6gh7 nZnDC4QDJty39EwAn89A4BUc/jJ/XWVnshH7vfTPDsSXJ/YVPc+QSPcEnHub6XsUiLGF sMGqiHaZsOZrreZorsJLTBKYCQJM54xPleRf5RImGQOe4nPrPQfKiSxvGJ1zguF1NMRz EXDeYsUlomOhNJOQCfSv78pKSzxZoCCbGL1S33EFiai4u8Or8d8QDANH+ZJE0lU0V8RQ 9a3yBRzA0yqNnntIuxoHDDqFPqHWrqyhFWYIDn0OeoySGdZVIaGIbNiDWJNGU4isCrly CClw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=hIUfwxk1I7wAJwCuIlLzRhpxguqQHXdlHGWX8bx4qzQ=; b=L+7PhszdKz5Eoig2LV97ObokvPDx6Oh44UXw+xIQsLC/5k1yzjG5EmrDiqq4lRPLNN lUuOq6BhaxR0iB6yNe0ql30r/7zW9s+0Xto195WNrKOcWXgqxyiYZCBPDMMQu/m/vYVX +0Sy7k2IppuSo0wMEV/qIGvgZd8y4r0rc57qRjLmkrwRZZAn/S3hbeN4a8fVACiqK81i pFJzuowdIjnfFzeOvpjcpGfNCoo6t8R3uURZj3tg2IbPq7g119Uewo/yPA8JJjfmTCDl 7Igr51Vh9Yod6ZNXrObAP8o74kBAhJCkAjygiy7qMJGZluSZVH37UqmRlvnzyCTzCjTy 9nFQ== X-Gm-Message-State: ALyK8tJdzVGFGJMk1N8WiMIPdz+u0hBOeQL3PnutVWkgb9BH9+mG3HjpH6oIhEMBGluH9A== X-Received: by 10.28.88.206 with SMTP id m197mr4207911wmb.43.1464964657554; Fri, 03 Jun 2016 07:37:37 -0700 (PDT) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id e1sm6060275wjv.9.2016.06.03.07.37.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jun 2016 07:37:36 -0700 (PDT) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Fri, 3 Jun 2016 15:36:59 +0100 Message-Id: <1464964636-3877-17-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1464964636-3877-1-git-send-email-chris@chris-wilson.co.uk> References: <1464964636-3877-1-git-send-email-chris@chris-wilson.co.uk> Subject: [Intel-gfx] [PATCH v3 16/33] drm/i915: Move connector registration to driver registration X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP Defer connector registration from during construction to the driver registration phase. This is important for ordering the action correctly, e.g. not using debugfs before it is ready. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/i915_dma.c | 2 ++ drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/intel_crt.c | 2 -- drivers/gpu/drm/i915/intel_display.c | 12 ++++++++++-- drivers/gpu/drm/i915/intel_dp.c | 2 -- drivers/gpu/drm/i915/intel_dsi.c | 2 -- drivers/gpu/drm/i915/intel_dvo.c | 1 - drivers/gpu/drm/i915/intel_hdmi.c | 1 - drivers/gpu/drm/i915/intel_lvds.c | 1 - drivers/gpu/drm/i915/intel_sdvo.c | 10 ---------- drivers/gpu/drm/i915/intel_tv.c | 1 - 11 files changed, 14 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 650b3f7e2a8e..4a7a2c08becd 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1361,6 +1361,7 @@ static void i915_driver_register(struct drm_i915_private *dev_priv) I915_WRITE(vgtif_reg(display_ready), VGT_DRV_DISPLAY_READY); i915_setup_sysfs(dev); + intel_modeset_register(dev_priv); if (INTEL_INFO(dev_priv)->num_pipes) { /* Must be done after probing outputs */ @@ -1396,6 +1397,7 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv) intel_gpu_ips_teardown(); acpi_video_unregister(); intel_opregion_unregister(dev_priv); + intel_modeset_unregister(dev_priv); i915_teardown_sysfs(dev_priv->dev); i915_gem_shrinker_cleanup(dev_priv); } diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 6616b70c3a34..005f5913509f 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -3673,6 +3673,8 @@ extern void intel_modeset_init_hw(struct drm_device *dev); extern void intel_modeset_init(struct drm_device *dev); extern void intel_modeset_gem_init(struct drm_device *dev); extern void intel_modeset_cleanup(struct drm_device *dev); +extern void intel_modeset_register(struct drm_i915_private *dev_priv); +extern void intel_modeset_unregister(struct drm_i915_private *dev_priv); extern int intel_connector_register(struct drm_connector *); extern void intel_connector_unregister(struct drm_connector *); extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 7c06173f5f67..723bc734fb67 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -881,8 +881,6 @@ void intel_crt_init(struct drm_device *dev) drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); - drm_connector_register(connector); - if (!I915_HAS_HOTPLUG(dev)) intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT; diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 42d260bd1829..c944a1d2d8ab 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -15450,6 +15450,16 @@ void intel_modeset_init_hw(struct drm_device *dev) intel_enable_gt_powersave(dev_priv); } +void intel_modeset_register(struct drm_i915_private *dev_priv) +{ + drm_connector_register_all(dev_priv->dev); +} + +void intel_modeset_unregister(struct drm_i915_private *dev_priv) +{ + drm_connector_unregister_all(dev_priv->dev); +} + /* * Calculate what we think the watermarks should be for the state we've read * out of the hardware and then immediately program those watermarks so that @@ -16266,8 +16276,6 @@ void intel_modeset_cleanup(struct drm_device *dev) /* flush any delayed tasks or pending work */ flush_scheduled_work(); - drm_connector_unregister_all(dev); - drm_mode_config_cleanup(dev); intel_cleanup_overlay(dev_priv); diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 9bbe5d5f759c..c64715f132ad 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -5489,7 +5489,6 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, edp_panel_vdd_work); intel_connector_attach_encoder(intel_connector, intel_encoder); - drm_connector_register(connector); if (HAS_DDI(dev)) intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; @@ -5565,7 +5564,6 @@ fail: edp_panel_vdd_off_sync(intel_dp); pps_unlock(intel_dp); } - drm_connector_unregister(connector); drm_connector_cleanup(connector); return false; diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 54af0a162d20..76964177379b 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c @@ -1588,8 +1588,6 @@ void intel_dsi_init(struct drm_device *dev) intel_dsi_add_properties(intel_connector); - drm_connector_register(connector); - return; err: diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c index 86dd746d7573..8cfe58f6b8ed 100644 --- a/drivers/gpu/drm/i915/intel_dvo.c +++ b/drivers/gpu/drm/i915/intel_dvo.c @@ -553,7 +553,6 @@ void intel_dvo_init(struct drm_device *dev) intel_dvo->panel_wants_dither = true; } - drm_connector_register(connector); return; } diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 2b45132cf1a6..0959af378901 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1913,7 +1913,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, intel_hdmi_add_properties(intel_hdmi, connector); intel_connector_attach_encoder(intel_connector, intel_encoder); - drm_connector_register(connector); intel_hdmi->attached_connector = intel_connector; /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 0d5f62063f15..449897ff17b3 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c @@ -1134,7 +1134,6 @@ out: DRM_DEBUG_KMS("lid notifier registration failed\n"); lvds_connector->lid_notifier.notifier_call = NULL; } - drm_connector_register(connector); return; diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 180932e5463f..1bec7c49fff9 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -2397,16 +2397,8 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector, connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; intel_connector_attach_encoder(&connector->base, &encoder->base); - ret = drm_connector_register(drm_connector); - if (ret < 0) - goto err1; return 0; - -err1: - drm_connector_cleanup(drm_connector); - - return ret; } static void @@ -2533,7 +2525,6 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) return true; err: - drm_connector_unregister(connector); intel_sdvo_destroy(connector); return false; } @@ -2612,7 +2603,6 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device) return true; err: - drm_connector_unregister(connector); intel_sdvo_destroy(connector); return false; } diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c index 3998982c5bfb..67cb19c1476b 100644 --- a/drivers/gpu/drm/i915/intel_tv.c +++ b/drivers/gpu/drm/i915/intel_tv.c @@ -1643,5 +1643,4 @@ intel_tv_init(struct drm_device *dev) drm_object_attach_property(&connector->base, dev->mode_config.tv_bottom_margin_property, intel_tv->margin[TV_MARGIN_BOTTOM]); - drm_connector_register(connector); }