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 4A8BBC5B569 for ; Tue, 11 Aug 2026 06:44:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:References:Cc:To:Subject:From:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=8CV9C0fteJuw/LuwvISkkiA3Pz1oEu9xaIlcJm9yiDM=; b=w3Zk0GZWSGACfku0TPSDmqOv8X eE8tQ4deXEcOO89jqwdpHlYRdsOq2OGQ066NE/Fc38k7KhqfA5IM2eIq/5FkoajKzeRo7TqHvt3JD A69N9HQGteC9WUiHPPbNBPII/WBI+IifzuT3d+VqqOtnVuXxom0prcovkQMrf8yZPJON8tgJGRIZV 45qavPMOmbAhiotBT2QaSfSiI5L4fx0Lb5NYoYXe/46zm3QaS2O0D3NakZ45cIXvSdJlxrT7T+60L Lvd8r5fAVN4eVY/ckAdZG5G3akxbXm7BFct3SgyV+Ej0MvVzySWDMKluEYrdx8cpo7jBT+FL6JBFN 5jnFWzng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wtgDo-0000000DRTy-143K; Tue, 11 Aug 2026 06:44:24 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wtgDm-0000000DRTs-0Qao for linux-arm-kernel@lists.infradead.org; Tue, 11 Aug 2026 06:44:22 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 3A2A06001D; Tue, 11 Aug 2026 06:44:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9948A1F000E9; Tue, 11 Aug 2026 06:44:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786430660; bh=8CV9C0fteJuw/LuwvISkkiA3Pz1oEu9xaIlcJm9yiDM=; h=Date:From:Subject:To:Cc:References:In-Reply-To; b=XCAvdIU6359mhm5OSz0Qo6JbtwOuioQB4k9xxkVrjGyVMdlRefefIH3rmPS4arkay XuK1vyki3FVvFTXYpo1RxyUyVhkx5v2S7CD9PAfeNfFpFo1LVSmIfJQX1L17OPtB2G tfiPqRBLuMsEXUTBmA1nkqRX42CjC98Lwto2kJb6fED0BY6Kn9rP3B3WZxnstIfC81 7UEiXlIxOfcx2WOcD6/5m+HmW+2Spd5wCs0f/riNZLGYfdEDLnh8/ipJ8hf2Cs9DQO 533TaxnmKR546UDh9WH0mHYdoeJC0xQTZ1Ht6Sck8uMTPE2qc1Rwb0hKP0WJRQZP5A jMcU2BXtubH/g== Message-ID: <70373503-71e2-4646-9246-d3b5d8360cec@kernel.org> Date: Tue, 11 Aug 2026 08:44:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Hans Verkuil Subject: Re: [PATCH v9 0/5] Add SCDC information to connector debugfs To: Nicolas Frattaroli , Jani Nikula , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Daniel Stone , Chen-Yu Tsai , Samuel Holland , Dave Stevenson , =?UTF-8?Q?Ma=C3=ADra_Canal?= , Raspberry Pi Kernel Maintenance Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, Dmitry Baryshkov References: <20260724-scdc-link-health-v9-0-bdda406d016d@collabora.com> Content-Language: en-US, nl In-Reply-To: <20260724-scdc-link-health-v9-0-bdda406d016d@collabora.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 24/07/2026 16:22, Nicolas Frattaroli wrote: > HDMI uses the DDC I2C bus for communicating various bits of link status > out of band with the actual HDMI video signal. This information can be > useful for debugging issues like questionable cables sabotaged by feline > teeth, Enthusiast Grade cables made of cow fencing wire, and other such > problems that ruin one's media viewing plans. > > Consequently, this series exposes various bits of pertinent information > from the SCDC protocol in an HDMI connector's debugfs. To continually > poll the link status, userspace can poll the debugfs file. Tested-by: Hans Verkuil The contents of scdc_status is parsed correctly by edid-decode, so I'm happy :-) Regards, Hans > > --- > Changes in v9: > - Unlock mode_config.mutex on disconnected connector early exit > - Calculate and print Reed-Solomon error corrections counter on != 4 > lane FRL as well. Technically a functional change to an already > reviewed patch, but I kept the R-b because it's so minor. > - Link to v8: https://patch.msgid.link/20260722-scdc-link-health-v8-0-cd1dacbb85d9@collabora.com > > Changes in v8: > - Acquire mode_config mutex in an interruptible way during > scdc_status_show to avoid racing connector state > - Remove scdc_debugfs_priv, use connector as debugfs entry priv instead > - Allocate and free state in scdc_status_show, since it doesn't need to > persist across debugfs reads > - Check for NULL ddc in drm_scdc_read_state in the unlikely event an > EDID with the SCDC flag was forced on a connector with no DDC > - Note: drm_connector_get() is omitted from drm_scdc_debugfs_init > because drm_scdc_debugfs_init is called on connector construction and > the debugfs is removed on connector destruction. Adding a redundant > reference increase here would necessitate introducing a destruction > callback to mirror the debugfs_init connector op for the sole purpose > of decreasing the counter again. > - Link to v7: https://patch.msgid.link/20260721-scdc-link-health-v7-0-92df1b6ad5fc@collabora.com > > Changes in v7: > - Move HDMI debugfs registration to new state helper, fix up all users > (sun4i, vc4, bridge) > - Register scdc debugfs in new hdmi debugfs helper > - Link to v6: https://patch.msgid.link/20260611-scdc-link-health-v6-0-6307875a6b5e@collabora.com > > Changes in v6: > - Fix off-by-one error in drm_scdc_read_state > - Link to v5: https://patch.msgid.link/20260604-scdc-link-health-v5-0-11173b0ac3de@collabora.com > > Changes in v5: > - Read all SCDC data regardless of update flags > - Dump SCDC data as hex before the human-readable output. It's separated > with "\n----------------\n\n". > - No longer write 0 to read-only registers > - Add Reed-Solomon Corrections counter parsing > - Parsing has been kept. A desire was expressed to get this data without > any external userspace tooling, and the kernel will need to parse it > eventually anyway to set the link status. > - Functions have been made static as of right now, since external users > may do another pass over the function signatures anyway. > - Link to v4: https://patch.msgid.link/20260527-scdc-link-health-v4-0-622ea40a1f59@collabora.com > > Changes in v4: > - Don't use C struct bitfields for parsing status flags. Switch to > bitwise AND for boolean flags, and FIELD_GET for multi-bit values. > - Drop the superfluous !! and parens > - Drop the __pure attributes on static functions > - Initialise stack local arrays with {}, not { 0 }. > - I've kept the print macros and %-30s format. Reason being that I don't > want to repeat the format specifier and str_yes_no(foo) a bunch, and I > like the %-30s format because it means all values are aligned with the > value of the longest field, which is 30 chars long. > - Link to v3: https://patch.msgid.link/20260526-scdc-link-health-v3-0-59e4a4aaead1@collabora.com > > Changes in v3: > - Add patch to change return type of drm_scdc_read/write. > - Rework error counter reading to duplicate less code. > - Also check lane 3 counter valid flag when reading its error counter. > - Use memset to clear buf for error counters, rather than doing it in > the loop. > - Make read_error_counters not accept 0 as num_lanes; fix it up in the > caller instead. > - Link to v2: https://patch.msgid.link/20260520-scdc-link-health-v2-0-511af18cd64b@collabora.com > > Changes in v2: > - Add HDMI 2.1 SCDC status reporting > - Link to v1: https://patch.msgid.link/20260415-scdc-link-health-v1-0-8e731e88eaf0@collabora.com > > To: Jani Nikula > To: Maarten Lankhorst > To: Maxime Ripard > To: Thomas Zimmermann > To: David Airlie > To: Simona Vetter > To: Andrzej Hajda > To: Neil Armstrong > To: Robert Foss > To: Laurent Pinchart > To: Jonas Karlman > To: Jernej Skrabec > To: Luca Ceresoli > To: Daniel Stone > To: Hans Verkuil > To: Chen-Yu Tsai > To: Samuel Holland > To: Dave Stevenson > To: MaĆ­ra Canal > To: Raspberry Pi Kernel Maintenance > Cc: dri-devel@lists.freedesktop.org > Cc: linux-kernel@vger.kernel.org > Cc: kernel@collabora.com > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-sunxi@lists.linux.dev > Signed-off-by: Nicolas Frattaroli > > --- > Nicolas Frattaroli (5): > drm/scdc-helper: Don't use ssize_t return type for scdc_read/write > drm/scdc-helper: Add scdc_status debugfs entry > drm/scdc-helper: Implement parsing and printing HDMI 2.1 fields > drm/debugfs: Move HDMI debugfs registration to state helper > drm/display: hdmi-state-helper: Init SCDC debugfs for HDMI > > drivers/gpu/drm/display/drm_bridge_connector.c | 3 + > drivers/gpu/drm/display/drm_hdmi_state_helper.c | 156 +++++++++++++ > drivers/gpu/drm/display/drm_scdc_helper.c | 289 +++++++++++++++++++++++- > drivers/gpu/drm/drm_debugfs.c | 157 ------------- > drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 1 + > drivers/gpu/drm/vc4/vc4_hdmi.c | 1 + > include/drm/display/drm_hdmi_state_helper.h | 3 + > include/drm/display/drm_scdc.h | 21 +- > include/drm/display/drm_scdc_helper.h | 103 ++++++++- > 9 files changed, 568 insertions(+), 166 deletions(-) > --- > base-commit: b747a63003130bef1a3d5d6ba97c94d0cee36f55 > change-id: 20260413-scdc-link-health-89326013d96c > > Best regards, > -- > Nicolas Frattaroli >