From patchwork Tue Apr 8 21:43:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043726 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 DA251C369A1 for ; Tue, 8 Apr 2025 21:44:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6981010E77E; Tue, 8 Apr 2025 21:44:29 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="MQZ+mE3w"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E32510E77F; Tue, 8 Apr 2025 21:44: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=1744148668; x=1775684668; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=QZa8otoIdOjfjpco2haDcTZdCEf4ISjGB8VJfHmoA7s=; b=MQZ+mE3wMu6Sa9cNPUltMrBu8eN77k/F18bacTmsIyOObBbd4+kHW3Fb JFGRhbbaVTX2cp+0JwFjcHnoYWTwmeY5Vu4HF+zJOjB/Nc7CV9dtyFkGZ MLmF4QMy7RM7EDQV8VpunBFuWxLV5ugNrUZK0nRyz49Hn5x6UmAm3efQL jVriGR1Psm+ZPv4UXlQB1KS+mtP3MkFH4QxvppguQrV5DIBD6P4k5QQSl G66/nipXc3osPtnWhBib6FmI6C+7xwZeLL9BL/oDObfGDt8QctX+ou9et hsvY/tcIa0WBhTgAN6quSr4L9sFIn05BcqUgwf6/If3szpUjQGORXtGEB A==; X-CSE-ConnectionGUID: MH/cwUBISxe0Sdel5QMSeA== X-CSE-MsgGUID: TL6u19VOS/2soyrcVoiRKg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45695675" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="45695675" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:28 -0700 X-CSE-ConnectionGUID: /IWiR1GIQqqowj0xtY0+RA== X-CSE-MsgGUID: krNROfugQpSu1OoFdrbnfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128888974" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmviesa010.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Apr 2025 14:44:27 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:26 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:26 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.173) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rp5/AWSAWCwDRSdfis3uxTALkroxXnAaTJq0xZ+htXXUaLnt3Ghb+spUkLSoyRbvWqiXP8D4uZ9e7c+fBHecF8RNdlU1LZPemlpBi8SmOow+1ejpFgvgmcfA19MNiRkJJOwQC5rHcsvd95z8ogO+hK1PWvMEYXae3i6Qn4WpVRGBLH24UMLaOXd38owTcrust1c2N8W8L6FzvXvwvcCu5JoN+QF1M60AvBB2CA+Sx6g0b5beV+4777Iknh36iEB6b+CWDSeu+kISpI+TifrRIqE22ZjlbqVuAuSJHd5Zk2A8vLPMclsRZxE2noqWKHytPZdOF5Kt9TMCo3LffiWC6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zA8ym6049hiyZoUPLxtAGSLvX0yrm3CIZCkA2fDVUAM=; b=Lj2T695lgPpYDSLZ1GbbH5boYpz/Yz/j9MMGr/vo7CLZ6ICLnU/oU4wCaWSVDMJjqvjBrbKGXOOtKxqQGRu5+MbYY2g16xbXM6SWZ+7y8IDL3KINuHo7+cBec2ezSb3JvYoe6BaNNSBsGJ7shmw4FGpUTpzB8Xm6CaRgtxHwKAD+o3//KNKFlQ4D3BXlACkPBFVb8N/JIjl4ZPD6W/n3lR5gfKvSJ4ZT/pgl/cIdwt6Kr7IlvJZ0gsxghyrGQpIR8A0e4Y9pokpmZNMjCAQBu3lkar6ibGq8Wl1Sl6xp2dtV74EI6UnCSIMl7zkqU2HDsYwhKHQ/OVooid3AgLMxyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:43:41 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:41 +0000 From: Imre Deak To: , CC: Ankit Nautiyal Subject: [PATCH 01/10] drm/i915/dp: Use the correct connector while computing the link BPP limit on MST Date: Wed, 9 Apr 2025 00:43:31 +0300 Message-ID: <20250408214342.1953197-2-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: b34f12ed-1cb7-4b34-70f5-08dd76e66d9b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: cCntCtBBSko1T4ZcWc1yW5oZIfn6qBQ0iZ/EFCHG1a1NoVBQ9sUecOyHDlXGUumx8RXtSH3m5Lxqxao5QixouYGMONz5+0DNg3qbRYFvtcMo7nNaVnS3RuosalhtJHCYcQMOw71PHlIAmlfQbuqoJ2eqdg7mK/TeH9WO6RCqFQj7SLtYVgT1b75Q/sdYLpv2UasTFD2ioVDoxNvgezaS6kJ7yx6m5Yg4HisAvhtY6cDAvuOPI/PyIJzjzEmMGb4/lsnL3Fm91p2Px0e4fh6G0lmqwMqK77XOwAplE5VGgZyTny9DR9eZ70Dqp3Koy2+XeSJUCr7TUjbo0lK1eAbYYaY7PSaymM+EYRpRyF4NwrnaYY+Ix/FZg9bqG0KbNDl6VH4B1J7Strotao5uTZ7ZA33wkfRPEk7TiYlt2i/gW58/WPGkRYUZd5zi1OUih6aNmDpU53eqqE6eyVZRdxwP7cuOEOzOzrq8TYN30newhOHPybmm2VvnMYmZt5Nq0W5O4xs9SnCfsfoLGynfgqOSshZf0szGk6f3N9Yqbxu7qHMtlAB4c7cMvfkpyYzDUvSjmwed5xkkRWV50ikAfJwaHt0TyzPOvpggiLv9SRGIdnG0B4fYaBZF7BGA0MtbnyB3c2ghvBv+3jHHCC4y8X/3maCR2Q4KyJBmW4/A+Gc58Ys0sSai0WakajOsPaGU2ruQZ/Y2KGeCPMfJ+OaAWWTqT2VbplzVzBD9CrfQR8nhbHnzXPYwcmqNCXaxxDUsqOjrIEWDlCT5HmKMucq3zbX8rqgM6I2wnQx9cUxb21uj0z0tO03NVSaGBtqdfGmH+2xJASxjYwWRG6D66hY7I9N7O8LssT8lWGFu2/7mndV3NhDpYHrkvcTUwhC8NPmVhYqgefbqeGnU5D5rWdQpNlSdFRXGqxY7AjnFHrQhrEMJwzsb/gUajzdqeISPOTy1lOVm057jfA1n+JxxC3rEvmmJaK0MdVy6wCIlqhoZNPsi3IRJ4rL8feUKWulaM42pnl5VcdCzY7QOSbxIwp8p13YjIMaVixnGX2+7zuUqeag+CPemWATDHdtzQ2GBYepHu7q+lS/1RNejRStD4p2MAxBl2CeVXn0THM/IZ8YAZRZAOlMZjMCMMYhhP93OaGH7zgB7ZM0jopCDm5imt1jwMWxmNVg2WDuin51j0uVau7Vy2CeVbVtQGSPeiszYTT6LPkrJ+vUetom52fEYw6Phq1fOXP1QePrbG1tLphWnUtUrAD/9EeIkaO9iR0d/PHwNtD+Oc/7JV61Batw6aODBTiRSnIhsLM5ScSXZZtSQ7BUzOEkpvkJWSPfwo1ETxLn7cu4bqZFYzqjCbGLsj4oDLOjv3JUio4XpMGsyOfcK+aiMmwEXuTUL5LGLSAZxbWomKImm X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NRcKx0s3jB0XY1yfIaff1TPfurFkH6lIvhp+nZ5LBlODooamWT+JbRyGmrgOvEQkFlozfyZD6Y6HlB6u1bgHlP7A/B/UjjABr1rTCSo5rGMwhEN/D591Zrrw7odWPdtNv+SfRREl8C5qC6+HGSJGdFULzdUnQzgeS5A+TVomIjcb8rVQEH0aDCigmY+XcvBSVK9kBmMi+w7IQ2SPmC/fWJfT1fJn0T2e1wKyyFsPogCcj83yAc3d/nf/KT3ZebADsFx7eeTTYpKPx5R7POMZ8oLr/mYb1eYW0awirWMeiebzE3uL/uji4391eknEEf6Ispq0wb10jA6RdTFTbZRPQcRUuDRqQwKXRbceI5xdNQK9za72G4j/Qy/QVVvQis24j4X/AHPFFVYRa7AZYuhsiZNAwnNgjq/ckIZDdvtqy6BnNbVqynjKm1fXXO/GfnqbkbOHhBRTXvo2MmKcPuNLYvomUM7YF7Xru2CiiCT8tRfNRySttYD8HrA9XViwrsD+0ESptWv+HHKuRYROZj8YnLZsOZa2r+CCpgkFUxUmpGrEbu8W7ZfLfKjxQP1OEW8+ePL8bHvEZe26uSon4biBvMn/Det5/zHRuWbuk2LlpFqCFaF2TImaAh8rNT7bz4sx4ploG33WUTNewN0QwL9sE0jzjS01zg8VdcrRxg9a4UX0tvtS/aDbLfvtOrCxfLj5ftmr6xwCSs3vC0ytQST9Ap34TOgfKK8Eom2y9Lif7hAp7JG0hXUqEU81dV+cZ2bAL91yv1inmr4F5OGgCIhqdj+N/m3gD5LPl8/mXedmLWWxjFFSxWxwmXycekOU1Rvbj1Eq7RcMklMKYEsjqJOHnESF2o2oCHWkzzYkSBIcRq586iOyesE5ucaDXOGXZKtxn1Cmybyp7SR9QlH7zFa1PvRfSVETi4BDFXT2KnJmeekzf/CgfDQol8+4elAR80dF1oV0McImnw7VZx4aKUBRYylg3/fs6XHBfTSdvF7jCW/FskYfVEsrSSfSbbYty43SilciFs6+7BVOfUeMrA5MqvRUUqI1v6101t/GR1zSCJL+bZWukdce52gqTndyTKa87ZursmgRUBk/1C9LycZsdwG3vG9uOw/AfBohz+FAZyn0LZLStsbm9i3XJsx1FQc8HgB9SFSZzwU72wS6zuOVwqApOv8qLDzvbMTMAovEQs6Igg7FlLkvG8vrGuqLO7z1bN3Nuk6W3e0VgVpDu7yoGpO/VQjFkxnIYxSny2wS9HdI0r+0Z5yWwNdijL12JAuxD4mh7PeMYRISAztcHDVTwDdcvu1Y/mkDbEKP6028ASVLOD9wF5PvhTLs5TWbaaAKzzEwnFuOID4iE6/XYzkRemABQZYgoMbXN9YSMZscohwiRoVDGmxBSxP9TBqUO0554fTGhuMIwgkLUcU0fD/4vRM9xbaEpocAFH3k5A7pC39DVBbZCQQV+fMJ25Cz0FvwGLwebvbBnmV8Dwh/L3mAQWf0MSgc1+mitdzZb9eWJ5PBpMKGepQm15sGiltecWgu69Avs6VuDTzRdC5rlEjITxqVfxSvr1HRp23r0egx7cDFJdrmxFzwSVMtYLi4ohOI X-MS-Exchange-CrossTenant-Network-Message-Id: b34f12ed-1cb7-4b34-70f5-08dd76e66d9b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:41.3442 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AMr1m5cLsBG32lSM+39ByamPZpMxuOfVyZB00Vjg4OQLpmG8cgRLmhRqAYYjEIRdV8+r8UaDGa03/ojxeBV/iQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" Atm, on an MST link in DSC mode intel_dp_compute_config_link_bpp_limits() calculates the maximum link bpp limit using the MST root connector's DSC capabilities. That's not correct in general: the decompression could be performed by a branch device downstream of the root branch device or the sink itself. Fix the above by passing to intel_dp_compute_config_link_bpp_limits() the actual connector being modeset, containing the correct DSC capabilities. Cc: Ankit Nautiyal Fixes: 1c5b72daff46 ("drm/i915/dp: Set the DSC link limits in intel_dp_compute_config_link_bpp_limits") Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 7 ++++--- drivers/gpu/drm/i915/display/intel_dp.h | 1 + drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index aeb14a5455fd1..713cc6e65faac 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -2522,6 +2522,7 @@ intel_dp_dsc_compute_pipe_bpp_limits(struct intel_dp *intel_dp, bool intel_dp_compute_config_limits(struct intel_dp *intel_dp, + struct intel_connector *connector, struct intel_crtc_state *crtc_state, bool respect_downstream_limits, bool dsc, @@ -2575,7 +2576,7 @@ intel_dp_compute_config_limits(struct intel_dp *intel_dp, intel_dp_test_compute_config(intel_dp, crtc_state, limits); return intel_dp_compute_config_link_bpp_limits(intel_dp, - intel_dp->attached_connector, + connector, crtc_state, dsc, limits); @@ -2636,7 +2637,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder, joiner_needs_dsc = intel_dp_joiner_needs_dsc(display, num_joined_pipes); dsc_needed = joiner_needs_dsc || intel_dp->force_dsc_en || - !intel_dp_compute_config_limits(intel_dp, pipe_config, + !intel_dp_compute_config_limits(intel_dp, connector, pipe_config, respect_downstream_limits, false, &limits); @@ -2670,7 +2671,7 @@ intel_dp_compute_link_config(struct intel_encoder *encoder, str_yes_no(ret), str_yes_no(joiner_needs_dsc), str_yes_no(intel_dp->force_dsc_en)); - if (!intel_dp_compute_config_limits(intel_dp, pipe_config, + if (!intel_dp_compute_config_limits(intel_dp, connector, pipe_config, respect_downstream_limits, true, &limits)) diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index 9189db4c25946..98f90955fdb1d 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -194,6 +194,7 @@ void intel_dp_wait_source_oui(struct intel_dp *intel_dp); int intel_dp_output_bpp(enum intel_output_format output_format, int bpp); bool intel_dp_compute_config_limits(struct intel_dp *intel_dp, + struct intel_connector *connector, struct intel_crtc_state *crtc_state, bool respect_downstream_limits, bool dsc, diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 4c15dcb103aa2..cde662daed5a4 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -619,12 +619,13 @@ adjust_limits_for_dsc_hblank_expansion_quirk(struct intel_dp *intel_dp, static bool mst_stream_compute_config_limits(struct intel_dp *intel_dp, - const struct intel_connector *connector, + struct intel_connector *connector, struct intel_crtc_state *crtc_state, bool dsc, struct link_config_limits *limits) { - if (!intel_dp_compute_config_limits(intel_dp, crtc_state, false, dsc, + if (!intel_dp_compute_config_limits(intel_dp, connector, + crtc_state, false, dsc, limits)) return false; From patchwork Tue Apr 8 21:43:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043720 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 0C4CFC369A7 for ; Tue, 8 Apr 2025 21:44:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8CF7010E769; Tue, 8 Apr 2025 21:44:20 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="OqwhmdTI"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id BEF4210E769; Tue, 8 Apr 2025 21:44:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148659; x=1775684659; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=CReUICRU4pcKKUHgtcC4fVTujALkULp8RCx7CHusyWw=; b=OqwhmdTI09tyah/3Y3/ZR4vvhtUbDcGpKdtfghF8dG2+9yG/1Km2iGwJ veQ3wkdZJG7oJiE8SyXMFjc1j1D8fiVn34NrIWEXzugPlfeLsCrPJahn/ akCV2CGmZZMeODKEJki5FwzL4lB54ahIUDXqZYwkAmoQBYcoLVoRZJDN5 3smqPT1IQk/jbzxL09+qs/Z4X74h9hAV6N4oabSyam2jrBKzE8K9K4Ut6 OMnyygutLnCpa3jwGz+A5jCvfuSNXtW3A/f5IBkqwv/cBWxxojLhAipCJ bubiSWi1/qdkRg7TAsGeBsoyb5CyEi6owt4d3rRdT124Q2I3XPAxla8Xu w==; X-CSE-ConnectionGUID: wmv4CfOTRT6EKsTZ91pGfw== X-CSE-MsgGUID: B5EGmwICQpiKXJ/cFGkAWw== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="49263282" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="49263282" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:19 -0700 X-CSE-ConnectionGUID: pIu0OfX8Tp6YI8YeWIwMYg== X-CSE-MsgGUID: 7c6j5HQPS72TAiZuaQlJlQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="133597352" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:19 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:18 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:18 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Uqr866hm9T2XMfRemp5hFZ076gwnZbFV0Tx/9rvDJrNAEO1FU06GEZ/+Row6mI1NvN5/3kI3T++/mXOxDzoZIfQ65i8Vcr/kBu2RRapnOfoN9eRhiMnFxRSDB5gqApyJVe+SmM/wip7BMHg3KTnY99dglI6QFvDeC4DID6xW00YG8tksqqvkldNQ3p/lpoRCyGkNtgpU4TaXpTtUm8f0/I49pi/HdzkEAi+lEQ24HnUfi1uRjMSJN1FxtD7Q8+33JoBP2AFZjBMviEVWeFUXEv8GC0TgMr2hlxstTcDQandWCjhAl70bopEpBkJ81t1sRfsym9kv1qSaLq4nDjLo7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kTluxGKkvNnOy3FPfLzEs2QfNCUQK28m5+gMMg+SO64=; b=of9xf8OpyeklHig6p5kC8M9OyV0910ay1/YwoS44zY2XI1uut2RFqXw827RYVy6Kmv1pYSKXFpDNvmJudZsjTT2gvtPbDAh2OpOBPso1YiAQ8vdWVyWl/tTvgVjecGYKsH14vhUwWrIQXS3TnzM06KXJPdAU/wxjOpAxJY7TrKYyfZJiLlkvjTFt/NadBsxJlgH0tQXiAlmpFpcbAtVgUSpLna8x+JfHOqZ2c77pr40a87pwtmgPTrEG2mlOWNaugBpDBzA3xEmfLqunHnvoTGqo2NxoPUuWBAxqKFqeLWIpJEUSkqu7m+kyuveOh36iM+BzdIWNAIe47qUh9/o7tA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:43:43 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:42 +0000 From: Imre Deak To: , Subject: [PATCH 02/10] drm/i915/dp: Limit max link bpp properly to a fractional value on SST Date: Wed, 9 Apr 2025 00:43:32 +0300 Message-ID: <20250408214342.1953197-3-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: 52634845-cf03-42ad-8e42-08dd76e66e83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: 0nMct1N/8XPiMjaI/HCEMQBp0DDqfZU4TFY8tFPLA/4x1Xi5u4KdugHzYJOLoUMZGwTz+fX/qpF+NRrgbu91bEZALhjtMmQNxQ968BBE//WHtApD2eNi2YeoGpRzM9BaJdb+Kn84S84PedvAYaXws2sIdHmI8ojDYjCHDdq2asxatEqsfMFiqA8jOpR8Y2cBWK/hIMGjCT2uHhArtcvB7fZb4jllSU/jxvKIqcgE3x36nsTCGLREEmXCbTklI1/Gma1Wg/yR+xRT7CsWvTcmruHOAa2JoUpDzWK12MjlxZAfwE7QgHAgks8VfMrlgCt95vNJ01cSPw0RzmKvYgYimnAkjp7Sk3Wu71BN3jF6GLM3suQxaZh7qZAdXKl96pSMp0LfyzhfNRguwTsE49r7LmDf1N+53grHPPqEeCYO9DHJcG71XCX+UvkADnFU1a/Hhr8Mjmyx9Nv20yLlTxwPd14DSclbtanVq2NjUuORJ9Z8KWBZdD1ihbzH7KtFHaaCzn8U8gA4nhjyR7FTqHhlfe6Yiw3il4FLjxaie7qn2gJV66oC9PIvUr+r7czwxuRh+SCfd0+ZqA6w7P1+fRl+tdpA8UynJnQLVigL6tbPQE4bd+cJfcTuavVNW/87dQFNxBFW9NWMLjQY1fukFcAVaJpbotp/V5LTfxhLPeywZo8EX2bv//vRaF1MDd8G8sQYoeewpS/+UJdyEIZASik/hnTlMcHgKTjffPbEPVOmgrbrbOKeUDGc9O9gLrnHUWVJgo3sVG2Zl+D2KgVT35ew5B8QivKci0+HQOs/faXQxpwzJnbSvIboyk7Uwbb8x3viYFZXj4m80hukmgP/oXXecfqddxSDLZRF24PzF610fn0mLzRBP1yxJ26L312ojSn8OOwZs+FVehgTyQTNfBUH9XsKhhHrB9j2XPWcu/JexHdKd87jObMTMRcNxb9IevXeyxrw5kza4ZMU+rG/Oioj6WZcYpNZ9Z4pyd039jQctIRAWkXWdCJ+8T7e+bTSfHD8tZ/IrR3pqntV9E7t3IjxNU3lRPAywWPUgwVGCSXL6JwxAp9CKMzvM5VLaTt/GmAYNEOCbZfssJyRgIu/Hxq2tSuSfN3d9Z2weZ321yQ3lgMaYvsoQv+vwxALkXN3m7so97tLr+L1wNub4gw+1gHrnyavd+W46ptgP6cE8KczR1AXvECjPP1MR0WKX193gJ66SA0jjKNUT03EjYNRVNI8dNz9q1GFqHj0xFIBoeuOg0C+K1JqEhGJvOV+3YHUfL3d2ReNuWqTJovtSa/iro/CcPPVUJCRsw3shyyLkBX4yZwrHDn4B/njd08V7dmr2U9pz1NSUTRUfWCdNMFAf575yAHYzewxKG7yXny09K3driVYDwmURvGctTPWbJ2/XA8+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Ul4TbLA7s+k6/DwO8opzWLTFiuGaqW3ybtpO/iKQGQzEVuFHiuo3ZGIpgP+RIaB8iADYxqb6fhU50xtwZnk1XaSbKiai8NXYahIHIqjqWfShvmMt2K2nqOkovaAr7sUlwlkzS25gSDgeSXqcFHCT7y4JR9KeyZM3BU3vBNQKWWOg0OGTYeanRg3lmKR39n0G+bxKPdvgS44NC2cA4/w6w6GKGa1wFBsK7c0RQXyDRBsJjttQmmw/UfLfmiraxJRKP75JWPw1F2qWyWDZSFMUc8yKPoo2GaEucewHz3gpE3EH0JyVNRfqmzylF2fTBjeubWXWeNs9k78U06ja4Wnt4HQC8A8DbpWc4e+fFt7OxqbvnH4f4KNS7bHSTKFQZoKl56xfiZpNe2KQVJ9RSch4oUVWCb3F444U7nFytXWLE2DWep6yGgkxIeeCVaLqAlgWcPAmEmyOGW/VkcS6UGk7WWvAhpPS0JOi8Rhd+ogXErOu1be0MP4qy+bzpS4HpMx5kWUbZMciTg7hF6J5yhzKSqJzc/enhQGRKhBFs4P22twPjAFcqpLamEaYiJpRDHlRjjn5rVfHQ43OvYj9RMcfZKTY9lllSPQbFhl14x+86X8Ocjb0gOK3HXOS/A9dM+/+/4FAnkx70wOXptSpBWsI6YMhaxZ4SMvfiTYMHuWMgkaFB0raoUEL5Dpcti8T/1Iqw0Jovhf4ofgifnGAmJeQmkMfKhg4ckGIKlVl5nX7HxeVxU4bhP9yU+EesY93S52IueNsEgu5bpcdh0tBJH0bIMvoW6dBn6GUOdUHq/03yQkFmvYFCaS5iSt4UVM/OY45kNxrjXYeq464CNlDvb/Hs251/v30sAAvQgBq6ue6x29ieUUzjay+Qf7TG3CTdnVjV8A28lVqcb8fE9foowhDxNn1fJpgpSgsVm2vQLQe443yTwPytKcHc1jm4cIQr+Q3kSeGmOWYdnWldzMQA01DHutIWsIEKS+PhIj98wL+EVHvlVn0xYY+UAuR1VTnyYV5dBXmEz73AV2C9eo8ICGSO8ium5JMgg0/cJn5p/a/Hh2qGw6n9XRHO27vlOH9I1zDF9YG2Xx4r8j6a2rwiwsw0eUz/rrXxZx1Yq8MuGXoefyvwXfLuDHU5SA39c19RWThgjy1yCeWaK6073URf/1EW6MfowtAgYpKZKEl3IWgJBI5NyW+Hgmmxl3XLrrGEOgtbtkVt7Pot+OoBbrRHkaw8mTiKMPGPqYFWPZm/QlbVV463mlUYtHdE+i4KvAVxmJQNCpQRAhtw9D8tJwaIDY8b5n6CqfsXn9ri9AYX4QTox9L5u2i/W2L0Kmfr/ao29t7gR333/oy4TFyXpr4EUpTEPdFtxN4mU6u+sUmXLMf655EKjvrKJLXCKRTL5VOXTOegPwyEADKz+UfWS+ngzwHCptnB3QXpZ5t6xYo5bGO6xKyBiOOBl1AA9H+FsntcABKcFfnjQUmJnC2ncltjUl5o2kexUO65+5xeF+qz1YKNFLrSl7jZNSADkRwDEhg65uBMQFR9Um3738vhgP1XsYTpK9KN6wYXMXhwchFEEiui31FdNWKtOSj4/aqnITMXX0i X-MS-Exchange-CrossTenant-Network-Message-Id: 52634845-cf03-42ad-8e42-08dd76e66e83 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:42.8281 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: t6qi1TamitLSv1YOuV+X1+HGD0v/sKN9QY/xqGLIWFE2aPQEgCNOx+8C7oUZ2BuoyIyNduUD5BK4FK/KmQyfVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" The maximum link bpp - determined by the link BW for instance - can be fractional, handle this properly during computing the link bpp on SST. This keeps the pipe joiner specific maximum link bpp as a rounded-down integer value still, changing that to a fractional value is left for later. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 713cc6e65faac..14c3d5e10a430 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -938,6 +938,7 @@ static u32 ultrajoiner_ram_max_bpp(u32 mode_hdisplay) return ultrajoiner_ram_bits() / mode_hdisplay; } +/* TODO: return a bpp_x16 value */ static u32 get_max_compressed_bpp_with_joiner(struct intel_display *display, u32 mode_clock, u32 mode_hdisplay, @@ -2148,24 +2149,16 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp, const struct intel_connector *connector = to_intel_connector(conn_state->connector); const struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; int output_bpp; - int dsc_min_bpp; - int dsc_max_bpp; - int min_bpp_x16, max_bpp_x16, bpp_step_x16; + int max_bpp_x16, bpp_step_x16; int dsc_joiner_max_bpp; int num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config); int bpp_x16; int ret; - dsc_min_bpp = fxp_q4_to_int_roundup(limits->link.min_bpp_x16); - dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(display, adjusted_mode->clock, adjusted_mode->hdisplay, num_joined_pipes); - dsc_max_bpp = min(dsc_joiner_max_bpp, fxp_q4_to_int(limits->link.max_bpp_x16)); - - /* FIXME: remove the round trip via integers */ - min_bpp_x16 = fxp_q4_from_int(dsc_min_bpp); - max_bpp_x16 = fxp_q4_from_int(dsc_max_bpp); + max_bpp_x16 = min(fxp_q4_from_int(dsc_joiner_max_bpp), limits->link.max_bpp_x16); bpp_step_x16 = intel_dp_dsc_bpp_step_x16(connector); @@ -2173,7 +2166,7 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp, output_bpp = intel_dp_output_bpp(pipe_config->output_format, pipe_bpp); max_bpp_x16 = min(max_bpp_x16, fxp_q4_from_int(output_bpp) - bpp_step_x16); - for (bpp_x16 = max_bpp_x16; bpp_x16 >= min_bpp_x16; bpp_x16 -= bpp_step_x16) { + for (bpp_x16 = max_bpp_x16; bpp_x16 >= limits->link.min_bpp_x16; bpp_x16 -= bpp_step_x16) { if (!intel_dp_dsc_valid_bpp(intel_dp, bpp_x16)) continue; From patchwork Tue Apr 8 21:43:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043723 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 8E494C36010 for ; Tue, 8 Apr 2025 21:44:22 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1F85D10E773; Tue, 8 Apr 2025 21:44:22 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Mwjejezq"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 04DE210E769; Tue, 8 Apr 2025 21:44:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148660; x=1775684660; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=WfwxJA1InyiiR9dAIw0J4W1xi9OdIGsM7GB75YRa5zc=; b=MwjejezqnejKPuGzSeQWXD6HyVYS7jDKlyf6VXm2wLuA1v27Bep1npyN 9y58XteiN6+v4r2H0mq1hInXhiWIsFZHgXl+PbUlvOvL8gR0QhR6u2E7h sH2OGUrBnWHXr2hErIXSPtJ6urE60T+SCD4CRsJplX6/aLPZITg5vW5S7 V0V2dfE4RqmcXcUg2DXZ9yR7xarK3WfZKD5Pb4mTbCHfxSc3zy/p1C1/X QlJ5FPIzBzzwWnWFVKNgt3Z/CK6yBURvNZbLa2QXrdHF2qgQGb1a19bES oVXyQVf7lMkAzk58QIlwS6AoRqGjnZqpgZBymO/og2mJkacjt6RGIzdc8 g==; X-CSE-ConnectionGUID: hXIerbBoSiC+XUmntyFqKA== X-CSE-MsgGUID: kBdGvsdrQgCAQsrkhPycUQ== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="56243163" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="56243163" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:19 -0700 X-CSE-ConnectionGUID: Zq7CqnPCSWCXi2726tzlvQ== X-CSE-MsgGUID: SwYWOQDISi6GXil4gsPh0A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128724383" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:19 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:19 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:19 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wMkcHEmvhM2n4VTORwx+KdhwqJObXW0DzJvKv47gi/y9RxPhSEkmKMb0E/AlRpg2qGl88GtinwB+HRodrN1vYtP9HlvQSuCJtYTGN6usyUUhFTsTDsJ8o2+Y+pYXQnF+kPtt6AR1VMCZf6C5jniBkaCAaZ0Cbv4htRkGRIGhxZu0CanozMg896IuwwNgGDFD1d7a4kSuc9wtQYM224urXmq5MDH6JnNsEnrVmTd05r/ElvYjbJiCUDvP4ZwQHWZwHwq1zyUlGoXvoFaVuxXmqaSL54OZiiB+zbhpQud8tUo8DX9NVgy0harjnd4f1TfNWp0dzw5+vBsIZLtw5e0vfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WNAo2lxNOzZRlWiw+t5EHZIoYhQWCP0E4S/Gl7DcQ9g=; b=rYMCHJSz2k7wwBp+aHwjsqdqG779DLgkXPUwSJoTvy0g+2Cgwo+ritJ9CCMl99kC8eUMkjAUq00L6pUWRQV17FOM+V++kntFzzvkNG3LEVlWvhL699JIhk94fzy3csuC6r3DyQwsqE5lUM8h6u0veBy8fuoXZ2rPkDO0q2RfM1UnZDAH+1Zn7/nBj1DcAc+mePOkKuCBETKaZ4ME9Tlk5YtxkTltpH0TIJc/j/pm/UBXtQPae5ug+VxKyTc91CRfCJxgS/d3NAf1nLac6N2XDIh04GJ8V00mdan0Ybak2FEzAzM76mHdREAP54nsUTUpZtQiq4IRc7559yEWmoQPVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:43:44 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:44 +0000 From: Imre Deak To: , Subject: [PATCH 03/10] drm/i915/dp_mst: Add support for fractional link bpps on MST Date: Wed, 9 Apr 2025 00:43:33 +0300 Message-ID: <20250408214342.1953197-4-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ce4afcf-b328-4d11-ac0b-08dd76e66f53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: bUb09aGtS2Lb4zBXsBlR6VaO6TgkCZg8LbRwpR4XXK5qPESMNNPq/A5xzWhZ73IyVQCfUayg9l7nlYUkIlop1MhosXFvqwmzHecFBHJSILG9uJyoyE253TgXhwkSYpBCI0p3rk3kSD92VTPWKlpidRe7lwNgJNfWMzqxuDG4XMc1BglXTPRWd10AJsBHuE+AqF/1pAN7B4HVpTSfOxiU1bpQk+bi8NpmGdAqC+KOq2oeihON4/QAPL0dN2xWhsvXFDcLoAKPo9yfkGJf6ie6eL1qLqlmXTEOVHMqQWz/y7RzBqigLIKQsLEMGfjjviZk4qTE77EUla+zHA7yeQ/mL9oV0V9NiCEOpgiO5MQdLzo62Y2YuZC/LGkTxDBoMChD4rhimuWV7sTFPmKA/J3vY9SqeQ5xBsZAJupYXlR37zIntMiJHK7veoNvonPtl0/v4bDQrcvkGzjdJncnTpIi70C37+2XM2qIdD7Y5YXRuZiG49xKZ4T6sastkkFCDNWJ9AMqCHCllhaOPTeDCw/971kTpLArl5qHjDvpPYATkrQ3/yu2035Ovz9b62tjCoAez/f/hdlNYWDGamm/G2cOxnOLgFRBWJ0nQwxHARePM+xa6ONxVrQLWAwwAmewsVsqlHfWTW2z7dDRHAtDXXJBTu4iak/9iug4+3Me4J5fULixwpNzAW9CDO7v/BC0qhXP0vnHTvy5MhPSMx7SHtz0HdIx4/w2Wa5IOVWNLvya1rUTcDd8/1wH/r+ssfR3TDa4ME8w4AupFUSL50MQHgs8qjl3o7W7+Qnreaa300ydUsqL3MTibhTlz4CFu4Ro46nl6zbTlWPK1HxKEAmRB+E07+ZPFzwv02uyUfrZs/7VoCRZdpllv5UIiBqKCIPLS1BRTp+bUJ/xwQBbN2SPtmwtiHY4r5hio+r2j8K8ozTaGMVl/rdjHwEhoNLoYgt3YATqJPBuv3rtqN7QIDX+x4Mje5rz+IjrSGbK4ASdXFEwkyLuk6lvHAHwh5nHxpn/BZOeI8ad+HY9Jik51VNXE9vZYlafbsZQpSz0BGvUZZ9w2kIKefgIu4TVkuQYMS/1R5a3MCnWGiJrNvFU8ouVgB5RJBgkm9jYfEbOjBEsu1RO4CFYz1PHY3mEyP8Mh6sVbBruSC+OzSB7tHbp6t/TaTXdj+HblyuFNcNraBSNDlG3uh1nGITtQL42HXsuZE7pw0hWmjoRK/94lVr2/95XrG4KDt5MSOhqrgpTiJefUxvcbC8HfTDUy8L0Rw8EZl1/WEjaD/2CxI8hN/Al8pClFvybnHtIKAiET3SMO4qPx8BSEabjVrxwFaTYy5M4G1oV17EMVB2/EmUW6+ot5oVxtx6+5ObwJuoTQ+aXcOo8HG3loGGQN+gS0+PdZs74fa0+WNO1 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JFlLL9xLKJz4FKyDgPsqH1tQpHEVxMoO5bV19li+SqiKR4MSqOc6zKSTaXIMQXIvdgkJswthyKvuTHebH4/1KtwCakNyRXjfJ1G8pzRcvKKOcDYrEl27MoadHZht8vIUG/Mhj0e5Pk2quqJcVT+9PWQlSLSVLIHQvYVi6pGOsQFFr3bR0pYhg4qdYVoPxPWb2zW273SmXyif4GiQGHPJYBDvc7oY6pjz7enGAwqnJPCCkNAKqCLhw2UF8Ep7ltfMo2vB0JGnPJGql1Lyagfa2RkbWBConW7oXQCWyUvCBcaSAkys49y3Xhu70ju7txJd+OtB/hv3KjG2X8fv6TrtBWBnPQ5Ft/vyVSXes/MSOe9llTFDZbifJ/cf84sNIH7PJf1q8i8Ll42dlzePX4b13kTZBgiSAV8KzmJxwcxqi+h5SCUFO/xiV4WGw1klFcPVYXCzUOYTwvdlEl93Tlp93wk3znCoLGx2PIxmZiAVGgfvDtx+5BQjU+OHAjd9j5D4WoGI45/hrkyJbycqaS3/X/kDC+Wx+WYJZFUipoKZFtrprehRhjX/MBcHW4oSeXHWDVOK2BIjzhE50y6pc/n1VF7MmKh+FJfGS55efBVdvdfTdX4tVFqJDiXn93bPPPTiN5ewdGaqF6z0dNkjF8uvvv/QuJtA4mITlTIJ4MGCa3BK2a94DIMSIpg8TVQJENlf91aX1LsVEDuInumPlFbViVqK5EgZinuzCprIh5LyCrotRWBW00OEP4AaYb6VZvTlTDRuPUzspylbvEhhKETL0bSsIL4Qp6hpV41fsIOV6zun3Em0e/bpltFVVfluxYLfE3RJerBg8r/xkE5GtwN1GB2XT0MhPiewglkvT0SgPoLftl22IexPNEXfnAL0TtDiAzsmhdIpMphPbs4aL5vLMd1ZCIyht/+4XqkTbxt2q6+PWFcoXzshSxuToB7bMByrvXtXNJkxchW06asczBvRSOKz+UMXlRaE39ybui9Z215QW0Vl9zzyIo7wYS6bjbxN1wCNfNXeikI72pEXHDpdChWZ2uB/6NE5luFeM040BqLzlz6umUob7AW4EhFJd8XHCdctdr/N0uHtNr36lobVA55tZGRYo1qubBZIy4CNZqo20qeN3SXu2OX1DRLfhdrY3irxcaaPk27XWg8+STS7pg93WKWdSxcZAvBpAWiqtlQfbO/pz6VOp8kwOcY2ATOOgZr+algL7CRHIjy0+gGsrEOhl6NVPr9hcZWNz3Nf+FlSzScZayPKDWYpBB/GuG3xCCBHI5tNpJNkT6sc9SvYSgJXjXT/MbpbAo5amarDO7wMbfe3R3vk8ZDjQF24pPYegA/whuJZEncVyPiFQEj0MaBCKJqTL+fHOp1lwJybC89SoXoNUJZP5gRBkgxUc2GQUFs6pUTct7Ck6dcQA9zPngEa3+OcW1FKfXQXERDMndB3+Ii8ECRw/vox2NdJLSb94MVhqNVPywPvMrsRDYuCgzV337CBq6RoeTK4CVekZJSYYxj63CI4aeNFZMsLbKkI19A9gPTZoSGNmNky6b7AuzaYhWGei/mhEoXuNp1bmL8acZMbmlFALxX/LP3TvisJ X-MS-Exchange-CrossTenant-Network-Message-Id: 4ce4afcf-b328-4d11-ac0b-08dd76e66f53 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:44.0433 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: //FXKYBNf4rrLwBI5tkC9UUZGPHEmoSO4gY4VMnKyzIURTl6+hzJU4nB4wCwUE/h3p2Z1jpYgHXiWvy1lR6xEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" Add support for a fractional link bpp on an MST link. Leave enabling a fractional bpp to a follow-up change. This keeps the mode validation specific maximum link bpp as a rounded-down integer value still, changing that to a fractional value is left for later. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 39 ++++++++++++--------- drivers/gpu/drm/i915/display/intel_dp.h | 2 +- drivers/gpu/drm/i915/display/intel_dp_mst.c | 23 +++++------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 14c3d5e10a430..2944ae0d53e32 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -846,21 +846,22 @@ small_joiner_ram_size_bits(struct intel_display *display) return 6144 * 8; } -u32 intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, u32 bpp, u32 pipe_bpp) +int intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, int link_bpp_x16, int pipe_bpp) { - u32 bits_per_pixel = bpp; int i; /* Error out if the max bpp is less than smallest allowed valid bpp */ - if (bits_per_pixel < valid_dsc_bpp[0]) { - drm_dbg_kms(display->drm, "Unsupported BPP %u, min %u\n", - bits_per_pixel, valid_dsc_bpp[0]); + if (link_bpp_x16 < fxp_q4_from_int(valid_dsc_bpp[0])) { + drm_dbg_kms(display->drm, + "Unsupported BPP " FXP_Q4_FMT ", min " FXP_Q4_FMT "\n", + FXP_Q4_ARGS(link_bpp_x16), + FXP_Q4_ARGS(fxp_q4_from_int(valid_dsc_bpp[0]))); return 0; } /* From XE_LPD onwards we support from bpc upto uncompressed bpp-1 BPPs */ if (DISPLAY_VER(display) >= 13) { - bits_per_pixel = min(bits_per_pixel, pipe_bpp - 1); + link_bpp_x16 = min(link_bpp_x16, fxp_q4_from_int(pipe_bpp - 1)); /* * According to BSpec, 27 is the max DSC output bpp, @@ -870,26 +871,28 @@ u32 intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, u32 bpp, u32 p * that and probably means we can't fit the required mode, even with * DSC enabled. */ - if (bits_per_pixel < 8) { + if (link_bpp_x16 < fxp_q4_from_int(8)) { drm_dbg_kms(display->drm, - "Unsupported BPP %u, min 8\n", - bits_per_pixel); + "Unsupported BPP " FXP_Q4_FMT ", min " FXP_Q4_FMT "\n", + FXP_Q4_ARGS(link_bpp_x16), FXP_Q4_ARGS(fxp_q4_from_int(8))); return 0; } - bits_per_pixel = min_t(u32, bits_per_pixel, 27); + link_bpp_x16 = min(link_bpp_x16, fxp_q4_from_int(27)); } else { /* Find the nearest match in the array of known BPPs from VESA */ for (i = 0; i < ARRAY_SIZE(valid_dsc_bpp) - 1; i++) { - if (bits_per_pixel < valid_dsc_bpp[i + 1]) + if (link_bpp_x16 < fxp_q4_from_int(valid_dsc_bpp[i + 1])) break; } - drm_dbg_kms(display->drm, "Set dsc bpp from %d to VESA %d\n", - bits_per_pixel, valid_dsc_bpp[i]); + drm_dbg_kms(display->drm, + "Set dsc bpp from " FXP_Q4_FMT " to VESA " FXP_Q4_FMT "\n", + FXP_Q4_ARGS(link_bpp_x16), + FXP_Q4_ARGS(fxp_q4_from_int(valid_dsc_bpp[i]))); - bits_per_pixel = valid_dsc_bpp[i]; + link_bpp_x16 = fxp_q4_from_int(valid_dsc_bpp[i]); } - return bits_per_pixel; + return link_bpp_x16; } static int bigjoiner_interface_bits(struct intel_display *display) @@ -955,6 +958,7 @@ u32 get_max_compressed_bpp_with_joiner(struct intel_display *display, return max_bpp; } +/* TODO: return a bpp_x16 value */ u16 intel_dp_dsc_get_max_compressed_bpp(struct intel_display *display, u32 link_clock, u32 lane_count, u32 mode_clock, u32 mode_hdisplay, @@ -1007,9 +1011,10 @@ u16 intel_dp_dsc_get_max_compressed_bpp(struct intel_display *display, mode_hdisplay, num_joined_pipes); bits_per_pixel = min(bits_per_pixel, joiner_max_bpp); - bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(display, bits_per_pixel, pipe_bpp); + bits_per_pixel = intel_dp_dsc_nearest_valid_bpp(display, + fxp_q4_from_int(bits_per_pixel), pipe_bpp); - return bits_per_pixel; + return fxp_q4_to_int(bits_per_pixel); } u8 intel_dp_dsc_get_slice_count(const struct intel_connector *connector, diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index 98f90955fdb1d..f3ca6966abe00 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -173,7 +173,7 @@ bool intel_dp_supports_dsc(struct intel_dp *intel_dp, const struct intel_connector *connector, const struct intel_crtc_state *crtc_state); -u32 intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, u32 bpp, u32 pipe_bpp); +int intel_dp_dsc_nearest_valid_bpp(struct intel_display *display, int link_bpp_x16, int pipe_bpp); void intel_ddi_update_pipe(struct intel_atomic_state *state, struct intel_encoder *encoder, diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index cde662daed5a4..4e607c0853cbd 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -457,7 +457,6 @@ static int mst_stream_dsc_compute_link_config(struct intel_dp *intel_dp, int num_bpc; u8 dsc_bpc[3] = {}; int min_bpp, max_bpp, sink_min_bpp, sink_max_bpp; - int min_compressed_bpp, max_compressed_bpp; max_bpp = limits->pipe.max_bpp; min_bpp = limits->pipe.min_bpp; @@ -482,24 +481,20 @@ static int mst_stream_dsc_compute_link_config(struct intel_dp *intel_dp, crtc_state->pipe_bpp = max_bpp; - max_compressed_bpp = fxp_q4_to_int(limits->link.max_bpp_x16); - min_compressed_bpp = fxp_q4_to_int_roundup(limits->link.min_bpp_x16); - - drm_dbg_kms(display->drm, "DSC Sink supported compressed min bpp %d compressed max bpp %d\n", - min_compressed_bpp, max_compressed_bpp); - - /* Align compressed bpps according to our own constraints */ - max_compressed_bpp = intel_dp_dsc_nearest_valid_bpp(display, max_compressed_bpp, - crtc_state->pipe_bpp); - min_compressed_bpp = intel_dp_dsc_nearest_valid_bpp(display, min_compressed_bpp, - crtc_state->pipe_bpp); + drm_dbg_kms(display->drm, + "DSC Sink supported compressed min bpp " FXP_Q4_FMT " compressed max bpp " FXP_Q4_FMT "\n", + FXP_Q4_ARGS(limits->link.min_bpp_x16), FXP_Q4_ARGS(limits->link.max_bpp_x16)); crtc_state->lane_count = limits->max_lane_count; crtc_state->port_clock = limits->max_rate; return intel_dp_mtp_tu_compute_config(intel_dp, crtc_state, conn_state, - fxp_q4_from_int(min_compressed_bpp), - fxp_q4_from_int(max_compressed_bpp), + intel_dp_dsc_nearest_valid_bpp(display, + limits->link.min_bpp_x16, + crtc_state->pipe_bpp), + intel_dp_dsc_nearest_valid_bpp(display, + limits->link.max_bpp_x16, + crtc_state->pipe_bpp), fxp_q4_from_int(1), true); } From patchwork Tue Apr 8 21:43:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043722 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 1D62DC369A9 for ; Tue, 8 Apr 2025 21:44:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8EE1E10E774; Tue, 8 Apr 2025 21:44:22 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="EhmyjvoY"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E27310E76F; Tue, 8 Apr 2025 21:44:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148661; x=1775684661; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=J1a/QQlb9NTaSXojvMxkgxRxdcxlx/1+T0QYVzLjOGQ=; b=EhmyjvoY+c8nOurGFz6jljy83LEZfCq9W6zyOdDg5BsQXS1NZeeNRuwa xT8DttJfD3HP3ecwxyud/u9eqxdxhd/h/g3V9uP50zkwtJJM3ODEArx2+ tMwT4K1ByNhtwqtOGSCUJhgOzmTuuslxO30xlWR+mRJ0Gf0iBC4GeM+q4 T25E8UY7TCUYzuk8iVDY0gJHGPkQeVZVfknGgEPkQCAPLt6mMALqTMygH VE5J3x3SiVQ5Q5mle/Zk2BUFTJjzHn9V43oNK8QpF5t38lj5Tk9NfEosL vgwHiwVh5a1D00daMigsr8LXmFRiVIJad8Q9hKt/Ap8vd9lrlzBhTPOX7 Q==; X-CSE-ConnectionGUID: rUyrNg3/QGinDy1hE5q+WQ== X-CSE-MsgGUID: TvhssY1xRYKX8u2WWy0AXg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="56243165" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="56243165" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:21 -0700 X-CSE-ConnectionGUID: jgc/qjSLQ/e3ynVifAA/Pg== X-CSE-MsgGUID: Pt3Xrcp3RDGvHsE5ENFtkQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128724392" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:21 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:20 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:20 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n3SKfeHuRG6A79pXwV1+Qwfvy/isjgWIWor6QPlJlOMbIZ7D5EZE7Ao6RE6seTwgoWYn2SRF6d06yJ+EIi63XP2qVNCEn7eYUrM1vbntK4MNTzwztyRHPLxDadKQpkOwLUMgdj5GogCtSYOLctNox75jXLrFM/dLEycLJP/02qO44j99juHom6suxzm3XiTn73zQrG8hXHq41ovOY8p/mTehWG0j9YVIKXU0Vb1Tdbw3g0UEGony/nbv3BF172z0g4uFm7AvdZ3mcTtjml34VDPvccDGcCogyov18W6hG2Ql5bISef/CBklRjObuT5zzFXnBL780d7koWrZ5XvTCVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CeDMLGcO8Yh9jHQe9qWWfUYWoYqwUpLmFQ+bLOgB20g=; b=TfkVVQLUcFEKzENUK6X6P+ed05Ef0XTDnRbd6GB1+Oa37U4APx91vojtwEJIA3VV1gyWeB2c0vGKA0qO2OYq6Gigh6rAHaSPuYryjGROgTjau4aKw/oyOlK5hlp1NhnxKzLgfgNN3FO+pRxJ9U4svih2yUk+kzfICuMm78u6vTZa6138/TBFplBPeA4Nmds6t3eqSTzsdbdceoLIbZSyju0Aj1Yp5aQjzVyuJX/v9zSZ7Z6Yz9S74Fb7Q/qUwP1L08m6qaH2Z5UNjd0SbG4ZxavqGAqDBCIYIK6N6gYbyF1YDs3jGADcA5/Qd5v64elsPypNeeY2sdro+eSNilet2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:43:46 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:46 +0000 From: Imre Deak To: , Subject: [PATCH 04/10] drm/i915/dp_mst: Enable fractional link bpps on MST Date: Wed, 9 Apr 2025 00:43:34 +0300 Message-ID: <20250408214342.1953197-5-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: a71c66fb-2e8e-4ed1-f645-08dd76e6700c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: 0CjzH+GkANvAKWmpHe6yk77vpCkKkXSWo5HxCg7faCKDfosvxr9sP+dO0zRktOCJefC+vY2t3PuMZqy/RmLFGmzw21y1WQKCyO61b/ZFgEmKyr3qJklkOUl2N+pCMnCe4sIgGtnUZn3cpiKaZI/ESKFq0BBNoW2nbPYtjFHM4r5mW2xR5adHWNbYkG4MvjEKnPE7Cct3FUljZF5NbZzAYJNMIvFxXfUTRonUj/iILE2EOjM+L3pGCWbCjJ6pZuRnb4rWmEYDmIic5MSkJCoSGwmT3BI6RAMNvnuOgGvoDQYeZRgvNAe/srYOnSGYqFXvpUxrqTLKTfpTiooE5oMwEvcFUQ6z+ie47JMm7q8BxZYk03VZOmxv6pjVeq0245l+v97Sljb9/QSQJBZjb+Eoc5Az98nNjFZQ3LdFCmwf9WTQU3W+aTiTc1Gdmxm9tl4EL0y+jMtpB9GD7q2tPPVBqgP2BSqLnY+raN0LbQ0B6Z40bLF6hdT9mxQBxA1999cCbz7YZ8CSFXfDFAybUAYyeDwoO3GtIiUrrKaKTTg/7hSlhXUiwFFkJZ0nW48GzWAa6A1Sm7/3VtsqGB4zEDhmQfjBjJDwbVbULBpAi5wCf1vWgc+K47aJlWccMrYLx3nmA/qB0cKtCroKDbhBUDdQiHlanmTVUImtb5fj+EEhcYvGfyp2BAqtwD9WCzhHzdETK1GF7HDSvz+MlWx4eN3swghgNWBgWmamKCKahtTp27X4pEahVc0Ts/d6mRygKCfmGzBheTCD3X1QiRuPkrWVIt2Acdc+x0eXA0HbeZ2Q4+F+RcTpmI7ToxbtA19Fnrq15QMpGW53hNE7bvUpI3LBdBzGtEp3yeBvHGld6yFd648fzWVmfzBPCbd0ZVk6w8jPNnulH17C/sse5HMDzydoiJT7EhNz9nGVM4iraE9OQyBF8LXF8Lu3bT28TsIe9dHGqGV9sK7muJDnuSGZvWTRa1fMKP93sz5Lb3C/G+N6/QuhOR0Q3zlOoL+mhC9XOKTbbwRKTbt+H2CL1MgQwMd4vcmDzptimynj8KDAwlkm+iO5ao/ArVeg7Xjz2vFnUXuRoi7YsRUfJ10p/wDjnL9dRNh2W+GdyPTt/l3kndnHfewLQ/0FWkg9h6CQUdPON0ynPxitNDbpHA0uaekCQRqoMNY3bm1m3XZvE78Y+cmAP5HzLJCFDLtOSpmSDpBLyvArvAC6j4Imb2CUYg0uc1XJVwzsQVU8oK/62spFc5HCEFJUcGdLD8e9OJ8wWTLFPzFsjCbflWF+D4OtCyrHsK0cfcWm+CHhKrK99rtBSQtMFGC5YAhNQ8VorEHNygZuVIDtSpKG1FBVmd72WOH39PLkpZ8pY7AREma8kwL+7rMJxx7xYIo+AmcgiMlBcygs1T71 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DWh+BYe9CM9tHUlMvGRsF4cCScr2QgHQs3U/NMzbjJ4C7KMH6AXQwdGX6nfMStPC/Maiv2WaBP6yDQeN0Zoopju0G90grE+4cykmXP/ojuGoqUXKB4u7mXJemhuUdFNO9qgEixeBhXOiqNoOm45UP5HUj4yjRFZhn/KB3CyB/FkdfA300chrubnS6WRgpj2t6kcIYqsa8SYEIj1DtklsnQxNWYuxF7VCdzj+X9GmNqNKhBBCBfoFL+Bpa2y3Y6BDpHqoVcTpWXMv/ILptWcJMsasI3vHWOReiDiks4mK5Ord3+pbiziiBULbWDOycUDOydKTkleQNB5vMXYWk5JLuLl5aY0vJWQNeD4DTeIgu/vIjfj0iDMW45dBx3iZDb6ZDZc1GhZl8u3No7Nk0tKUZXTMCvoXWTOKF+O8JhpHzwEm5FwL+yUc9cKFrZh9GyZam+hvBUkoA4WrCnv9GRJjZCDN2q6SbqokYQtWNLYY6roq3btP6YLK8iKLgJ+UJP2jErN84QWoilS6XsXdKwA5MgU7nWqrj25ehb8GfLdk9O3KRr9eP0Goc2UWhKUxYjuK4DyjuoEYYvNhxi5aOXpMYZ4jAuo9ELEDY/W2ssSGlCkpO5va14esN2dvSHCofUxrc5CfDyukPx1UjHbFr6kxNDDjbntvBgjrD9GxS+YAtqw6KAluYjOO16FGytrascf6fYafiNGedW6IJqH+cswZXWfZu9cQ5PHnuPuOE5fnYU6C/wD9mX6asTDRRHBa1gRdcn1iGApkk3WF5jE7IjB6zV1I8Qa1qsbEJFjsAStDWF8I8VSfV4WDg7MgH1zs5sQjbF8wqOR4eDHNegMe7RYm9LPQgjjduhNvE+rczqFE0tIDrGYStKU7zJtq9oq1P/1gjB+Kcv/h27f66GLrvIyeniriYiJggItSksvqSg56p3f6/L+8r1JhRjw0DgZdWOSM4sp3BkusakmdekCXlqj+uVYK/eiSHJLEyQ1PGYwE+lQsllnx0f3DX3GVaaTg3DeWGqMdpKzop66Gp280AeLjv/ZNDQIjZyKzwWOfkEB05HQbHpqk8AJgqL8enWd4k2p1aZxtlEzdOLZ6/CFNUpyZ1finL/EizLbdpCjlwUz4KKCa+c8PLnNGyzg1IZC1aQQWKRWDy8K3cfq5rj9InSAx3N256fAjH2ZE00G7uWXBHXl+yNw9ntowamqAQCRBSXAVkS50l9MKZMw6BeU9tqomb7i5zNufgXNin674QkGAIuehde1eFNsXTfxJk8SfJKVEzpBc4qUaIaOexfVGema9wE10OpUs82oKCIo1eQEf60TQ4hiGbC7BMPLi6T9Xpb8ix+2jX/6OgL8orRzdmzLQPQa6yQm4IjuF143Z2djI4hnLH+2CRe5QSm7OjIuw/rgC+oUDCbAHF8BjZe7EueIMjHpHhoCElrTMnBJSzqJUcfbiOc/z32o9S4jiPuAJi+Mm04F9GGkT+xqvVV9E9+MhyarnsRowdvNB43Mq7P+4m5kb+0+3LrDjciPJ2H1MAzIV42KK60H3IIPVKmfi/VeZpmaFamD//AF3posJ2ma2gwaxB1r8vtLjkmKI3epmLwQF X-MS-Exchange-CrossTenant-Network-Message-Id: a71c66fb-2e8e-4ed1-f645-08dd76e6700c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:45.4345 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KyYWk2P0isIQ6pBImQENLVoFsdLTGUkocyN12w4JrauOIN2LJvnd59N8urLhD/8K9etKj5y2SGCJ+Mi8ZbtFjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" Enable using a fractional (compressed) link bpp on an MST link, if this is supported. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 2 +- drivers/gpu/drm/i915/display/intel_dp.h | 2 ++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 2944ae0d53e32..3cf8d6510bf90 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -2103,7 +2103,7 @@ static int dsc_src_max_compressed_bpp(struct intel_dp *intel_dp) /* * Note: for pre-13 display you still need to check the validity of each step. */ -static int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector) +int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector) { struct intel_display *display = to_intel_display(connector); u8 incr = drm_dp_dsc_sink_bpp_incr(connector->dp.dsc_dpcd); diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index f3ca6966abe00..c974e4b97338a 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -210,4 +210,6 @@ bool intel_dp_has_connector(struct intel_dp *intel_dp, int intel_dp_dsc_max_src_input_bpc(struct intel_display *display); int intel_dp_dsc_min_src_input_bpc(void); +int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector); + #endif /* __INTEL_DP_H__ */ diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 4e607c0853cbd..35214d9a8c781 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -495,7 +495,8 @@ static int mst_stream_dsc_compute_link_config(struct intel_dp *intel_dp, intel_dp_dsc_nearest_valid_bpp(display, limits->link.max_bpp_x16, crtc_state->pipe_bpp), - fxp_q4_from_int(1), true); + intel_dp_dsc_bpp_step_x16(connector), + true); } static int mst_stream_update_slots(struct intel_dp *intel_dp, From patchwork Tue Apr 8 21:43:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043724 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 4215DC369A7 for ; Tue, 8 Apr 2025 21:44:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BEF3410E76C; Tue, 8 Apr 2025 21:44:24 +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="SjsTDias"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5246C10E774; Tue, 8 Apr 2025 21:44:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148662; x=1775684662; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=ndOGA9kvjakkIWeijG/lLd38RXHUq1aEhwt6D1CEoGM=; b=SjsTDiascxiUTbHu/1XQM3Ay14XYNqYfwnyM3i7lUNe8fqwv2F4a2Zev YtjC1r8LUDgq7uM/tUagfx2kNA1iftQVsLlP806iVPUrZWSHvUQPLKaeA LBvWRELjtNg5EZCqE1bzmUv2+iVVjiWbC2bXR/qoqV7N1bOkg9jhcmVBM Vh6gxMk1Q++3DVfULZcqMXL0ZUM394IgieYFf1VQd/nKXN5o/oePLIj4g 5u8ZGB4M00d0HGRdXzeElAI06D6PLpU6IqepKlxK5Ew8g8BNK4B55GOhf SnLApz6DA9FKZuB32n23JwTQ5+ow8WBOxPsPZ4FviZxiu1F7P+gvzvTdC w==; X-CSE-ConnectionGUID: HuAf7DuvTkK8YzD2JOkfIA== X-CSE-MsgGUID: LNpnxMpqTweiLwAYdmPkVg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="44746781" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="44746781" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:22 -0700 X-CSE-ConnectionGUID: uEPACcojQoCzaOZwtXpWNg== X-CSE-MsgGUID: taafNk1+RECfNQuMarb/Iw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128381247" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa006.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:22 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:21 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:21 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qslZwDyS1yB6QIsX1iCr9+zuDGr4GsMKHOEifyaurB/y/43WVEYUoL3gsTC0IA3ZKwKH2mrBIUXSwj5KQmlOX6wL5FU5G8nWZhBeqXLEYodjfrmF/09lQ8U4ozxmp7qwjdl22iTWClk7tT6aEYzIxPtgQLRQSia8VrrWOKZ201uvKEyRAN1uy7eGJVSfRMwU1qlX7g7kBXAWvO3npSHetIaCTTzwtV9tKoJjRTt1dYh4JddfU9Ch8Wf6aYVNTYG/Sm/5JEhjvuqAUcw/mNipOB4pldaRvOw8ey4YCR9Xt0hhiju82JQv3hBW+eDDSk2kPLla8V0BX0TZetfumqKxcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=apqyVXvNOQyXYxFiiGu/NQ+r/+ubm7a/awy3/PyhA/Y=; b=lCkGXpteTmd22sGVw77P9MtlRLDeyFO4mtKL8x7C1MhkwM09cZp9hFDzGe4+Ba23EXontZPDlV4PxByrYtQIBsK895czACkcNwSb88VHNUYqF9AmK2NgoppoeRuXY31na14tKK6vgh2UasaVi5UGb/oMfe+vOgloVKeRrNMmTNcgV2l3WYXHSTobbFPcjW//OGrrX9tyYcm0HtesIO88NixZCQCMwTITk2xk3bsQWSAz1ivr++OdBTRWebuvnfHtMlVeZH2H0wrdlSnBkCNNfgI0YM4weaXYohRfSaXHhYPza7g+FYH6bpvCigzmHl8GY2DG9UGC0KLNSUBZjcY59w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:43:47 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:47 +0000 From: Imre Deak To: , Subject: [PATCH 05/10] drm/i915/display: Factor out intel_display_{min, max}_pipe_bpp() Date: Wed, 9 Apr 2025 00:43:35 +0300 Message-ID: <20250408214342.1953197-6-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: 55d7ee8c-9039-4074-0010-08dd76e670e6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: SEo/2NHmUU5Bp6nRhsa450sgAbLQ0JDGYO/JRW/t+ijc6JjO8oiCBCEEWvHgVOOqjCWey7Bn6NtHlY0x2YMEK4aJChjB2FdMlpsglbrkyS3WZotcOgrxIEcSLOAbBHlymCs1gRTsV+Pq/zyl3Y3ACWE2zDs7Oetn7nMHMlzkzVh3OJ07zU+XIRuAI7ohCJbgUAXf/igxY4SWXq1n5kC7cIGKyA1iodzYF2JLdUTdXPlzFgDt9mzONqdtQh17JE/9+PLpcb2OFPV/6kQ9emUuWtwa37PWgEsuMUvmWhy/DR0qzgmFycof+ltpteuPf5GIzxcXsp3H1t6P4Amx1IbBF8QvzZZSLd1lQKHOeDvZCUg9ifj0Wp04swe2rqLpBmUCstEwzrHiXSc9j4Ztw/vvCZOYbPUv/DsmOdoFlF7QQc05lw6Q6zpJUz/XoK88fP6ue2VuSqYR+QNfYRI+PSCmGaqWjRo11LFZEemOksMLlapC4ADnqFW0XSEODWIDgTrEcBD7dKIburpEiEwjB3Hk4Ka+n7UZ6kTtyAx8CIUhx4Uvn94e7uqmCuSuGRXSHHS0NoovIdft6t0erVeS7ZlfC3QcQgQBNxNfjM/mfeMPHVNQhJaHn194PBTJRDiIf0lr1KtLlT5LOzIoRWZE5+IStVd1Y5F53nabiLTE9yqgNZ0LXT8LFxtQV877JKRo6CnDqnjGBwbHNo7BdtlVi2/A10WZ5mJZIjPKxpfnC2keuodZGSHGRTNOtE0B/J+se0rEQmnMHIobmlErpBG6zcoX789BW+G1u8X+2dhujks0WDlGTIwm+0CbE2D+25QGYc7Cbw8N1gO97jLBcI7Gf2f4zCvzxRmYY6PGD1EzFja5Xm/IuD80kAy78w4H2UaF4REPZ4lxUQEllP5AViTvyhbD+T8kTN1/IP5OjiC1dnQ6uJPCULDB5qSyycDn1mNLYaWgKVXp9QIAuAihd3AMrpeXp1sh9wzSjoDXzzeFMXtoZAM3ml3hd4mezIvVqHQfDJK/EMd+cdV/FI0UFlnxtKJXa7MEzKRjYaPu3ATMQw6N7w4CLXn+4GZXXyxMrFwj+BIyeIDrpDRcoMCDMemsWPDOB9ufiiakpJ7X2uFm0xOqy2+UDbIHB36lHSdJ6tfotyLOmRYkkuZGJ4DDeG0vFxYxvYRwhs0QG0roG93vnXK+YC12aYfqleqyowI3Xa5jQDA5BwsDs2pxJnMXQ4KzwirRlQYdUzsWbbLN99utM3zxzbN8VLHh/tPMIve4HB44aCWtFXfIyzJ1UiWXiHcdpNsNet7SefhT5PTr3IsilwVwhs8Brg5MCFTo5qjnZUVPSLuIOm5fIz7Rb7NmiF/vqZu60iUZ/p8QdbTt9Z6lSUlhPgLiQTj2vU5TOxV0+AqGm3bC X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TU7UxNqe5KaykD5N0lZJkGGGSBhjuGb0wcO5btEFvGWJndfqp+FhoE4ufHg3SZcSU+CcN6aOFR9JlbviMMU9dsXhJzErznGXRNh5rEsTPOdVAZ/AciUHz8+TM5D35iIChcFtzCZUaSf3WGejPHK58MvrPHPWPfAQZ5e6P1j7yg1OI6a+7mt0zlqATb5gfAxbxoJdUe22mL88EZ+W17FDTVpxBWqPg3aEZscGUslFsvZvSozr40RcvS5Cd4YarbbyfkrZP3+jVjTzM3IoIowamIiAb0fS5Wn4/wYR1ghqAxWI2csYQm9D4v6TwGYiWrsZNaCBOtl2pzPTRd2ELcfvaIf8fzZYHLVc3b7vJ2gSReh/FPfPhwFprP4scpj/shJVryi4QBpniyg3ShaNwSSBp3+PWF8MLfNpMrxM8UL3pBEY930509bLqcJFyJTn8r6r9X9t3nuH0dTQalWTncsE71qYuyd13KFuLYd/1xWQ0yKxBP6dEkE3bfOA8J9LIaRnU4kAhkIlNWHl2Z6u3gzHqwiUNk2DbO1QZkwarzP/WEE9AXTaHCiQD+67RaavQrmfH59BRiNA/62hd+Jt/M+gornELeyotFVw82e7B3ifpLDoMCZR90paFfDfgE5CL7UfHydO7O92JgJM2lv0vKMo6UIR815FXlGxeVMLYVxwv3PbN83f5fQyQoh+Dj69QYvy2mzHUMEK7T7CRkMNJdRpB3K9PTE37Evvp7/g+PbowNwg89RZbxCZrfLTkkQgS2RB+LUD+/cXgyPjH05pWD6f82n8VSWmHV9AiOJYQ7jcoiKsNIzYWzfMT7OaBsvCwrXNR0DlPpjw0iTbbP9/+CD6+RToqU9CdbHBItlnAyN3Jn79onMZgOQRo6cj/FKVhfyFAVTgvK2A314gDQuSnPSCDKoqJnlFj14dK7QuefBNeXloZmOKJXmxHjHD5NyhhG+HSSL7NO0YGE8PdU+MBvtLUzWm+kNtFXuS9eaH9LWjs4gm9S0/rUOz8iH3+1bekPbwyVy0KRXgnzn8/o/iAW1MpWWKPoY9pfFbSJBZmb5vrAtJWv0gRGtEGb4AJPzoY1+T7VL0Jo23GZgc2bg/eiwy7iksyNdNurhZGAU2HeJTY336966ANd7uWcGyzTZxoXd3taAcslCdN1e7BH3SpiUBLKsryGwcE/ofrvcXhxiPYp2TVXzdDRTJ/xZmYxuVH4d2KhOwUoi2t1uf68tkR/LyJ7t9HSP/r67mWsL6Lz037G1/DwPh4ys9I2Phxs0Vojfu3zyw5kqa3Sd8JMsl2S5fUIi6j8t3JhDdzk25go0OXtqfAbq6pNvpjQGEMx6IgCL5a/8k7hTceTb/CSUVuG359Wy1e7bioF1COEJYEG/ZePmv0C6pDBa0km/dQfGlNrYhsoEQt/5nukAlGBLU3yTHZ6yQGJ7kt1AlLWODhBdxw8SqcL6HCS/41W4GuGfvkwb2+9/MYzLGIr8Kxg0WIqDAc5U72FO2VKCuzx+xEwdpYL0OcU77bCn1Y7MPcDaF7zS08LNGTerlaCew2mMr+qFfb66YvdTS+jFiSdisaxSxWU0Zybt8oT4kofDK0kpYYBiS X-MS-Exchange-CrossTenant-Network-Message-Id: 55d7ee8c-9039-4074-0010-08dd76e670e6 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:46.9203 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dGvAAteWA4T0FHM5/qtD9hPuSi1E2SKuZi0fLnqFtdizUUMUTMQpwbE07uWjcUyZU9nvwH/KMrK5TzK8svj9nA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" Factor out helpers that can be used in a follow-up change to query the minimum and maximum pipe bpp supported by the HW. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_display.c | 28 +++++++++++++------- drivers/gpu/drm/i915/display/intel_display.h | 3 +++ drivers/gpu/drm/i915/display/intel_dp.c | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 16fd7c00ba010..621cc581cf51a 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -4317,6 +4317,22 @@ compute_sink_pipe_bpp(const struct drm_connector_state *conn_state, return 0; } +int intel_display_min_pipe_bpp(void) +{ + return 6 * 3; +} + +int intel_display_max_pipe_bpp(struct intel_display *display) +{ + if (display->platform.g4x || display->platform.valleyview || + display->platform.cherryview) + return 10*3; + else if (DISPLAY_VER(display) >= 5) + return 12*3; + else + return 8*3; +} + static int compute_baseline_pipe_bpp(struct intel_atomic_state *state, struct intel_crtc *crtc) @@ -4326,17 +4342,9 @@ compute_baseline_pipe_bpp(struct intel_atomic_state *state, intel_atomic_get_new_crtc_state(state, crtc); struct drm_connector *connector; struct drm_connector_state *connector_state; - int bpp, i; + int i; - if (display->platform.g4x || display->platform.valleyview || - display->platform.cherryview) - bpp = 10*3; - else if (DISPLAY_VER(display) >= 5) - bpp = 12*3; - else - bpp = 8*3; - - crtc_state->pipe_bpp = bpp; + crtc_state->pipe_bpp = intel_display_max_pipe_bpp(display); /* Clamp display bpp to connector max bpp */ for_each_new_connector_in_state(&state->base, connector, connector_state, i) { diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 3b54a62c290af..b6610e9175a7a 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -524,6 +524,9 @@ void intel_plane_fixup_bitmasks(struct intel_crtc_state *crtc_state); bool intel_crtc_vrr_disabling(struct intel_atomic_state *state, struct intel_crtc *crtc); +int intel_display_min_pipe_bpp(void); +int intel_display_max_pipe_bpp(struct intel_display *display); + /* modesetting */ int intel_modeset_pipes_in_mask_early(struct intel_atomic_state *state, const char *reason, u8 pipe_mask); diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 3cf8d6510bf90..881852390bb81 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -1199,7 +1199,7 @@ intel_dp_output_format(struct intel_connector *connector, int intel_dp_min_bpp(enum intel_output_format output_format) { if (output_format == INTEL_OUTPUT_FORMAT_RGB) - return 6 * 3; + return intel_display_min_pipe_bpp(); else return 8 * 3; } From patchwork Tue Apr 8 21:43:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043727 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 AF302C36010 for ; Tue, 8 Apr 2025 21:44:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 43E7310E76F; Tue, 8 Apr 2025 21:44:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="QMeSdSuy"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21B4610E76F; Tue, 8 Apr 2025 21:44: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=1744148682; x=1775684682; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=x3AvFi/AIQVe989J5exxA/GVQHTIf0vs/L0FvL4ChEE=; b=QMeSdSuyLSvFnWPRcotn7MGZmVAfaqpo+JvyQ9sr3stUjrbm5RTRvsiH fRgQh9rbKOysncZTu465klqwpRqr8CiLJMqxuazhdoTmIziuWmOuPfgYH 5HVfAyewsspes6/muLZvUDGKPVDfjqgF9kaFoGdq6enyCyLhlT/GsIpp+ 827aEPgeva+D5vdN+s1xnocba23EfHlEfimVrgyeuP21SaWhvVDpOVFkN PiDZMjEz9eATDKqttQSidiErUopb8FI5lfuovxo4Yy0F4EL106L/sswnN mMhlE2KQEe+6YvxGSNeWsMMt8o5W8GC/xJmR4RuSoDD62g1thv74256OX w==; X-CSE-ConnectionGUID: stuuu0PPRcin2sXBWdkfgQ== X-CSE-MsgGUID: X/+Rks8AT2+g3zG0HNhsog== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="33209000" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="33209000" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:41 -0700 X-CSE-ConnectionGUID: s30GInjkS/anSsGWWwLhfQ== X-CSE-MsgGUID: YMlfuQv0SQG73jQnD5TjTw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="133258700" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:42 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:41 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:41 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.170) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I7XaDXC6TNdBs9JeP0kUN1dyDBZn6aMF4mlAYuy+upwSSvLGjlV00M1oTTWd3oNVyWu3foDUgC0WF2Vouhtn215sP5kn6rSiyPV1lkX8uTGZYfTGBLNyClLXDIp72zdzY1mfLYOXhAVxhyrvXo4Rqs9DiGBr1Aq3t1iFSaY43tF92vggZbj6AcjvrPSze0AD+VdGWBoUwa5T5L2WqjsDi7LQczL7huDIYvnI+UEMZl7TtO2SOP/LNjkC7a/0YiZK6jlPDYftvOeLfOSyzyNON5pudGrx/iY1mqyXZxp1J8lsKHj71tKf504+1l074ohfzlkYRmBtGm2ixb8sqNOg5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CXAN3P9eP7pNLBRALQd3Ya8GNwluszWrg/52yzDCfag=; b=Bpf/9mALHP/TqbRs1CIoi58kxHmrQmzJAdWRi1n33aatSYv2xSzz7JrTKdTO3J6iQ0+MEEmKP5+kBzpE2mJ5GapdsRW0eQ+mY7jkCgMdgWX2apT/saKZZf7iO31hjKhN2M+n5lIZcGv/6V6Uy+6Iatp0957WZUczi0+IQPArU0JZ8dZop9LP0TV7ETmgtjIQgiRwBTuUzQ8ZBtDoGT3NDJkmjOL7jL3PCe15Ph5EKHnl6KY0qwf92BV3VSAYkgS2XtS/gDWZb5P9yUAFUc84gFV3p712xn1TmMCuDuwTc8BXYc38coNKNhxe4sO2eBOOcaEZKp0OaCBLb5Ij/9TmDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by PH7PR11MB7516.namprd11.prod.outlook.com (2603:10b6:510:275::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.34; Tue, 8 Apr 2025 21:43:51 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:50 +0000 From: Imre Deak To: , Subject: [PATCH 06/10] drm/i915/dp: Export intel_dp_dsc_min_src_compressed_bpp() Date: Wed, 9 Apr 2025 00:43:36 +0300 Message-ID: <20250408214342.1953197-7-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|PH7PR11MB7516:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d5bd074-02ba-48b8-add1-08dd76e67230 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: AUyFAgVtsojacQsDIUB6bmqejE46HEkrlt5gZOzDBBrTYnAhN2WGfyaz4+dq1vePEYB39cDhINWKCorBWYSP+LEu+MBS3n/Hg+ouk1VfWCCkvJNTQ56ZurA3iTrw6/BUSCo3csMjm/ugf8HL7jk+WX2GxsNP3JbL+8hlJNgHIxbwLyh+EtVwOOelbLzMHR+KKjIGO0EraWt69Bv1osnjQz4FbZU70GSmVD4W4a8PganAEWID3ou5GvJZ46ITCfNzHkiD65VVC2zb1urJBuvOxCHfWFgW/LRUlLf/vKr6pLUIEdT5jrj0vWPcg+tF98jc6T9ZAk17hGZqqLLQPJ9zTgnbfM3CKllHVBzmmobI2AQ4/CnLXJ4jfIjlrsSJBHAU2RRDx9AQv1AgtNvKxa6JAgeVwjI7zhVfoZnIckTMJHk9JNjIVyoVbHtAQNvovxwhfY5d+P3sEHf+dpW172MPLSyyzBVan/mre2F7tfUpJOngKiS3p/j58HXVkQZ3/LXeRHRWR08R3iHxl6ISkQfphfgKuY/u65f4dmlJidvj43bJLnjAlkEQtQwcOYUbyoj2j5YhDbNci3IlI/1UZCPXF307eMNL1ad+DojxdKXPZfIbb2ErXkcXesakffNdgMlt+/VIcLW3GtP/VMqaGauyK5OXhc21HitKeeCBr5ochRklDE6tqhltfE16tPC/WMi/TP2Lz7ZSwotYkpIC0co0JI5HuJfS+gnTL7Y+XwiiAcyIe30PH+2Y5GdVDLBbpxcdm+YMmWxuVi5axMm8gBbq4eSs4OiRLq9xJiR558FL0UTnXQgHlRPwyID9py2now33IhFFsRBCP6/SjCWZev8Tq5DYPK9Jn+fLn4LFcbRkVmIfSzDysaXuFQrSOOjFbf7h0vY8vqavwmD7PbqGlD7FRsOjtSequ+BkSrKOnBnofo1Ce5FKb9RSaZSMIvRNJUCVDLZ6dkxBucIbgbbb1XaidExXudPWh42+x76zecaXrhDjQ1OtTFyMwBCJyRh7t2EJaZv3O0P/XSy3CXfR7SwaKE906NgT4ArSMSUhIM7dhSQpDQ7nxNyqw7HC99ouzQwd0R+xhEfEYCwqcP5D/NHPnDNNUZ2/vjb3i92jOQl3QCBkux9zY1rzWsik3uKZVkevxtRc/tkj2B337qNgIpI5btrXJDvoojFTF8fcZJRKhwuoRT5U7/yrt5ybf7tare/q3D50hdS8JZ4WLVlgrFISHuILI1uFn8eqx1qmzsWg3LH4vT3xeDxbIQTHyp+60Fy9UudycgW/bxVxTzQDh3VWiqbZyC6dxWdRMQn//3NOJW1IGhYH6K5sU6BQY8Vyk8ZYyEZhQ4XBeA1YriOSUcAONPpBSlHzur6LzPJpOpbXIzrcCFWinw5NFfX6w9QgnYDy X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BZONkoyYxYANNw0qHhBgqHuC29nnTPfSbn1WAkd4SZma2r8ptpKPzuD+pfm1ugbYAJSuRM1E5LYg2ogRud6eg0mteSXq2LNVNz2fSuUcLne5QrWVRvt1oEdZl2sPKxLvBNSgum4OSwphkA90rc7E9BuaWaAUhFUgbtrhJjlzwufrGhybZuxfNBURRWIp6tD8w4Hx6p4r0rYRnDBoUdjPwBD7g+8AxbFcY06hV5kX00HcRctDbigiUtfQmDZ1CvhVUJKzkE2GNnmfbyVozvDc47YsJaRECO5ldkZgLJwsqEhtZ2+VImmbknd3eGYT6BHelzfjYxwx83ZaCwUiIVqVxdQZcDnXE5PCPX2jF7BPbThq9PmFb7UGMhGzfQ/evu6Ci3l7zw1tqq7tQCMfvnwjsyD64mCgpv42V0ptbCz3iXtt+LF65zZlX4CJet4gQSeIzcRAO9jdWmuB/7L+qppiJg7K85uCoB6RXPdNk6O6qi+YcY4v1arfdTsqz14ZQtoNU7APm1UhJ3n2fH41IqbUoUW4t9rPEpr5x49GHN7LnGGE8B7r/3V9e6xlnykDOctZpj/YCaPY6VdPkiKqGc9ur47d0c9KQqL1WSZyQRpij40v/U0qy7mLgGuyABz5v1N6Z6b8Il3MSWDgEwQS3ps1FWHCiDLivgoUcP37JF2+OdkG/papW+46qLVN94mo+lbofw/nCNUPQxeYz8BtuUWt2JTZolt8N6bvxOvh6dREwidFENRdDJorB7wGGIFFOUQojupo0na6MrRZR2uR501IdqouVJu+aJB+2+pHuguTanmYWVkxVM5vjaWV/+emIEeR0tXTMixOwMG/cRxsNbf70ZPL2EWDpV+ORftU1TVvkCqe06iZDRn9N2d07wsOb/mzUMOQ13J0EpXgwiohSB4egQ1CRyqB1SiFyO5I+tfIy4kap6MfUrFNLudLWHu75MfX6LT4mYVrEI8//IeR+j+k1xfAMNzOcgxpaI1pSjkl/74ZD25dDjRd5WPTUiGxtEdqoLh/6zIuzKw72LarjrWwYQZkgk3qziK2Dm5cL5Klglnoq3ISLD1l9NK2do0NGQjCaVmbW7+u+X569ECBBEVDosyMLxI2uA0mlruv6sMpUvOEokj2c3i7oTlrF5FS6l6PlUlS3eMutmyOnp8NZ0CVbOADg+ZugoqmOXX9zaewxTU6YDhq2/VGqIL4E+SoXkZDTKQDPYpWTTQHnf+iuskjtG6hKHgsqDotsMj4eUG7veXcz0jFCA2L2lqyKuMefz6MZe41tfwDxYj4mYUIDoTn7o6M51kOhfg7M48J23J6qjnZKm8zs7MRrAPGCP/WMLcgffMz8FJiD5f2tzPHmRtT4quwjGcC4wYU3dGzFp8lloiZSnnZyMyPWZ/OFOt5RrBeVTz1B85RKc5+xs7gwasSvf24rmej5ZA9C8jWN3F/DPqBGtj/SyyNN4IrJZj0EzDRHvpw8ntgAu2ww6Au7+X1/2lWzkovF0p2g2KeYQaq+RUvw1Xe0VxNSTFidJaVdTsXlO7XHj7nsXplVMsRHDbo3ckkC6F82/BkmmjghMiPlSjae+cmD/E9+tdQB+gwPfgl X-MS-Exchange-CrossTenant-Network-Message-Id: 6d5bd074-02ba-48b8-add1-08dd76e67230 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:50.7519 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: I0VVjnpSP8PYtaRla9QQFLlFDSs6O7Dz3KIl34LKzoDPMimrKbTmhYaUAcXYy5u6JkQdgbRSicgDws2lh8oOaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7516 X-OriginatorOrg: intel.com 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" Export the function that can be used by a follow-up change to query the minimum compressed link bpp supported by the HW. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 4 ++-- drivers/gpu/drm/i915/display/intel_dp.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 881852390bb81..9c15608cc06f7 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -2071,7 +2071,7 @@ int intel_dp_dsc_sink_max_compressed_bpp(const struct intel_connector *connector pipe_config, bpc) >> 4; } -static int dsc_src_min_compressed_bpp(void) +int intel_dp_dsc_min_src_compressed_bpp(void) { /* Min Compressed bpp supported by source is 8 */ return 8; @@ -2475,7 +2475,7 @@ intel_dp_compute_config_link_bpp_limits(struct intel_dp *intel_dp, int dsc_src_min_bpp, dsc_sink_min_bpp, dsc_min_bpp; int dsc_src_max_bpp, dsc_sink_max_bpp, dsc_max_bpp; - dsc_src_min_bpp = dsc_src_min_compressed_bpp(); + dsc_src_min_bpp = intel_dp_dsc_min_src_compressed_bpp(); dsc_sink_min_bpp = intel_dp_dsc_sink_min_compressed_bpp(crtc_state); dsc_min_bpp = max(dsc_src_min_bpp, dsc_sink_min_bpp); limits->link.min_bpp_x16 = fxp_q4_from_int(dsc_min_bpp); diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h index c974e4b97338a..01744f9ccd8fc 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.h +++ b/drivers/gpu/drm/i915/display/intel_dp.h @@ -209,6 +209,7 @@ bool intel_dp_has_connector(struct intel_dp *intel_dp, const struct drm_connector_state *conn_state); int intel_dp_dsc_max_src_input_bpc(struct intel_display *display); int intel_dp_dsc_min_src_input_bpc(void); +int intel_dp_dsc_min_src_compressed_bpp(void); int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector); From patchwork Tue Apr 8 21:43:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043718 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 19551C369A5 for ; Tue, 8 Apr 2025 21:44:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9E1AA10E76A; Tue, 8 Apr 2025 21:44:03 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="VAyYXsT4"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 09A8B10E767; Tue, 8 Apr 2025 21:44:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148642; x=1775684642; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=7UV6eFs7oIb7e3AHAVcjwpJddNhurkjn9Hpkb8ENBM8=; b=VAyYXsT45NCpDX3imAH3mpCU4adTpH4w5ig0yGPqNlTiftsMC471d7Jz jkYMJ/bbyHSy+El7W9YAFvYyeaGntBrYzWOSkB7GVWg1wHMfGrNLUHNKT aSQRRIU1P1sr6nP9hTvKpAVwpoACyF2nsqwPoKIfJnwM/QP1pGQKYacy4 FGiokJPZFfk+QfW0NkPVxZDbeUj+VjrgdStE4PC0FGmCTuZevL90X2ia1 LMiRow3T/4mXpfGnMhv7f/ywOdq83O17/Is2ryJb91SC4RGaMjCS9vKoT 8uDWo5s3ar7siOUzbk38hpr0KVHFd9Qn+E2p7T/CO0OhOr/KYdNyO/NPx w==; X-CSE-ConnectionGUID: V92MCA0YQUeebbklB+M/Pg== X-CSE-MsgGUID: lGrRHsUFTFaJ0zTP5du6NQ== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="49263181" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="49263181" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:43:58 -0700 X-CSE-ConnectionGUID: TEeIE2oUQRi2IA5WDKANkQ== X-CSE-MsgGUID: qB0PTHWxSTGA3724cB8ThA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="133597303" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:43:59 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:43:57 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:43:57 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.47) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:43:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZsvHSAIXsLu7ig1yeZHSuKFFJOaZ+R/wq4qwMtfK8VorqN/MDktEwsCet/ESGZAgzULxOAcIBdgRgBhdmI+S9ljd+Yxwijp3hWkRKBOJNdwj+ll8TxakbbTKcadYrEFbrurMtyQsnpG19HDpSYac8qbaDFPoNLNX5Y3q99ycRMVDSiTnY7A0gsqvYq/eprQkGmYjv54ADtKe8NZPF2AnZCH7rKtDzW39v4zigdSN/GQHHIscjMMwS5jYYMSSimAR6o4xr8UHKrFPXw1XO3liE8urtIBMwKobZAEalSBk3oNoiFe5L+dvuIBWTjM8YmR0L0nen8FW1YveOtbs/z0Kiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aox2aRyVBH2E6QjUt0N5q7gJEAf1XnafC8hJEFmtKCI=; b=Utt/csyVoqqXK0UHhnVf8i6vbv6E3FrzeXkGDAk78seJ1x3fj9JVMVpvOPCdfnMHlvSSue/76qzmWYmGGm3UXMn8M44UwirY1JyL8caQvxIEIhtsuL+me1BFKN3pA+lzwt28E7uJpAY0Fwi0VJKmZnklVq0bIPeFmoVCw0Eslm21p3xzmali38+AQYy5vZ8/Th6uZBSVeiJIsXosYI8XDZoM09ag9APLwWde8BBMpm9c2q1kO4tiAf+4FcSGOGZeBnyMbHufCcaEztv5GoikmQaIfVRySjwjA/I4mD4CT1zkJLRD0fMi9BbqvydmonaMZIV6ztciv0xR/W3q6PUfZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by MW4PR11MB7101.namprd11.prod.outlook.com (2603:10b6:303:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.27; Tue, 8 Apr 2025 21:43:55 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:55 +0000 From: Imre Deak To: , Subject: [PATCH 07/10] drm/i915/dp: Use an intel_connector pointer everywhere Date: Wed, 9 Apr 2025 00:43:37 +0300 Message-ID: <20250408214342.1953197-8-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|MW4PR11MB7101:EE_ X-MS-Office365-Filtering-Correlation-Id: e9ebe193-aba2-4d2e-1387-08dd76e6740c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: x/eGTGccXokIV7PsleTcqdRlNBOsQT24AjynIY3ZgNWdrxU7GWWunefskVmXamaquIBLhYELhBqsKglDeuucHfmHxyMzAgiOGOLutHdIivB3EjB+BY1Lqbdn7rJfwfXBtmOGyuPWcs2fCLDSWDZyXQDNT9b/sDGJ4fSvT7Bedcv0pW2SfedZ3H2fs7rkZfEXVuT+GwReCygq5cjQ3lMgIif1Tww9gA3ATHS21tkzIv3JVjeC+wSKOKZIk/Apvdl8Z+lcnwttk4Dp+0mCn+bS/m1vnjxH9AOThHnvQYT5GtaoKRGnWYJXqPe74hkuxdzbp9ohVyOzA/v9bm4AhtKc7McsdZRhSbizifMLzbfJclEaTQinfX5UX/hImh4MlDRcpPo8HQEGijHIer77lebQ7Tvc4wk6V/qmVfmNmDG15WDduD4nFbQ1Cl8kwK5i1vMB3DY2AhKeAFza4kU8RrMW43EZy9cI53ri63yufSsr/ejMgUy6FBYhtcr8SEs4URgpi5HfbMANMDWQBC+LRviNaPEbGlAeeq8WAG1+kzu/5XB3vUtyg01VCuJbyj+bSkIsNqVmEcnlK8U4RbfZnlZZgUHjI5NBWMwdxBrFG7TGBO0Jn1LIAWAkvPnpjb3Kz6mqq7nuQNHE9Vb4g+zkPW0NLELSNHf2lDldNnOd2ylOI7/939AIdt3r2Hh/c06zwywVJslu+HTlfMTWnE5HacHep3bMWTb5puKMIICT/bt/Lf8ieYCVwvUmGsuKasxDJMyqWMpBa5Z7eOMLge2HSKyeJKtwaRZS7P9KS7GAMlQjYX/39Cqx2z+eeRAfELaODAYFjsXlpgZ3WQitriKFB8i5fKPPeuMNP4Odm2AUoIKmtXdsTgr79Gup5/GY2CmXykUdZiAnOWv81mq6FnkN/Y88dTuNvruKoA8mo+3Ugndm8en+M56mk9VJhiwEV0zlpthWfs1zYN2Bhmpe46l1ikJefQ2LrR2k0jy4XwP8HwlDlOygRSMzpKqZEsFahBcCHFxGC3vvVjqFn21r1IzqDzqwfWkb3V9WKu1X5px/KiZEvHJzbVdu+TPgKliItkQHgjenkIa+8JvuLpzlIbspZ9ibPvD3phlnMj+Em/Zr+Mp46LDRTO4wIKg/rZ/1S6pCf/imAz9fLyplsk6lCz5pq1IzMBF43FtIFY9O4B0qFggifj/oBvzXidI098jqCUswZ7DZGKjz6+rcFBiTwNsNKyg4IFq+RxZkTeX7cYn317z3YGScv/oD7dWOC5zkHoPC8NNZqo5+SCg1tHDJwrKInxByl7FB+7gMPIaLb1ui00u4W/sNcw0YMoC3PPibE07RP9jb6COKTtmydt6fkbDck9jP4PChUPNbaPLNqKwT7p3Z5DQzL8eTJ1P3RMbG/6T0QLo+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nl6xwpBRP7nLpje5Zlk47J7+gmuPimUz6OpgjqTnIn+40opUnspq5dazX8xISZhl3L12HtFUjwkVjTz60PYLtjDIyrxx6w6eGRkFhzn+aTYFPcl3ejQslE/9+d5oim9YUGjxIAyEMp1u0xdNmdHfi0h0sOrccsp8ewQeETcLTpXfqEExmn5QfnwPPK+mwEqJ955fh3naFD3XH82DZ9mz/jVsjFgfYfVXIl+7nPewRPUv7Gufwnla1r5i9UQ9p/0soi7VtFu17QY1UA+WtxqohpOWzFgjrXN1rI/DgtC8I6sVUK8hqRaniNhETV+ZeV5OtCs0/atP7ZxLqKKfvA12L9Z8AzOUcIXivAwyqYCEyOOrOI9E9PUDBIGZeSa06eHeMuKvyVgZwI0jGXM4MIDrgy8rK3hzp+cjf161dAl6g0JVzgS6yy3n3y70uGgYLsTT9Qb61/n5M61sp6umJcdWbGmu4WJYqPUG6r0P34aR+pZHbmLcauzEgWz47Y1bcUJRRpbdSTJswPiNn761uHv/0G9Av8rL3rZV7JWM1rkLA79Vd7uX+3ZlTMvHVmssReCMoVePe632HquVpbZB7Ah+FnFK8VPYfFCZO8rFN7c04bCOFEHhU77y94QD6va7oQBE0boKXBllKBiAwOq6aVbwlPTROWnwLBQ3LaYYi8284wXmwt38s9PNdmwsn9F4jAnWTCuh4wQfytuRKuaxaNWg01XHRLXQeKnkHTsrXkLR6N/E84yhqbkd1nU/9nPH1RozvsIQmcAnqfB1n4TCE9fPVrAmtv4xPJvq3rodP04aNFD4YTIsyUb5IOwv/qAfMGB5WjrjehNfhbWCrelBQIe6m6PS7GE+Hkc0urNiMcCqmRA9ujweDa0HPhuyXd8NAoKJZ/Oz6zUEa9IA3gYOgEUzTS1p75hODgBmCEMbK/O+8K5dXW3UmMuJOxqbWDgzo5+gDExXwOihOLwyTkSYHXvfP81OZEMdTTsEXRbTYKWBXsR5Svr0RXV1Cr7obl7pRQzDsK4ijEpl1Daku3bocRJjlRFC/yYnCESbZHhcH69PNOHJf3EpO94rDJPawSTpktg97QxTZ5KXIZVT/04uMdBCLCxfHG81/Bgrh7hx0ifrzgHR9yngfpTYKXu15Slh1MM02EiqTDSwqUft9OhVbW4q5h4jDKV+7k+usZ+1JaPMhke2Q/+0z1g1K7QOCjhC7EAglypH/BnjauWxzJ5xDna4BtnIz4qG4jfSMwJ6+U6U7QO0mTdziwK+x09+YyUcT2EwRkT4glnYCi5ExAXbr0M0Ws55+OfExTeW/rU5vwN8fNFtsl1aFW+9M4l+gBKTeJnntPUuoNMIJLkbTpQf2V33oLikNnlT9dHbGLNw6ooOJgMuoRuodHPGTiQDcNBVD720+GHJ4BlHK+eZldtEYT8fVX2/DfdrKQnlSiFlnGPeI46wwceMIr7Td2+SpUIRwLsn/R5PrWKF647UXoTKwbzNA8F98ynixUUE4G1xBxpDzmRH3IZS9pBR2AG2x2SJLP+J/EngJ4FCw1fKkylmFKLr5WMYllp/apqYalb2Uaq3RxQoXmZ8dsllSErX+AYN3n8a X-MS-Exchange-CrossTenant-Network-Message-Id: e9ebe193-aba2-4d2e-1387-08dd76e6740c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:55.0114 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PbvAK/xOnQXyhnVWCSA33WFUe0kxUCICrO97I6WCRGkW+HdtLF6UnEG2SHUcwNvfkvvLtT9JVkSA8IlWTXicIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7101 X-OriginatorOrg: intel.com 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" Following the convention, convert intel_dp.c to use an intel_connector pointer everywhere, calling this pointer connector. If the intel connector must be casted from a drm_connector, call this pointer _connector and use this pointer only for the casting. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_dp.c | 106 +++++++++++++----------- 1 file changed, 57 insertions(+), 49 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 9c15608cc06f7..8ca33ebedce27 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5825,20 +5825,21 @@ intel_dp_detect(struct drm_connector *_connector, } static void -intel_dp_force(struct drm_connector *connector) +intel_dp_force(struct drm_connector *_connector) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_dp *intel_dp = intel_attached_dp(connector); drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", - connector->base.id, connector->name); + connector->base.base.id, connector->base.name); if (!intel_display_driver_check_access(display)) return; intel_dp_unset_edid(intel_dp); - if (connector->status != connector_status_connected) + if (connector->base.status != connector_status_connected) return; intel_dp_set_edid(intel_dp); @@ -5877,24 +5878,25 @@ static int intel_dp_get_modes(struct drm_connector *_connector) } static int -intel_dp_connector_register(struct drm_connector *connector) +intel_dp_connector_register(struct drm_connector *_connector) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_dp *intel_dp = intel_attached_dp(connector); struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); int ret; - ret = intel_connector_register(connector); + ret = intel_connector_register(&connector->base); if (ret) return ret; drm_dbg_kms(display->drm, "registering %s bus for %s\n", - intel_dp->aux.name, connector->kdev->kobj.name); + intel_dp->aux.name, connector->base.kdev->kobj.name); - intel_dp->aux.dev = connector->kdev; + intel_dp->aux.dev = connector->base.kdev; ret = drm_dp_aux_register(&intel_dp->aux); if (!ret) - drm_dp_cec_register_connector(&intel_dp->aux, connector); + drm_dp_cec_register_connector(&intel_dp->aux, &connector->base); if (!intel_bios_encoder_is_lspcon(dig_port->base.devdata)) return ret; @@ -5905,20 +5907,21 @@ intel_dp_connector_register(struct drm_connector *connector) */ if (intel_lspcon_init(dig_port)) { if (intel_lspcon_detect_hdr_capability(dig_port)) - drm_connector_attach_hdr_output_metadata_property(connector); + drm_connector_attach_hdr_output_metadata_property(&connector->base); } return ret; } static void -intel_dp_connector_unregister(struct drm_connector *connector) +intel_dp_connector_unregister(struct drm_connector *_connector) { - struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_dp *intel_dp = intel_attached_dp(connector); drm_dp_cec_unregister_connector(&intel_dp->aux); drm_dp_aux_unregister(&intel_dp->aux); - intel_connector_unregister(connector); + intel_connector_unregister(&connector->base); } void intel_dp_connector_sync_state(struct intel_connector *connector, @@ -5979,21 +5982,22 @@ static int intel_modeset_tile_group(struct intel_atomic_state *state, { struct intel_display *display = to_intel_display(state); struct drm_connector_list_iter conn_iter; - struct drm_connector *connector; + struct drm_connector *_connector; int ret = 0; drm_connector_list_iter_begin(display->drm, &conn_iter); - drm_for_each_connector_iter(connector, &conn_iter) { + drm_for_each_connector_iter(_connector, &conn_iter) { + struct intel_connector *connector = to_intel_connector(_connector); struct drm_connector_state *conn_state; struct intel_crtc_state *crtc_state; struct intel_crtc *crtc; - if (!connector->has_tile || - connector->tile_group->id != tile_group_id) + if (!connector->base.has_tile || + connector->base.tile_group->id != tile_group_id) continue; conn_state = drm_atomic_get_connector_state(&state->base, - connector); + &connector->base); if (IS_ERR(conn_state)) { ret = PTR_ERR(conn_state); break; @@ -6057,10 +6061,11 @@ static int intel_modeset_affected_transcoders(struct intel_atomic_state *state, } static int intel_modeset_synced_crtcs(struct intel_atomic_state *state, - struct drm_connector *connector) + struct drm_connector *_connector) { + struct intel_connector *connector = to_intel_connector(_connector); const struct drm_connector_state *old_conn_state = - drm_atomic_get_old_connector_state(&state->base, connector); + drm_atomic_get_old_connector_state(&state->base, &connector->base); const struct intel_crtc_state *old_crtc_state; struct intel_crtc *crtc; u8 transcoders; @@ -6082,17 +6087,18 @@ static int intel_modeset_synced_crtcs(struct intel_atomic_state *state, transcoders); } -static int intel_dp_connector_atomic_check(struct drm_connector *conn, +static int intel_dp_connector_atomic_check(struct drm_connector *_connector, struct drm_atomic_state *_state) { - struct intel_display *display = to_intel_display(conn->dev); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); struct intel_atomic_state *state = to_intel_atomic_state(_state); - struct drm_connector_state *conn_state = drm_atomic_get_new_connector_state(_state, conn); - struct intel_connector *intel_conn = to_intel_connector(conn); - struct intel_dp *intel_dp = enc_to_intel_dp(intel_conn->encoder); + struct drm_connector_state *conn_state = + drm_atomic_get_new_connector_state(_state, &connector->base); + struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder); int ret; - ret = intel_digital_connector_atomic_check(conn, &state->base); + ret = intel_digital_connector_atomic_check(&connector->base, &state->base); if (ret) return ret; @@ -6102,12 +6108,12 @@ static int intel_dp_connector_atomic_check(struct drm_connector *conn, return ret; } - if (!intel_connector_needs_modeset(state, conn)) + if (!intel_connector_needs_modeset(state, &connector->base)) return 0; ret = intel_dp_tunnel_atomic_check_state(state, intel_dp, - intel_conn); + connector); if (ret) return ret; @@ -6118,21 +6124,22 @@ static int intel_dp_connector_atomic_check(struct drm_connector *conn, if (DISPLAY_VER(display) < 9) return 0; - if (conn->has_tile) { - ret = intel_modeset_tile_group(state, conn->tile_group->id); + if (connector->base.has_tile) { + ret = intel_modeset_tile_group(state, connector->base.tile_group->id); if (ret) return ret; } - return intel_modeset_synced_crtcs(state, conn); + return intel_modeset_synced_crtcs(state, &connector->base); } -static void intel_dp_oob_hotplug_event(struct drm_connector *connector, +static void intel_dp_oob_hotplug_event(struct drm_connector *_connector, enum drm_connector_status hpd_state) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_encoder *encoder = intel_attached_encoder(to_intel_connector(connector)); - struct drm_i915_private *i915 = to_i915(connector->dev); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_encoder *encoder = intel_attached_encoder(connector); + struct drm_i915_private *i915 = to_i915(display->drm); bool hpd_high = hpd_state == connector_status_connected; unsigned int hpd_pin = encoder->hpd_pin; bool need_work = false; @@ -6278,36 +6285,37 @@ intel_dp_has_gamut_metadata_dip(struct intel_encoder *encoder) } static void -intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector) +intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *_connector) { + struct intel_connector *connector = to_intel_connector(_connector); struct intel_display *display = to_intel_display(intel_dp); enum port port = dp_to_dig_port(intel_dp)->base.port; if (!intel_dp_is_edp(intel_dp)) - drm_connector_attach_dp_subconnector_property(connector); + drm_connector_attach_dp_subconnector_property(&connector->base); if (!display->platform.g4x && port != PORT_A) - intel_attach_force_audio_property(connector); + intel_attach_force_audio_property(&connector->base); - intel_attach_broadcast_rgb_property(connector); + intel_attach_broadcast_rgb_property(&connector->base); if (HAS_GMCH(display)) - drm_connector_attach_max_bpc_property(connector, 6, 10); + drm_connector_attach_max_bpc_property(&connector->base, 6, 10); else if (DISPLAY_VER(display) >= 5) - drm_connector_attach_max_bpc_property(connector, 6, 12); + drm_connector_attach_max_bpc_property(&connector->base, 6, 12); /* Register HDMI colorspace for case of lspcon */ if (intel_bios_encoder_is_lspcon(dp_to_dig_port(intel_dp)->base.devdata)) { - drm_connector_attach_content_type_property(connector); - intel_attach_hdmi_colorspace_property(connector); + drm_connector_attach_content_type_property(&connector->base); + intel_attach_hdmi_colorspace_property(&connector->base); } else { - intel_attach_dp_colorspace_property(connector); + intel_attach_dp_colorspace_property(&connector->base); } if (intel_dp_has_gamut_metadata_dip(&dp_to_dig_port(intel_dp)->base)) - drm_connector_attach_hdr_output_metadata_property(connector); + drm_connector_attach_hdr_output_metadata_property(&connector->base); if (HAS_VRR(display)) - drm_connector_attach_vrr_capable_property(connector); + drm_connector_attach_vrr_capable_property(&connector->base); } static void From patchwork Tue Apr 8 21:43:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043719 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 4A852C369A5 for ; Tue, 8 Apr 2025 21:44:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D2A9910E76D; Tue, 8 Apr 2025 21:44:17 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="kb6k8puD"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id EBCEA10E769; Tue, 8 Apr 2025 21:44:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148657; x=1775684657; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=vdQeU8Ygxnxa1/T/dXYtNIjOpTaRg4LlbfyGvTCJYeM=; b=kb6k8puDj4XYwpp0Fri27t+pSVhCJJ2eCcdCpBIYefHHUsPSHCr70BAP 1Oy4lT86HrSpJVDRT5WZ7S/nMdelrrq8xTrDUkr41H8lf9AOQEwa9NoPV 1NDLqPzD8Tb1kL18HejIA5yX12Yld65qjkgsLwwKIOkf1hA1mk4X3WXQ5 seVm7outlftNlusUTe5RQEajAaSaVPRZZ4jQPFBUTns6vtKmtKzePSwlN 9AH5+NBTUXWu5IdFnZKllcSs2Kdp3LJ/EyVQlY+Qpnp6enyLhs35s/BLe nMT9RZKk9hfkp7Rg3ay9dcQCIC7RpEPWvT7eCJ5lQiQEhRAO1ynWiJxOJ g==; X-CSE-ConnectionGUID: EaMRPhUhROOGWrUm+QZPIA== X-CSE-MsgGUID: AKLq30t5QQyX0yFgQneB1g== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="44746762" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="44746762" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:16 -0700 X-CSE-ConnectionGUID: /g4LO0ssSiip78ihCMJGXw== X-CSE-MsgGUID: yoMIR89uQRqmhLpdqwxMGQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128381232" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa006.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:16 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:15 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44 via Frontend Transport; Tue, 8 Apr 2025 14:44:15 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c/k6Ucd3SLqK1meXRnU3Af1k3z3OE/9Aoklpc3fIUSDtOX2JhWyffeW1lM8bDbo0KznI+ev9utgX0HfzbSPZ2dtddSa28XXWTUK9Iu5plubfStSHJv9Lc+6Bx1rkod9NKRdTj7Th5XG1Fh8Z7ggKNKrSOlVo1+U945SXWnbZxqUb6EMDLeo9TF0agg+WjRwdXzmgiC9SM7vcdEvcmraB2uQSsTuu8MF7sDwN7/LYHpT4oUUUhhBtVqi2kQIZo68IxTmqY3sOIkml71Qez/x4EnzA0if5X454K4ev3ftY7UKBI8m8zWp9shB2v9I+fW7eSHQX6lW36D4kn7Mx8EV0cA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=h8R7YRNE3HEuY0v5n8JEUnqV9XRtSHEd8h37jZfGyI0=; b=N6DrxhVNnotmljqAogZQA0AbqRR9wbD49tnr6Lfj9mdj1GYBx9r8KdFnUFQmi0x6Mu0ldLpB8YJlkSbru+7XKGrRd1xrEoPl4DEFH3ZwfzTuxT7KApBm0sCTu5iBtiDS/nfbKu2jXPLFwiw94owyCX6M+PCrOGy3/EmvUgNSMjndh5tuOBKVmbpfIDi0/tDjxdOixyC5hiDExuBQLKhMgiyZ6ym7vU8RVnYSkZzZ6Zqtlq0MY55dwaFR49BMCVuGNvJkbc9eneIgXWfn2yCdrAyiCDkoQjiJ17W/Zzf6ewsb2Co8Z9MIy3zT09+CSctczixDrmcg3+IHeSPMfhF5xg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by MW4PR11MB7101.namprd11.prod.outlook.com (2603:10b6:303:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.27; Tue, 8 Apr 2025 21:43:58 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:43:58 +0000 From: Imre Deak To: , Subject: [PATCH 08/10] drm/i915/hdmi: Use an intel_connector pointer everywhere Date: Wed, 9 Apr 2025 00:43:38 +0300 Message-ID: <20250408214342.1953197-9-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|MW4PR11MB7101:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ee6dc8e-a826-4e43-8d28-08dd76e67698 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: wHCtSt5vwpPaw+wPjrPp/Bfe9B6QuaOtS9zTosy9w7Sk2yf5aiV5xlddgpExrffhvZHyQloVrOqvWvqnmtOpJp7i7HzK/uDKKDQdrifpAbSLDZxH8EAO+JFQMfIPjVBAh3Ji99dclMpqpvzt5PUswg/V921EXyQ6V4gx9h71B+U31fzudPogbv16pjc5M5jy2TEIELhjqmsrGTOIvVyeMwTeb8UslIIAcqZkTJrjdo80MWMAYenZJCARguc0sqSBwoItilRmRKd1C9Y8axhjFeOj5LBQMf+dOQCSey9ErIK6nDG4/hUwvvgHdnH/8qLDYonOCsCJaS29wx8Z97kGb6y1OQHrqF4c7oBaYHDBw66fP0EMaa0Ow2U6BZ8DnRCLJOHrzTCzKaLdhg42jw61hvbNAXSItBxWTNilg83cgQt++7H9nk9krw4YGrAgBdsHYgOfYt2N3vkKSNeXES8cgOur5lE+D7ar0nFQNtSuCssyPscX0iHMc8DrqeAkyI4kWufwhwbYQ2Y7XRax5oa0VTFV1iwra8LKBIJXeLbPiUnxFJM32O5HYWSInQ3nqcp4fz/+ltF094u2Gcf0GjXUwJWhF6TnfQC+1NsQAQ/RFuHjhdBbY6N9z8inXIRgzsJYnHvZkjMlX+HUV9hKHGCEYAWpoSnfxwLTJmaLgsHiVMvvnsxwwK4kVL6IrY8egR50nzfu5g13vvmRyrmPHppTRJxfoqfD5Eys3+cNeI1X/A95+LBEwX6pvTLuU9BVdlup+VKAu9QqQWwSrF+GX/LFN/Yg2zvPBwTN+Yjzw6mJToSrvKEV1JC/hcQbM5Gi3u7o7K21fC51X1TEE2xQgLj9DcKsOBRZVH6Ad+UW0DgWBHIocaZ2/yP/HZeiWEUCQTnWgVT7revDGGmCpcgOT7fEijkZqjGCZKkvBpXRBYJb47luxFR0lbqIPbC4ZLhjFRoHR6Q1mUbvQNPGvtrTIxNlC/elTXDS3IJVPYvho6fICQIEYAr320Nr8p1n9ZJFujZkeGWG0/4VyetzGfcGzYJQU3tLXCZhGI8fqEBpWimdyGbQJXur1p4dvJJFfBHZe1r67Z29bG0WzowNLbtTz0ZtGsrHDHHxzC4V2AFi3Qz2xsDQrXSXdrwyJHVmb7Yg4i+p0HjIWXngHtbay0HsKM82xj68F5nxnpn+mr6M10Gmag9sfZ66grJdj0cKDvMy2LRl3U5lIriJFVdRTIVZeqfNXm25XSYW9X3kXrzT4s1faw2xAX+RVjuSsqcs9Ak3SFf5sl/SXqsCz8tQ0/84sJ31QeMSGWq/0IvnwZfiR/BcRi7aVaTybwhwZ0EzJKaucayM627pje+V48wO8lBz4Qn0Xzo6sPfPV9x95kXXH40/m9RbybDCiZ7Q7Gh1Gym3ZCnZ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yFYjdVALuKf5KsLrGmgKhFsdgmVm7hwALMZYo6IU3D0/k5HxYROi9v3wr55o+6AsKWv/McGfrgUwmjybRtVKLka4eUKD3iQYYo6UIeL26FOT/ynJlwBWj0wfPKLhgZpoNVx6tfgJBpdZfIx2LDWm+rWRtKnpjstqsqPLxxVzFuyH2xUC1OwmrTmak8NhbdASrplbt+Kr2PtXAxzff+eppr1W725hmuUkW/tUCU+5iSFhI+zhSfeEyAR8hpiqV8E7xLKT5aJzC7JYN5KptRutL/0moVLRyUygpIVrl+MSGEOw2c8upnIIAcMXjaDqLtttxtjOIMhaUcY8CzgjHGgJki8LhY6m/QCImkqkNJV4xY1Dt9dU8uDxaSTcUHAYGWp+5JNfGJY9/ldZ/r6m7NlWqWzVsF5RINDAOGpRtzwEVgyqjvenYPTYqc9Qyj64Rp9uMML3po2WO7GXclhNyxZsZoOKAavl2Ts8Mf2LXiiRVhYy6MXEWv7ASSx3nIrNtKm9WJVJ0SUAvc123kEclRmFMT3ckMEH05MCM70wM+xQlb0p0OA4Duol6VSlCmoay5NopVVhesbm3sZhzIzDEBBpeFn9W0KxG25V+dZV7AwH7TPISjk/RR7UERZ9NAD4kbx/FTNpQAPZ5gGkyzJslGOwBLQPdj4KJAHhAFfZxyiIM5scdaaEPKKxk7uVGy/ya6hp6xZ/p2qObFLqxKOCZayA8bKeo24fY8bGXSG/18euuAdnnjueO6FPiIjqyAu1dCGwlGurMrkWbs+50ZXmAz1PCs4J4fq/rFyuVUIWJ/3wx0/1NNso3SCwc1eu8PDCpJgsJ0wjUfJNowVM0XQ8EeacSLRr7+XkBGBYjeVWWx9paKrCiPk7uQLKJcQzDxcWrWZORTMbNtNsFvGtV9nMSQrVL+VKEWes8vK6MCqHyijw3fEt772xAyAY08ceuBopNpr5UOULEuoDjqERXpVbzxnvTFx9xIt+R3PFV/55c+RyqYPxwSOHn8IAIV/Zlo8dYqVhkoNEq04xE+PCfVWLqqR8wCOLXVgZRyfRcU84DEQiXeqB3hIUxCM0otFw6j8gtpAP1mVmACRifntDh7LZqz2V1jYLJv4KsxIb+7DljjSlQEs40SCicSyE02mwuDnlznootU5ubeIkt5P3HZlrinKicNyJrwZ2W1qgIBz5z93WFKqCDVlh2MFxxKo7IB7VfoPxmpt5oPVgMNXiW/cj/fNOpJWMKo85q6Rq3r5ixDqiSdUgyPHxDqpr9yGqOav4uTnzJ5dxqstqirRgfaHtsqYUQmJt3oT/3w9yB5pHQHt62RzAi/ewx5sjGeXgKQimlAn7MzFwWvssIJgCMfDTDuQyTjixC/6FI2MQ5h2ILV790R5L7H7zLqb5ZmZ0rkcFGWsh7uP89I3KflY5FgSGLeUzNip/vCFNnIE3AFIouFdlelFY364yK/tVEqwRFUu3VuefsGP6ysVi0BGJ3aw13YcZvQD4+9dzKMphpO0yY0zmwTjMSPW/O/s4noqzfAdOoB2WAr8ZET7vInrpHUjZ8C4FLOYbN8o+OF2woLrQ1CAW28bPlpMTSv3Cyt9ckbC/zqz/ X-MS-Exchange-CrossTenant-Network-Message-Id: 5ee6dc8e-a826-4e43-8d28-08dd76e67698 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:58.0896 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YdTPpeiSmpUJEJRRlohHzmM9gEL1Uzhlji00CNmYNxZNqaPse/BaDg0z/mMyTQNEfsxRdfprsLkQIHKPyqMP4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7101 X-OriginatorOrg: intel.com 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" Following the convention, convert intel_hdmi.c to use an intel_connector pointer everywhere, calling this pointer connector. If the intel connector must be casted from a drm_connector, call this pointer _connector and use this pointer only for the casting. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_hdmi.c | 187 ++++++++++++---------- 1 file changed, 103 insertions(+), 84 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index f9fa17e1f584b..8f2cef36bdf79 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -715,7 +715,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder, struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi; const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; - struct drm_connector *connector = conn_state->connector; + struct intel_connector *connector = to_intel_connector(conn_state->connector); int ret; if (!crtc_state->has_infoframe) @@ -724,7 +724,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder, crtc_state->infoframes.enable |= intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI); - ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector, + ret = drm_hdmi_avi_infoframe_from_display_mode(frame, &connector->base, adjusted_mode); if (ret) return false; @@ -743,7 +743,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder, crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB); if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) { - drm_hdmi_avi_infoframe_quant_range(frame, connector, + drm_hdmi_avi_infoframe_quant_range(frame, &connector->base, adjusted_mode, crtc_state->limited_color_range ? HDMI_QUANTIZATION_RANGE_LIMITED : @@ -1943,11 +1943,12 @@ static bool intel_hdmi_source_bpc_possible(struct intel_display *display, int bp } } -static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector, +static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector, int bpc, bool has_hdmi_sink, enum intel_output_format sink_format) { - const struct drm_display_info *info = &connector->display_info; + struct intel_connector *connector = to_intel_connector(_connector); + const struct drm_display_info *info = &connector->base.display_info; const struct drm_hdmi_info *hdmi = &info->hdmi; switch (bpc) { @@ -1976,12 +1977,13 @@ static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector, } static enum drm_mode_status -intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock, +intel_hdmi_mode_clock_valid(struct drm_connector *_connector, int clock, bool has_hdmi_sink, enum intel_output_format sink_format) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); enum drm_mode_status status = MODE_OK; int bpc; @@ -1996,7 +1998,8 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock, if (!intel_hdmi_source_bpc_possible(display, bpc)) continue; - if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, sink_format)) + if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink, + sink_format)) continue; status = hdmi_port_clock_valid(hdmi, tmds_clock, true, has_hdmi_sink); @@ -2011,15 +2014,16 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock, } static enum drm_mode_status -intel_hdmi_mode_valid(struct drm_connector *connector, +intel_hdmi_mode_valid(struct drm_connector *_connector, const struct drm_display_mode *mode) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); enum drm_mode_status status; int clock = mode->clock; - int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq; - bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->state); + int max_dotclk = display->cdclk.max_dotclk_freq; + bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->base.state); bool ycbcr_420_only; enum intel_output_format sink_format; @@ -2048,22 +2052,23 @@ intel_hdmi_mode_valid(struct drm_connector *connector, if (clock > 600000) return MODE_CLOCK_HIGH; - ycbcr_420_only = drm_mode_is_420_only(&connector->display_info, mode); + ycbcr_420_only = drm_mode_is_420_only(&connector->base.display_info, mode); if (ycbcr_420_only) sink_format = INTEL_OUTPUT_FORMAT_YCBCR420; else sink_format = INTEL_OUTPUT_FORMAT_RGB; - status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format); + status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, sink_format); if (status != MODE_OK) { if (ycbcr_420_only || - !connector->ycbcr_420_allowed || - !drm_mode_is_420_also(&connector->display_info, mode)) + !connector->base.ycbcr_420_allowed || + !drm_mode_is_420_also(&connector->base.display_info, mode)) return status; sink_format = INTEL_OUTPUT_FORMAT_YCBCR420; - status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format); + status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, + sink_format); if (status != MODE_OK) return status; } @@ -2076,14 +2081,16 @@ bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state, { struct drm_atomic_state *state = crtc_state->uapi.state; struct drm_connector_state *connector_state; - struct drm_connector *connector; + struct drm_connector *_connector; int i; - for_each_new_connector_in_state(state, connector, connector_state, i) { + for_each_new_connector_in_state(state, _connector, connector_state, i) { + struct intel_connector *connector = to_intel_connector(_connector); + if (connector_state->crtc != crtc_state->uapi.crtc) continue; - if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, + if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink, crtc_state->sink_format)) return false; } @@ -2211,7 +2218,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) { - struct drm_connector *connector = conn_state->connector; + struct intel_connector *connector = to_intel_connector(conn_state->connector); const struct intel_digital_connector_state *intel_conn_state = to_intel_digital_connector_state(conn_state); @@ -2219,7 +2226,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder, return false; if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO) - return connector->display_info.has_audio; + return connector->base.display_info.has_audio; else return intel_conn_state->force_audio == HDMI_AUDIO_ON; } @@ -2323,14 +2330,14 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder, { struct intel_display *display = to_intel_display(encoder); struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; - struct drm_connector *connector = conn_state->connector; - struct drm_scdc *scdc = &connector->display_info.hdmi.scdc; + struct intel_connector *connector = to_intel_connector(conn_state->connector); + struct drm_scdc *scdc = &connector->base.display_info.hdmi.scdc; int ret; if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) return -EINVAL; - if (!connector->interlace_allowed && + if (!connector->base.interlace_allowed && adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) return -EINVAL; @@ -2425,25 +2432,27 @@ void intel_hdmi_encoder_shutdown(struct intel_encoder *encoder) } static void -intel_hdmi_unset_edid(struct drm_connector *connector) +intel_hdmi_unset_edid(struct drm_connector *_connector) { - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); intel_hdmi->dp_dual_mode.type = DRM_DP_DUAL_MODE_NONE; intel_hdmi->dp_dual_mode.max_tmds_clock = 0; - drm_edid_free(to_intel_connector(connector)->detect_edid); - to_intel_connector(connector)->detect_edid = NULL; + drm_edid_free(connector->detect_edid); + connector->detect_edid = NULL; } static void -intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector) +intel_hdmi_dp_dual_mode_detect(struct drm_connector *_connector) { - struct intel_display *display = to_intel_display(connector->dev); - struct drm_i915_private *dev_priv = to_i915(connector->dev); - struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct drm_i915_private *dev_priv = to_i915(display->drm); + struct intel_hdmi *hdmi = intel_attached_hdmi(connector); struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; - struct i2c_adapter *ddc = connector->ddc; + struct i2c_adapter *ddc = connector->base.ddc; enum drm_dp_dual_mode_type type; type = drm_dp_dual_mode_detect(display->drm, ddc); @@ -2458,7 +2467,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector) * if the port is a dual mode capable DP port. */ if (type == DRM_DP_DUAL_MODE_UNKNOWN) { - if (!connector->force && + if (!connector->base.force && intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) { drm_dbg_kms(display->drm, "Assuming DP dual mode adaptor presence based on VBT\n"); @@ -2490,34 +2499,35 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector) } static bool -intel_hdmi_set_edid(struct drm_connector *connector) +intel_hdmi_set_edid(struct drm_connector *_connector) { - struct intel_display *display = to_intel_display(connector->dev); - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); - struct i2c_adapter *ddc = connector->ddc; + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct i2c_adapter *ddc = connector->base.ddc; intel_wakeref_t wakeref; const struct drm_edid *drm_edid; bool connected = false; wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS); - drm_edid = drm_edid_read_ddc(connector, ddc); + drm_edid = drm_edid_read_ddc(&connector->base, ddc); if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) { drm_dbg_kms(display->drm, "HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n"); intel_gmbus_force_bit(ddc, true); - drm_edid = drm_edid_read_ddc(connector, ddc); + drm_edid = drm_edid_read_ddc(&connector->base, ddc); intel_gmbus_force_bit(ddc, false); } /* Below we depend on display info having been updated */ - drm_edid_connector_update(connector, drm_edid); + drm_edid_connector_update(&connector->base, drm_edid); - to_intel_connector(connector)->detect_edid = drm_edid; + connector->detect_edid = drm_edid; if (drm_edid_is_digital(drm_edid)) { - intel_hdmi_dp_dual_mode_detect(connector); + intel_hdmi_dp_dual_mode_detect(&connector->base); connected = true; } @@ -2525,28 +2535,29 @@ intel_hdmi_set_edid(struct drm_connector *connector) intel_display_power_put(display, POWER_DOMAIN_GMBUS, wakeref); cec_notifier_set_phys_addr(intel_hdmi->cec_notifier, - connector->display_info.source_physical_address); + connector->base.display_info.source_physical_address); return connected; } static enum drm_connector_status -intel_hdmi_detect(struct drm_connector *connector, bool force) +intel_hdmi_detect(struct drm_connector *_connector, bool force) { - struct intel_display *display = to_intel_display(connector->dev); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); enum drm_connector_status status = connector_status_disconnected; - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base; intel_wakeref_t wakeref; drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", - connector->base.id, connector->name); + connector->base.base.id, connector->base.name); if (!intel_display_device_enabled(display)) return connector_status_disconnected; if (!intel_display_driver_check_access(display)) - return connector->status; + return connector->base.status; wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS); @@ -2554,9 +2565,9 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) !intel_digital_port_connected(encoder)) goto out; - intel_hdmi_unset_edid(connector); + intel_hdmi_unset_edid(&connector->base); - if (intel_hdmi_set_edid(connector)) + if (intel_hdmi_set_edid(&connector->base)) status = connector_status_connected; out: @@ -2569,49 +2580,54 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) } static void -intel_hdmi_force(struct drm_connector *connector) +intel_hdmi_force(struct drm_connector *_connector) { - struct intel_display *display = to_intel_display(connector->dev); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", - connector->base.id, connector->name); + connector->base.base.id, connector->base.name); if (!intel_display_driver_check_access(display)) return; - intel_hdmi_unset_edid(connector); + intel_hdmi_unset_edid(&connector->base); - if (connector->status != connector_status_connected) + if (connector->base.status != connector_status_connected) return; - intel_hdmi_set_edid(connector); + intel_hdmi_set_edid(&connector->base); } -static int intel_hdmi_get_modes(struct drm_connector *connector) +static int intel_hdmi_get_modes(struct drm_connector *_connector) { + struct intel_connector *connector = to_intel_connector(_connector); + /* drm_edid_connector_update() done in ->detect() or ->force() */ - return drm_edid_connector_add_modes(connector); + return drm_edid_connector_add_modes(&connector->base); } static int -intel_hdmi_connector_register(struct drm_connector *connector) +intel_hdmi_connector_register(struct drm_connector *_connector) { + struct intel_connector *connector = to_intel_connector(_connector); int ret; - ret = intel_connector_register(connector); + ret = intel_connector_register(&connector->base); if (ret) return ret; return ret; } -static void intel_hdmi_connector_unregister(struct drm_connector *connector) +static void intel_hdmi_connector_unregister(struct drm_connector *_connector) { - struct cec_notifier *n = intel_attached_hdmi(to_intel_connector(connector))->cec_notifier; + struct intel_connector *connector = to_intel_connector(_connector); + struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier; cec_notifier_conn_unregister(n); - intel_connector_unregister(connector); + intel_connector_unregister(&connector->base); } static const struct drm_connector_funcs intel_hdmi_connector_funcs = { @@ -2627,15 +2643,16 @@ static const struct drm_connector_funcs intel_hdmi_connector_funcs = { .atomic_duplicate_state = intel_digital_connector_duplicate_state, }; -static int intel_hdmi_connector_atomic_check(struct drm_connector *connector, +static int intel_hdmi_connector_atomic_check(struct drm_connector *_connector, struct drm_atomic_state *state) { - struct intel_display *display = to_intel_display(connector->dev); + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); if (HAS_DDI(display)) - return intel_digital_connector_atomic_check(connector, state); + return intel_digital_connector_atomic_check(&connector->base, state); else - return g4x_hdmi_connector_atomic_check(connector, state); + return g4x_hdmi_connector_atomic_check(&connector->base, state); } static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = { @@ -2645,22 +2662,23 @@ static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs }; static void -intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) +intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *_connector) { + struct intel_connector *connector = to_intel_connector(_connector); struct intel_display *display = to_intel_display(intel_hdmi); - intel_attach_force_audio_property(connector); - intel_attach_broadcast_rgb_property(connector); - intel_attach_aspect_ratio_property(connector); + intel_attach_force_audio_property(&connector->base); + intel_attach_broadcast_rgb_property(&connector->base); + intel_attach_aspect_ratio_property(&connector->base); - intel_attach_hdmi_colorspace_property(connector); - drm_connector_attach_content_type_property(connector); + intel_attach_hdmi_colorspace_property(&connector->base); + drm_connector_attach_content_type_property(&connector->base); if (DISPLAY_VER(display) >= 10) - drm_connector_attach_hdr_output_metadata_property(connector); + drm_connector_attach_hdr_output_metadata_property(&connector->base); if (!HAS_GMCH(display)) - drm_connector_attach_max_bpc_property(connector, 8, 12); + drm_connector_attach_max_bpc_property(&connector->base, 8, 12); } /* @@ -2682,25 +2700,26 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c * True on success, false on failure. */ bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder, - struct drm_connector *connector, + struct drm_connector *_connector, bool high_tmds_clock_ratio, bool scrambling) { + struct intel_connector *connector = to_intel_connector(_connector); struct intel_display *display = to_intel_display(encoder); struct drm_scrambling *sink_scrambling = - &connector->display_info.hdmi.scdc.scrambling; + &connector->base.display_info.hdmi.scdc.scrambling; if (!sink_scrambling->supported) return true; drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] scrambling=%s, TMDS bit clock ratio=1/%d\n", - connector->base.id, connector->name, + connector->base.base.id, connector->base.name, str_yes_no(scrambling), high_tmds_clock_ratio ? 40 : 10); /* Set TMDS bit clock ratio to 1/40 or 1/10, and enable/disable scrambling */ - return drm_scdc_set_high_tmds_clock_ratio(connector, high_tmds_clock_ratio) && - drm_scdc_set_scrambling(connector, scrambling); + return drm_scdc_set_high_tmds_clock_ratio(&connector->base, high_tmds_clock_ratio) && + drm_scdc_set_scrambling(&connector->base, scrambling); } static u8 chv_encoder_to_ddc_pin(struct intel_encoder *encoder) From patchwork Tue Apr 8 21:43:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043721 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 2D246C369A1 for ; Tue, 8 Apr 2025 21:44:20 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B2EC910E770; Tue, 8 Apr 2025 21:44:19 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="XR2WdJPR"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1594B10E76F; Tue, 8 Apr 2025 21:44:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148658; x=1775684658; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=BDl9p7KHp4pIvi8iAyu/6zPoM4meydAh5bKRzmXElFs=; b=XR2WdJPR4ZSBOoqgULwXqJiZabxSo22icRYU1/YP6zK4pQNfiuQKj7du iqKw5m4W+DWl23E21IY5CFWkaVM30yKjF/kNXHkN8PdPgsbqxlBwjmKID af9SVrmat71VlAxr5A0FVH8kIxZRK5BgOgy+t5RFl8RDedy2e2v/EAXZR hvajQJKHvl16QK0cvSNDyR9W4pQpY31HIKble146EC1xpgeElwoNszWZY uWzTPFd/zeAK7fX95Pu/IekAVDC6VdGXcI5o6l23UlVp808sVKlbozGJ6 gr7kxi6WNPZmzWxc7LwR5KaCWY+aOS3zdwf+NZ3xECSFsGx4mU573AFTb g==; X-CSE-ConnectionGUID: zkzAPRPfRp6k8Avx2K0fxQ== X-CSE-MsgGUID: 5ZAOjxZATZyFf0BYX4N/3w== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="44746768" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="44746768" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:18 -0700 X-CSE-ConnectionGUID: +HH9OTcAQ/qlmnifggM4kg== X-CSE-MsgGUID: CO24pHdjROOcH1Wig9wZew== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128381241" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa006.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:18 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:17 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:17 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MNIdzJcpfHtaOvLPYIT5kLGx2wgWrY7+tP/IRG0CYJX8SYEAG+tp1vx/KWuAf0C2aXQuL81yzFZaf2Oo3DwF/lKvTQvmRZyFS5ADaTxEUkvKUsoPo3FOW/pXDJ4c5DuZj4jTR+uxO4jR865JWLJ6knni9lW5xAJ3ux36TlaKSTwPvRCBe4mkEX6XWughAhnUdZZh395+/daau0IseavezTGO8FS2LXBLWn7pAYLFexf3NZfjbHwbbccgjPz4NMgHR/yk7/0JyMnO1Lsoj2U10CCfQ/RQX+j0AR+gITqFJCGc9gKd+00tdDjyKdcP0ZjkrF8g8t+TF6YDm4RpXVSeaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RMY6D4xCdkT4NiqrrHr5/MIg7rNBLh9TPohueQ40+RA=; b=kOfu6MrV1YHoiq9iF8YYeXGf0qq4WPdaMTR9w0Du4tliOkUWdrz9zvTs6X/J+bSyL9Julcj3/Quw6joz54G3WDeETnqAeDwj+hLPuduWnZIIVhHrRs9sSUsf6t6XQNxzm1n/zV/vSeFBxZksLhKPhPH6zstrBJv0bycHVJdIn9BJyzf229+xh9OxuRhMhPaQ6aFLtZT0zDm6DboZBzXMl2ds+7zIKUnA2yn9mdHM2B2GxoQDXnzPadZvDmMCFXHvAt0HqV6k38+1seVTp9U3+FyZGLDcLjMhKLsZmfW09G0y12yqMilMvnVeJDZPmlSm9DiaNZ56VeyZiFKh38AFGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by MW4PR11MB7101.namprd11.prod.outlook.com (2603:10b6:303:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.27; Tue, 8 Apr 2025 21:44:00 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:44:00 +0000 From: Imre Deak To: , Subject: [PATCH 09/10] drm/i915: Add support for forcing the link bpp on a connector Date: Wed, 9 Apr 2025 00:43:39 +0300 Message-ID: <20250408214342.1953197-10-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|MW4PR11MB7101:EE_ X-MS-Office365-Filtering-Correlation-Id: e8a072e1-c637-435e-7f02-08dd76e678c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?vtxcP2PrPSzNmZtmfHwVt/8IaF6u83T?= =?utf-8?q?21PAGXtpyKf19ysQMEHW4wz2JPf0Hvz02wqWs4SXM+O8c1d1GadjR/C2OuxGx8AgB?= =?utf-8?q?JoYSHXZRvYdi+zdbBGuPqhiPBHR1P+yivaIsuonbfhhIzRNPqG4ddkjbPhP0MEPbZ?= =?utf-8?q?zlo+1mHOyFg2gLbxCRzaHIpW73dxZU4EtsPl8zWXgznCjwZW4cMk8D+k8+5nJ83Fu?= =?utf-8?q?rwhtY+zKi+wRELLkPqLmOq0Sgfkn41cFshkobZUU/DardnzR74ykRzR+ETX1kmv6w?= =?utf-8?q?OKa9LaljPetJrg7sWZnBB76lO8Lp2so5/ZF+qOw9jADzuafnsk+ExFpYQWprf3e9d?= =?utf-8?q?1QUQUV2W4qCvBpDfxKdPK8FhSDixY2HfQ0DqBvM6IRUyX3ftSKdWI+cmqNVv97W6v?= =?utf-8?q?18PECa7d6jMhHb5lOSKjc00V9yI0Pl99NYwko6q/Be8+b6ld2R2oY8rl0iDqSeDrS?= =?utf-8?q?8pAWR6/ptvtnrdi4KvOSP8iVTBf0FlsDTTpoF4B/yWDVgkN9oFsL1pX0vK8DxWi/t?= =?utf-8?q?CLW52WEuZ6eLZcUMd0f/vLa6yKifmIkZUo92euzqcM9TvmXPNVly8wVND6VlRX804?= =?utf-8?q?AfAN9eqa7xeO8FdlIaPdTDHmoukXOp28lYEGtPuq2BCLRPsrtr8Xz6q+UXEeWVSnK?= =?utf-8?q?JJb6b6RpdKGRTtodX05SCOeCoPsfzCj/OSeR3LY78nKKqzBXLLFQYtvg4Rg3vjhRz?= =?utf-8?q?zK0nYPIodcgwwCsNvJfl2QIN+2uhKr3qH+PuPZZtQEUFql/iJLAhlyvgLtjkBidMT?= =?utf-8?q?YEtN5RWGKx0k3Ez5lVmtRJy4JUU+WMoZ16Qa+HVYOrMcqUVpcXYUmk2rkocRRPvDQ?= =?utf-8?q?2vJSTm/L0LRskTvDstLV5kivnl1nypeW6G2aeYyL8Hmox6DOsDZKDA4tdxhR3Ofzg?= =?utf-8?q?fNHpIbC6ikY+aGKOl1/85y8k0MoJWWvnBpvQaOSHDvFByglK77f2cW4svkNeS/j5N?= =?utf-8?q?0pXnWKfU42lCOdJPIWhlJTWstun2DYG3VsVJyVVRzNvPmAB8MatW2gdhJXqYCzTqv?= =?utf-8?q?rq0T5AVdcDJeqvvnhWBcxo/XUz7Ejk5pQM9t/WT1X1LzhurinMPTxgH/RVxJzGUA/?= =?utf-8?q?cvGBK9qR9xWwmI5DAcN/Z8CvsMFdBZlznyhwOC3mXz7i9274sdih+XPscHs9F7zPU?= =?utf-8?q?DHceonQ5droh0U9nxOsjsn12nwEn9NqrYsm57vs1gYljHeQFXyZ0mvjau6sbgHKZk?= =?utf-8?q?qYKBp22TasGBt1gU7COZBAVWwlsAYo2DPTJXMV3E7Nga4z98KAYslpikzuTR603JU?= =?utf-8?q?7pWKiGLIh/K9hj1BS0RmktN4anDjghhwe8QI5d091t0i/lRCfm7htD+nGXRIaETXa?= =?utf-8?q?EOmtGW2pr5AD?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?nHqSbiqjBEq5TuiMqInrfE3NTQAa?= =?utf-8?q?hHblK709zpdqEANZUMzJUvxK16ENfySI9szHnHLTiXdl/Zr0vwOIU7bEe1JSwc2lu?= =?utf-8?q?eS3JQpVMk2PkluUAL7nr8pLV+GEBimXBd185RPIgzNP7M7ngAJAUGqrvqad9X+b7e?= =?utf-8?q?dNl9Vyt2zi/rImXBTdRP+kBFKATpS/aPPNpreQvPBtG42LYttXTUEt4T8wzuLAIy1?= =?utf-8?q?5qrWqBL5wY//DsC93fv/xis3rTAO6rjfeW72iOhPxuftofynokGaBVdqJgRkDO3nm?= =?utf-8?q?nyRDaO/XsdIvdvsy9P/91nYZezEoovu6oFJ8AuVapnOqQ/4bLttO3Va7n1JJkX0JL?= =?utf-8?q?i/JsOgyybRK5JXAxi13GxJvDOjxYGRPyPjBCdiXoDh1Wr2Q5WGhT1aPDpGLbcassI?= =?utf-8?q?vkKRYxF2IHzDiJrd1VKNaz9qZY8lUtw232jeJ/i8v/ynfKmXispm802aqeaAH6kik?= =?utf-8?q?8cNK2015sQ1A1BvjqBlkhD1KcOXflL58G4agP0Q4VVy7RjBfwIlvJULhOn2iDgity?= =?utf-8?q?Bvo97fcrT8x4X6TQJ2YptbsV6Yi8jZItTgMcONPV6HrLhgqmAnZ0Q853O1Xcq0YuN?= =?utf-8?q?gMk4kOHHCWw7XkzxUYYRQ6llsF4jEr3O3ZbY26Ey1kZ9DWANHw0kKU9siGU/fajqz?= =?utf-8?q?cDDLH6AoNqwPKfhzlyY6Lv5+hXSMUohykbXTd3avt6QpwLu/WTF30VhcEgbMfVTOS?= =?utf-8?q?qTffBVI09dYbuDhucFqCOBIPFE7cv1Oj4pUp4D/JByhaiwyY/87eTsvX29Ed1oh6V?= =?utf-8?q?cYk5CIPuME33d2U1XjWQXRiLfPeoMCVN7hVsvsh2/3glpxf80TEREehbwOqeb5V5j?= =?utf-8?q?XEaGkSFma/T7NjidXdisKJiZGvxAY0+L2NFsYv0r5xcrctquy/8N7UxDJGlER+hyd?= =?utf-8?q?ZQgM9d9i5DGmQX44ak0vO8cr1nUUw5Ivnd6hbSE28sqRxhb+FE/p4ZssW20ZXlPRB?= =?utf-8?q?v/JsEJJ3DFcUm5d2mzSQoOK+hmdFazclZF+nBKpU1iPgvvLQm6y0urKDSYprrvgKy?= =?utf-8?q?IFlT6jskojGCyO1pLAWE/zFZ5pWtTaSJatYlEPc+XM/hi4xRsI4rTm/iLbEiNjHvy?= =?utf-8?q?C/hMO3exgdhYGtSuGa1SWQeh4cbHLmIMaILFIjLPI+cuq1UP0034N7/+7+sxbxkcj?= =?utf-8?q?WcTeE6Spa02ZPNErEZJWxIDRkGtcySf7lkWOPQNJTnimUqrZuTUxkFkrTtD/O6HNU?= =?utf-8?q?87lsLUI9fG14Vd+GcnjapOvpEqZ1mly3t9d3osMbsBny7Ll92fFI2InrGCJTahU8P?= =?utf-8?q?xTCRm1adoGKqppiXN1QbKmPmvZIXu6IDYdDrVGWD55ZvcxZxvCZdIuS7iS3C56r7F?= =?utf-8?q?OJ1VvNl9UKFFGVUhEDCmYHZNPYUfbL/aNaI3oXsaRj3B9ccVpaI0D+6mWW0oV8dxP?= =?utf-8?q?9lQBG0Cgf/soL/D8367fWh67phD2NvvHrpABRUOTNSd0iTRNUV6mkqzWGHP2AAU7m?= =?utf-8?q?OKgFczis8oGUIeiguKLRrnjPUivgKgrYuqmUT4ACV0/MtP/ze6kdf6rqv12XYSowD?= =?utf-8?q?9N4Sxn7M+ByC?= X-MS-Exchange-CrossTenant-Network-Message-Id: e8a072e1-c637-435e-7f02-08dd76e678c7 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:43:59.9731 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zNq36mi3Yd1/lq6rUKEq1E1Yseh0kUyuxjBT1ojquCFHBaD9J0nGmkDNI6kYaHD4DQmx0+LDz3FEWeM8c0fXWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7101 X-OriginatorOrg: intel.com 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" Add support for forcing the link bpp on a connector via a connector debugfs entry. During reducing link bpps due to a link BW limit, keep bpps close to their forced value. Signed-off-by: Imre Deak --- .../drm/i915/display/intel_display_types.h | 4 + drivers/gpu/drm/i915/display/intel_link_bw.c | 204 +++++++++++++++++- drivers/gpu/drm/i915/display/intel_link_bw.h | 2 + 3 files changed, 203 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index 94468a9d2e0d3..6862cb4885b18 100644 --- a/drivers/gpu/drm/i915/display/intel_display_types.h +++ b/drivers/gpu/drm/i915/display/intel_display_types.h @@ -550,6 +550,10 @@ struct intel_connector { struct intel_dp *dp; } mst; + struct { + int force_bpp_x16; + } link; + /* Work struct to schedule a uevent on link train failure */ struct work_struct modeset_retry_work; diff --git a/drivers/gpu/drm/i915/display/intel_link_bw.c b/drivers/gpu/drm/i915/display/intel_link_bw.c index a10cd39926075..2a05fac53aa78 100644 --- a/drivers/gpu/drm/i915/display/intel_link_bw.c +++ b/drivers/gpu/drm/i915/display/intel_link_bw.c @@ -3,6 +3,9 @@ * Copyright © 2023 Intel Corporation */ +#include +#include + #include #include @@ -10,11 +13,35 @@ #include "intel_crtc.h" #include "intel_display_core.h" #include "intel_display_types.h" +#include "intel_dp.h" #include "intel_dp_mst.h" #include "intel_dp_tunnel.h" #include "intel_fdi.h" #include "intel_link_bw.h" +static int get_forced_link_bpp_x16(struct intel_atomic_state *state, + const struct intel_crtc *crtc) +{ + struct drm_connector_state *conn_state; + struct drm_connector *_connector; + int force_bpp_x16 = INT_MAX; + int i; + + for_each_new_connector_in_state(&state->base, _connector, conn_state, i) { + struct intel_connector *connector = to_intel_connector(_connector); + + if (conn_state->crtc != &crtc->base) + continue; + + if (!connector->link.force_bpp_x16) + continue; + + force_bpp_x16 = min(force_bpp_x16, connector->link.force_bpp_x16); + } + + return force_bpp_x16 < INT_MAX ? force_bpp_x16 : 0; +} + /** * intel_link_bw_init_limits - initialize BW limits * @state: Atomic state @@ -31,9 +58,10 @@ void intel_link_bw_init_limits(struct intel_atomic_state *state, limits->force_fec_pipes = 0; limits->bpp_limit_reached_pipes = 0; for_each_pipe(display, pipe) { + struct intel_crtc *crtc = intel_crtc_for_pipe(display, pipe); const struct intel_crtc_state *crtc_state = - intel_atomic_get_new_crtc_state(state, - intel_crtc_for_pipe(display, pipe)); + intel_atomic_get_new_crtc_state(state, crtc); + int forced_bpp_x16 = get_forced_link_bpp_x16(state, crtc); if (state->base.duplicated && crtc_state) { limits->max_bpp_x16[pipe] = crtc_state->max_link_bpp_x16; @@ -42,15 +70,19 @@ void intel_link_bw_init_limits(struct intel_atomic_state *state, } else { limits->max_bpp_x16[pipe] = INT_MAX; } + + if (forced_bpp_x16) + limits->max_bpp_x16[pipe] = min(limits->max_bpp_x16[pipe], forced_bpp_x16); } } /** - * intel_link_bw_reduce_bpp - reduce maximum link bpp for a selected pipe + * __intel_link_bw_reduce_bpp - reduce maximum link bpp for a selected pipe * @state: atomic state * @limits: link BW limits * @pipe_mask: mask of pipes to select from * @reason: explanation of why bpp reduction is needed + * @reduce_forced_bpp: allow reducing bpps below their forced link bpp * * Select the pipe from @pipe_mask with the biggest link bpp value and set the * maximum of link bpp in @limits below this value. Modeset the selected pipe, @@ -64,10 +96,11 @@ void intel_link_bw_init_limits(struct intel_atomic_state *state, * - %-ENOSPC if no pipe can further reduce its link bpp * - Other negative error, if modesetting the selected pipe failed */ -int intel_link_bw_reduce_bpp(struct intel_atomic_state *state, - struct intel_link_bw_limits *limits, - u8 pipe_mask, - const char *reason) +static int __intel_link_bw_reduce_bpp(struct intel_atomic_state *state, + struct intel_link_bw_limits *limits, + u8 pipe_mask, + const char *reason, + bool reduce_forced_bpp) { struct intel_display *display = to_intel_display(state); enum pipe max_bpp_pipe = INVALID_PIPE; @@ -97,6 +130,10 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state, */ link_bpp_x16 = fxp_q4_from_int(crtc_state->pipe_bpp); + if (!reduce_forced_bpp && + link_bpp_x16 <= get_forced_link_bpp_x16(state, crtc)) + continue; + if (link_bpp_x16 > max_bpp_x16) { max_bpp_x16 = link_bpp_x16; max_bpp_pipe = crtc->pipe; @@ -112,6 +149,21 @@ int intel_link_bw_reduce_bpp(struct intel_atomic_state *state, BIT(max_bpp_pipe)); } +int intel_link_bw_reduce_bpp(struct intel_atomic_state *state, + struct intel_link_bw_limits *limits, + u8 pipe_mask, + const char *reason) +{ + int ret; + + /* Try to keep any forced link BPP. */ + ret = __intel_link_bw_reduce_bpp(state, limits, pipe_mask, reason, false); + if (ret == -ENOSPC) + ret = __intel_link_bw_reduce_bpp(state, limits, pipe_mask, reason, true); + + return ret; +} + /** * intel_link_bw_set_bpp_limit_for_pipe - set link bpp limit for a pipe to its minimum * @state: atomic state @@ -245,3 +297,141 @@ int intel_link_bw_atomic_check(struct intel_atomic_state *state, return -EAGAIN; } + +static int force_link_bpp_show(struct seq_file *m, void *data) +{ + struct intel_connector *connector = m->private; + + seq_printf(m, FXP_Q4_FMT "\n", FXP_Q4_ARGS(connector->link.force_bpp_x16)); + + return 0; +} + +static int str_to_fxp_q4_uint(const char *str, int *val_x16) +{ + unsigned int val; + int err; + + err = kstrtouint(str, 10, &val); + if (err) + return err; + + if (val > INT_MAX >> 4) + return -ERANGE; + + *val_x16 = fxp_q4_from_int(val); + + return 0; +} + +/* modifies str */ +static int str_to_fxp_q4(char *str, int *val_x16) +{ + const char *int_str; + char *frac_str; + int frac_val; + int err; + + int_str = strim(str); + frac_str = strchr(int_str, '.'); + + if (frac_str) + *frac_str++ = '\0'; + + err = str_to_fxp_q4_uint(int_str, val_x16); + if (err) + return err; + + if (!frac_str) + return 0; + + if (*frac_str == '+') /* otherwise valid in front of an unsigned integer */ + return -EINVAL; + + err = str_to_fxp_q4_uint(frac_str, &frac_val); + if (err) + return err; + + *val_x16 += DIV_ROUND_CLOSEST(frac_val, int_pow(10, strlen(frac_str))); + + return 0; +} + +static int user_str_to_fxp_q4(const char __user *ubuf, size_t len, int *val_x16) +{ + char *kbuf; + int err; + + kbuf = memdup_user_nul(ubuf, len); + if (IS_ERR(kbuf)) + return PTR_ERR(kbuf); + + err = str_to_fxp_q4(kbuf, val_x16); + + kfree(kbuf); + + return err; +} + +static bool connector_supports_dsc(struct intel_connector *connector) +{ + struct intel_display *display = to_intel_display(connector); + + switch (connector->base.connector_type) { + case DRM_MODE_CONNECTOR_eDP: + return intel_dp_has_dsc(connector); + case DRM_MODE_CONNECTOR_DisplayPort: + if (connector->mst.dp) + return HAS_DSC_MST(display); + + return HAS_DSC(display); + default: + return false; + } +} + +static ssize_t +force_link_bpp_write(struct file *file, const char __user *ubuf, size_t len, loff_t *offp) +{ + struct seq_file *m = file->private_data; + struct intel_connector *connector = m->private; + struct intel_display *display = to_intel_display(connector); + int min_bpp; + int bpp_x16; + int err; + + err = user_str_to_fxp_q4(ubuf, len, &bpp_x16); + if (err) + return err; + + if (connector_supports_dsc(connector)) + min_bpp = intel_dp_dsc_min_src_compressed_bpp(); + else + min_bpp = intel_display_min_pipe_bpp(); + + if (bpp_x16 && + (bpp_x16 < fxp_q4_from_int(min_bpp) || + bpp_x16 > fxp_q4_from_int(intel_display_max_pipe_bpp(display)))) + return -EINVAL; + + err = drm_modeset_lock_single_interruptible(&display->drm->mode_config.connection_mutex); + if (err) + return err; + + connector->link.force_bpp_x16 = bpp_x16; + + drm_modeset_unlock(&display->drm->mode_config.connection_mutex); + + *offp += len; + + return len; +} +DEFINE_SHOW_STORE_ATTRIBUTE(force_link_bpp); + +void intel_link_bw_connector_debugfs_add(struct intel_connector *connector) +{ + struct dentry *root = connector->base.debugfs_entry; + + debugfs_create_file("i915_force_link_bpp", 0644, root, + connector, &force_link_bpp_fops); +} diff --git a/drivers/gpu/drm/i915/display/intel_link_bw.h b/drivers/gpu/drm/i915/display/intel_link_bw.h index e69049cf178f6..b499042e62b13 100644 --- a/drivers/gpu/drm/i915/display/intel_link_bw.h +++ b/drivers/gpu/drm/i915/display/intel_link_bw.h @@ -11,6 +11,7 @@ #include "intel_display_limits.h" struct intel_atomic_state; +struct intel_connector; struct intel_crtc_state; struct intel_link_bw_limits { @@ -32,5 +33,6 @@ bool intel_link_bw_set_bpp_limit_for_pipe(struct intel_atomic_state *state, enum pipe pipe); int intel_link_bw_atomic_check(struct intel_atomic_state *state, struct intel_link_bw_limits *new_limits); +void intel_link_bw_connector_debugfs_add(struct intel_connector *connector); #endif From patchwork Tue Apr 8 21:43:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 14043725 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 2B129C369A1 for ; Tue, 8 Apr 2025 21:44:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B0F5C10E778; Tue, 8 Apr 2025 21:44:24 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="NiwUi2hh"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24B4C10E777; Tue, 8 Apr 2025 21:44:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744148663; x=1775684663; h=from:to:subject:date:message-id:in-reply-to:references: content-transfer-encoding:mime-version; bh=LwKJtqPdbzU9q1Tv4VkqIy4EEKqB3on5DRfrxbnaL5s=; b=NiwUi2hh32UIAxB5Qb8iSTgClp2WHLkiycNiL8wdUFogIj8yrn459vFn mNLZChuPML1nOAb1NwFlpsNHUtCroH7UXqumemEMFQb80bzY4KPffWsjD CJJoeUvxeNlRNFp6Va5t9jsJDqKIbHOOR8fEQlZ9W49QAHp80lGk/DUI5 WoMR2o1Ve+dpt92IG6vXf9gVZu4jk/XBIVS9EzaxALxtI/irBmm5IQeYz tw1feMt2Fa2NovaaB0x1JHht660sDuTu7u3hayjv02y9vhAmJi6nt7OcB WNUXSMRHmVJQM1+gUeNyUSmHcTJ2mdG9U51iHBxSRzzsnR86H8494nXMd Q==; X-CSE-ConnectionGUID: Vlnb0x+xS7SJJMq9Y1Pmmg== X-CSE-MsgGUID: nVtP6msQSpGk4vHUHZiuWA== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="56243169" X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="56243169" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:23 -0700 X-CSE-ConnectionGUID: B2LKYFsISFWADGVRX++cfg== X-CSE-MsgGUID: u6uxxVvCQg+FNs4C18C4eg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,199,1739865600"; d="scan'208";a="128724403" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2025 14:44:23 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 14:44:22 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 8 Apr 2025 14:44:22 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.40) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 8 Apr 2025 14:44:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VwPz611DjI574MzibQ9UO+q2kmGsAUzTtw4CDjQ1BbMeF1hScRztv1BFZ1yRg8oeOpB2fVDTjXomksfx4lmOVqLIrW+CaoWDILartT6GqVHsHPZi3UIhVEgPJXJz6CbLXuuIMZ9a1OPMTPGWQoyQse2xsLNox8+Castx6GWQEXIPH0PdZumsFXxLmeTPqHh518VFkgNWn41MAL+aYte4pJSYBeKTPXc6ujpD6eHu7FFwzveqZ/YPhQ6VPxY45FzVbqrmVY3sXpgx9+VBgeqt5DRdnnLBDSKXkGymLGJwn8KPGLUSXAnXM65xbPzfvtaDksI6qlqwzRKszQAJ2Ro73g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=k2BMSEzq80KRW0p0g9HgmBxWbicZa2klq8/e41ujWu8=; b=M3mCSBw2xWLuX0AmaWa4gVe13Sioehvvhkg9AhRM42/fevr3mDMWjSqMg8xZa1NuzbCB/bYtxlUMfSs5iIi9DoiszwMz1FfDe0B+G/EA3brmuK0u2sSgNObVqmtRvgxQYDyjpmFHPSVb0CNTpfUW2UhxbmC5y+ddVo2lzJIZOrDhtvrejZR3tyeZtvZtjEUySd700Ce3FyvKlf10gy31zPqjpEo5jYP037hz417i/Z8yZCuuHlaT2kKX9eXqcJvbkhiUUd3tQfeKLQlKh1WWQsa3P3Ca4iYViojaexAMw7ty/yv3kfsv9yZh0HPssijj0gSUve6EIC7bAgDeAJ7PBg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) by DM6PR11MB4562.namprd11.prod.outlook.com (2603:10b6:5:2a8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.20; Tue, 8 Apr 2025 21:44:01 +0000 Received: from SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f]) by SJ0PR11MB4845.namprd11.prod.outlook.com ([fe80::8900:d137:e757:ac9f%6]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 21:44:01 +0000 From: Imre Deak To: , Subject: [PATCH 10/10] drm/i915: Add force link bpp debugfs entry to connectors Date: Wed, 9 Apr 2025 00:43:40 +0300 Message-ID: <20250408214342.1953197-11-imre.deak@intel.com> X-Mailer: git-send-email 2.44.2 In-Reply-To: <20250408214342.1953197-1-imre.deak@intel.com> References: <20250408214342.1953197-1-imre.deak@intel.com> X-ClientProxiedBy: DU2PR04CA0060.eurprd04.prod.outlook.com (2603:10a6:10:234::35) To SJ0PR11MB4845.namprd11.prod.outlook.com (2603:10b6:a03:2d1::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB4845:EE_|DM6PR11MB4562:EE_ X-MS-Office365-Filtering-Correlation-Id: a0ee7a72-0732-4ca8-2b37-08dd76e6798c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: wLYb5nh0ZMa8CoYeUL8xVBV5hQRd9Rrn72A1Jk1w+qCanKgtLc+Pwbly3WWRsKv/qGW3j1/2SvI6crzLI8BMTpfeHjjD3tkLIQauIyfeellpUkDoYozG864t/W0ziCL/hm/68xigruvopT2+kX8iHD97kNpwt5DWMMt8hdtnfFD48E5xDHb4qdjLdKVHcoIFi6hhBjrIceBPauRoBI827b1npDDNfbJgFg1f+giL/tHLvsVkD73CG3vRRc3jpU+zRqsxoVeE7kxTq9TzX+MPr9VWTJZqjX8UIgbPDJ3iTqKVpfiRzjyIsK6EwxxPypynHMRDPXZpMUXuRBER8ijk4BH9CAPHF3He1uTlZd5AfVGSElMkKFt4wmyUB8w7PeIGLNwR/i6NxUeBpm1SpOZJpSiIWxnJakqUALB+yLmOKPR1u+W3kpM+bKXNHfxSFciVCCup9lf4Ukm6dNCUUqeUtb4lkJU2LhTLMEvrtK+VZdfve8GxYbjaKmxiFB3ruZmqxpN5xrolIqrj9VYwXaQglYoSwAt7vMW6KG7f4t//9Kso+rqzVvTxdC/wlRUeET77J4Q90MrtXg9s6oirxY6nNrnsqfwDZCqA/fxfXnM+dVI53kKGnw3ecw5r+mx/D3SPilyxNC6UT67btBs5JqQv5KU6VnIT8CSUPATTZMhogVviEDclkLe0UzFezJwkKk3cdS5tUFWjZkuGFz9BOSXDefd6BlsmrAb+PSy4PoXguO+BpBi+7OBjnBAWmfl9MFn9onqEn8lxPe+fnB0q/1sDL/oUWOUpZF1Op4HEkm06yhz3LaWRKz54EtByOhn9crX7uUEKS1DNC/rBUC6RMwZNhG10tSHE6XaEMUna5iTv7C8jvXgotD8toD0SscXncM67ly6DTkLv++5RgV3a5cqD4fFbc+KhEeNyquE9DivlwsKghH8mZRO6hRjyjiUh35UtbBai0cYrXVi+jvuxvrHdMLETa+2G8P/2rs8kueczEBVtX7izjv0M2eMafqL36hcpOCSViH1qTa9SM8TsY6LPEKym9wnh63o0LJq/8OBqPea059YfuWEJygjMpTOfBV3zuH6R0ujINdrN/xkrzgx9WTpi2IvN1gYwJRwAtg0yT3IozYJA+pgOUvfmUjaw77FnA7AXgHBq3SePvtSRDEDrnfDHRf30JYJmzYbCavpjlqvr4YaxA2CJitMauhjfASdT29j14cU70FiNsOrd+HA9xxN3FrXiqCKeyoKedDB6vshnA6hXhTB07SMETeMxARplKtSBbR+llVQ8HhIWy/wNgpsHV2TvB2Bg7mZHk9tn66IgcrNTMRCtDEKzLxCkjWtwf6JtiA8kzFHdCRK2uIO1bOoSnPUad1YpPaGUMS+rl3lsHZt76u1qhMtO31xJ945o X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB4845.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0r76ZzvgJwmbXrAKBCEd0grhIglLn82oABfTYNWm5CGe8rDYvcZfuN4XY4diUJbd+ip7r2F7ZvU7IpYnUuKGwG7YZZ+/0wIG9kkQJVxhkP/4TWNdgDYcbIUd/3o6bzwBfLEwen0xkElUW8+5sgN0y7GtM8mWjnb0fbiaf28YE/zGIkbV9evV5LIiZWywld+3NcMjHDG0IpITC+5XrALnCWSzDnq4uPyYhQ5ctayRYBvZ0zt+MV6P3MAg3tvo2MBhg2/Jjr9escY4FSKtwQ6ZIpIKWH17MwoA6PX6guAtV25p8jgwni8vsP33ekGX2Qq8MgQiCYGo9AcNz+7KtPCqh9oWMcQkolT1t8Hy/RAEllHCoH8hZq1f9GWs35AKUdzzPBcuV34IjP3IA8h2fKAKegF1GO6TjbfHiiKUOz0jxX9IZqV1AI8ekzX/SAFengQuhVceyCZh9f0r+ChjfrKNyJzStZKm2MeDNcUW6SbnS/JgzNRiwVE8Y3bdTgZpTtLxAzsABM7wySEfERROQRvimc/m5JGlF6JO3bCvSso3lK14vTnE3LngYamVaGZJyUsbOqwp1Bv61U3kPYrcihH845qipZNjXgLdM5pa2pj2Eo4mKXNTHLyYgatxiqeC9ez1Wxztn4PB2ygepdD4KUn50YSaGgiwZY4qymOGODxzF4izwmiijXMujQCzIwj7IcDZxzfdWpzPr2nOkoCCs+075zCHhDuqqruYL/xnUrRuSHSPXddzM3PK0KFLA54sUCry5e56EPaHgppSa/ZByBiKBbVHTeUdQqefSntz2XxKYd9CuVL6b04d5iFwarqPs9MUujMsgNNYtEDSkA620Je3V94ZsSRpdMxqF8icsLxqLCmJ7BDbam7XsqPSorQaKLhxhQ/rq65R0awS5kEddW/qO9YwO0QKe/N8c1DHUOkC562dck3CD3huRycm8udyOZM1uT/6EqjpEdh1/q1uW8JOoFbXOIFYhRJv8REwvEx6GsFacfiAM78TT6jVRo/fw7TjgX1LXtPahKElbcZKhtpeByJuhEV+MNVOwVylHWsRBuZMq6oRlihzsV5LNWOkSdBNzMJlGF7NfRhiJ1KtPU3fXZjl6jEyaGh3vGhgRdNwIYlLyjeBx4ON4OFKS55x3EoyK0TbDgHpfMndU0lMiD9gNjUtWgC2uyTVQPEokKKL5qjaK9JAe1a3JhJmCAA3+92p5beCJWsZQVnQD/0LuJAiyppVRBWEXOX6w/LT4pptzM8E4jpL1qAKEciK1C/uQDlgBjeWlVitFNWPUnAN6l7zBbxln2syJr2gOwrDcJdY0EORrf+sZDBLmUHwAUhBoDyx5QyDPw7Uo/Ghu1p8NyNE1KXvFzxK6r2y26I7migqcfbcpOtcZaj0g3Hkf8iLGpmeiF1BdC5mOT33Ub59QlIEHTfHtlQaKGODyXzn9a/CoFNccVRZU5w5n3hWWs8qXVkyH6YISMiunabShWck9upBAagUIQeMu4EnzbgEQCJ4egAD3iBpWRBHkCNMjcZVVko8DLfN4qMiKPUqukTZkKgXFvXZLbt5biVnJvnl7NG01cHoFREqw5eDTak1VC+yH6cZ X-MS-Exchange-CrossTenant-Network-Message-Id: a0ee7a72-0732-4ca8-2b37-08dd76e6798c X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4845.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 21:44:01.2900 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N0YZb0IrW+cvSWDG48SkM46aG690AqdK4H/eSOGicm/pegz6zil/O5eBtDruX0RSF2rFcxGmbqxTjt9+fE2VTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4562 X-OriginatorOrg: intel.com 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" Add the debugfs entry to force a link bpp to all relevant connectors: all DP connectors and on an FDI link CRT/SDVO/LVDS/HDMI connectors. Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/display/intel_crt.c | 20 ++++++++++++++++++- .../drm/i915/display/intel_display_device.h | 1 + drivers/gpu/drm/i915/display/intel_dp.c | 3 +++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 ++ drivers/gpu/drm/i915/display/intel_hdmi.c | 8 +++++++- drivers/gpu/drm/i915/display/intel_lvds.c | 20 ++++++++++++++++++- drivers/gpu/drm/i915/display/intel_sdvo.c | 20 ++++++++++++++++++- 7 files changed, 70 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c index cca22d2402e88..69831d6f68912 100644 --- a/drivers/gpu/drm/i915/display/intel_crt.c +++ b/drivers/gpu/drm/i915/display/intel_crt.c @@ -43,6 +43,7 @@ #include "intel_ddi.h" #include "intel_ddi_buf_trans.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_fdi.h" @@ -51,6 +52,7 @@ #include "intel_gmbus.h" #include "intel_hotplug.h" #include "intel_hotplug_irq.h" +#include "intel_link_bw.h" #include "intel_load_detect.h" #include "intel_pch_display.h" #include "intel_pch_refclk.h" @@ -986,13 +988,29 @@ void intel_crt_reset(struct drm_encoder *encoder) } +static int intel_crt_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + /* * Routines for controlling stuff on the analog port */ static const struct drm_connector_funcs intel_crt_connector_funcs = { .fill_modes = drm_helper_probe_single_connector_modes, - .late_register = intel_connector_register, + .late_register = intel_crt_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h index 368b0d3417c26..a84bdc83417f1 100644 --- a/drivers/gpu/drm/i915/display/intel_display_device.h +++ b/drivers/gpu/drm/i915/display/intel_display_device.h @@ -171,6 +171,7 @@ struct intel_display_platforms { #define HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake) #define HAS_GMBUS_IRQ(__display) (DISPLAY_VER(__display) >= 4) #define HAS_GMCH(__display) (DISPLAY_INFO(__display)->has_gmch) +#define HAS_FDI(__display) (IS_DISPLAY_VER((__display), 5, 8) && !HAS_GMCH(__display)) #define HAS_HOTPLUG(__display) (DISPLAY_INFO(__display)->has_hotplug) #define HAS_HW_SAGV_WM(__display) (DISPLAY_VER(__display) >= 13 && !(__display)->platform.dgfx) #define HAS_IPC(__display) (DISPLAY_INFO(__display)->has_ipc) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 8ca33ebedce27..0b19a9b5adda5 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -80,6 +80,7 @@ #include "intel_hdmi.h" #include "intel_hotplug.h" #include "intel_hotplug_irq.h" +#include "intel_link_bw.h" #include "intel_lspcon.h" #include "intel_lvds.h" #include "intel_modeset_lock.h" @@ -5890,6 +5891,8 @@ intel_dp_connector_register(struct drm_connector *_connector) if (ret) return ret; + intel_link_bw_connector_debugfs_add(connector); + drm_dbg_kms(display->drm, "registering %s bus for %s\n", intel_dp->aux.name, connector->base.kdev->kobj.name); diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 35214d9a8c781..7508aa4e3695f 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1445,6 +1445,8 @@ mst_connector_late_register(struct drm_connector *_connector) if (ret < 0) drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port); + intel_link_bw_connector_debugfs_add(connector); + return ret; } diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index 8f2cef36bdf79..0747ef8d6c0ca 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -52,6 +52,7 @@ #include "intel_cx0_phy.h" #include "intel_ddi.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_dp.h" @@ -60,6 +61,7 @@ #include "intel_hdcp_regs.h" #include "intel_hdcp_shim.h" #include "intel_hdmi.h" +#include "intel_link_bw.h" #include "intel_lspcon.h" #include "intel_panel.h" #include "intel_pfit.h" @@ -2611,13 +2613,17 @@ static int intel_hdmi_connector_register(struct drm_connector *_connector) { struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); int ret; ret = intel_connector_register(&connector->base); if (ret) return ret; - return ret; + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; } static void intel_hdmi_connector_unregister(struct drm_connector *_connector) diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c index 89d26913e2539..3ac6aaa025434 100644 --- a/drivers/gpu/drm/i915/display/intel_lvds.c +++ b/drivers/gpu/drm/i915/display/intel_lvds.c @@ -45,10 +45,12 @@ #include "intel_backlight.h" #include "intel_connector.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_types.h" #include "intel_dpll.h" #include "intel_fdi.h" #include "intel_gmbus.h" +#include "intel_link_bw.h" #include "intel_lvds.h" #include "intel_lvds_regs.h" #include "intel_panel.h" @@ -501,6 +503,22 @@ static int intel_lvds_get_modes(struct drm_connector *_connector) return intel_panel_get_modes(connector); } +static int intel_lvds_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + static const struct drm_connector_helper_funcs intel_lvds_connector_helper_funcs = { .get_modes = intel_lvds_get_modes, .mode_valid = intel_lvds_mode_valid, @@ -512,7 +530,7 @@ static const struct drm_connector_funcs intel_lvds_connector_funcs = { .fill_modes = drm_helper_probe_single_connector_modes, .atomic_get_property = intel_digital_connector_atomic_get_property, .atomic_set_property = intel_digital_connector_atomic_set_property, - .late_register = intel_connector_register, + .late_register = intel_lvds_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c index 757b9ce7e3b1c..ab7caaa4f287f 100644 --- a/drivers/gpu/drm/i915/display/intel_sdvo.c +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c @@ -45,6 +45,7 @@ #include "intel_connector.h" #include "intel_crtc.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_fdi.h" @@ -52,6 +53,7 @@ #include "intel_gmbus.h" #include "intel_hdmi.h" #include "intel_hotplug.h" +#include "intel_link_bw.h" #include "intel_panel.h" #include "intel_sdvo.h" #include "intel_sdvo_regs.h" @@ -2502,12 +2504,28 @@ intel_sdvo_connector_duplicate_state(struct drm_connector *connector) return &state->base.base; } +static int intel_sdvo_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + static const struct drm_connector_funcs intel_sdvo_connector_funcs = { .detect = intel_sdvo_detect, .fill_modes = drm_helper_probe_single_connector_modes, .atomic_get_property = intel_sdvo_connector_atomic_get_property, .atomic_set_property = intel_sdvo_connector_atomic_set_property, - .late_register = intel_connector_register, + .late_register = intel_sdvo_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,