From patchwork Mon Dec 19 08:24:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 9479869 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 412A060237 for ; Mon, 19 Dec 2016 08:25:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2F2442845E for ; Mon, 19 Dec 2016 08:25:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 22E0B2847B; Mon, 19 Dec 2016 08:25:25 +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]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A97162845E for ; Mon, 19 Dec 2016 08:25:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D84076E42B; Mon, 19 Dec 2016 08:25:23 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 913766E421 for ; Mon, 19 Dec 2016 08:24:36 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id a20so17222188wme.2 for ; Mon, 19 Dec 2016 00:24:36 -0800 (PST) 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; bh=oZThOw3BJNYoy5dp9BAomVynXBGqZDzLDRUqM815q6U=; b=Vf3nLy4Zd8W8MHMWbll41ShVrngwZMEtLUhqvIobUauNV3RhzCHF6CAdbk6kaOpVF1 gJikg/H3IhUlLUCHKdKhIIRg8q90KsHYLSgazPpqnXnjOlnipGqD6679UCdyzUnKyDbJ gxgzUM1K/Setpdcb18yqw3yJ7HBsF2DnBcHCM= 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; bh=oZThOw3BJNYoy5dp9BAomVynXBGqZDzLDRUqM815q6U=; b=gseTgOf8jcukLcXe2JqKd8h9eebEI5KCvWyzEJj9eNxPKwE9R1duQsp6Xd/iEQfsbh iNyJV8nLd3JhhZnXx4CPUQlO0ntbVkYRBUMAnDn2LTnbiPJNd7G6IqEx+fcAiYOn+ApG lYZqygyVnzOx/Pe4/xMRoH6XD4kbBLusn5T5u7wNajBeKqUL6dXELy6bAx5aB6IFo5U2 ncsfonCNxaSIOhWqgBZkBJdCRIkvyIvEFV4cyYWzysH46wa3HUNcGo3Vy7CQH5WPA0Cu 0NzTpxupr/U2eTgLU/tK9dfTv541rpJ/u584dUJb4DgV2hVGGjZ0EpMz5Bwa/8nBWF/b FS8Q== X-Gm-Message-State: AIkVDXIJK/Yjnxmwkw2YQ9hFzh3f127zmNsyBixeiMERMnKTNafcPeXO2zOzqQh9gTV1ww== X-Received: by 10.28.69.91 with SMTP id s88mr12047290wma.18.1482135874785; Mon, 19 Dec 2016 00:24:34 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:56c9:0:decc:6e78:7e96:b452]) by smtp.gmail.com with ESMTPSA id f10sm19444856wjl.28.2016.12.19.00.24.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Dec 2016 00:24:34 -0800 (PST) From: Daniel Vetter To: Intel Graphics Development Date: Mon, 19 Dec 2016 09:24:22 +0100 Message-Id: <20161219082423.27798-5-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20161219082423.27798-1-daniel.vetter@ffwll.ch> References: <20161219082423.27798-1-daniel.vetter@ffwll.ch> Cc: Daniel Vetter , Daniel Vetter Subject: [Intel-gfx] [PATCH 5/6] drm/i915: use for_each_intel_connector_iter in intel_display.c 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 This gets rid of the last users of for_each_intel_connector(), remove that too. At first I wasn't sure whether the 2 loops in the modeset state checker should instead only loop over the connectors in the atomic commit. But we never add connectors to an atomic update if they don't (or won't have) a CRTC assigned, which means there'd be a gap in check coverage. Hence loop over everything on those too. Signed-off-by: Daniel Vetter --- drivers/gpu/drm/i915/i915_drv.h | 5 ----- drivers/gpu/drm/i915/intel_display.c | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 57914f008ed8..fe2b37fe0b91 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -488,11 +488,6 @@ struct i915_hotplug { &(dev)->mode_config.encoder_list, \ base.head) -#define for_each_intel_connector(dev, intel_connector) \ - list_for_each_entry(intel_connector, \ - &(dev)->mode_config.connector_list, \ - base.head) - #define for_each_intel_connector_iter(intel_connector, iter) \ while ((intel_connector = to_intel_connector(drm_connector_list_iter_next(iter)))) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 438d27f93aca..e029dba96bca 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12661,8 +12661,10 @@ static const struct drm_crtc_helper_funcs intel_helper_funcs = { static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) { struct intel_connector *connector; + struct drm_connector_list_iter conn_iter; - for_each_intel_connector(dev, connector) { + drm_connector_list_iter_get(dev, &conn_iter); + for_each_intel_connector_iter(connector, &conn_iter) { if (connector->base.state->crtc) drm_connector_unreference(&connector->base); @@ -12678,6 +12680,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) connector->base.state->crtc = NULL; } } + drm_connector_list_iter_put(&conn_iter); } static void @@ -13610,6 +13613,7 @@ verify_encoder_state(struct drm_device *dev) { struct intel_encoder *encoder; struct intel_connector *connector; + struct drm_connector_list_iter conn_iter; for_each_intel_encoder(dev, encoder) { bool enabled = false; @@ -13619,7 +13623,8 @@ verify_encoder_state(struct drm_device *dev) encoder->base.base.id, encoder->base.name); - for_each_intel_connector(dev, connector) { + drm_connector_list_iter_get(dev, &conn_iter); + for_each_intel_connector_iter(connector, &conn_iter) { if (connector->base.state->best_encoder != &encoder->base) continue; enabled = true; @@ -13628,6 +13633,7 @@ verify_encoder_state(struct drm_device *dev) encoder->base.crtc, "connector's crtc doesn't match encoder crtc\n"); } + drm_connector_list_iter_put(&conn_iter); I915_STATE_WARN(!!encoder->base.crtc != enabled, "encoder's enabled state mismatch " @@ -16638,6 +16644,7 @@ int intel_modeset_init(struct drm_device *dev) static void intel_enable_pipe_a(struct drm_device *dev) { struct intel_connector *connector; + struct drm_connector_list_iter conn_iter; struct drm_connector *crt = NULL; struct intel_load_detect_pipe load_detect_temp; struct drm_modeset_acquire_ctx *ctx = dev->mode_config.acquire_ctx; @@ -16645,12 +16652,14 @@ static void intel_enable_pipe_a(struct drm_device *dev) /* We can't just switch on the pipe A, we need to set things up with a * proper mode and output configuration. As a gross hack, enable pipe A * by enabling the load detect pipe once. */ - for_each_intel_connector(dev, connector) { + drm_connector_list_iter_get(dev, &conn_iter); + for_each_intel_connector_iter(connector, &conn_iter) { if (connector->encoder->type == INTEL_OUTPUT_ANALOG) { crt = &connector->base; break; } } + drm_connector_list_iter_put(&conn_iter); if (!crt) return; @@ -16896,6 +16905,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) struct intel_crtc *crtc; struct intel_encoder *encoder; struct intel_connector *connector; + struct drm_connector_list_iter conn_iter; int i; dev_priv->active_crtcs = 0; @@ -16973,7 +16983,8 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) pipe_name(pipe)); } - for_each_intel_connector(dev, connector) { + drm_connector_list_iter_get(dev, &conn_iter); + for_each_intel_connector_iter(connector, &conn_iter) { if (connector->get_hw_state(connector)) { connector->base.dpms = DRM_MODE_DPMS_ON; @@ -17001,6 +17012,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) connector->base.base.id, connector->base.name, enableddisabled(connector->base.encoder)); } + drm_connector_list_iter_put(&conn_iter); for_each_intel_crtc(dev, crtc) { crtc->base.hwmode = crtc->config->base.adjusted_mode;