From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 737597B for ; Wed, 26 Oct 2022 15:33:32 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 52741580260; Wed, 26 Oct 2022 11:33:31 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 26 Oct 2022 11:33:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPs WW+yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=zCWW9tXO+cVN+awHlRRB2K4K1d Jfmonl65fjxzcWkzOV6uFKF7Xu1IU4M7QnUZnH8YG3XTm5C6FX/rwfEadZ/vxTVV 69zNwrSBvH1cgf18KwGS17zIW3k9oErZfInsco6s5EApjOYOS54JHWgvpAIyIhAt MIq4n1ISQYM47Z8xou4I5RN67Qxhc+61J3hMJaPd8l08UkAmmQXiyqBGIC6S9qmL KvH9AGxGJ4ZYWCFftEJxVhD2mSHuIYvEKwVsT2A9auMFOhsco+eRbVQyyxdpJ2zV qXOWThXBAV4hEVlEeoRS3TRrpdxsCNLh47sGBzu6g4maxgESFFGG4i6HFrGA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPsWW+ yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=LDIRT0ney4GOGCdErBo4Cft0FJGxl 9LYMyvcohA/C20j6a3qR7VuopKYPuGu5IzULBKeRwhU3vVCWP9s/6L8Cn1siKAUd gZGyCjLk1//Hote4346RODhr7LVPcV4MjZ07n2Xjl6i9UEoAnTCzB+rNcrcAkrdw sJUhWo6f3V7FvmsFhIZx4IpI3VL0k5sftbyeTlNMmq1Kjtp6KHLvsBQUZfAnFbGs 5J2hq+dKe0YmYIBT+4XSUs72ndvDAe3fVNSc2dDBwtvnWYVPZzVLdWMVLRqjVtE4 wyasaQBv5aZaRBUwRFt1W7dWQ5P77hsWjiRNXdJdBX3CKHhLzdo3EGhaA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrtddvgdeltdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhufggtgfgfffkvfevofesthekredtredtjeenucfhrhhomhepmhgrgihimhgv segtvghrnhhordhtvggthhenucggtffrrghtthgvrhhnpeeltdeifefgffetueehueefgf dvtdfgjeegueetiedtteelieeftedtvefhlefgheenucffohhmrghinhepkhgvrhhnvghl rdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Oct 2022 11:33:29 -0400 (EDT) From: maxime@cerno.tech Subject: [PATCH v6 00/23] drm: Analog TV Improvements Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-b4-tracking: H4sIAD9TWWMC/43NQQ7CIBAF0KsY1o6hQAt15T2MCwqDJTHQQENiTO/u6M646WryM/nvv1jFErGy8+ HFCrZYY04UhuOBudmmO0L0lJngQnAtDJQlgk32ke+wNlhKXrCsJAAfO+WDQ1QDZ1SfbEWYik1u/gBa 9qg6L+Xo/Oc9x7rm8vwON0nnumOjCeAQtJSWox/DyC8OS8qnFWnkRmpTeyVF0sC9NEbLoI34k/q9Uk +SN6pzblAB1fQjbdv2Blmjr7VkAQAA Date: Wed, 26 Oct 2022 17:33:19 +0200 Message-Id: <20220728-rpi-analog-tv-properties-v6-0-e7792734108f@cerno.tech> To: Karol Herbst , Emma Anholt , Ben Skeggs , Chen-Yu Tsai , Rodrigo Vivi , Maarten Lankhorst , Jani Nikula , Daniel Vetter , Thomas Zimmermann , Tvrtko Ursulin , Samuel Holland , Jernej Skrabec , David Airlie , Maxime Ripard , Joonas Lahtinen , Lyude Paul Cc: linux-sunxi@lists.linux.dev, Maxime Ripard , intel-gfx@lists.freedesktop.org, Phil Elwell , linux-arm-kernel@lists.infradead.org, nouveau@lists.freedesktop.org, Hans de Goede , Dom Cobley , Mateusz Kwiatkowski , dri-devel@lists.freedesktop.org, Dave Stevenson , linux-kernel@vger.kernel.org, Noralf Trønnes , Geert Uytterhoeven X-Mailer: b4 0.11.0-dev-99e3a X-Developer-Signature: v=1; a=openpgp-sha256; l=10004; i=maxime@cerno.tech; h=from:subject:message-id; bh=I0r4wpJ5a54KsF+Jci3sVAyWz/wd61IGNVOHBpV8H14=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMmRwW55mxauUHSqzWyeaXtygW3yrmyDQym6Rm+Nlv9L7RDa yH6go5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMpS2Bk2Lv20IPXJfJGqry5hbqpFS r7yt7KTi0SEb8QuvS786OMZ4wM/2x3aXAfkJvGucA0dJUxy4Hw+137/z89H7ma74neXqM/LAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Hi, Here's a series aiming at improving the command line named modes support, and more importantly how we deal with all the analog TV variants. The named modes support were initially introduced to allow to specify the analog TV mode to be used. However, this was causing multiple issues: * The mode name parsed on the command line was passed directly to the driver, which had to figure out which mode it was suppose to match; * Figuring that out wasn't really easy, since the video= argument or what the userspace might not even have a name in the first place, but instead could have passed a mode with the same timings; * The fallback to matching on the timings was mostly working as long as we were supporting one 525 lines (most likely NSTC) and one 625 lines (PAL), but couldn't differentiate between two modes with the same timings (NTSC vs PAL-M vs NSTC-J for example); * There was also some overlap with the tv mode property registered by drm_mode_create_tv_properties(), but named modes weren't interacting with that property at all. * Even though that property was generic, its possible values were specific to each drivers, which made some generic support difficult. Thus, I chose to tackle in multiple steps: * A new TV mode property was introduced, with generic values, each driver reporting through a bitmask what standard it supports to the userspace; * This option was added to the command line parsing code to be able to specify it on the kernel command line, and new atomic_check and reset helpers were created to integrate properly into atomic KMS; * The named mode parsing code is now creating a proper display mode for the given named mode, and the TV standard will thus be part of the connector state; * Two drivers were converted and tested for now (vc4 and sun4i), with some backward compatibility code to translate the old TV mode to the new TV mode; Unit tests were created along the way. One can switch from NTSC to PAL now using (on vc4) modetest -M vc4 -s 53:720x480i -w 53:'TV mode':1 # NTSC modetest -M vc4 -s 53:720x576i -w 53:'TV mode':4 # PAL Let me know what you think, Maxime To: David Airlie To: Daniel Vetter To: Maarten Lankhorst To: Maxime Ripard To: Thomas Zimmermann To: Emma Anholt To: Jani Nikula To: Joonas Lahtinen To: Rodrigo Vivi To: Tvrtko Ursulin To: Ben Skeggs To: Karol Herbst To: Lyude Paul To: Chen-Yu Tsai To: Jernej Skrabec To: Samuel Holland Cc: Geert Uytterhoeven Cc: Mateusz Kwiatkowski Cc: "Noralf Trønnes" Cc: Dave Stevenson Cc: Dom Cobley Cc: Phil Elwell Cc: Cc: linux-kernel@vger.kernel.org Cc: intel-gfx@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-sunxi@lists.linux.dev Cc: Hans de Goede Signed-off-by: Maxime Ripard --- Changes in v6: - Add and convert to a new get_modes helper to create the PAL and NTSC modes in the proper order, with the right preferred mode flag, depending on the driver capabilities and defaults. - Support PAL60 - Renamed tests to be consistent with DRM tests naming convention - Simplified a bit the named mode parsing code - Add a tv_mode_specified field - Return 0 in get_modes implementations instead of error codes - Link to v5: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v5-0-d841cc64fe4b@cerno.tech Changes in v5: - Dropped TV Standard documentation removal - Switched the TV Mode documentation from CSV to actual documentation - Switched to kunit assertions where possible - Switched to KUNIT_ASSERT_NOT_NULL instead of KUNIT_ASSERT_PTR_NE(..., NULL) - Shuffled a bit the introduction of drm_client_modeset_connector_get_modes between patches - Renamed tv_mode_names to legacy_tv_mode_names - Removed the count variable in sun4i_tv_comp_get_modes - Rebased on top of current drm-misc-next - Link to v4: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-0-60d38873f782@cerno.tech Changes in v4: - Removed the unused TV Standard property documentation - Added the TV Mode property documentation to kms-properties.csv - Fixed the documentation of drm_mode_create_tv_properties() - Removed DRM_MODE_TV_MODE_NONE - Reworded the line length check comment in drm_mode_analog_tv tests - Switched to HZ_PER_KHZ in drm_mode_analog_tv tests - Reworked drm_mode_analog_tv to fill our mode using the previously computed timings - Added the command-line option documentation to modedb.rst - Improved the Kunit helpers cleanup - Moved the subconnector documentation renaming to the proper patch - Added the various review tags - Removed the count variable in vc4_vec_connector_get_modes - Rebased on drm-misc-next-2022-09-23 and fixed a merge conflict - Folded all the named mode parsing improvements in a single patch - Link to v3: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech Changes in v3: - Applied some of the fixes to vc4 and sun4i - Renamed the old TV mode property to legacy_mode - Fixed a bunch of bisection errors - Removed most of the redundant TV modes - Added a new None TV mode to not fall back on NTSC by mistake - Fixed the mode generation function to match better what is expected - Added some logging to the mode generation function - Split the improvements to the named mode parsing logic into separate patches - Added more checks to the TV atomic_check helper - Link to v2: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v2-0-459522d653a7@cerno.tech/ Changes in v2: - Kept the older TV mode property as legacy so we can keep the old drivers functional - Renamed the tv_norm property to tv_mode - Added a function to create PAL and NTSC compatible display modes - Added some helpers to instantiate a mock DRM device in Kunit - More Kunit tests - Removed the HD analog TV modes - Renamed some of the tests - Renamed some of the named modes - Fixed typos in commit logs - Added the various tags - Link to v1: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v1-0-3d53ae722097@cerno.tech/ --- Mateusz Kwiatkowski (2): drm/vc4: vec: Check for VEC output constraints drm/vc4: vec: Add support for more analog TV standards Maxime Ripard (21): drm/tests: Add Kunit Helpers drm/connector: Rename legacy TV property drm/connector: Only register TV mode property if present drm/connector: Rename drm_mode_create_tv_properties drm/connector: Add TV standard property drm/modes: Add a function to generate analog display modes drm/client: Add some tests for drm_connector_pick_cmdline_mode() drm/modes: Move named modes parsing to a separate function drm/modes: Switch to named mode descriptors drm/modes: Fill drm_cmdline mode from named modes drm/connector: Add pixel clock to cmdline mode drm/connector: Add a function to lookup a TV mode by its name drm/modes: Introduce the tv_mode property as a command-line option drm/modes: Properly generate a drm_display_mode from a named mode drm/modes: Introduce more named modes drm/probe-helper: Provide a TV get_modes helper drm/atomic-helper: Add a TV properties reset helper drm/atomic-helper: Add an analog TV atomic_check implementation drm/vc4: vec: Use TV Reset implementation drm/vc4: vec: Convert to the new TV mode property drm/sun4i: tv: Convert to the new TV mode property Documentation/fb/modedb.rst | 2 + Documentation/gpu/drm-kms.rst | 6 + drivers/gpu/drm/drm_atomic_state_helper.c | 124 +++++ drivers/gpu/drm/drm_atomic_uapi.c | 4 + drivers/gpu/drm/drm_client_modeset.c | 4 + drivers/gpu/drm/drm_connector.c | 173 ++++++- drivers/gpu/drm/drm_modes.c | 639 +++++++++++++++++++++++- drivers/gpu/drm/drm_probe_helper.c | 97 ++++ drivers/gpu/drm/gud/gud_connector.c | 10 +- drivers/gpu/drm/i2c/ch7006_drv.c | 6 +- drivers/gpu/drm/i915/display/intel_tv.c | 5 +- drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 +- drivers/gpu/drm/sun4i/sun4i_tv.c | 141 ++---- drivers/gpu/drm/tests/Makefile | 2 + drivers/gpu/drm/tests/drm_client_modeset_test.c | 229 +++++++++ drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 67 +++ drivers/gpu/drm/tests/drm_kunit_helpers.c | 61 +++ drivers/gpu/drm/tests/drm_kunit_helpers.h | 9 + drivers/gpu/drm/tests/drm_modes_test.c | 144 ++++++ drivers/gpu/drm/vc4/vc4_vec.c | 337 +++++++++++-- include/drm/drm_atomic_state_helper.h | 4 + include/drm/drm_connector.h | 89 +++- include/drm/drm_mode_config.h | 12 +- include/drm/drm_modes.h | 17 + include/drm/drm_probe_helper.h | 1 + 25 files changed, 1985 insertions(+), 204 deletions(-) --- base-commit: 3f94c7492f45365557b597d888241ddc59f347e1 change-id: 20220728-rpi-analog-tv-properties-0914dfcee460 Best regards, -- Maxime Ripard From mboxrd@z Thu Jan 1 00:00:00 1970 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 1E163C38A2D for ; Wed, 26 Oct 2022 15:34:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 97CFB10E3EC; Wed, 26 Oct 2022 15:33:43 +0000 (UTC) Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD85110E389; Wed, 26 Oct 2022 15:33:34 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 52741580260; Wed, 26 Oct 2022 11:33:31 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 26 Oct 2022 11:33:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPs WW+yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=zCWW9tXO+cVN+awHlRRB2K4K1d Jfmonl65fjxzcWkzOV6uFKF7Xu1IU4M7QnUZnH8YG3XTm5C6FX/rwfEadZ/vxTVV 69zNwrSBvH1cgf18KwGS17zIW3k9oErZfInsco6s5EApjOYOS54JHWgvpAIyIhAt MIq4n1ISQYM47Z8xou4I5RN67Qxhc+61J3hMJaPd8l08UkAmmQXiyqBGIC6S9qmL KvH9AGxGJ4ZYWCFftEJxVhD2mSHuIYvEKwVsT2A9auMFOhsco+eRbVQyyxdpJ2zV qXOWThXBAV4hEVlEeoRS3TRrpdxsCNLh47sGBzu6g4maxgESFFGG4i6HFrGA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPsWW+ yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=LDIRT0ney4GOGCdErBo4Cft0FJGxl 9LYMyvcohA/C20j6a3qR7VuopKYPuGu5IzULBKeRwhU3vVCWP9s/6L8Cn1siKAUd gZGyCjLk1//Hote4346RODhr7LVPcV4MjZ07n2Xjl6i9UEoAnTCzB+rNcrcAkrdw sJUhWo6f3V7FvmsFhIZx4IpI3VL0k5sftbyeTlNMmq1Kjtp6KHLvsBQUZfAnFbGs 5J2hq+dKe0YmYIBT+4XSUs72ndvDAe3fVNSc2dDBwtvnWYVPZzVLdWMVLRqjVtE4 wyasaQBv5aZaRBUwRFt1W7dWQ5P77hsWjiRNXdJdBX3CKHhLzdo3EGhaA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrtddvgdeltdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhufggtgfgfffkvfevofesthekredtredtjeenucfhrhhomhepmhgrgihimhgv segtvghrnhhordhtvggthhenucggtffrrghtthgvrhhnpeeltdeifefgffetueehueefgf dvtdfgjeegueetiedtteelieeftedtvefhlefgheenucffohhmrghinhepkhgvrhhnvghl rdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Oct 2022 11:33:29 -0400 (EDT) From: maxime@cerno.tech MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-b4-tracking: H4sIAD9TWWMC/43NQQ7CIBAF0KsY1o6hQAt15T2MCwqDJTHQQENiTO/u6M646WryM/nvv1jFErGy8+ HFCrZYY04UhuOBudmmO0L0lJngQnAtDJQlgk32ke+wNlhKXrCsJAAfO+WDQ1QDZ1SfbEWYik1u/gBa 9qg6L+Xo/Oc9x7rm8vwON0nnumOjCeAQtJSWox/DyC8OS8qnFWnkRmpTeyVF0sC9NEbLoI34k/q9Uk +SN6pzblAB1fQjbdv2Blmjr7VkAQAA Date: Wed, 26 Oct 2022 17:33:19 +0200 Message-Id: <20220728-rpi-analog-tv-properties-v6-0-e7792734108f@cerno.tech> To: Karol Herbst , Emma Anholt , Ben Skeggs , Chen-Yu Tsai , Rodrigo Vivi , Maarten Lankhorst , Jani Nikula , Daniel Vetter , Thomas Zimmermann , Tvrtko Ursulin , Samuel Holland , Jernej Skrabec , David Airlie , Maxime Ripard , Joonas Lahtinen , Lyude Paul X-Mailer: b4 0.11.0-dev-99e3a X-Developer-Signature: v=1; a=openpgp-sha256; l=10004; i=maxime@cerno.tech; h=from:subject:message-id; bh=I0r4wpJ5a54KsF+Jci3sVAyWz/wd61IGNVOHBpV8H14=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMmRwW55mxauUHSqzWyeaXtygW3yrmyDQym6Rm+Nlv9L7RDa yH6go5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMpS2Bk2Lv20IPXJfJGqry5hbqpFS r7yt7KTi0SEb8QuvS786OMZ4wM/2x3aXAfkJvGucA0dJUxy4Hw+137/z89H7ma74neXqM/LAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Subject: [Nouveau] [PATCH v6 00/23] drm: Analog TV Improvements X-BeenThere: nouveau@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Nouveau development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dom Cobley , nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-sunxi@lists.linux.dev, Hans de Goede , Noralf Trønnes , Geert Uytterhoeven , Maxime Ripard , Mateusz Kwiatkowski , Phil Elwell , linux-arm-kernel@lists.infradead.org Errors-To: nouveau-bounces@lists.freedesktop.org Sender: "Nouveau" Hi, Here's a series aiming at improving the command line named modes support, and more importantly how we deal with all the analog TV variants. The named modes support were initially introduced to allow to specify the analog TV mode to be used. However, this was causing multiple issues: * The mode name parsed on the command line was passed directly to the driver, which had to figure out which mode it was suppose to match; * Figuring that out wasn't really easy, since the video= argument or what the userspace might not even have a name in the first place, but instead could have passed a mode with the same timings; * The fallback to matching on the timings was mostly working as long as we were supporting one 525 lines (most likely NSTC) and one 625 lines (PAL), but couldn't differentiate between two modes with the same timings (NTSC vs PAL-M vs NSTC-J for example); * There was also some overlap with the tv mode property registered by drm_mode_create_tv_properties(), but named modes weren't interacting with that property at all. * Even though that property was generic, its possible values were specific to each drivers, which made some generic support difficult. Thus, I chose to tackle in multiple steps: * A new TV mode property was introduced, with generic values, each driver reporting through a bitmask what standard it supports to the userspace; * This option was added to the command line parsing code to be able to specify it on the kernel command line, and new atomic_check and reset helpers were created to integrate properly into atomic KMS; * The named mode parsing code is now creating a proper display mode for the given named mode, and the TV standard will thus be part of the connector state; * Two drivers were converted and tested for now (vc4 and sun4i), with some backward compatibility code to translate the old TV mode to the new TV mode; Unit tests were created along the way. One can switch from NTSC to PAL now using (on vc4) modetest -M vc4 -s 53:720x480i -w 53:'TV mode':1 # NTSC modetest -M vc4 -s 53:720x576i -w 53:'TV mode':4 # PAL Let me know what you think, Maxime To: David Airlie To: Daniel Vetter To: Maarten Lankhorst To: Maxime Ripard To: Thomas Zimmermann To: Emma Anholt To: Jani Nikula To: Joonas Lahtinen To: Rodrigo Vivi To: Tvrtko Ursulin To: Ben Skeggs To: Karol Herbst To: Lyude Paul To: Chen-Yu Tsai To: Jernej Skrabec To: Samuel Holland Cc: Geert Uytterhoeven Cc: Mateusz Kwiatkowski Cc: "Noralf Trønnes" Cc: Dave Stevenson Cc: Dom Cobley Cc: Phil Elwell Cc: Cc: linux-kernel@vger.kernel.org Cc: intel-gfx@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-sunxi@lists.linux.dev Cc: Hans de Goede Signed-off-by: Maxime Ripard --- Changes in v6: - Add and convert to a new get_modes helper to create the PAL and NTSC modes in the proper order, with the right preferred mode flag, depending on the driver capabilities and defaults. - Support PAL60 - Renamed tests to be consistent with DRM tests naming convention - Simplified a bit the named mode parsing code - Add a tv_mode_specified field - Return 0 in get_modes implementations instead of error codes - Link to v5: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v5-0-d841cc64fe4b@cerno.tech Changes in v5: - Dropped TV Standard documentation removal - Switched the TV Mode documentation from CSV to actual documentation - Switched to kunit assertions where possible - Switched to KUNIT_ASSERT_NOT_NULL instead of KUNIT_ASSERT_PTR_NE(..., NULL) - Shuffled a bit the introduction of drm_client_modeset_connector_get_modes between patches - Renamed tv_mode_names to legacy_tv_mode_names - Removed the count variable in sun4i_tv_comp_get_modes - Rebased on top of current drm-misc-next - Link to v4: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-0-60d38873f782@cerno.tech Changes in v4: - Removed the unused TV Standard property documentation - Added the TV Mode property documentation to kms-properties.csv - Fixed the documentation of drm_mode_create_tv_properties() - Removed DRM_MODE_TV_MODE_NONE - Reworded the line length check comment in drm_mode_analog_tv tests - Switched to HZ_PER_KHZ in drm_mode_analog_tv tests - Reworked drm_mode_analog_tv to fill our mode using the previously computed timings - Added the command-line option documentation to modedb.rst - Improved the Kunit helpers cleanup - Moved the subconnector documentation renaming to the proper patch - Added the various review tags - Removed the count variable in vc4_vec_connector_get_modes - Rebased on drm-misc-next-2022-09-23 and fixed a merge conflict - Folded all the named mode parsing improvements in a single patch - Link to v3: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech Changes in v3: - Applied some of the fixes to vc4 and sun4i - Renamed the old TV mode property to legacy_mode - Fixed a bunch of bisection errors - Removed most of the redundant TV modes - Added a new None TV mode to not fall back on NTSC by mistake - Fixed the mode generation function to match better what is expected - Added some logging to the mode generation function - Split the improvements to the named mode parsing logic into separate patches - Added more checks to the TV atomic_check helper - Link to v2: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v2-0-459522d653a7@cerno.tech/ Changes in v2: - Kept the older TV mode property as legacy so we can keep the old drivers functional - Renamed the tv_norm property to tv_mode - Added a function to create PAL and NTSC compatible display modes - Added some helpers to instantiate a mock DRM device in Kunit - More Kunit tests - Removed the HD analog TV modes - Renamed some of the tests - Renamed some of the named modes - Fixed typos in commit logs - Added the various tags - Link to v1: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v1-0-3d53ae722097@cerno.tech/ --- Mateusz Kwiatkowski (2): drm/vc4: vec: Check for VEC output constraints drm/vc4: vec: Add support for more analog TV standards Maxime Ripard (21): drm/tests: Add Kunit Helpers drm/connector: Rename legacy TV property drm/connector: Only register TV mode property if present drm/connector: Rename drm_mode_create_tv_properties drm/connector: Add TV standard property drm/modes: Add a function to generate analog display modes drm/client: Add some tests for drm_connector_pick_cmdline_mode() drm/modes: Move named modes parsing to a separate function drm/modes: Switch to named mode descriptors drm/modes: Fill drm_cmdline mode from named modes drm/connector: Add pixel clock to cmdline mode drm/connector: Add a function to lookup a TV mode by its name drm/modes: Introduce the tv_mode property as a command-line option drm/modes: Properly generate a drm_display_mode from a named mode drm/modes: Introduce more named modes drm/probe-helper: Provide a TV get_modes helper drm/atomic-helper: Add a TV properties reset helper drm/atomic-helper: Add an analog TV atomic_check implementation drm/vc4: vec: Use TV Reset implementation drm/vc4: vec: Convert to the new TV mode property drm/sun4i: tv: Convert to the new TV mode property Documentation/fb/modedb.rst | 2 + Documentation/gpu/drm-kms.rst | 6 + drivers/gpu/drm/drm_atomic_state_helper.c | 124 +++++ drivers/gpu/drm/drm_atomic_uapi.c | 4 + drivers/gpu/drm/drm_client_modeset.c | 4 + drivers/gpu/drm/drm_connector.c | 173 ++++++- drivers/gpu/drm/drm_modes.c | 639 +++++++++++++++++++++++- drivers/gpu/drm/drm_probe_helper.c | 97 ++++ drivers/gpu/drm/gud/gud_connector.c | 10 +- drivers/gpu/drm/i2c/ch7006_drv.c | 6 +- drivers/gpu/drm/i915/display/intel_tv.c | 5 +- drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 +- drivers/gpu/drm/sun4i/sun4i_tv.c | 141 ++---- drivers/gpu/drm/tests/Makefile | 2 + drivers/gpu/drm/tests/drm_client_modeset_test.c | 229 +++++++++ drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 67 +++ drivers/gpu/drm/tests/drm_kunit_helpers.c | 61 +++ drivers/gpu/drm/tests/drm_kunit_helpers.h | 9 + drivers/gpu/drm/tests/drm_modes_test.c | 144 ++++++ drivers/gpu/drm/vc4/vc4_vec.c | 337 +++++++++++-- include/drm/drm_atomic_state_helper.h | 4 + include/drm/drm_connector.h | 89 +++- include/drm/drm_mode_config.h | 12 +- include/drm/drm_modes.h | 17 + include/drm/drm_probe_helper.h | 1 + 25 files changed, 1985 insertions(+), 204 deletions(-) --- base-commit: 3f94c7492f45365557b597d888241ddc59f347e1 change-id: 20220728-rpi-analog-tv-properties-0914dfcee460 Best regards, -- Maxime Ripard From mboxrd@z Thu Jan 1 00:00:00 1970 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 E1E98C433FE for ; Wed, 26 Oct 2022 15:34:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7A90310E39A; Wed, 26 Oct 2022 15:33:43 +0000 (UTC) Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD85110E389; Wed, 26 Oct 2022 15:33:34 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 52741580260; Wed, 26 Oct 2022 11:33:31 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 26 Oct 2022 11:33:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPs WW+yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=zCWW9tXO+cVN+awHlRRB2K4K1d Jfmonl65fjxzcWkzOV6uFKF7Xu1IU4M7QnUZnH8YG3XTm5C6FX/rwfEadZ/vxTVV 69zNwrSBvH1cgf18KwGS17zIW3k9oErZfInsco6s5EApjOYOS54JHWgvpAIyIhAt MIq4n1ISQYM47Z8xou4I5RN67Qxhc+61J3hMJaPd8l08UkAmmQXiyqBGIC6S9qmL KvH9AGxGJ4ZYWCFftEJxVhD2mSHuIYvEKwVsT2A9auMFOhsco+eRbVQyyxdpJ2zV qXOWThXBAV4hEVlEeoRS3TRrpdxsCNLh47sGBzu6g4maxgESFFGG4i6HFrGA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPsWW+ yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=LDIRT0ney4GOGCdErBo4Cft0FJGxl 9LYMyvcohA/C20j6a3qR7VuopKYPuGu5IzULBKeRwhU3vVCWP9s/6L8Cn1siKAUd gZGyCjLk1//Hote4346RODhr7LVPcV4MjZ07n2Xjl6i9UEoAnTCzB+rNcrcAkrdw sJUhWo6f3V7FvmsFhIZx4IpI3VL0k5sftbyeTlNMmq1Kjtp6KHLvsBQUZfAnFbGs 5J2hq+dKe0YmYIBT+4XSUs72ndvDAe3fVNSc2dDBwtvnWYVPZzVLdWMVLRqjVtE4 wyasaQBv5aZaRBUwRFt1W7dWQ5P77hsWjiRNXdJdBX3CKHhLzdo3EGhaA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrtddvgdeltdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhufggtgfgfffkvfevofesthekredtredtjeenucfhrhhomhepmhgrgihimhgv segtvghrnhhordhtvggthhenucggtffrrghtthgvrhhnpeeltdeifefgffetueehueefgf dvtdfgjeegueetiedtteelieeftedtvefhlefgheenucffohhmrghinhepkhgvrhhnvghl rdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Oct 2022 11:33:29 -0400 (EDT) From: maxime@cerno.tech Subject: [PATCH v6 00/23] drm: Analog TV Improvements MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-b4-tracking: H4sIAD9TWWMC/43NQQ7CIBAF0KsY1o6hQAt15T2MCwqDJTHQQENiTO/u6M646WryM/nvv1jFErGy8+ HFCrZYY04UhuOBudmmO0L0lJngQnAtDJQlgk32ke+wNlhKXrCsJAAfO+WDQ1QDZ1SfbEWYik1u/gBa 9qg6L+Xo/Oc9x7rm8vwON0nnumOjCeAQtJSWox/DyC8OS8qnFWnkRmpTeyVF0sC9NEbLoI34k/q9Uk +SN6pzblAB1fQjbdv2Blmjr7VkAQAA Date: Wed, 26 Oct 2022 17:33:19 +0200 Message-Id: <20220728-rpi-analog-tv-properties-v6-0-e7792734108f@cerno.tech> To: Karol Herbst , Emma Anholt , Ben Skeggs , Chen-Yu Tsai , Rodrigo Vivi , Maarten Lankhorst , Jani Nikula , Daniel Vetter , Thomas Zimmermann , Tvrtko Ursulin , Samuel Holland , Jernej Skrabec , David Airlie , Maxime Ripard , Joonas Lahtinen , Lyude Paul X-Mailer: b4 0.11.0-dev-99e3a X-Developer-Signature: v=1; a=openpgp-sha256; l=10004; i=maxime@cerno.tech; h=from:subject:message-id; bh=I0r4wpJ5a54KsF+Jci3sVAyWz/wd61IGNVOHBpV8H14=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMmRwW55mxauUHSqzWyeaXtygW3yrmyDQym6Rm+Nlv9L7RDa yH6go5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMpS2Bk2Lv20IPXJfJGqry5hbqpFS r7yt7KTi0SEb8QuvS786OMZ4wM/2x3aXAfkJvGucA0dJUxy4Hw+137/z89H7ma74neXqM/LAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dom Cobley , Dave Stevenson , nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-sunxi@lists.linux.dev, Hans de Goede , Noralf Trønnes , Geert Uytterhoeven , Maxime Ripard , Mateusz Kwiatkowski , Phil Elwell , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, Here's a series aiming at improving the command line named modes support, and more importantly how we deal with all the analog TV variants. The named modes support were initially introduced to allow to specify the analog TV mode to be used. However, this was causing multiple issues: * The mode name parsed on the command line was passed directly to the driver, which had to figure out which mode it was suppose to match; * Figuring that out wasn't really easy, since the video= argument or what the userspace might not even have a name in the first place, but instead could have passed a mode with the same timings; * The fallback to matching on the timings was mostly working as long as we were supporting one 525 lines (most likely NSTC) and one 625 lines (PAL), but couldn't differentiate between two modes with the same timings (NTSC vs PAL-M vs NSTC-J for example); * There was also some overlap with the tv mode property registered by drm_mode_create_tv_properties(), but named modes weren't interacting with that property at all. * Even though that property was generic, its possible values were specific to each drivers, which made some generic support difficult. Thus, I chose to tackle in multiple steps: * A new TV mode property was introduced, with generic values, each driver reporting through a bitmask what standard it supports to the userspace; * This option was added to the command line parsing code to be able to specify it on the kernel command line, and new atomic_check and reset helpers were created to integrate properly into atomic KMS; * The named mode parsing code is now creating a proper display mode for the given named mode, and the TV standard will thus be part of the connector state; * Two drivers were converted and tested for now (vc4 and sun4i), with some backward compatibility code to translate the old TV mode to the new TV mode; Unit tests were created along the way. One can switch from NTSC to PAL now using (on vc4) modetest -M vc4 -s 53:720x480i -w 53:'TV mode':1 # NTSC modetest -M vc4 -s 53:720x576i -w 53:'TV mode':4 # PAL Let me know what you think, Maxime To: David Airlie To: Daniel Vetter To: Maarten Lankhorst To: Maxime Ripard To: Thomas Zimmermann To: Emma Anholt To: Jani Nikula To: Joonas Lahtinen To: Rodrigo Vivi To: Tvrtko Ursulin To: Ben Skeggs To: Karol Herbst To: Lyude Paul To: Chen-Yu Tsai To: Jernej Skrabec To: Samuel Holland Cc: Geert Uytterhoeven Cc: Mateusz Kwiatkowski Cc: "Noralf Trønnes" Cc: Dave Stevenson Cc: Dom Cobley Cc: Phil Elwell Cc: Cc: linux-kernel@vger.kernel.org Cc: intel-gfx@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-sunxi@lists.linux.dev Cc: Hans de Goede Signed-off-by: Maxime Ripard --- Changes in v6: - Add and convert to a new get_modes helper to create the PAL and NTSC modes in the proper order, with the right preferred mode flag, depending on the driver capabilities and defaults. - Support PAL60 - Renamed tests to be consistent with DRM tests naming convention - Simplified a bit the named mode parsing code - Add a tv_mode_specified field - Return 0 in get_modes implementations instead of error codes - Link to v5: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v5-0-d841cc64fe4b@cerno.tech Changes in v5: - Dropped TV Standard documentation removal - Switched the TV Mode documentation from CSV to actual documentation - Switched to kunit assertions where possible - Switched to KUNIT_ASSERT_NOT_NULL instead of KUNIT_ASSERT_PTR_NE(..., NULL) - Shuffled a bit the introduction of drm_client_modeset_connector_get_modes between patches - Renamed tv_mode_names to legacy_tv_mode_names - Removed the count variable in sun4i_tv_comp_get_modes - Rebased on top of current drm-misc-next - Link to v4: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-0-60d38873f782@cerno.tech Changes in v4: - Removed the unused TV Standard property documentation - Added the TV Mode property documentation to kms-properties.csv - Fixed the documentation of drm_mode_create_tv_properties() - Removed DRM_MODE_TV_MODE_NONE - Reworded the line length check comment in drm_mode_analog_tv tests - Switched to HZ_PER_KHZ in drm_mode_analog_tv tests - Reworked drm_mode_analog_tv to fill our mode using the previously computed timings - Added the command-line option documentation to modedb.rst - Improved the Kunit helpers cleanup - Moved the subconnector documentation renaming to the proper patch - Added the various review tags - Removed the count variable in vc4_vec_connector_get_modes - Rebased on drm-misc-next-2022-09-23 and fixed a merge conflict - Folded all the named mode parsing improvements in a single patch - Link to v3: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech Changes in v3: - Applied some of the fixes to vc4 and sun4i - Renamed the old TV mode property to legacy_mode - Fixed a bunch of bisection errors - Removed most of the redundant TV modes - Added a new None TV mode to not fall back on NTSC by mistake - Fixed the mode generation function to match better what is expected - Added some logging to the mode generation function - Split the improvements to the named mode parsing logic into separate patches - Added more checks to the TV atomic_check helper - Link to v2: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v2-0-459522d653a7@cerno.tech/ Changes in v2: - Kept the older TV mode property as legacy so we can keep the old drivers functional - Renamed the tv_norm property to tv_mode - Added a function to create PAL and NTSC compatible display modes - Added some helpers to instantiate a mock DRM device in Kunit - More Kunit tests - Removed the HD analog TV modes - Renamed some of the tests - Renamed some of the named modes - Fixed typos in commit logs - Added the various tags - Link to v1: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v1-0-3d53ae722097@cerno.tech/ --- Mateusz Kwiatkowski (2): drm/vc4: vec: Check for VEC output constraints drm/vc4: vec: Add support for more analog TV standards Maxime Ripard (21): drm/tests: Add Kunit Helpers drm/connector: Rename legacy TV property drm/connector: Only register TV mode property if present drm/connector: Rename drm_mode_create_tv_properties drm/connector: Add TV standard property drm/modes: Add a function to generate analog display modes drm/client: Add some tests for drm_connector_pick_cmdline_mode() drm/modes: Move named modes parsing to a separate function drm/modes: Switch to named mode descriptors drm/modes: Fill drm_cmdline mode from named modes drm/connector: Add pixel clock to cmdline mode drm/connector: Add a function to lookup a TV mode by its name drm/modes: Introduce the tv_mode property as a command-line option drm/modes: Properly generate a drm_display_mode from a named mode drm/modes: Introduce more named modes drm/probe-helper: Provide a TV get_modes helper drm/atomic-helper: Add a TV properties reset helper drm/atomic-helper: Add an analog TV atomic_check implementation drm/vc4: vec: Use TV Reset implementation drm/vc4: vec: Convert to the new TV mode property drm/sun4i: tv: Convert to the new TV mode property Documentation/fb/modedb.rst | 2 + Documentation/gpu/drm-kms.rst | 6 + drivers/gpu/drm/drm_atomic_state_helper.c | 124 +++++ drivers/gpu/drm/drm_atomic_uapi.c | 4 + drivers/gpu/drm/drm_client_modeset.c | 4 + drivers/gpu/drm/drm_connector.c | 173 ++++++- drivers/gpu/drm/drm_modes.c | 639 +++++++++++++++++++++++- drivers/gpu/drm/drm_probe_helper.c | 97 ++++ drivers/gpu/drm/gud/gud_connector.c | 10 +- drivers/gpu/drm/i2c/ch7006_drv.c | 6 +- drivers/gpu/drm/i915/display/intel_tv.c | 5 +- drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 +- drivers/gpu/drm/sun4i/sun4i_tv.c | 141 ++---- drivers/gpu/drm/tests/Makefile | 2 + drivers/gpu/drm/tests/drm_client_modeset_test.c | 229 +++++++++ drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 67 +++ drivers/gpu/drm/tests/drm_kunit_helpers.c | 61 +++ drivers/gpu/drm/tests/drm_kunit_helpers.h | 9 + drivers/gpu/drm/tests/drm_modes_test.c | 144 ++++++ drivers/gpu/drm/vc4/vc4_vec.c | 337 +++++++++++-- include/drm/drm_atomic_state_helper.h | 4 + include/drm/drm_connector.h | 89 +++- include/drm/drm_mode_config.h | 12 +- include/drm/drm_modes.h | 17 + include/drm/drm_probe_helper.h | 1 + 25 files changed, 1985 insertions(+), 204 deletions(-) --- base-commit: 3f94c7492f45365557b597d888241ddc59f347e1 change-id: 20220728-rpi-analog-tv-properties-0914dfcee460 Best regards, -- Maxime Ripard From mboxrd@z Thu Jan 1 00:00:00 1970 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 A5D5BC38A2D for ; Wed, 26 Oct 2022 15:34:57 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 95BEC10E502; Wed, 26 Oct 2022 15:33:53 +0000 (UTC) Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD85110E389; Wed, 26 Oct 2022 15:33:34 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 52741580260; Wed, 26 Oct 2022 11:33:31 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 26 Oct 2022 11:33:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPs WW+yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=zCWW9tXO+cVN+awHlRRB2K4K1d Jfmonl65fjxzcWkzOV6uFKF7Xu1IU4M7QnUZnH8YG3XTm5C6FX/rwfEadZ/vxTVV 69zNwrSBvH1cgf18KwGS17zIW3k9oErZfInsco6s5EApjOYOS54JHWgvpAIyIhAt MIq4n1ISQYM47Z8xou4I5RN67Qxhc+61J3hMJaPd8l08UkAmmQXiyqBGIC6S9qmL KvH9AGxGJ4ZYWCFftEJxVhD2mSHuIYvEKwVsT2A9auMFOhsco+eRbVQyyxdpJ2zV qXOWThXBAV4hEVlEeoRS3TRrpdxsCNLh47sGBzu6g4maxgESFFGG4i6HFrGA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPsWW+ yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=LDIRT0ney4GOGCdErBo4Cft0FJGxl 9LYMyvcohA/C20j6a3qR7VuopKYPuGu5IzULBKeRwhU3vVCWP9s/6L8Cn1siKAUd gZGyCjLk1//Hote4346RODhr7LVPcV4MjZ07n2Xjl6i9UEoAnTCzB+rNcrcAkrdw sJUhWo6f3V7FvmsFhIZx4IpI3VL0k5sftbyeTlNMmq1Kjtp6KHLvsBQUZfAnFbGs 5J2hq+dKe0YmYIBT+4XSUs72ndvDAe3fVNSc2dDBwtvnWYVPZzVLdWMVLRqjVtE4 wyasaQBv5aZaRBUwRFt1W7dWQ5P77hsWjiRNXdJdBX3CKHhLzdo3EGhaA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrtddvgdeltdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhufggtgfgfffkvfevofesthekredtredtjeenucfhrhhomhepmhgrgihimhgv segtvghrnhhordhtvggthhenucggtffrrghtthgvrhhnpeeltdeifefgffetueehueefgf dvtdfgjeegueetiedtteelieeftedtvefhlefgheenucffohhmrghinhepkhgvrhhnvghl rdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Oct 2022 11:33:29 -0400 (EDT) From: maxime@cerno.tech MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-b4-tracking: H4sIAD9TWWMC/43NQQ7CIBAF0KsY1o6hQAt15T2MCwqDJTHQQENiTO/u6M646WryM/nvv1jFErGy8+ HFCrZYY04UhuOBudmmO0L0lJngQnAtDJQlgk32ke+wNlhKXrCsJAAfO+WDQ1QDZ1SfbEWYik1u/gBa 9qg6L+Xo/Oc9x7rm8vwON0nnumOjCeAQtJSWox/DyC8OS8qnFWnkRmpTeyVF0sC9NEbLoI34k/q9Uk +SN6pzblAB1fQjbdv2Blmjr7VkAQAA Date: Wed, 26 Oct 2022 17:33:19 +0200 Message-Id: <20220728-rpi-analog-tv-properties-v6-0-e7792734108f@cerno.tech> To: Karol Herbst , Emma Anholt , Ben Skeggs , Chen-Yu Tsai , Rodrigo Vivi , Maarten Lankhorst , Jani Nikula , Daniel Vetter , Thomas Zimmermann , Tvrtko Ursulin , Samuel Holland , Jernej Skrabec , David Airlie , Maxime Ripard , Joonas Lahtinen , Lyude Paul X-Mailer: b4 0.11.0-dev-99e3a X-Developer-Signature: v=1; a=openpgp-sha256; l=10004; i=maxime@cerno.tech; h=from:subject:message-id; bh=I0r4wpJ5a54KsF+Jci3sVAyWz/wd61IGNVOHBpV8H14=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMmRwW55mxauUHSqzWyeaXtygW3yrmyDQym6Rm+Nlv9L7RDa yH6go5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMpS2Bk2Lv20IPXJfJGqry5hbqpFS r7yt7KTi0SEb8QuvS786OMZ4wM/2x3aXAfkJvGucA0dJUxy4Hw+137/z89H7ma74neXqM/LAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Subject: [Intel-gfx] [PATCH v6 00/23] drm: Analog TV Improvements 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: , Cc: Dom Cobley , Dave Stevenson , nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-sunxi@lists.linux.dev, Hans de Goede , Noralf Trønnes , Geert Uytterhoeven , Maxime Ripard , Mateusz Kwiatkowski , Phil Elwell , linux-arm-kernel@lists.infradead.org Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Hi, Here's a series aiming at improving the command line named modes support, and more importantly how we deal with all the analog TV variants. The named modes support were initially introduced to allow to specify the analog TV mode to be used. However, this was causing multiple issues: * The mode name parsed on the command line was passed directly to the driver, which had to figure out which mode it was suppose to match; * Figuring that out wasn't really easy, since the video= argument or what the userspace might not even have a name in the first place, but instead could have passed a mode with the same timings; * The fallback to matching on the timings was mostly working as long as we were supporting one 525 lines (most likely NSTC) and one 625 lines (PAL), but couldn't differentiate between two modes with the same timings (NTSC vs PAL-M vs NSTC-J for example); * There was also some overlap with the tv mode property registered by drm_mode_create_tv_properties(), but named modes weren't interacting with that property at all. * Even though that property was generic, its possible values were specific to each drivers, which made some generic support difficult. Thus, I chose to tackle in multiple steps: * A new TV mode property was introduced, with generic values, each driver reporting through a bitmask what standard it supports to the userspace; * This option was added to the command line parsing code to be able to specify it on the kernel command line, and new atomic_check and reset helpers were created to integrate properly into atomic KMS; * The named mode parsing code is now creating a proper display mode for the given named mode, and the TV standard will thus be part of the connector state; * Two drivers were converted and tested for now (vc4 and sun4i), with some backward compatibility code to translate the old TV mode to the new TV mode; Unit tests were created along the way. One can switch from NTSC to PAL now using (on vc4) modetest -M vc4 -s 53:720x480i -w 53:'TV mode':1 # NTSC modetest -M vc4 -s 53:720x576i -w 53:'TV mode':4 # PAL Let me know what you think, Maxime To: David Airlie To: Daniel Vetter To: Maarten Lankhorst To: Maxime Ripard To: Thomas Zimmermann To: Emma Anholt To: Jani Nikula To: Joonas Lahtinen To: Rodrigo Vivi To: Tvrtko Ursulin To: Ben Skeggs To: Karol Herbst To: Lyude Paul To: Chen-Yu Tsai To: Jernej Skrabec To: Samuel Holland Cc: Geert Uytterhoeven Cc: Mateusz Kwiatkowski Cc: "Noralf Trønnes" Cc: Dave Stevenson Cc: Dom Cobley Cc: Phil Elwell Cc: Cc: linux-kernel@vger.kernel.org Cc: intel-gfx@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-sunxi@lists.linux.dev Cc: Hans de Goede Signed-off-by: Maxime Ripard --- Changes in v6: - Add and convert to a new get_modes helper to create the PAL and NTSC modes in the proper order, with the right preferred mode flag, depending on the driver capabilities and defaults. - Support PAL60 - Renamed tests to be consistent with DRM tests naming convention - Simplified a bit the named mode parsing code - Add a tv_mode_specified field - Return 0 in get_modes implementations instead of error codes - Link to v5: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v5-0-d841cc64fe4b@cerno.tech Changes in v5: - Dropped TV Standard documentation removal - Switched the TV Mode documentation from CSV to actual documentation - Switched to kunit assertions where possible - Switched to KUNIT_ASSERT_NOT_NULL instead of KUNIT_ASSERT_PTR_NE(..., NULL) - Shuffled a bit the introduction of drm_client_modeset_connector_get_modes between patches - Renamed tv_mode_names to legacy_tv_mode_names - Removed the count variable in sun4i_tv_comp_get_modes - Rebased on top of current drm-misc-next - Link to v4: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-0-60d38873f782@cerno.tech Changes in v4: - Removed the unused TV Standard property documentation - Added the TV Mode property documentation to kms-properties.csv - Fixed the documentation of drm_mode_create_tv_properties() - Removed DRM_MODE_TV_MODE_NONE - Reworded the line length check comment in drm_mode_analog_tv tests - Switched to HZ_PER_KHZ in drm_mode_analog_tv tests - Reworked drm_mode_analog_tv to fill our mode using the previously computed timings - Added the command-line option documentation to modedb.rst - Improved the Kunit helpers cleanup - Moved the subconnector documentation renaming to the proper patch - Added the various review tags - Removed the count variable in vc4_vec_connector_get_modes - Rebased on drm-misc-next-2022-09-23 and fixed a merge conflict - Folded all the named mode parsing improvements in a single patch - Link to v3: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech Changes in v3: - Applied some of the fixes to vc4 and sun4i - Renamed the old TV mode property to legacy_mode - Fixed a bunch of bisection errors - Removed most of the redundant TV modes - Added a new None TV mode to not fall back on NTSC by mistake - Fixed the mode generation function to match better what is expected - Added some logging to the mode generation function - Split the improvements to the named mode parsing logic into separate patches - Added more checks to the TV atomic_check helper - Link to v2: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v2-0-459522d653a7@cerno.tech/ Changes in v2: - Kept the older TV mode property as legacy so we can keep the old drivers functional - Renamed the tv_norm property to tv_mode - Added a function to create PAL and NTSC compatible display modes - Added some helpers to instantiate a mock DRM device in Kunit - More Kunit tests - Removed the HD analog TV modes - Renamed some of the tests - Renamed some of the named modes - Fixed typos in commit logs - Added the various tags - Link to v1: https://lore.kernel.org/dri-devel/20220728-rpi-analog-tv-properties-v1-0-3d53ae722097@cerno.tech/ --- Mateusz Kwiatkowski (2): drm/vc4: vec: Check for VEC output constraints drm/vc4: vec: Add support for more analog TV standards Maxime Ripard (21): drm/tests: Add Kunit Helpers drm/connector: Rename legacy TV property drm/connector: Only register TV mode property if present drm/connector: Rename drm_mode_create_tv_properties drm/connector: Add TV standard property drm/modes: Add a function to generate analog display modes drm/client: Add some tests for drm_connector_pick_cmdline_mode() drm/modes: Move named modes parsing to a separate function drm/modes: Switch to named mode descriptors drm/modes: Fill drm_cmdline mode from named modes drm/connector: Add pixel clock to cmdline mode drm/connector: Add a function to lookup a TV mode by its name drm/modes: Introduce the tv_mode property as a command-line option drm/modes: Properly generate a drm_display_mode from a named mode drm/modes: Introduce more named modes drm/probe-helper: Provide a TV get_modes helper drm/atomic-helper: Add a TV properties reset helper drm/atomic-helper: Add an analog TV atomic_check implementation drm/vc4: vec: Use TV Reset implementation drm/vc4: vec: Convert to the new TV mode property drm/sun4i: tv: Convert to the new TV mode property Documentation/fb/modedb.rst | 2 + Documentation/gpu/drm-kms.rst | 6 + drivers/gpu/drm/drm_atomic_state_helper.c | 124 +++++ drivers/gpu/drm/drm_atomic_uapi.c | 4 + drivers/gpu/drm/drm_client_modeset.c | 4 + drivers/gpu/drm/drm_connector.c | 173 ++++++- drivers/gpu/drm/drm_modes.c | 639 +++++++++++++++++++++++- drivers/gpu/drm/drm_probe_helper.c | 97 ++++ drivers/gpu/drm/gud/gud_connector.c | 10 +- drivers/gpu/drm/i2c/ch7006_drv.c | 6 +- drivers/gpu/drm/i915/display/intel_tv.c | 5 +- drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 +- drivers/gpu/drm/sun4i/sun4i_tv.c | 141 ++---- drivers/gpu/drm/tests/Makefile | 2 + drivers/gpu/drm/tests/drm_client_modeset_test.c | 229 +++++++++ drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 67 +++ drivers/gpu/drm/tests/drm_kunit_helpers.c | 61 +++ drivers/gpu/drm/tests/drm_kunit_helpers.h | 9 + drivers/gpu/drm/tests/drm_modes_test.c | 144 ++++++ drivers/gpu/drm/vc4/vc4_vec.c | 337 +++++++++++-- include/drm/drm_atomic_state_helper.h | 4 + include/drm/drm_connector.h | 89 +++- include/drm/drm_mode_config.h | 12 +- include/drm/drm_modes.h | 17 + include/drm/drm_probe_helper.h | 1 + 25 files changed, 1985 insertions(+), 204 deletions(-) --- base-commit: 3f94c7492f45365557b597d888241ddc59f347e1 change-id: 20220728-rpi-analog-tv-properties-0914dfcee460 Best regards, -- Maxime Ripard From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 5896BFA3741 for ; Wed, 26 Oct 2022 15:36:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Message-Id:Date:MIME-Version: Subject:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=BVRrIKBv6Fv9Y6kej/2bN1ip6WHi2Wow94O/Gd5Zkv0=; b=YewEf6vYVHGcor M60btA0GCHg0kXyYoXP4hHDH9KLcJOfGvVGegYyQH4gojoYntTNMarjngQsH0AoyvoUpcqrgY1LGQ wYAzlaaLYf7CNxf7CbUYNM7fUdykEhOHdDKdueq4aAKvYtDItBHqjw4eud1vE0lXnB8TWGfM/aTSw 5ylEU4fixx3aZ39UpDxLlKZYBHs6NGON9AyaTCPmoloL0ue9Er8BEsoQg/Gea1C/6IypmdawM5TOs ucT+ykI5HLd/MQSK5aqxlBi/HMfOzxcHj+Q297+8wq8OSggPHCwbtsltGVIOosw8qptD7TNHSQb5V 10i0OJIkEVyPv0yskf6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oniQF-009uHG-BZ; Wed, 26 Oct 2022 15:34:27 +0000 Received: from new4-smtp.messagingengine.com ([66.111.4.230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oniPS-009tyb-OV for linux-arm-kernel@lists.infradead.org; Wed, 26 Oct 2022 15:33:42 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 52741580260; Wed, 26 Oct 2022 11:33:31 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 26 Oct 2022 11:33:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPs WW+yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=zCWW9tXO+cVN+awHlRRB2K4K1d Jfmonl65fjxzcWkzOV6uFKF7Xu1IU4M7QnUZnH8YG3XTm5C6FX/rwfEadZ/vxTVV 69zNwrSBvH1cgf18KwGS17zIW3k9oErZfInsco6s5EApjOYOS54JHWgvpAIyIhAt MIq4n1ISQYM47Z8xou4I5RN67Qxhc+61J3hMJaPd8l08UkAmmQXiyqBGIC6S9qmL KvH9AGxGJ4ZYWCFftEJxVhD2mSHuIYvEKwVsT2A9auMFOhsco+eRbVQyyxdpJ2zV qXOWThXBAV4hEVlEeoRS3TRrpdxsCNLh47sGBzu6g4maxgESFFGG4i6HFrGA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666798411; x=1666805611; bh=/cEdkCRLPsWW+ yYgJwVQO8yOwqoT+4tWEgNCquIG3NM=; b=LDIRT0ney4GOGCdErBo4Cft0FJGxl 9LYMyvcohA/C20j6a3qR7VuopKYPuGu5IzULBKeRwhU3vVCWP9s/6L8Cn1siKAUd gZGyCjLk1//Hote4346RODhr7LVPcV4MjZ07n2Xjl6i9UEoAnTCzB+rNcrcAkrdw sJUhWo6f3V7FvmsFhIZx4IpI3VL0k5sftbyeTlNMmq1Kjtp6KHLvsBQUZfAnFbGs 5J2hq+dKe0YmYIBT+4XSUs72ndvDAe3fVNSc2dDBwtvnWYVPZzVLdWMVLRqjVtE4 wyasaQBv5aZaRBUwRFt1W7dWQ5P77hsWjiRNXdJdBX3CKHhLzdo3EGhaA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrtddvgdeltdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhufggtgfgfffkvfevofesthekredtredtjeenucfhrhhomhepmhgrgihimhgv segtvghrnhhordhtvggthhenucggtffrrghtthgvrhhnpeeltdeifefgffetueehueefgf dvtdfgjeegueetiedtteelieeftedtvefhlefgheenucffohhmrghinhepkhgvrhhnvghl rdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 26 Oct 2022 11:33:29 -0400 (EDT) From: maxime@cerno.tech Subject: [PATCH v6 00/23] drm: Analog TV Improvements MIME-Version: 1.0 X-b4-tracking: H4sIAD9TWWMC/43NQQ7CIBAF0KsY1o6hQAt15T2MCwqDJTHQQENiTO/u6M646WryM/nvv1jFErGy8+ HFCrZYY04UhuOBudmmO0L0lJngQnAtDJQlgk32ke+wNlhKXrCsJAAfO+WDQ1QDZ1SfbEWYik1u/gBa 9qg6L+Xo/Oc9x7rm8vwON0nnumOjCeAQtJSWox/DyC8OS8qnFWnkRmpTeyVF0sC9NEbLoI34k/q9Uk +SN6pzblAB1fQjbdv2Blmjr7VkAQAA Date: Wed, 26 Oct 2022 17:33:19 +0200 Message-Id: <20220728-rpi-analog-tv-properties-v6-0-e7792734108f@cerno.tech> To: Karol Herbst , Emma Anholt , Ben Skeggs , Chen-Yu Tsai , Rodrigo Vivi , Maarten Lankhorst , Jani Nikula , Daniel Vetter , Thomas Zimmermann , Tvrtko Ursulin , Samuel Holland , Jernej Skrabec , David Airlie , Maxime Ripard , Joonas Lahtinen , Lyude Paul Cc: linux-sunxi@lists.linux.dev, Maxime Ripard , intel-gfx@lists.freedesktop.org, Phil Elwell , linux-arm-kernel@lists.infradead.org, nouveau@lists.freedesktop.org, Hans de Goede , Dom Cobley , Mateusz Kwiatkowski , dri-devel@lists.freedesktop.org, Dave Stevenson , linux-kernel@vger.kernel.org, Noralf Trønnes , Geert Uytterhoeven X-Mailer: b4 0.11.0-dev-99e3a X-Developer-Signature: v=1; a=openpgp-sha256; l=10004; i=maxime@cerno.tech; h=from:subject:message-id; bh=I0r4wpJ5a54KsF+Jci3sVAyWz/wd61IGNVOHBpV8H14=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMmRwW55mxauUHSqzWyeaXtygW3yrmyDQym6Rm+Nlv9L7RDa yH6go5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABMpS2Bk2Lv20IPXJfJGqry5hbqpFS r7yt7KTi0SEb8QuvS786OMZ4wM/2x3aXAfkJvGucA0dJUxy4Hw+137/z89H7ma74neXqM/LAA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221026_083339_074800_9E78C0EC X-CRM114-Status: GOOD ( 30.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpIZXJlJ3MgYSBzZXJpZXMgYWltaW5nIGF0IGltcHJvdmluZyB0aGUgY29tbWFuZCBsaW5l IG5hbWVkIG1vZGVzIHN1cHBvcnQsCmFuZCBtb3JlIGltcG9ydGFudGx5IGhvdyB3ZSBkZWFsIHdp dGggYWxsIHRoZSBhbmFsb2cgVFYgdmFyaWFudHMuCgpUaGUgbmFtZWQgbW9kZXMgc3VwcG9ydCB3 ZXJlIGluaXRpYWxseSBpbnRyb2R1Y2VkIHRvIGFsbG93IHRvIHNwZWNpZnkgdGhlCmFuYWxvZyBU ViBtb2RlIHRvIGJlIHVzZWQuCgpIb3dldmVyLCB0aGlzIHdhcyBjYXVzaW5nIG11bHRpcGxlIGlz c3VlczoKCiAgKiBUaGUgbW9kZSBuYW1lIHBhcnNlZCBvbiB0aGUgY29tbWFuZCBsaW5lIHdhcyBw YXNzZWQgZGlyZWN0bHkgdG8gdGhlCiAgICBkcml2ZXIsIHdoaWNoIGhhZCB0byBmaWd1cmUgb3V0 IHdoaWNoIG1vZGUgaXQgd2FzIHN1cHBvc2UgdG8gbWF0Y2g7CgogICogRmlndXJpbmcgdGhhdCBv dXQgd2Fzbid0IHJlYWxseSBlYXN5LCBzaW5jZSB0aGUgdmlkZW89IGFyZ3VtZW50IG9yIHdoYXQK ICAgIHRoZSB1c2Vyc3BhY2UgbWlnaHQgbm90IGV2ZW4gaGF2ZSBhIG5hbWUgaW4gdGhlIGZpcnN0 IHBsYWNlLCBidXQKICAgIGluc3RlYWQgY291bGQgaGF2ZSBwYXNzZWQgYSBtb2RlIHdpdGggdGhl IHNhbWUgdGltaW5nczsKCiAgKiBUaGUgZmFsbGJhY2sgdG8gbWF0Y2hpbmcgb24gdGhlIHRpbWlu Z3Mgd2FzIG1vc3RseSB3b3JraW5nIGFzIGxvbmcgYXMKICAgIHdlIHdlcmUgc3VwcG9ydGluZyBv bmUgNTI1IGxpbmVzIChtb3N0IGxpa2VseSBOU1RDKSBhbmQgb25lIDYyNSBsaW5lcwogICAgKFBB TCksIGJ1dCBjb3VsZG4ndCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdHdvIG1vZGVzIHdpdGggdGhl IHNhbWUKICAgIHRpbWluZ3MgKE5UU0MgdnMgUEFMLU0gdnMgTlNUQy1KIGZvciBleGFtcGxlKTsK CiAgKiBUaGVyZSB3YXMgYWxzbyBzb21lIG92ZXJsYXAgd2l0aCB0aGUgdHYgbW9kZSBwcm9wZXJ0 eSByZWdpc3RlcmVkIGJ5CiAgICBkcm1fbW9kZV9jcmVhdGVfdHZfcHJvcGVydGllcygpLCBidXQg bmFtZWQgbW9kZXMgd2VyZW4ndCBpbnRlcmFjdGluZwogICAgd2l0aCB0aGF0IHByb3BlcnR5IGF0 IGFsbC4KCiAgKiBFdmVuIHRob3VnaCB0aGF0IHByb3BlcnR5IHdhcyBnZW5lcmljLCBpdHMgcG9z c2libGUgdmFsdWVzIHdlcmUKICAgIHNwZWNpZmljIHRvIGVhY2ggZHJpdmVycywgd2hpY2ggbWFk ZSBzb21lIGdlbmVyaWMgc3VwcG9ydCBkaWZmaWN1bHQuCgpUaHVzLCBJIGNob3NlIHRvIHRhY2ts ZSBpbiBtdWx0aXBsZSBzdGVwczoKCiAgKiBBIG5ldyBUViBtb2RlIHByb3BlcnR5IHdhcyBpbnRy b2R1Y2VkLCB3aXRoIGdlbmVyaWMgdmFsdWVzLCBlYWNoIGRyaXZlcgogICAgcmVwb3J0aW5nIHRo cm91Z2ggYSBiaXRtYXNrIHdoYXQgc3RhbmRhcmQgaXQgc3VwcG9ydHMgdG8gdGhlIHVzZXJzcGFj ZTsKCiAgKiBUaGlzIG9wdGlvbiB3YXMgYWRkZWQgdG8gdGhlIGNvbW1hbmQgbGluZSBwYXJzaW5n IGNvZGUgdG8gYmUgYWJsZSB0bwogICAgc3BlY2lmeSBpdCBvbiB0aGUga2VybmVsIGNvbW1hbmQg bGluZSwgYW5kIG5ldyBhdG9taWNfY2hlY2sgYW5kIHJlc2V0CiAgICBoZWxwZXJzIHdlcmUgY3Jl YXRlZCB0byBpbnRlZ3JhdGUgcHJvcGVybHkgaW50byBhdG9taWMgS01TOwoKICAqIFRoZSBuYW1l ZCBtb2RlIHBhcnNpbmcgY29kZSBpcyBub3cgY3JlYXRpbmcgYSBwcm9wZXIgZGlzcGxheSBtb2Rl IGZvcgogICAgdGhlIGdpdmVuIG5hbWVkIG1vZGUsIGFuZCB0aGUgVFYgc3RhbmRhcmQgd2lsbCB0 aHVzIGJlIHBhcnQgb2YgdGhlCiAgICBjb25uZWN0b3Igc3RhdGU7CgogICogVHdvIGRyaXZlcnMg d2VyZSBjb252ZXJ0ZWQgYW5kIHRlc3RlZCBmb3Igbm93ICh2YzQgYW5kIHN1bjRpKSwgd2l0aAog ICAgc29tZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGNvZGUgdG8gdHJhbnNsYXRlIHRoZSBvbGQg VFYgbW9kZSB0byB0aGUKICAgIG5ldyBUViBtb2RlOwoKVW5pdCB0ZXN0cyB3ZXJlIGNyZWF0ZWQg YWxvbmcgdGhlIHdheS4KCk9uZSBjYW4gc3dpdGNoIGZyb20gTlRTQyB0byBQQUwgbm93IHVzaW5n IChvbiB2YzQpCgptb2RldGVzdCAtTSB2YzQgIC1zIDUzOjcyMHg0ODBpIC13IDUzOidUViBtb2Rl JzoxICMgTlRTQwptb2RldGVzdCAtTSB2YzQgIC1zIDUzOjcyMHg1NzZpIC13IDUzOidUViBtb2Rl Jzo0ICMgUEFMCgpMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluaywKTWF4aW1lCgpUbzogRGF2aWQg QWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgpUbzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xs LmNoPgpUbzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVs LmNvbT4KVG86IE1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KVG86IFRob21hcyBa aW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgpUbzogRW1tYSBBbmhvbHQgPGVtbWFAYW5o b2x0Lm5ldD4KVG86IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+ClRv OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClRvOiBS b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ClRvOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AbGludXguaW50ZWwuY29tPgpUbzogQmVuIFNrZWdncyA8YnNrZWdnc0By ZWRoYXQuY29tPgpUbzogS2Fyb2wgSGVyYnN0IDxraGVyYnN0QHJlZGhhdC5jb20+ClRvOiBMeXVk ZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgpUbzogQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3Jn PgpUbzogSmVybmVqIFNrcmFiZWMgPGplcm5lai5za3JhYmVjQGdtYWlsLmNvbT4KVG86IFNhbXVl bCBIb2xsYW5kIDxzYW11ZWxAc2hvbGxhbmQub3JnPgpDYzogR2VlcnQgVXl0dGVyaG9ldmVuIDxn ZWVydEBsaW51eC1tNjhrLm9yZz4KQ2M6IE1hdGV1c3ogS3dpYXRrb3dza2kgPGtmeWF0ZWsrcHVi bGljZ2l0QGdtYWlsLmNvbT4KQ2M6ICJOb3JhbGYgVHLDuG5uZXMiIDxub3JhbGZAdHJvbm5lcy5v cmc+CkNjOiBEYXZlIFN0ZXZlbnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJlcnJ5cGkuY29tPgpD YzogRG9tIENvYmxleSA8ZG9tQHJhc3BiZXJyeXBpLmNvbT4KQ2M6IFBoaWwgRWx3ZWxsIDxwaGls QHJhc3BiZXJyeXBpLmNvbT4KQ2M6IDxkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPgpD YzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwpDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IGxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpDYzogbGludXgtc3VueGlAbGlzdHMubGludXgu ZGV2CkNjOiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5 OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWVAY2Vybm8udGVjaD4KCi0tLQpDaGFuZ2VzIGluIHY2Ogot IEFkZCBhbmQgY29udmVydCB0byBhIG5ldyBnZXRfbW9kZXMgaGVscGVyIHRvIGNyZWF0ZSB0aGUg UEFMIGFuZCBOVFNDIG1vZGVzIGluCiAgdGhlIHByb3BlciBvcmRlciwgd2l0aCB0aGUgcmlnaHQg cHJlZmVycmVkIG1vZGUgZmxhZywgZGVwZW5kaW5nIG9uIHRoZSBkcml2ZXIKICBjYXBhYmlsaXRp ZXMgYW5kIGRlZmF1bHRzLgotIFN1cHBvcnQgUEFMNjAKLSBSZW5hbWVkIHRlc3RzIHRvIGJlIGNv bnNpc3RlbnQgd2l0aCBEUk0gdGVzdHMgbmFtaW5nIGNvbnZlbnRpb24KLSBTaW1wbGlmaWVkIGEg Yml0IHRoZSBuYW1lZCBtb2RlIHBhcnNpbmcgY29kZQotIEFkZCBhIHR2X21vZGVfc3BlY2lmaWVk IGZpZWxkCi0gUmV0dXJuIDAgaW4gZ2V0X21vZGVzIGltcGxlbWVudGF0aW9ucyBpbnN0ZWFkIG9m IGVycm9yIGNvZGVzCi0gTGluayB0byB2NTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDIy MDcyOC1ycGktYW5hbG9nLXR2LXByb3BlcnRpZXMtdjUtMC1kODQxY2M2NGZlNGJAY2Vybm8udGVj aAoKQ2hhbmdlcyBpbiB2NToKLSBEcm9wcGVkIFRWIFN0YW5kYXJkIGRvY3VtZW50YXRpb24gcmVt b3ZhbAotIFN3aXRjaGVkIHRoZSBUViBNb2RlIGRvY3VtZW50YXRpb24gZnJvbSBDU1YgdG8gYWN0 dWFsIGRvY3VtZW50YXRpb24KLSBTd2l0Y2hlZCB0byBrdW5pdCBhc3NlcnRpb25zIHdoZXJlIHBv c3NpYmxlCi0gU3dpdGNoZWQgdG8gS1VOSVRfQVNTRVJUX05PVF9OVUxMIGluc3RlYWQgb2YgS1VO SVRfQVNTRVJUX1BUUl9ORSguLi4sIE5VTEwpCi0gU2h1ZmZsZWQgYSBiaXQgdGhlIGludHJvZHVj dGlvbiBvZiBkcm1fY2xpZW50X21vZGVzZXRfY29ubmVjdG9yX2dldF9tb2RlcyBiZXR3ZWVuIHBh dGNoZXMKLSBSZW5hbWVkIHR2X21vZGVfbmFtZXMgdG8gbGVnYWN5X3R2X21vZGVfbmFtZXMKLSBS ZW1vdmVkIHRoZSBjb3VudCB2YXJpYWJsZSBpbiBzdW40aV90dl9jb21wX2dldF9tb2RlcwotIFJl YmFzZWQgb24gdG9wIG9mIGN1cnJlbnQgZHJtLW1pc2MtbmV4dAotIExpbmsgdG8gdjQ6IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMjA3MjgtcnBpLWFuYWxvZy10di1wcm9wZXJ0aWVzLXY0 LTAtNjBkMzg4NzNmNzgyQGNlcm5vLnRlY2gKCkNoYW5nZXMgaW4gdjQ6Ci0gUmVtb3ZlZCB0aGUg dW51c2VkIFRWIFN0YW5kYXJkIHByb3BlcnR5IGRvY3VtZW50YXRpb24KLSBBZGRlZCB0aGUgVFYg TW9kZSBwcm9wZXJ0eSBkb2N1bWVudGF0aW9uIHRvIGttcy1wcm9wZXJ0aWVzLmNzdgotIEZpeGVk IHRoZSBkb2N1bWVudGF0aW9uIG9mIGRybV9tb2RlX2NyZWF0ZV90dl9wcm9wZXJ0aWVzKCkKLSBS ZW1vdmVkIERSTV9NT0RFX1RWX01PREVfTk9ORQotIFJld29yZGVkIHRoZSBsaW5lIGxlbmd0aCBj aGVjayBjb21tZW50IGluIGRybV9tb2RlX2FuYWxvZ190diB0ZXN0cwotIFN3aXRjaGVkIHRvIEha X1BFUl9LSFogaW4gZHJtX21vZGVfYW5hbG9nX3R2IHRlc3RzCi0gUmV3b3JrZWQgZHJtX21vZGVf YW5hbG9nX3R2IHRvIGZpbGwgb3VyIG1vZGUgdXNpbmcgdGhlIHByZXZpb3VzbHkgY29tcHV0ZWQK ICB0aW1pbmdzCi0gQWRkZWQgdGhlIGNvbW1hbmQtbGluZSBvcHRpb24gZG9jdW1lbnRhdGlvbiB0 byBtb2RlZGIucnN0Ci0gSW1wcm92ZWQgdGhlIEt1bml0IGhlbHBlcnMgY2xlYW51cAotIE1vdmVk IHRoZSBzdWJjb25uZWN0b3IgZG9jdW1lbnRhdGlvbiByZW5hbWluZyB0byB0aGUgcHJvcGVyIHBh dGNoCi0gQWRkZWQgdGhlIHZhcmlvdXMgcmV2aWV3IHRhZ3MKLSBSZW1vdmVkIHRoZSBjb3VudCB2 YXJpYWJsZSBpbiB2YzRfdmVjX2Nvbm5lY3Rvcl9nZXRfbW9kZXMKLSBSZWJhc2VkIG9uIGRybS1t aXNjLW5leHQtMjAyMi0wOS0yMyBhbmQgZml4ZWQgYSBtZXJnZSBjb25mbGljdAotIEZvbGRlZCBh bGwgdGhlIG5hbWVkIG1vZGUgcGFyc2luZyBpbXByb3ZlbWVudHMgaW4gYSBzaW5nbGUgcGF0Y2gK LSBMaW5rIHRvIHYzOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9yLzIwMjIwNzI4LXJwaS1hbmFs b2ctdHYtcHJvcGVydGllcy12Mi0wLWY3MzNhMGVkOWY5MEBjZXJuby50ZWNoCgpDaGFuZ2VzIGlu IHYzOgotIEFwcGxpZWQgc29tZSBvZiB0aGUgZml4ZXMgdG8gdmM0IGFuZCBzdW40aQotIFJlbmFt ZWQgdGhlIG9sZCBUViBtb2RlIHByb3BlcnR5IHRvIGxlZ2FjeV9tb2RlCi0gRml4ZWQgYSBidW5j aCBvZiBiaXNlY3Rpb24gZXJyb3JzCi0gUmVtb3ZlZCBtb3N0IG9mIHRoZSByZWR1bmRhbnQgVFYg bW9kZXMKLSBBZGRlZCBhIG5ldyBOb25lIFRWIG1vZGUgdG8gbm90IGZhbGwgYmFjayBvbiBOVFND IGJ5IG1pc3Rha2UKLSBGaXhlZCB0aGUgbW9kZSBnZW5lcmF0aW9uIGZ1bmN0aW9uIHRvIG1hdGNo IGJldHRlciB3aGF0IGlzIGV4cGVjdGVkCi0gQWRkZWQgc29tZSBsb2dnaW5nIHRvIHRoZSBtb2Rl IGdlbmVyYXRpb24gZnVuY3Rpb24KLSBTcGxpdCB0aGUgaW1wcm92ZW1lbnRzIHRvIHRoZSBuYW1l ZCBtb2RlIHBhcnNpbmcgbG9naWMgaW50byBzZXBhcmF0ZSBwYXRjaGVzCi0gQWRkZWQgbW9yZSBj aGVja3MgdG8gdGhlIFRWIGF0b21pY19jaGVjayBoZWxwZXIKLSBMaW5rIHRvIHYyOiBodHRwczov L2xvcmUua2VybmVsLm9yZy9kcmktZGV2ZWwvMjAyMjA3MjgtcnBpLWFuYWxvZy10di1wcm9wZXJ0 aWVzLXYyLTAtNDU5NTIyZDY1M2E3QGNlcm5vLnRlY2gvCgpDaGFuZ2VzIGluIHYyOgotIEtlcHQg dGhlIG9sZGVyIFRWIG1vZGUgcHJvcGVydHkgYXMgbGVnYWN5IHNvIHdlIGNhbiBrZWVwIHRoZSBv bGQgZHJpdmVycyBmdW5jdGlvbmFsCi0gUmVuYW1lZCB0aGUgdHZfbm9ybSBwcm9wZXJ0eSB0byB0 dl9tb2RlCi0gQWRkZWQgYSBmdW5jdGlvbiB0byBjcmVhdGUgUEFMIGFuZCBOVFNDIGNvbXBhdGli bGUgZGlzcGxheSBtb2RlcwotIEFkZGVkIHNvbWUgaGVscGVycyB0byBpbnN0YW50aWF0ZSBhIG1v Y2sgRFJNIGRldmljZSBpbiBLdW5pdAotIE1vcmUgS3VuaXQgdGVzdHMKLSBSZW1vdmVkIHRoZSBI RCBhbmFsb2cgVFYgbW9kZXMKLSBSZW5hbWVkIHNvbWUgb2YgdGhlIHRlc3RzCi0gUmVuYW1lZCBz b21lIG9mIHRoZSBuYW1lZCBtb2RlcwotIEZpeGVkIHR5cG9zIGluIGNvbW1pdCBsb2dzCi0gQWRk ZWQgdGhlIHZhcmlvdXMgdGFncwotIExpbmsgdG8gdjE6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2RyaS1kZXZlbC8yMDIyMDcyOC1ycGktYW5hbG9nLXR2LXByb3BlcnRpZXMtdjEtMC0zZDUzYWU3 MjIwOTdAY2Vybm8udGVjaC8KCi0tLQpNYXRldXN6IEt3aWF0a293c2tpICgyKToKICAgICAgZHJt L3ZjNDogdmVjOiBDaGVjayBmb3IgVkVDIG91dHB1dCBjb25zdHJhaW50cwogICAgICBkcm0vdmM0 OiB2ZWM6IEFkZCBzdXBwb3J0IGZvciBtb3JlIGFuYWxvZyBUViBzdGFuZGFyZHMKCk1heGltZSBS aXBhcmQgKDIxKToKICAgICAgZHJtL3Rlc3RzOiBBZGQgS3VuaXQgSGVscGVycwogICAgICBkcm0v Y29ubmVjdG9yOiBSZW5hbWUgbGVnYWN5IFRWIHByb3BlcnR5CiAgICAgIGRybS9jb25uZWN0b3I6 IE9ubHkgcmVnaXN0ZXIgVFYgbW9kZSBwcm9wZXJ0eSBpZiBwcmVzZW50CiAgICAgIGRybS9jb25u ZWN0b3I6IFJlbmFtZSBkcm1fbW9kZV9jcmVhdGVfdHZfcHJvcGVydGllcwogICAgICBkcm0vY29u bmVjdG9yOiBBZGQgVFYgc3RhbmRhcmQgcHJvcGVydHkKICAgICAgZHJtL21vZGVzOiBBZGQgYSBm dW5jdGlvbiB0byBnZW5lcmF0ZSBhbmFsb2cgZGlzcGxheSBtb2RlcwogICAgICBkcm0vY2xpZW50 OiBBZGQgc29tZSB0ZXN0cyBmb3IgZHJtX2Nvbm5lY3Rvcl9waWNrX2NtZGxpbmVfbW9kZSgpCiAg ICAgIGRybS9tb2RlczogTW92ZSBuYW1lZCBtb2RlcyBwYXJzaW5nIHRvIGEgc2VwYXJhdGUgZnVu Y3Rpb24KICAgICAgZHJtL21vZGVzOiBTd2l0Y2ggdG8gbmFtZWQgbW9kZSBkZXNjcmlwdG9ycwog ICAgICBkcm0vbW9kZXM6IEZpbGwgZHJtX2NtZGxpbmUgbW9kZSBmcm9tIG5hbWVkIG1vZGVzCiAg ICAgIGRybS9jb25uZWN0b3I6IEFkZCBwaXhlbCBjbG9jayB0byBjbWRsaW5lIG1vZGUKICAgICAg ZHJtL2Nvbm5lY3RvcjogQWRkIGEgZnVuY3Rpb24gdG8gbG9va3VwIGEgVFYgbW9kZSBieSBpdHMg bmFtZQogICAgICBkcm0vbW9kZXM6IEludHJvZHVjZSB0aGUgdHZfbW9kZSBwcm9wZXJ0eSBhcyBh IGNvbW1hbmQtbGluZSBvcHRpb24KICAgICAgZHJtL21vZGVzOiBQcm9wZXJseSBnZW5lcmF0ZSBh IGRybV9kaXNwbGF5X21vZGUgZnJvbSBhIG5hbWVkIG1vZGUKICAgICAgZHJtL21vZGVzOiBJbnRy b2R1Y2UgbW9yZSBuYW1lZCBtb2RlcwogICAgICBkcm0vcHJvYmUtaGVscGVyOiBQcm92aWRlIGEg VFYgZ2V0X21vZGVzIGhlbHBlcgogICAgICBkcm0vYXRvbWljLWhlbHBlcjogQWRkIGEgVFYgcHJv cGVydGllcyByZXNldCBoZWxwZXIKICAgICAgZHJtL2F0b21pYy1oZWxwZXI6IEFkZCBhbiBhbmFs b2cgVFYgYXRvbWljX2NoZWNrIGltcGxlbWVudGF0aW9uCiAgICAgIGRybS92YzQ6IHZlYzogVXNl IFRWIFJlc2V0IGltcGxlbWVudGF0aW9uCiAgICAgIGRybS92YzQ6IHZlYzogQ29udmVydCB0byB0 aGUgbmV3IFRWIG1vZGUgcHJvcGVydHkKICAgICAgZHJtL3N1bjRpOiB0djogQ29udmVydCB0byB0 aGUgbmV3IFRWIG1vZGUgcHJvcGVydHkKCiBEb2N1bWVudGF0aW9uL2ZiL21vZGVkYi5yc3QgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCAg ICAgICAgICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0 ZV9oZWxwZXIuYyAgICAgICB8IDEyNCArKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf dWFwaS5jICAgICAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRf bW9kZXNldC5jICAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYyAgICAgICAgICAgICAgICAgfCAxNzMgKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2RybV9t b2Rlcy5jICAgICAgICAgICAgICAgICAgICAgfCA2MzkgKysrKysrKysrKysrKysrKysrKysrKyst CiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jICAgICAgICAgICAgICB8ICA5NyAr KysrCiBkcml2ZXJzL2dwdS9kcm0vZ3VkL2d1ZF9jb25uZWN0b3IuYyAgICAgICAgICAgICB8ICAx MCArLQogZHJpdmVycy9ncHUvZHJtL2kyYy9jaDcwMDZfZHJ2LmMgICAgICAgICAgICAgICAgfCAg IDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYyAgICAgICAgIHwg ICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnYwNC90dm52MTcuYyAgICAgICB8 ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3R2LmMgICAgICAgICAgICAgICAg fCAxNDEgKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2NsaWVudF9tb2Rlc2V0X3Rl c3QuYyB8IDIyOSArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS90ZXN0cy9kcm1fY21kbGluZV9w YXJzZXJfdGVzdC5jIHwgIDY3ICsrKwogZHJpdmVycy9ncHUvZHJtL3Rlc3RzL2RybV9rdW5pdF9o ZWxwZXJzLmMgICAgICAgfCAgNjEgKysrCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2t1bml0 X2hlbHBlcnMuaCAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX21vZGVz X3Rlc3QuYyAgICAgICAgICB8IDE0NCArKysrKysKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3Zl Yy5jICAgICAgICAgICAgICAgICAgIHwgMzM3ICsrKysrKysrKysrLS0KIGluY2x1ZGUvZHJtL2Ry bV9hdG9taWNfc3RhdGVfaGVscGVyLmggICAgICAgICAgIHwgICA0ICsKIGluY2x1ZGUvZHJtL2Ry bV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKy0KIGluY2x1ZGUvZHJt L2RybV9tb2RlX2NvbmZpZy5oICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBpbmNsdWRlL2Ry bS9kcm1fbW9kZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArCiBpbmNsdWRlL2Ry bS9kcm1fcHJvYmVfaGVscGVyLmggICAgICAgICAgICAgICAgICB8ICAgMSArCiAyNSBmaWxlcyBj aGFuZ2VkLCAxOTg1IGluc2VydGlvbnMoKyksIDIwNCBkZWxldGlvbnMoLSkKLS0tCmJhc2UtY29t bWl0OiAzZjk0Yzc0OTJmNDUzNjU1NTdiNTk3ZDg4ODI0MWRkYzU5ZjM0N2UxCmNoYW5nZS1pZDog MjAyMjA3MjgtcnBpLWFuYWxvZy10di1wcm9wZXJ0aWVzLTA5MTRkZmNlZTQ2MAoKQmVzdCByZWdh cmRzLAotLSAKTWF4aW1lIFJpcGFyZCA8bWF4aW1lQGNlcm5vLnRlY2g+CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==