From patchwork Tue Feb 28 13:53:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 9595691 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 2167660453 for ; Tue, 28 Feb 2017 13:54:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 104F027FBC for ; Tue, 28 Feb 2017 13:54:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0508628518; Tue, 28 Feb 2017 13:54:11 +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 9BAC327FBC for ; Tue, 28 Feb 2017 13:54:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 008C06E6FD; Tue, 28 Feb 2017 13:54:10 +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 4AF0B6E6FD for ; Tue, 28 Feb 2017 13:54:09 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id r18so2507549wmd.3 for ; Tue, 28 Feb 2017 05:54:09 -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=bGxp/MuOMh8bewgigf/g5LgKm9i8KwIUfuoLRDrTcrQ=; b=b+R25lDGbcEhtLCVz8GaSMC6wbvkmIHDAOkfv/MRjfItQmVYlXmzE8MEGGr+oWYjR1 MJLo65xlO7MTnmQoo4uehNS/nXPmm4DzKDCLDpuSTs92aG1ihjsjdfYYDPFtVh+pnzHU 84O1FIbs3olr1q89oYWmbZy8Ha+X/jN3LmSoo= 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=bGxp/MuOMh8bewgigf/g5LgKm9i8KwIUfuoLRDrTcrQ=; b=m6FbGwdm7AucFUyNchOs1I3vniIfBAB+pHLOfrfgEDZf6O9GznXPrspoiL2dS0llGT DwjA14ia1tnUCVLD5MsbfhnsWiZqIp4KNFbGAcPsF35QmyjOm7eA1vEYDidADD9N7FgS TkOQnt9T7CY0Ivd4G0BgdIF0euVstTJNkrHtdoUfDJRRiDSOaphBGVZOaYHYLj/oofFZ rPWeF98eNCwhkmG+c7ovLJZN+cVhVfuaLGdPBZ+YqcH8dOBjDwDxhwRQ1VfADnZr5X7H tNrMLlozeP2KDp13L4+QUyqS8D/PC1L5bOWKqdEOGbUxwYC8+YUOeNdcUXczTRSUSakA BGMg== X-Gm-Message-State: AMke39nn5pPOu+WF/0XMJp5ya0k8ltIMKZmbEatRaK/u3eURgGi0Nzti7sPG4cJIpa/wBQ== X-Received: by 10.28.153.196 with SMTP id b187mr17538731wme.53.1488290047910; Tue, 28 Feb 2017 05:54:07 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:56c9:0:decc:6e78:7e96:b452]) by smtp.gmail.com with ESMTPSA id s26sm2432033wra.66.2017.02.28.05.54.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Feb 2017 05:54:07 -0800 (PST) From: Daniel Vetter To: Intel Graphics Development Date: Tue, 28 Feb 2017 14:53:55 +0100 Message-Id: <20170228135356.18757-5-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170228135356.18757-1-daniel.vetter@ffwll.ch> References: <20170228135356.18757-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 eb670d819134..32a67f438021 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -489,11 +489,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 0f30362b4ad8..8dedf82c1c27 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10977,8 +10977,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); @@ -10994,6 +10996,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 @@ -11899,6 +11902,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; @@ -11908,7 +11912,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; @@ -11917,6 +11922,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 " @@ -15009,6 +15015,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; @@ -15016,12 +15023,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; @@ -15267,6 +15276,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; @@ -15337,7 +15347,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; @@ -15365,6 +15376,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) { struct intel_crtc_state *crtc_state =