From patchwork Thu Feb 13 15:02:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973436 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id AB029C0219D for ; Thu, 13 Feb 2025 15:02:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 559CA10E413; Thu, 13 Feb 2025 15:02:27 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="eCO0sKOt"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id E76A010E413 for ; Thu, 13 Feb 2025 15:02:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458946; x=1770994946; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=lYRKXGkfAtBu21VcSJcTfFWjy3MdEZ3gMcsWRvTTbTw=; b=eCO0sKOtVAROlZAlkGVLLfex+jSZTvg9iQUI+iRUv9Us7gyy26I1NiNJ rNleGGmgMBfxkJvkr38EISNfykJG1GqaOJqtZz5JWuErqpSvGN+E1KER1 Tw5bJK5AH1iR6YNlCv1hMku5Uvw12jNipw7UKDNztYuGFjPKbphCVkp9C 7FdAlRtpGGiGlhyRSjphQOH2NmmAe3PN8ZV1NCMImEUgUSKXPu7TKII0Q p7TlRUmEMEfHuHWfG7TUGj7aJH5aMo6EUwpLEkA/5XkQURo9lXU9DIq/m fyt2KmNo9KrpjMnHC7ncsbAmlTiauwuakSpzpie7vFYbFnF71hF5jOqVX g==; X-CSE-ConnectionGUID: 3JWcgbXUTjGktj0GfK38Pw== X-CSE-MsgGUID: oOHkemOHSgKqCSStH/NIJA== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567419" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567419" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:26 -0800 X-CSE-ConnectionGUID: oI1y54ymSCa2r+CVjwGxhQ== X-CSE-MsgGUID: hhcIZO+JSyy4n7c63uA2bw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349568" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:23 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:23 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 01/12] drm/i915: Move modeset_retry stuff into intel_connector.c Date: Thu, 13 Feb 2025 17:02:09 +0200 Message-ID: <20250213150220.13580-2-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Most the modeset retry stuff look to be entirely generic, and so there doesn't seem to any reason to keep it in intel_dp.c. Move the generic bits into intel_connector.c. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- .../gpu/drm/i915/display/intel_connector.c | 39 ++++++++++++++++ .../gpu/drm/i915/display/intel_connector.h | 3 ++ drivers/gpu/drm/i915/display/intel_dp.c | 44 ++----------------- drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +- 4 files changed, 46 insertions(+), 42 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c index c65887870ddc..4f54c9249a84 100644 --- a/drivers/gpu/drm/i915/display/intel_connector.c +++ b/drivers/gpu/drm/i915/display/intel_connector.c @@ -28,6 +28,7 @@ #include #include +#include #include "i915_drv.h" #include "intel_backlight.h" @@ -37,6 +38,44 @@ #include "intel_hdcp.h" #include "intel_panel.h" +static void intel_connector_modeset_retry_work_fn(struct work_struct *work) +{ + struct intel_connector *connector = container_of(work, typeof(*connector), + modeset_retry_work); + struct intel_display *display = to_intel_display(connector); + + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.base.id, + connector->base.name); + + /* Grab the locks before changing connector property*/ + mutex_lock(&display->drm->mode_config.mutex); + /* Set connector link status to BAD and send a Uevent to notify + * userspace to do a modeset. + */ + drm_connector_set_link_status_property(&connector->base, + DRM_MODE_LINK_STATUS_BAD); + mutex_unlock(&display->drm->mode_config.mutex); + /* Send Hotplug uevent so userspace can reprobe */ + drm_kms_helper_connector_hotplug_event(&connector->base); + + drm_connector_put(&connector->base); +} + +void intel_connector_queue_modeset_retry_work(struct intel_connector *connector) +{ + struct drm_i915_private *i915 = to_i915(connector->base.dev); + + drm_connector_get(&connector->base); + if (!queue_work(i915->unordered_wq, &connector->modeset_retry_work)) + drm_connector_put(&connector->base); +} + +void intel_connector_init_modeset_retry_work(struct intel_connector *connector) +{ + INIT_WORK(&connector->modeset_retry_work, + intel_connector_modeset_retry_work_fn); +} + int intel_connector_init(struct intel_connector *connector) { struct intel_digital_connector_state *conn_state; diff --git a/drivers/gpu/drm/i915/display/intel_connector.h b/drivers/gpu/drm/i915/display/intel_connector.h index bafde3f11ff4..10a1779201ed 100644 --- a/drivers/gpu/drm/i915/display/intel_connector.h +++ b/drivers/gpu/drm/i915/display/intel_connector.h @@ -33,5 +33,8 @@ void intel_attach_aspect_ratio_property(struct drm_connector *connector); void intel_attach_hdmi_colorspace_property(struct drm_connector *connector); void intel_attach_dp_colorspace_property(struct drm_connector *connector); void intel_attach_scaling_mode_property(struct drm_connector *connector); +void intel_connector_init_modeset_retry_work(struct intel_connector *connector); +void intel_connector_queue_modeset_retry_work(struct intel_connector *connector); +void intel_connector_cancel_modeset_retry_work(struct intel_connector *connector); #endif /* __INTEL_CONNECTOR_H__ */ diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 29970baaf03e..8bcf400b0239 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -3056,15 +3056,6 @@ intel_dp_audio_compute_config(struct intel_encoder *encoder, intel_dp_is_uhbr(pipe_config); } -static void intel_dp_queue_modeset_retry_work(struct intel_connector *connector) -{ - struct drm_i915_private *i915 = to_i915(connector->base.dev); - - drm_connector_get(&connector->base); - if (!queue_work(i915->unordered_wq, &connector->modeset_retry_work)) - drm_connector_put(&connector->base); -} - void intel_dp_queue_modeset_retry_for_link(struct intel_atomic_state *state, struct intel_encoder *encoder, @@ -3081,7 +3072,7 @@ intel_dp_queue_modeset_retry_for_link(struct intel_atomic_state *state, intel_dp->needs_modeset_retry = true; if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST)) { - intel_dp_queue_modeset_retry_work(intel_dp->attached_connector); + intel_connector_queue_modeset_retry_work(intel_dp->attached_connector); return; } @@ -3091,7 +3082,7 @@ intel_dp_queue_modeset_retry_for_link(struct intel_atomic_state *state, continue; if (connector->mst_port == intel_dp) - intel_dp_queue_modeset_retry_work(connector); + intel_connector_queue_modeset_retry_work(connector); } } @@ -6485,35 +6476,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, return false; } -static void intel_dp_modeset_retry_work_fn(struct work_struct *work) -{ - struct intel_connector *connector = container_of(work, typeof(*connector), - modeset_retry_work); - struct intel_display *display = to_intel_display(connector); - - drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.base.id, - connector->base.name); - - /* Grab the locks before changing connector property*/ - mutex_lock(&display->drm->mode_config.mutex); - /* Set connector link status to BAD and send a Uevent to notify - * userspace to do a modeset. - */ - drm_connector_set_link_status_property(&connector->base, - DRM_MODE_LINK_STATUS_BAD); - mutex_unlock(&display->drm->mode_config.mutex); - /* Send Hotplug uevent so userspace can reprobe */ - drm_kms_helper_connector_hotplug_event(&connector->base); - - drm_connector_put(&connector->base); -} - -void intel_dp_init_modeset_retry_work(struct intel_connector *connector) -{ - INIT_WORK(&connector->modeset_retry_work, - intel_dp_modeset_retry_work_fn); -} - bool intel_dp_init_connector(struct intel_digital_port *dig_port, struct intel_connector *connector) @@ -6526,7 +6488,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, int type; /* Initialize the work for modeset in case of link train failure */ - intel_dp_init_modeset_retry_work(connector); + intel_connector_init_modeset_retry_work(connector); if (drm_WARN(dev, dig_port->max_lanes < 1, "Not enough lanes (%d) for DP on [ENCODER:%d:%s]\n", diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 73a0a0f9b3d0..0044b2a9a16b 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1747,7 +1747,7 @@ mst_topology_add_connector(struct drm_dp_mst_topology_mgr *mgr, connector->port = port; drm_dp_mst_get_port_malloc(port); - intel_dp_init_modeset_retry_work(connector); + intel_connector_init_modeset_retry_work(connector); ret = drm_connector_dynamic_init(display->drm, &connector->base, &mst_connector_funcs, DRM_MODE_CONNECTOR_DisplayPort, NULL); From patchwork Thu Feb 13 15:02:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973437 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 5F441C021A4 for ; Thu, 13 Feb 2025 15:02:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0AA9510EAF8; Thu, 13 Feb 2025 15:02:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="h9w0bC3w"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0A0410EAF8 for ; Thu, 13 Feb 2025 15:02:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458949; x=1770994949; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=4qebLmGclNEagivSWghV2zmBfhY70xeM1GTnZKoI9ck=; b=h9w0bC3wMvaSDQUA/iTMoOke1zAJDPsunU5ijhAQywdElW7+VtgKOuSm xO28rT+eBwBH7N2gJDJ42K96UBzOsCKYA3jbjwxfsZ3hb4fx0SQV2iqvw vw2zAR7fD16b4kK0vC1Rv9zBtqjM311TMhim6h0RpjEaWdLEx6tMmTn1j RIkdP/hvDRcEsxhmYIL1sfCC2kMaq3sNx6Lzw7Rcl4tgG6utQ7LIdMcS5 NCFiofdYr1EcqRpFFfxgIejNRaf7vrT0sEK/wOYFrxNyyuHXbUoi2egXZ BTIqqg6RmsBZDsQN64k86aSoicCmw+h/fwlNPzJO0R2wLZX9PzKyMB4WP g==; X-CSE-ConnectionGUID: /FXOPhcSRDG/xPcSJoGexQ== X-CSE-MsgGUID: VGSrbxawRHGQ++hskqg6kg== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567441" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567441" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:28 -0800 X-CSE-ConnectionGUID: 6Kevwmw0RRGxvVadgzTyjQ== X-CSE-MsgGUID: 1ozYb/a2QX2oYdHzZk6E3A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349580" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:26 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:25 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 02/12] drm/i915: Always initialize connector->modeset_retry_work Date: Thu, 13 Feb 2025 17:02:10 +0200 Message-ID: <20250213150220.13580-3-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Since we have all the necessary bits in intel_connector.c might as well always initialize the modeset_retry_work for every connector. Avoids yet another init function you have to remember to call. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_connector.c | 9 +++------ drivers/gpu/drm/i915/display/intel_connector.h | 1 - drivers/gpu/drm/i915/display/intel_display.c | 3 +-- drivers/gpu/drm/i915/display/intel_dp.c | 3 --- drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 -- 5 files changed, 4 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c index 4f54c9249a84..b1240be2ec6d 100644 --- a/drivers/gpu/drm/i915/display/intel_connector.c +++ b/drivers/gpu/drm/i915/display/intel_connector.c @@ -70,12 +70,6 @@ void intel_connector_queue_modeset_retry_work(struct intel_connector *connector) drm_connector_put(&connector->base); } -void intel_connector_init_modeset_retry_work(struct intel_connector *connector) -{ - INIT_WORK(&connector->modeset_retry_work, - intel_connector_modeset_retry_work_fn); -} - int intel_connector_init(struct intel_connector *connector) { struct intel_digital_connector_state *conn_state; @@ -95,6 +89,9 @@ int intel_connector_init(struct intel_connector *connector) intel_panel_init_alloc(connector); + INIT_WORK(&connector->modeset_retry_work, + intel_connector_modeset_retry_work_fn); + return 0; } diff --git a/drivers/gpu/drm/i915/display/intel_connector.h b/drivers/gpu/drm/i915/display/intel_connector.h index 10a1779201ed..aafb25a814fa 100644 --- a/drivers/gpu/drm/i915/display/intel_connector.h +++ b/drivers/gpu/drm/i915/display/intel_connector.h @@ -33,7 +33,6 @@ void intel_attach_aspect_ratio_property(struct drm_connector *connector); void intel_attach_hdmi_colorspace_property(struct drm_connector *connector); void intel_attach_dp_colorspace_property(struct drm_connector *connector); void intel_attach_scaling_mode_property(struct drm_connector *connector); -void intel_connector_init_modeset_retry_work(struct intel_connector *connector); void intel_connector_queue_modeset_retry_work(struct intel_connector *connector); void intel_connector_cancel_modeset_retry_work(struct intel_connector *connector); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index cc51576353fe..858886eea6cc 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -8787,8 +8787,7 @@ void intel_hpd_poll_fini(struct drm_i915_private *i915) /* Kill all the work that may have been queued by hpd. */ drm_connector_list_iter_begin(&i915->drm, &conn_iter); for_each_intel_connector_iter(connector, &conn_iter) { - if (connector->modeset_retry_work.func && - cancel_work_sync(&connector->modeset_retry_work)) + if (cancel_work_sync(&connector->modeset_retry_work)) drm_connector_put(&connector->base); if (connector->hdcp.shim) { cancel_delayed_work_sync(&connector->hdcp.check_work); diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 8bcf400b0239..03ca2e02ab02 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -6487,9 +6487,6 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, enum port port = encoder->port; int type; - /* Initialize the work for modeset in case of link train failure */ - intel_connector_init_modeset_retry_work(connector); - if (drm_WARN(dev, dig_port->max_lanes < 1, "Not enough lanes (%d) for DP on [ENCODER:%d:%s]\n", dig_port->max_lanes, encoder->base.base.id, diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 0044b2a9a16b..167e4a70ab12 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1747,8 +1747,6 @@ mst_topology_add_connector(struct drm_dp_mst_topology_mgr *mgr, connector->port = port; drm_dp_mst_get_port_malloc(port); - intel_connector_init_modeset_retry_work(connector); - ret = drm_connector_dynamic_init(display->drm, &connector->base, &mst_connector_funcs, DRM_MODE_CONNECTOR_DisplayPort, NULL); if (ret) From patchwork Thu Feb 13 15:02:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973438 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id BCE4DC021A0 for ; Thu, 13 Feb 2025 15:02:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 61FF210E3DF; Thu, 13 Feb 2025 15:02:32 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="YWdcotfU"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 74FA810EAFC for ; Thu, 13 Feb 2025 15:02:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458952; x=1770994952; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=4/QGOXYel022ay6ci7/ngpSJT1emak0PfmHF5ygWM7U=; b=YWdcotfUO0sdc4vvuBbSF6sSitVz2GUow4RGdjo99icBngvLGCxAgFuF p4Pqn0e/be+BK59hHRvAFEwxqpPLZrFUsDvV7214sJRhUStCFw/XK8OfL 8J1JBTtQOTXyoYnUXPgwoWBrD9swh+wbkiTECGLKjfcQt5NbpYaf3yZsJ Oonf3feIobG6wE8jqdcsr/HHY5zV5dfu/xdQd4GpOzv9lR76SGJ8hyVCS ZXaIIfE8Buo0Invf95UHLLcPTDsjw270JI4Vh/OzUQZx+GITP/sioC0t9 YBpDBoNbcIpQjehtcVUGiK18Uc0I0YwCryA8f6N+ch8VpqS04r7o5idgB A==; X-CSE-ConnectionGUID: WEY9DQMMQBOn5P619GmVCA== X-CSE-MsgGUID: 8MQi+uhDTuy+oZu6kpHPzw== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567470" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567470" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:31 -0800 X-CSE-ConnectionGUID: QxK/plzgQEC63v5ROOUuJg== X-CSE-MsgGUID: InSp4c+pQciVU/G+OtLgkQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349587" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:29 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:28 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 03/12] drm/i915: Extract intel_connector_cancel_modeset_retry_work() Date: Thu, 13 Feb 2025 17:02:11 +0200 Message-ID: <20250213150220.13580-4-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Hide the implementation details of the modeset retry work better. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_connector.c | 6 ++++++ drivers/gpu/drm/i915/display/intel_display.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c index b1240be2ec6d..358965fc7f55 100644 --- a/drivers/gpu/drm/i915/display/intel_connector.c +++ b/drivers/gpu/drm/i915/display/intel_connector.c @@ -70,6 +70,12 @@ void intel_connector_queue_modeset_retry_work(struct intel_connector *connector) drm_connector_put(&connector->base); } +void intel_connector_cancel_modeset_retry_work(struct intel_connector *connector) +{ + if (cancel_work_sync(&connector->modeset_retry_work)) + drm_connector_put(&connector->base); +} + int intel_connector_init(struct intel_connector *connector) { struct intel_digital_connector_state *conn_state; diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 858886eea6cc..93392752b470 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -62,6 +62,7 @@ #include "intel_bw.h" #include "intel_cdclk.h" #include "intel_clock_gating.h" +#include "intel_connector.h" #include "intel_color.h" #include "intel_crt.h" #include "intel_crtc.h" @@ -8787,8 +8788,7 @@ void intel_hpd_poll_fini(struct drm_i915_private *i915) /* Kill all the work that may have been queued by hpd. */ drm_connector_list_iter_begin(&i915->drm, &conn_iter); for_each_intel_connector_iter(connector, &conn_iter) { - if (cancel_work_sync(&connector->modeset_retry_work)) - drm_connector_put(&connector->base); + intel_connector_cancel_modeset_retry_work(connector); if (connector->hdcp.shim) { cancel_delayed_work_sync(&connector->hdcp.check_work); cancel_work_sync(&connector->hdcp.prop_work); From patchwork Thu Feb 13 15:02:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973439 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id BADFEC0219D for ; Thu, 13 Feb 2025 15:02:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 609E910EAFD; Thu, 13 Feb 2025 15:02:35 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="NtmwzaYC"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 494A910EAFC for ; Thu, 13 Feb 2025 15:02:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458954; x=1770994954; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=hbDB87rI6Fc4xVdFtwH4arF6EigBFPDHk6GcwDfkqxM=; b=NtmwzaYCEIfOYrlhhHNc7t1PJaLSpEpvCiuaApyRmslVF30aZ/kTQzDX eya3BLW8Y76ct8SRvmy+X3qf7WrWiQVZcunJIPMED81Bmb3v5lI6A3nLa YYavm+c7RWKDnruCUG7a7vorBabVwg/T84LiaTFsnsP1gAdcGgzVpx8dm a73m3F7i3VYk67XfnAKGKPELuOyqJiiXojl9/HX/l9FA1KaNae0ltKElj 79GMWkN+XmvNRdRF8tUdMDx1uY9Iyp3O1G8qdFNRzxCwKsMF8QzaX+1lA QG5ldDAgA3xDPX2XKGRswI5zz2riWVXqkydtXcqKOpI/M5QhxZUMu8oas w==; X-CSE-ConnectionGUID: CZdeNxSlSCqvNx1nDvGX8g== X-CSE-MsgGUID: C+MDu6X9SQOcSsfO0gK63w== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567491" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567491" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:34 -0800 X-CSE-ConnectionGUID: bJmX+tIfRyK45jJH7fDCow== X-CSE-MsgGUID: 0Un809TORqm7OXjGtPb57g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349590" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:32 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:31 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 04/12] drm/i915: Extract intel_hdcp_cancel_works() Date: Thu, 13 Feb 2025 17:02:12 +0200 Message-ID: <20250213150220.13580-5-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Hide the annoying HDCP implementation details better by providing a intel_hdcp_cancel_works(). Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 6 ++---- drivers/gpu/drm/i915/display/intel_hdcp.c | 9 +++++++++ drivers/gpu/drm/i915/display/intel_hdcp.h | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 93392752b470..d3f8af9c75ef 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -93,6 +93,7 @@ #include "intel_fdi.h" #include "intel_fifo_underrun.h" #include "intel_frontbuffer.h" +#include "intel_hdcp.h" #include "intel_hdmi.h" #include "intel_hotplug.h" #include "intel_link_bw.h" @@ -8789,10 +8790,7 @@ void intel_hpd_poll_fini(struct drm_i915_private *i915) drm_connector_list_iter_begin(&i915->drm, &conn_iter); for_each_intel_connector_iter(connector, &conn_iter) { intel_connector_cancel_modeset_retry_work(connector); - if (connector->hdcp.shim) { - cancel_delayed_work_sync(&connector->hdcp.check_work); - cancel_work_sync(&connector->hdcp.prop_work); - } + intel_hdcp_cancel_works(connector); } drm_connector_list_iter_end(&conn_iter); } diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index 1aa4c0fd216f..591851954114 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -2615,6 +2615,15 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state, _intel_hdcp_enable(state, encoder, crtc_state, conn_state); } +void intel_hdcp_cancel_works(struct intel_connector *connector) +{ + if (!connector->hdcp.shim) + return; + + cancel_delayed_work_sync(&connector->hdcp.check_work); + cancel_work_sync(&connector->hdcp.prop_work); +} + void intel_hdcp_component_fini(struct intel_display *display) { mutex_lock(&display->hdcp.hdcp_mutex); diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.h b/drivers/gpu/drm/i915/display/intel_hdcp.h index 3a7905551051..efe86808e17e 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.h +++ b/drivers/gpu/drm/i915/display/intel_hdcp.h @@ -33,6 +33,7 @@ void intel_hdcp_enable(struct intel_atomic_state *state, const struct intel_crtc_state *pipe_config, const struct drm_connector_state *conn_state); int intel_hdcp_disable(struct intel_connector *connector); +void intel_hdcp_cancel_works(struct intel_connector *connector); void intel_hdcp_update_pipe(struct intel_atomic_state *state, struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, From patchwork Thu Feb 13 15:02:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973440 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B1255C0219D for ; Thu, 13 Feb 2025 15:02:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5BE3410EAFE; Thu, 13 Feb 2025 15:02:38 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="dEZWyUt5"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17D9610EAFC for ; Thu, 13 Feb 2025 15:02:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458957; x=1770994957; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=s2FiIIkCVA/c5cwOIEbhwByfphRq2Fxh/ndsvVKqntA=; b=dEZWyUt5HfVT5GBxpagX3dUk49xyDuNdV0Bxx5w7/NOd4FvR/1jeAlfZ a31YCkdlOworE3MeKJBEnMYf5w0nY+6EO5sEn5tuZHemFoz6r5an/fikK xkKWxhtnmhJc2r1AIDrXrs6i1UTcQ9k7wgFcyTC9l9UvdQIFwqZWWl6c4 UQNftxTYIk3ywg3hYWOd1XS2yOyrHjQX23VVuYPMLl1FmQ3GoQmnvqyoJ NUKvmOKbibMAGSqCPPUMFqg/VxuD0zbxKAMkbn9QiYUnkQGBqPZDgzkUq YhLXsn+OcCM2Fo2wK/EngRktCJZGA52HFtA8uQ3sEg89Rait4eFVBCcRd A==; X-CSE-ConnectionGUID: uhThtk13SluLfYaHiZbUHg== X-CSE-MsgGUID: boYW4D2HRK2IaDBHeSwS6Q== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567526" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567526" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:37 -0800 X-CSE-ConnectionGUID: qSK3CyVoQVqX9UlsnZmuLg== X-CSE-MsgGUID: Vn+njsVQRR+8Q+maHbic9A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349599" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:35 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:34 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 05/12] drm/i915: Move intel_hpd_poll_fini() into intel_hotplug.c Date: Thu, 13 Feb 2025 17:02:13 +0200 Message-ID: <20250213150220.13580-6-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä The name of intel_hpd_poll_fini() suggests that it should live in intel_hotplug.c. Make it so. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 16 ---------------- drivers/gpu/drm/i915/display/intel_display.h | 2 -- drivers/gpu/drm/i915/display/intel_hotplug.c | 16 ++++++++++++++++ drivers/gpu/drm/i915/display/intel_hotplug.h | 1 + 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index d3f8af9c75ef..0807a4979ea2 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -62,7 +62,6 @@ #include "intel_bw.h" #include "intel_cdclk.h" #include "intel_clock_gating.h" -#include "intel_connector.h" #include "intel_color.h" #include "intel_crt.h" #include "intel_crtc.h" @@ -93,7 +92,6 @@ #include "intel_fdi.h" #include "intel_fifo_underrun.h" #include "intel_frontbuffer.h" -#include "intel_hdcp.h" #include "intel_hdmi.h" #include "intel_hotplug.h" #include "intel_link_bw.h" @@ -8781,20 +8779,6 @@ void i830_disable_pipe(struct intel_display *display, enum pipe pipe) intel_de_posting_read(display, DPLL(display, pipe)); } -void intel_hpd_poll_fini(struct drm_i915_private *i915) -{ - struct intel_connector *connector; - struct drm_connector_list_iter conn_iter; - - /* Kill all the work that may have been queued by hpd. */ - drm_connector_list_iter_begin(&i915->drm, &conn_iter); - for_each_intel_connector_iter(connector, &conn_iter) { - intel_connector_cancel_modeset_retry_work(connector); - intel_hdcp_cancel_works(connector); - } - drm_connector_list_iter_end(&conn_iter); -} - bool intel_scanout_needs_vtd_wa(struct intel_display *display) { struct drm_i915_private *i915 = to_i915(display->drm); diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index d4a709588700..e14aa773323e 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -571,8 +571,6 @@ enum drm_mode_status intel_mode_valid(struct drm_device *dev, int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state, bool nonblock); -void intel_hpd_poll_fini(struct drm_i915_private *i915); - /* modesetting asserts */ void assert_transcoder(struct intel_display *display, enum transcoder cpu_transcoder, bool state); diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c index 9c935afc60aa..00d7b1ccf190 100644 --- a/drivers/gpu/drm/i915/display/intel_hotplug.c +++ b/drivers/gpu/drm/i915/display/intel_hotplug.c @@ -28,8 +28,10 @@ #include "i915_drv.h" #include "i915_irq.h" +#include "intel_connector.h" #include "intel_display_power.h" #include "intel_display_types.h" +#include "intel_hdcp.h" #include "intel_hotplug.h" #include "intel_hotplug_irq.h" @@ -864,6 +866,20 @@ void intel_hpd_poll_disable(struct drm_i915_private *dev_priv) spin_unlock_irq(&dev_priv->irq_lock); } +void intel_hpd_poll_fini(struct drm_i915_private *i915) +{ + struct intel_connector *connector; + struct drm_connector_list_iter conn_iter; + + /* Kill all the work that may have been queued by hpd. */ + drm_connector_list_iter_begin(&i915->drm, &conn_iter); + for_each_intel_connector_iter(connector, &conn_iter) { + intel_connector_cancel_modeset_retry_work(connector); + intel_hdcp_cancel_works(connector); + } + drm_connector_list_iter_end(&conn_iter); +} + void intel_hpd_init_early(struct drm_i915_private *i915) { INIT_DELAYED_WORK(&i915->display.hotplug.hotplug_work, diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h index d2ca9d2f1d39..d6986902b054 100644 --- a/drivers/gpu/drm/i915/display/intel_hotplug.h +++ b/drivers/gpu/drm/i915/display/intel_hotplug.h @@ -16,6 +16,7 @@ enum port; void intel_hpd_poll_enable(struct drm_i915_private *dev_priv); void intel_hpd_poll_disable(struct drm_i915_private *dev_priv); +void intel_hpd_poll_fini(struct drm_i915_private *i915); enum intel_hotplug_state intel_encoder_hotplug(struct intel_encoder *encoder, struct intel_connector *connector); void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, From patchwork Thu Feb 13 15:02:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973441 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 33D20C021A0 for ; Thu, 13 Feb 2025 15:02:42 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C3B1B10EAFF; Thu, 13 Feb 2025 15:02:41 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="gK8ALSLt"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id D51C310EB12 for ; Thu, 13 Feb 2025 15:02:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458960; x=1770994960; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=2OJjojGysEjPPH4JeTYfsTQS3OpDkHB/WbJI6UVUsN8=; b=gK8ALSLtBMC1j0i0IMO6MEcJ/XG9/at28IfW0B730c7xnZbJAoPZMdg7 /ih9RaNYVHdNhBe4RPiT5ntjjcaA/rOTgCzSPgGgVL6rZ71ROYJamOxb3 vG0Os/rkBedcVH1tq/vr/B9Qdz4hxh4dbv3Neze+9wnQjfeCdyqibMPIk 7aTsJBQ9DhXFxaAwTb351zku9vnMxcPUxTYARcuiWq/jtjKK80XMRkzgd bPM4nE8uxVyvvkaheC4CnjN60UJg1YvdxLDG0f6Ua2slY5WQ5Ripech4k SSYiUyxcEj7UppcZqQcKM7X8dVJwd9vXfNk2fuFRAg5h/KlC615Sie5yJ A==; X-CSE-ConnectionGUID: FzHF4V7RTgO1Iu6PuDvusA== X-CSE-MsgGUID: NPQ3O3pJT1K4hgOzeYtEBw== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567545" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567545" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:40 -0800 X-CSE-ConnectionGUID: ZgtL9f5MRK2NqDBdVN5esg== X-CSE-MsgGUID: dJNwIFgUTguD1lPkWq+gjA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349606" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:37 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:37 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 06/12] drm/i915: Move intel_plane_destroy() into intel_atomic_plane.c Date: Thu, 13 Feb 2025 17:02:14 +0200 Message-ID: <20250213150220.13580-7-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä intel_atomic_plane.c (should rename it really) has become our standard place for generic plane code. Move intel_plane_destroy() there so it doesn't clutter intel_display.c. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_atomic_plane.c | 13 +++++++++++++ drivers/gpu/drm/i915/display/intel_atomic_plane.h | 1 + drivers/gpu/drm/i915/display/intel_display.c | 13 ------------- drivers/gpu/drm/i915/display/intel_display.h | 1 - 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c index 8a49d87d9bd9..7e87c052be45 100644 --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c @@ -92,6 +92,19 @@ void intel_plane_free(struct intel_plane *plane) kfree(plane); } +/** + * intel_plane_destroy - destroy a plane + * @plane: plane to destroy + * + * Common destruction function for all types of planes (primary, cursor, + * sprite). + */ +void intel_plane_destroy(struct drm_plane *plane) +{ + drm_plane_cleanup(plane); + kfree(to_intel_plane(plane)); +} + /** * intel_plane_duplicate_state - duplicate plane state * @plane: drm plane diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.h b/drivers/gpu/drm/i915/display/intel_atomic_plane.h index fb87b3353ab0..e965ea0cb15c 100644 --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.h +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.h @@ -52,6 +52,7 @@ void intel_plane_disable_arm(struct intel_dsb *dsb, const struct intel_crtc_state *crtc_state); struct intel_plane *intel_plane_alloc(void); void intel_plane_free(struct intel_plane *plane); +void intel_plane_destroy(struct drm_plane *plane); struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane); void intel_plane_destroy_state(struct drm_plane *plane, struct drm_plane_state *state); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 0807a4979ea2..4278212a2496 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -8117,19 +8117,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state, return 0; } -/** - * intel_plane_destroy - destroy a plane - * @plane: plane to destroy - * - * Common destruction function for all types of planes (primary, cursor, - * sprite). - */ -void intel_plane_destroy(struct drm_plane *plane) -{ - drm_plane_cleanup(plane); - kfree(to_intel_plane(plane)); -} - static u32 intel_encoder_possible_clones(struct intel_encoder *encoder) { struct drm_device *dev = encoder->base.dev; diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index e14aa773323e..2e11fc2ba1f4 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -450,7 +450,6 @@ bool intel_pipe_config_compare(const struct intel_crtc_state *current_config, const struct intel_crtc_state *pipe_config, bool fastset); -void intel_plane_destroy(struct drm_plane *plane); void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state); void ilk_set_pipeconf(const struct intel_crtc_state *crtc_state); void intel_enable_transcoder(const struct intel_crtc_state *new_crtc_state); From patchwork Thu Feb 13 15:02:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973442 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 1857DC0219D for ; Thu, 13 Feb 2025 15:02:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B339C10EB00; Thu, 13 Feb 2025 15:02:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="F+wH04zD"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF36E10EB01 for ; Thu, 13 Feb 2025 15:02:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458963; x=1770994963; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=jcb0vt1R7UdIrUy4u8SVPl4UQvUJJhKKsdUgnKFGgRE=; b=F+wH04zDUxQ52Z0TtWx+FHXBC1L/Bj3GWnjhOTkY0+3U/r30gi8bIH8C 5NzH/AeaiVI6HcnbjMzhCBSkUSUkQnzLaFIeHGco2iPY6mMWpRJCoz5cr 9Rj4akUUol2ob5JMjsLDDzBPBbk1+qJovChe/IN0x+8W6SnWpUIiYsjcz lm2OwEEo5c8qdEQpmOD7VhcFB4BhkH3fed2iaNITZduhNtmqnanePR+Yy q9dgIKaR8K7WMEpOx65P81fUyupqF2L/jXljSVwgYKGd7c3XhYCmRemsF fTC7cJCQnhvqWFy+gX7dB8zPh315aQgeDJeVx1Ny1XwXoIOjuTq8GF3xA Q==; X-CSE-ConnectionGUID: pRXGOmN6Tb+4v23MOvv/kA== X-CSE-MsgGUID: NI85nkw5RG2g/3/JxWsfuQ== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567568" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567568" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:43 -0800 X-CSE-ConnectionGUID: Yww5CzI3QA+lplUwCSjQzA== X-CSE-MsgGUID: BGIH+o7PQ9SE0sAjrRjgHw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349613" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:40 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:39 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 07/12] drm/i915: Relocate vlv_wait_port_ready() Date: Thu, 13 Feb 2025 17:02:15 +0200 Message-ID: <20250213150220.13580-8-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä While vlv_wait_port_ready() doens't directly talk to the VLV/CHV DPIO PHY, the signals it's looking for do come from the PHY. So it seems appropriate to relocate it into intel_dpio_phy.c. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 34 ------------------- drivers/gpu/drm/i915/display/intel_display.h | 3 -- drivers/gpu/drm/i915/display/intel_dpio_phy.c | 34 +++++++++++++++++++ drivers/gpu/drm/i915/display/intel_dpio_phy.h | 8 +++++ 4 files changed, 42 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 4278212a2496..c2bde539a4ff 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -474,40 +474,6 @@ static void assert_planes_disabled(struct intel_crtc *crtc) assert_plane_disabled(plane); } -void vlv_wait_port_ready(struct intel_display *display, - struct intel_digital_port *dig_port, - unsigned int expected_mask) -{ - u32 port_mask; - i915_reg_t dpll_reg; - - switch (dig_port->base.port) { - default: - MISSING_CASE(dig_port->base.port); - fallthrough; - case PORT_B: - port_mask = DPLL_PORTB_READY_MASK; - dpll_reg = DPLL(display, 0); - break; - case PORT_C: - port_mask = DPLL_PORTC_READY_MASK; - dpll_reg = DPLL(display, 0); - expected_mask <<= 4; - break; - case PORT_D: - port_mask = DPLL_PORTD_READY_MASK; - dpll_reg = DPIO_PHY_STATUS; - break; - } - - if (intel_de_wait(display, dpll_reg, port_mask, expected_mask, 1000)) - drm_WARN(display->drm, 1, - "timed out waiting for [ENCODER:%d:%s] port ready: got 0x%x, expected 0x%x\n", - dig_port->base.base.base.id, dig_port->base.base.name, - intel_de_read(display, dpll_reg) & port_mask, - expected_mask); -} - void intel_enable_transcoder(const struct intel_crtc_state *new_crtc_state) { struct intel_display *display = to_intel_display(new_crtc_state); diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 2e11fc2ba1f4..b3cdf7f04450 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -488,9 +488,6 @@ bool intel_encoder_is_tc(struct intel_encoder *encoder); enum tc_port intel_encoder_to_tc(struct intel_encoder *encoder); int ilk_get_lanes_required(int target_clock, int link_bw, int bpp); -void vlv_wait_port_ready(struct intel_display *display, - struct intel_digital_port *dig_port, - unsigned int expected_mask); bool intel_fuzzy_clock_check(int clock1, int clock2); diff --git a/drivers/gpu/drm/i915/display/intel_dpio_phy.c b/drivers/gpu/drm/i915/display/intel_dpio_phy.c index 5f88702818d3..968b795206b3 100644 --- a/drivers/gpu/drm/i915/display/intel_dpio_phy.c +++ b/drivers/gpu/drm/i915/display/intel_dpio_phy.c @@ -1156,3 +1156,37 @@ void vlv_phy_reset_lanes(struct intel_encoder *encoder, vlv_dpio_write(dev_priv, phy, VLV_PCS_DW1_GRP(ch), 0x00e00060); vlv_dpio_put(dev_priv); } + +void vlv_wait_port_ready(struct intel_display *display, + struct intel_digital_port *dig_port, + unsigned int expected_mask) +{ + u32 port_mask; + i915_reg_t dpll_reg; + + switch (dig_port->base.port) { + default: + MISSING_CASE(dig_port->base.port); + fallthrough; + case PORT_B: + port_mask = DPLL_PORTB_READY_MASK; + dpll_reg = DPLL(display, 0); + break; + case PORT_C: + port_mask = DPLL_PORTC_READY_MASK; + dpll_reg = DPLL(display, 0); + expected_mask <<= 4; + break; + case PORT_D: + port_mask = DPLL_PORTD_READY_MASK; + dpll_reg = DPIO_PHY_STATUS; + break; + } + + if (intel_de_wait(display, dpll_reg, port_mask, expected_mask, 1000)) + drm_WARN(display->drm, 1, + "timed out waiting for [ENCODER:%d:%s] port ready: got 0x%x, expected 0x%x\n", + dig_port->base.base.base.id, dig_port->base.base.name, + intel_de_read(display, dpll_reg) & port_mask, + expected_mask); +} diff --git a/drivers/gpu/drm/i915/display/intel_dpio_phy.h b/drivers/gpu/drm/i915/display/intel_dpio_phy.h index a82939165546..15596407fe87 100644 --- a/drivers/gpu/drm/i915/display/intel_dpio_phy.h +++ b/drivers/gpu/drm/i915/display/intel_dpio_phy.h @@ -72,6 +72,9 @@ void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state); void vlv_phy_reset_lanes(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state); +void vlv_wait_port_ready(struct intel_display *display, + struct intel_digital_port *dig_port, + unsigned int expected_mask); #else static inline void bxt_port_to_phy_channel(struct intel_display *display, enum port port, enum dpio_phy *phy, enum dpio_channel *ch) @@ -170,6 +173,11 @@ static inline void vlv_phy_reset_lanes(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state) { } +static inline void vlv_wait_port_ready(struct intel_display *display, + struct intel_digital_port *dig_port, + unsigned int expected_mask) +{ +} #endif #endif /* __INTEL_DPIO_PHY_H__ */ From patchwork Thu Feb 13 15:02:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973443 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 224F0C0219D for ; Thu, 13 Feb 2025 15:02:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B84D810EB07; Thu, 13 Feb 2025 15:02:46 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="FIKojNEN"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E6AF10EB01 for ; Thu, 13 Feb 2025 15:02:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458966; x=1770994966; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=ypaFTR6u8Iun25iso5mXuiY6mhug1PfUhsTGqDxXdzw=; b=FIKojNENP8PWQBtEdetzFsX7bdQdUcsaSfXYDFYsoXS2SwuD0RXdNjTi 79XsOHnuBj/UGL1mxI6aeynw9BRvFWUJ3DH5mQDnrPqr5n6oo1NyI4IA5 7rZ4s0jLKKMQ9882gw9CIla41oa9zTsCIHEm2uF7l0AY5YlrVti3SeNj3 SELZr2AKRiTq4iR2GXDZqNDdNUHqXNa0j38+YzlD6DbnHSc47Xm4e5Nmf hCHyX7uB7mWd2VhowNEJiLjxv1UbxlxOrpZE/JfjoSbVJAxI3N4xBAxkS 9Xzg6KiJGla1gQwTBsuJTZi5d0hsup4qM6nvph8ZrsvfqaGVTKWiLOyLH w==; X-CSE-ConnectionGUID: r8h2j9ZbQASaf5wWcwn6fw== X-CSE-MsgGUID: T3u/8PW1RVuzMgzF8sMD2g== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567592" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567592" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:45 -0800 X-CSE-ConnectionGUID: InYyQulBSCWy1DBJpJF57g== X-CSE-MsgGUID: /a3NfRERRJq1ib6IgKrnng== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349614" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:43 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:42 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 08/12] drm/i915: Simplify vlv_wait_port_ready() arguments Date: Thu, 13 Feb 2025 17:02:16 +0200 Message-ID: <20250213150220.13580-9-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Currently vlv_wait_port_ready() takes the display+dig_port, but all it really needs is the encoder. The display can be dug out from therein. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/g4x_dp.c | 2 +- drivers/gpu/drm/i915/display/g4x_hdmi.c | 6 ++---- drivers/gpu/drm/i915/display/intel_dpio_phy.c | 10 +++++----- drivers/gpu/drm/i915/display/intel_dpio_phy.h | 6 ++---- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c index 0cb98cb043c6..372c3683c193 100644 --- a/drivers/gpu/drm/i915/display/g4x_dp.c +++ b/drivers/gpu/drm/i915/display/g4x_dp.c @@ -701,7 +701,7 @@ static void intel_enable_dp(struct intel_atomic_state *state, if (display->platform.cherryview) lane_mask = intel_dp_unused_lane_mask(pipe_config->lane_count); - vlv_wait_port_ready(display, dp_to_dig_port(intel_dp), lane_mask); + vlv_wait_port_ready(encoder, lane_mask); } intel_dp_set_power(intel_dp, DP_SET_POWER_D0); diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c index 5c5eb3d621c8..d9d1304dcc36 100644 --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c @@ -479,7 +479,6 @@ static void vlv_hdmi_pre_enable(struct intel_atomic_state *state, const struct intel_crtc_state *pipe_config, const struct drm_connector_state *conn_state) { - struct intel_display *display = to_intel_display(encoder); struct intel_digital_port *dig_port = enc_to_dig_port(encoder); vlv_phy_pre_encoder_enable(encoder, pipe_config); @@ -495,7 +494,7 @@ static void vlv_hdmi_pre_enable(struct intel_atomic_state *state, g4x_hdmi_enable_port(encoder, pipe_config); - vlv_wait_port_ready(display, dig_port, 0x0); + vlv_wait_port_ready(encoder, 0x0); } static void vlv_hdmi_pre_pll_enable(struct intel_atomic_state *state, @@ -556,7 +555,6 @@ static void chv_hdmi_pre_enable(struct intel_atomic_state *state, const struct intel_crtc_state *pipe_config, const struct drm_connector_state *conn_state) { - struct intel_display *display = to_intel_display(encoder); struct intel_digital_port *dig_port = enc_to_dig_port(encoder); chv_phy_pre_encoder_enable(encoder, pipe_config); @@ -571,7 +569,7 @@ static void chv_hdmi_pre_enable(struct intel_atomic_state *state, g4x_hdmi_enable_port(encoder, pipe_config); - vlv_wait_port_ready(display, dig_port, 0x0); + vlv_wait_port_ready(encoder, 0x0); /* Second common lane will stay alive on its own now */ chv_phy_release_cl2_override(encoder); diff --git a/drivers/gpu/drm/i915/display/intel_dpio_phy.c b/drivers/gpu/drm/i915/display/intel_dpio_phy.c index 968b795206b3..429f89543789 100644 --- a/drivers/gpu/drm/i915/display/intel_dpio_phy.c +++ b/drivers/gpu/drm/i915/display/intel_dpio_phy.c @@ -1157,16 +1157,16 @@ void vlv_phy_reset_lanes(struct intel_encoder *encoder, vlv_dpio_put(dev_priv); } -void vlv_wait_port_ready(struct intel_display *display, - struct intel_digital_port *dig_port, +void vlv_wait_port_ready(struct intel_encoder *encoder, unsigned int expected_mask) { + struct intel_display *display = to_intel_display(encoder); u32 port_mask; i915_reg_t dpll_reg; - switch (dig_port->base.port) { + switch (encoder->port) { default: - MISSING_CASE(dig_port->base.port); + MISSING_CASE(encoder->port); fallthrough; case PORT_B: port_mask = DPLL_PORTB_READY_MASK; @@ -1186,7 +1186,7 @@ void vlv_wait_port_ready(struct intel_display *display, if (intel_de_wait(display, dpll_reg, port_mask, expected_mask, 1000)) drm_WARN(display->drm, 1, "timed out waiting for [ENCODER:%d:%s] port ready: got 0x%x, expected 0x%x\n", - dig_port->base.base.base.id, dig_port->base.base.name, + encoder->base.base.id, encoder->base.name, intel_de_read(display, dpll_reg) & port_mask, expected_mask); } diff --git a/drivers/gpu/drm/i915/display/intel_dpio_phy.h b/drivers/gpu/drm/i915/display/intel_dpio_phy.h index 15596407fe87..35baede3d6ad 100644 --- a/drivers/gpu/drm/i915/display/intel_dpio_phy.h +++ b/drivers/gpu/drm/i915/display/intel_dpio_phy.h @@ -72,8 +72,7 @@ void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state); void vlv_phy_reset_lanes(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state); -void vlv_wait_port_ready(struct intel_display *display, - struct intel_digital_port *dig_port, +void vlv_wait_port_ready(struct intel_encoder *encoder, unsigned int expected_mask); #else static inline void bxt_port_to_phy_channel(struct intel_display *display, enum port port, @@ -173,8 +172,7 @@ static inline void vlv_phy_reset_lanes(struct intel_encoder *encoder, const struct intel_crtc_state *old_crtc_state) { } -static inline void vlv_wait_port_ready(struct intel_display *display, - struct intel_digital_port *dig_port, +static inline void vlv_wait_port_ready(struct intel_encoder *encoder, unsigned int expected_mask) { } From patchwork Thu Feb 13 15:02:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973444 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E5271C0219D for ; Thu, 13 Feb 2025 15:02:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8AD2310EAFC; Thu, 13 Feb 2025 15:02:49 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="dMFXT1Xd"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 753D210EAFC for ; Thu, 13 Feb 2025 15:02:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458969; x=1770994969; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=a1KQPdE473lSe968V+x/53lapbqE/4mDSILd6dOkdwA=; b=dMFXT1Xd0ti8EfiGXbbsRnTHbWzJ29v9x119qyJaDyE84BHKXooKHIYU r9yoNVGpfE3QWw52O4ygUxLNtnSsGGaHWSJ9vULa/iWTi2moNWvj6XkJx gVY6Hovvdr41H6X29txDfiZZ5HjQIIdqeakFbOugGc9m3+h60swa3I9LS mhi5gu46HQqz5+ygJetX3GTHYMtoi/HdAuCUfmLdCiFaV4AHZh807wzF+ G35fEk3T/Yeej/3bhqOdDOI9I6HA9C3AnF+cIcaH//2K9S8IhyNXcKrre Yhx5+MFZe/+g6HRGIqF4ZpSrx0rkDJ5aWuik8ZzMP/v9zrSv6h5NZhzqm Q==; X-CSE-ConnectionGUID: Ffmkb6LzRk+bxRStboSVEA== X-CSE-MsgGUID: YjZjjes5TtGH04UbMwHBNg== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567603" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567603" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:48 -0800 X-CSE-ConnectionGUID: oSQKVqMgRbGXncjNnKx3Kg== X-CSE-MsgGUID: Y/mMVHfHTDaQ/AfqqMtY1Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349615" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:46 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:45 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 09/12] drm/i915: Relocate intel_plane_uses_fence() Date: Thu, 13 Feb 2025 17:02:17 +0200 Message-ID: <20250213150220.13580-10-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Relocate intel_plane_uses_fence() into intel_fb.c. Not sure that's the best place, but since this is mostly about the fb and vma I can't think of anything truly better right now. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 10 ---------- drivers/gpu/drm/i915/display/intel_display.h | 2 -- drivers/gpu/drm/i915/display/intel_fb.c | 10 ++++++++++ drivers/gpu/drm/i915/display/intel_fb.h | 1 + 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index c2bde539a4ff..4800fefd6321 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -637,16 +637,6 @@ unsigned int intel_remapped_info_size(const struct intel_remapped_info *rem_info return size; } -bool intel_plane_uses_fence(const struct intel_plane_state *plane_state) -{ - struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); - struct drm_i915_private *dev_priv = to_i915(plane->base.dev); - - return DISPLAY_VER(dev_priv) < 4 || - (plane->fbc && !plane_state->no_fbc_reason && - plane_state->view.gtt.type == I915_GTT_VIEW_NORMAL); -} - /* * Convert the x/y offsets into a linear offset. * Only valid with 0/180 degree rotation, which is fine since linear diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index b3cdf7f04450..d3afd134f70e 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -526,8 +526,6 @@ void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state); int bdw_get_pipe_misc_bpp(struct intel_crtc *crtc); unsigned int intel_plane_fence_y_offset(const struct intel_plane_state *plane_state); -bool intel_plane_uses_fence(const struct intel_plane_state *plane_state); - struct intel_encoder * intel_get_crtc_new_encoder(const struct intel_atomic_state *state, const struct intel_crtc_state *crtc_state); diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c index 5af93235057c..5875af2b61e6 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.c +++ b/drivers/gpu/drm/i915/display/intel_fb.c @@ -1283,6 +1283,16 @@ bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb) intel_fb_uses_dpt(&fb->base); } +bool intel_plane_uses_fence(const struct intel_plane_state *plane_state) +{ + struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); + struct drm_i915_private *dev_priv = to_i915(plane->base.dev); + + return DISPLAY_VER(dev_priv) < 4 || + (plane->fbc && !plane_state->no_fbc_reason && + plane_state->view.gtt.type == I915_GTT_VIEW_NORMAL); +} + static int intel_fb_pitch(const struct intel_framebuffer *fb, int color_plane, unsigned int rotation) { if (drm_rotation_90_or_270(rotation)) diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h index e6ef1783e351..63728520eb06 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.h +++ b/drivers/gpu/drm/i915/display/intel_fb.h @@ -77,6 +77,7 @@ u32 intel_plane_compute_aligned_offset(int *x, int *y, int color_plane); bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb); +bool intel_plane_uses_fence(const struct intel_plane_state *plane_state); bool intel_fb_supports_90_270_rotation(const struct intel_framebuffer *fb); int intel_fill_fb_info(struct intel_display *display, struct intel_framebuffer *fb); From patchwork Thu Feb 13 15:02:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 7D47FC021A0 for ; Thu, 13 Feb 2025 15:02:52 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 270E810EB01; Thu, 13 Feb 2025 15:02:52 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="MsuCoHmw"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 54BBF10EB01 for ; Thu, 13 Feb 2025 15:02:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458971; x=1770994971; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=DLwT/KGU7XCBvgRQZcZj4USKzddWSlQA5D8sXSPKt4k=; b=MsuCoHmwz3HGhMs9G3HnZ1uiQNYc3PP2wJnUxgQ3qqBMAfE6Dx+9uHNY kQNhIodA8SM7obd+MkgYH0XFsLb0MrkeaPEoMDsY2jsmtHzDBkjCuRFo7 FaFOP2LkEoPgnEwiBthfJensXyW0xPHkSGqgtaB4j8I56hDsUPPvkyD7L Xose5rkmIC3WWroQXfEIKfVb2EA9A68tC5aPnN5GM5eUpNFZWxH2jXgcO sMJ04SpGKlFj4dze9fGILEWIrW6hcIHI6wBVpMlN5/0j2hiWfQ1H/Jc8j 1j0rYdLghB+xmwUmJhk3ZG7lv4ROqN9cKsjz5F9zjLOAP8NetJDoYOc61 w==; X-CSE-ConnectionGUID: C2m8iHQ5TcSq5IK1b6hHXg== X-CSE-MsgGUID: C7x6rh45SVqA6eq1lqe1Rg== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567609" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567609" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:51 -0800 X-CSE-ConnectionGUID: PUiv+6JMQHuF+EH+gL67TQ== X-CSE-MsgGUID: aQmBi7PhQaOrjp7WtrUuiQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349621" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:49 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:48 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 10/12] drm/i915: Relocate intel_{rotation, remapped}_info_size() Date: Thu, 13 Feb 2025 17:02:18 +0200 Message-ID: <20250213150220.13580-11-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Move intel_{rotation,remapped}_info_size() into intel_fb.c as that seems a slightly better place than intel_display.c. I suppose these should live somewhere outside the display code as they are also used by the gem code. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 36 -------------------- drivers/gpu/drm/i915/display/intel_display.h | 4 --- drivers/gpu/drm/i915/display/intel_fb.c | 36 ++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_fb.h | 5 +++ drivers/gpu/drm/i915/i915_vma.c | 2 +- 5 files changed, 42 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 4800fefd6321..c38c37afc154 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -601,42 +601,6 @@ void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state) intel_wait_for_pipe_off(old_crtc_state); } -unsigned int intel_rotation_info_size(const struct intel_rotation_info *rot_info) -{ - unsigned int size = 0; - int i; - - for (i = 0 ; i < ARRAY_SIZE(rot_info->plane); i++) - size += rot_info->plane[i].dst_stride * rot_info->plane[i].width; - - return size; -} - -unsigned int intel_remapped_info_size(const struct intel_remapped_info *rem_info) -{ - unsigned int size = 0; - int i; - - for (i = 0 ; i < ARRAY_SIZE(rem_info->plane); i++) { - unsigned int plane_size; - - if (rem_info->plane[i].linear) - plane_size = rem_info->plane[i].size; - else - plane_size = rem_info->plane[i].dst_stride * rem_info->plane[i].height; - - if (plane_size == 0) - continue; - - if (rem_info->plane_alignment) - size = ALIGN(size, rem_info->plane_alignment); - - size += plane_size; - } - - return size; -} - /* * Convert the x/y offsets into a linear offset. * Only valid with 0/180 degree rotation, which is fine since linear diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index d3afd134f70e..a7bd82662adf 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -59,8 +59,6 @@ struct intel_link_m_n; struct intel_plane; struct intel_plane_state; struct intel_power_domain_mask; -struct intel_remapped_info; -struct intel_rotation_info; struct pci_dev; struct work_struct; @@ -467,8 +465,6 @@ unsigned int intel_fb_xy_to_linear(int x, int y, int plane); void intel_add_fb_offsets(int *x, int *y, const struct intel_plane_state *state, int plane); -unsigned int intel_rotation_info_size(const struct intel_rotation_info *rot_info); -unsigned int intel_remapped_info_size(const struct intel_remapped_info *rem_info); bool intel_has_pending_fb_unpin(struct drm_i915_private *dev_priv); void intel_encoder_destroy(struct drm_encoder *encoder); struct drm_display_mode * diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c index 5875af2b61e6..c1923b4c13d6 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.c +++ b/drivers/gpu/drm/i915/display/intel_fb.c @@ -1891,6 +1891,42 @@ static void intel_plane_remap_gtt(struct intel_plane_state *plane_state) } } +unsigned int intel_rotation_info_size(const struct intel_rotation_info *rot_info) +{ + unsigned int size = 0; + int i; + + for (i = 0 ; i < ARRAY_SIZE(rot_info->plane); i++) + size += rot_info->plane[i].dst_stride * rot_info->plane[i].width; + + return size; +} + +unsigned int intel_remapped_info_size(const struct intel_remapped_info *rem_info) +{ + unsigned int size = 0; + int i; + + for (i = 0 ; i < ARRAY_SIZE(rem_info->plane); i++) { + unsigned int plane_size; + + if (rem_info->plane[i].linear) + plane_size = rem_info->plane[i].size; + else + plane_size = rem_info->plane[i].dst_stride * rem_info->plane[i].height; + + if (plane_size == 0) + continue; + + if (rem_info->plane_alignment) + size = ALIGN(size, rem_info->plane_alignment); + + size += plane_size; + } + + return size; +} + void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotation, struct intel_fb_view *view) { diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h index 63728520eb06..d04d9274bb71 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.h +++ b/drivers/gpu/drm/i915/display/intel_fb.h @@ -19,6 +19,8 @@ struct intel_fb_view; struct intel_framebuffer; struct intel_plane; struct intel_plane_state; +struct intel_remapped_info; +struct intel_rotation_info; #define INTEL_PLANE_CAP_NONE 0 #define INTEL_PLANE_CAP_CCS_RC BIT(0) @@ -80,6 +82,9 @@ bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb); bool intel_plane_uses_fence(const struct intel_plane_state *plane_state); bool intel_fb_supports_90_270_rotation(const struct intel_framebuffer *fb); +unsigned int intel_rotation_info_size(const struct intel_rotation_info *rot_info); +unsigned int intel_remapped_info_size(const struct intel_remapped_info *rem_info); + int intel_fill_fb_info(struct intel_display *display, struct intel_framebuffer *fb); void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotation, struct intel_fb_view *view); diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 61b49007ecd4..632e316f8b05 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -26,7 +26,7 @@ #include #include -#include "display/intel_display.h" +#include "display/intel_fb.h" #include "display/intel_frontbuffer.h" #include "gem/i915_gem_lmem.h" #include "gem/i915_gem_object_frontbuffer.h" From patchwork Thu Feb 13 15:02:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973446 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id D09A2C021A4 for ; Thu, 13 Feb 2025 15:02:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 75D4710EB03; Thu, 13 Feb 2025 15:02:55 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="El+WkoA7"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5CD5010EB02 for ; Thu, 13 Feb 2025 15:02:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458974; x=1770994974; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=SviIxuVVUqopm0dk0MoC56OjT0nRJjmXE/+4GqieRMw=; b=El+WkoA7/ZNK8kMi55JsJnGokKOThaHkKE/y4l0P5m/MzykuaXC25M4q 5qy9cs9I1gMyclFUWJhB7b8zfzOAr5BCGxCtQ7Tl5paoiD8UKP6fHoNA6 hkYa0MB38DGtHPkkDi9j/IWTx2ZN1/qb7j1XSbHp/F5D0tJ6tLCM/dkOv 9x/+NkMSBs0xFyr95vItnyYF12TIBTWebWDGosZSaHY8Q8s0UxGt0nU2Z hrR+FN+IgKJVH0OrbaIAndPxGqHu5i4npdibGVtMdOvuvnqRYMghyhLas mOixGRsZBZWxdTZ3jREcCocn/mKBDyrSg73+0+CAoLBZCr2GkTJ3wMB9N w==; X-CSE-ConnectionGUID: rtwLtUXXR8yQZRQ5xgftmQ== X-CSE-MsgGUID: S6X1TXOnTb+hlPz9ZAyWCQ== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567613" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567613" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:54 -0800 X-CSE-ConnectionGUID: KjTiM+31S5CniGplwJTebg== X-CSE-MsgGUID: BlDduPzMRySGa5080MtDdQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349626" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:52 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:51 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 11/12] drm/i915: Relocate some other plane fb related stuff into intel_fb.c Date: Thu, 13 Feb 2025 17:02:19 +0200 Message-ID: <20250213150220.13580-12-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Move intel_fb_xy_to_linear() and intel_add_fb_offsets() These are technially sitting somewhere between plane vs. fb code, but we do have a bunch of code like that in intel_fb.c anyway. Might need to think about splitting intel_fb.c into pure fb vs. plane->fb related stuff somehow, but dunno if that's even feasible. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_display.c | 31 -------------------- drivers/gpu/drm/i915/display/intel_display.h | 5 ---- drivers/gpu/drm/i915/display/intel_fb.c | 30 +++++++++++++++++++ drivers/gpu/drm/i915/display/intel_fb.h | 6 ++++ 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index c38c37afc154..c58b245ce935 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -601,37 +601,6 @@ void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state) intel_wait_for_pipe_off(old_crtc_state); } -/* - * Convert the x/y offsets into a linear offset. - * Only valid with 0/180 degree rotation, which is fine since linear - * offset is only used with linear buffers on pre-hsw and tiled buffers - * with gen2/3, and 90/270 degree rotations isn't supported on any of them. - */ -u32 intel_fb_xy_to_linear(int x, int y, - const struct intel_plane_state *state, - int color_plane) -{ - const struct drm_framebuffer *fb = state->hw.fb; - unsigned int cpp = fb->format->cpp[color_plane]; - unsigned int pitch = state->view.color_plane[color_plane].mapping_stride; - - return y * pitch + x * cpp; -} - -/* - * Add the x/y offsets derived from fb->offsets[] to the user - * specified plane src x/y offsets. The resulting x/y offsets - * specify the start of scanout from the beginning of the gtt mapping. - */ -void intel_add_fb_offsets(int *x, int *y, - const struct intel_plane_state *state, - int color_plane) - -{ - *x += state->view.color_plane[color_plane].x; - *y += state->view.color_plane[color_plane].y; -} - u32 intel_plane_fb_max_stride(struct drm_device *drm, u32 pixel_format, u64 modifier) { diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index a7bd82662adf..ffbec2c4aabc 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -460,11 +460,6 @@ int vlv_get_cck_clock(struct drm_i915_private *dev_priv, int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv, const char *name, u32 reg); void intel_init_display_hooks(struct drm_i915_private *dev_priv); -unsigned int intel_fb_xy_to_linear(int x, int y, - const struct intel_plane_state *state, - int plane); -void intel_add_fb_offsets(int *x, int *y, - const struct intel_plane_state *state, int plane); bool intel_has_pending_fb_unpin(struct drm_i915_private *dev_priv); void intel_encoder_destroy(struct drm_encoder *encoder); struct drm_display_mode * diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c index c1923b4c13d6..399babb57030 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.c +++ b/drivers/gpu/drm/i915/display/intel_fb.c @@ -1937,6 +1937,36 @@ void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio else *view = fb->normal_view; } +/* + * Convert the x/y offsets into a linear offset. + * Only valid with 0/180 degree rotation, which is fine since linear + * offset is only used with linear buffers on pre-hsw and tiled buffers + * with gen2/3, and 90/270 degree rotations isn't supported on any of them. + */ +u32 intel_fb_xy_to_linear(int x, int y, + const struct intel_plane_state *state, + int color_plane) +{ + const struct drm_framebuffer *fb = state->hw.fb; + unsigned int cpp = fb->format->cpp[color_plane]; + unsigned int pitch = state->view.color_plane[color_plane].mapping_stride; + + return y * pitch + x * cpp; +} + +/* + * Add the x/y offsets derived from fb->offsets[] to the user + * specified plane src x/y offsets. The resulting x/y offsets + * specify the start of scanout from the beginning of the gtt mapping. + */ +void intel_add_fb_offsets(int *x, int *y, + const struct intel_plane_state *state, + int color_plane) + +{ + *x += state->view.color_plane[color_plane].x; + *y += state->view.color_plane[color_plane].y; +} static u32 intel_fb_max_stride(struct intel_display *display, diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h index d04d9274bb71..46286a40e10e 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.h +++ b/drivers/gpu/drm/i915/display/intel_fb.h @@ -93,6 +93,12 @@ unsigned int intel_fb_view_vtd_guard(const struct drm_framebuffer *fb, unsigned int rotation); int intel_plane_compute_gtt(struct intel_plane_state *plane_state); +unsigned int intel_fb_xy_to_linear(int x, int y, + const struct intel_plane_state *state, + int plane); +void intel_add_fb_offsets(int *x, int *y, + const struct intel_plane_state *state, int plane); + int intel_framebuffer_init(struct intel_framebuffer *ifb, struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd); From patchwork Thu Feb 13 15:02:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 13973447 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id AD976C021A0 for ; Thu, 13 Feb 2025 15:02:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4B7FC10EB02; Thu, 13 Feb 2025 15:02:58 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="FJKqX9eC"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 063A610EB02 for ; Thu, 13 Feb 2025 15:02:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739458977; x=1770994977; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=85bZtx50SV2FGfTswGh95qGr9Ev+wmc+uN4ESxNIKWk=; b=FJKqX9eCWKRfltsvDlPdJWGy/Ch7KwSv0Por2NjY1roxWQliIIdsaatv 3az3kWJ8SlT8R23tCeJRTTQ5PXBUN3gMoOAsYfeDK+u3O9gTM4N4h3PU5 z05J4BsD+cK5DyrxZ0f97udQ4PP63KFFQcTE3kSlhTpFFNt6007Q1eOuB oDQY2YUF/PyatjraQR1jbZ7Z367UzaJ2lfI90WPA/OHAV7URvnFIqvWwE yoTqLQctN9IAXjKbVASh4Fwfa+sKGaIiqjZnejQ6Ptpaj5Hxz7xz5Wzqk 2VYgte7ZLEY7Cte8kfe742xH0sDCR7F8k5R20Zq1P4lE+roBXY5xfEMve Q==; X-CSE-ConnectionGUID: v9hTmShDRiyREQ5ZKSNUOA== X-CSE-MsgGUID: pFBhotmnQsC/IW2FD0PRMQ== X-IronPort-AV: E=McAfee;i="6700,10204,11344"; a="57567620" X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="57567620" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Feb 2025 07:02:57 -0800 X-CSE-ConnectionGUID: TuKT25+hS8K0nD8/R1585A== X-CSE-MsgGUID: 8QJ2Ep1URPKp5fGYxXaiDA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,282,1732608000"; d="scan'208";a="113349631" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by fmviesa008.fm.intel.com with SMTP; 13 Feb 2025 07:02:54 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 13 Feb 2025 17:02:54 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Subject: [PATCH 12/12] drm/i915: s/state/plane_state/ Date: Thu, 13 Feb 2025 17:02:20 +0200 Message-ID: <20250213150220.13580-13-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.45.3 In-Reply-To: <20250213150220.13580-1-ville.syrjala@linux.intel.com> References: <20250213150220.13580-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ville Syrjälä Use the canonical 'plane_state' name for funciton arguments where appropriate. Also do the s/int plane/int color_plane/ in couple of the function prototypes while at it. Signed-off-by: Ville Syrjälä Reviewed-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_fb.c | 32 ++++++++++++------------- drivers/gpu/drm/i915/display/intel_fb.h | 11 +++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c index 399babb57030..97d54b40cf1d 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.c +++ b/drivers/gpu/drm/i915/display/intel_fb.c @@ -1049,13 +1049,13 @@ static u32 intel_adjust_aligned_offset(int *x, int *y, * the x/y offsets. */ u32 intel_plane_adjust_aligned_offset(int *x, int *y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane, u32 old_offset, u32 new_offset) { - return intel_adjust_aligned_offset(x, y, state->hw.fb, color_plane, - state->hw.rotation, - state->view.color_plane[color_plane].mapping_stride, + return intel_adjust_aligned_offset(x, y, plane_state->hw.fb, color_plane, + plane_state->hw.rotation, + plane_state->view.color_plane[color_plane].mapping_stride, old_offset, new_offset); } @@ -1129,14 +1129,14 @@ static u32 intel_compute_aligned_offset(struct intel_display *display, } u32 intel_plane_compute_aligned_offset(int *x, int *y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane) { - struct intel_display *display = to_intel_display(state); - struct intel_plane *plane = to_intel_plane(state->uapi.plane); - const struct drm_framebuffer *fb = state->hw.fb; - unsigned int rotation = state->hw.rotation; - unsigned int pitch = state->view.color_plane[color_plane].mapping_stride; + struct intel_display *display = to_intel_display(plane_state); + struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); + const struct drm_framebuffer *fb = plane_state->hw.fb; + unsigned int rotation = plane_state->hw.rotation; + unsigned int pitch = plane_state->view.color_plane[color_plane].mapping_stride; unsigned int alignment = plane->min_alignment(plane, fb, color_plane); return intel_compute_aligned_offset(display, x, y, fb, color_plane, @@ -1944,12 +1944,12 @@ void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio * with gen2/3, and 90/270 degree rotations isn't supported on any of them. */ u32 intel_fb_xy_to_linear(int x, int y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane) { - const struct drm_framebuffer *fb = state->hw.fb; + const struct drm_framebuffer *fb = plane_state->hw.fb; unsigned int cpp = fb->format->cpp[color_plane]; - unsigned int pitch = state->view.color_plane[color_plane].mapping_stride; + unsigned int pitch = plane_state->view.color_plane[color_plane].mapping_stride; return y * pitch + x * cpp; } @@ -1960,12 +1960,12 @@ u32 intel_fb_xy_to_linear(int x, int y, * specify the start of scanout from the beginning of the gtt mapping. */ void intel_add_fb_offsets(int *x, int *y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane) { - *x += state->view.color_plane[color_plane].x; - *y += state->view.color_plane[color_plane].y; + *x += plane_state->view.color_plane[color_plane].x; + *y += plane_state->view.color_plane[color_plane].y; } static diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h index 46286a40e10e..bdd76b372957 100644 --- a/drivers/gpu/drm/i915/display/intel_fb.h +++ b/drivers/gpu/drm/i915/display/intel_fb.h @@ -71,11 +71,11 @@ void intel_fb_plane_get_subsampling(int *hsub, int *vsub, int color_plane); u32 intel_plane_adjust_aligned_offset(int *x, int *y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane, u32 old_offset, u32 new_offset); u32 intel_plane_compute_aligned_offset(int *x, int *y, - const struct intel_plane_state *state, + const struct intel_plane_state *plane_state, int color_plane); bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb); @@ -94,10 +94,11 @@ unsigned int intel_fb_view_vtd_guard(const struct drm_framebuffer *fb, int intel_plane_compute_gtt(struct intel_plane_state *plane_state); unsigned int intel_fb_xy_to_linear(int x, int y, - const struct intel_plane_state *state, - int plane); + const struct intel_plane_state *plane_state, + int color_plane); void intel_add_fb_offsets(int *x, int *y, - const struct intel_plane_state *state, int plane); + const struct intel_plane_state *plane_state, + int color_plane); int intel_framebuffer_init(struct intel_framebuffer *ifb, struct drm_gem_object *obj,