From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CBBBD606A326 for ; Thu, 5 Nov 2026 07:27:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=ReieijRI Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3ED0F11219A; Thu, 5 Nov 2026 07:27:18 +0000 (UTC) Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE679112170 for ; Thu, 5 Nov 2026 07:27:12 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id CAE35601F7; Thu, 5 Nov 2026 07:27:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 781151F000C1; Thu, 5 Nov 2026 07:27:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793863631; bh=khXZIcYeZjQkrR8ortlP2nK6TnkcUcW/+TnoB0iwtCA=; h=From:To:Cc:Subject:Date; b=ReieijRIEIjNfoEzXIW0A127am8M7iIrncf1ZyuMzR7vcXCtBnb8iTUdwF+bUmYVl ZEz4bllXjxey6e7UKhnSHUKfn4WR14Ih/oG1/Ro7ZEESXPaWdTej2fyfQ1nCfbJLTs bgWUjgZRWYSRwTY9qs50YxJXuEQUNU2uGlpGREfn5O3noLNIkzIDGCy3NwdnBQO1qf Iiqtn2GFdug0sEOI28bIA6Qgmc9na5OoGB+a0lnSm9TAiD2s3HGSZvHtzy8LkZKeoJ pCiOKoW5FEngtZYTNd8zGb4qoVBBwuW/bw3HNRqKWTFSFQAwEYG/ctTQrNS1Soku16 S9eFyQPqDOGjA== From: Hans Verkuil To: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, Maxime Ripard Subject: [PATCHv3 00/13] media/drm: cec: add HPD_PRESENT Date: Thu, 5 Nov 2026 08:22:14 +0100 Message-ID: X-Mailer: git-send-email 2.53.0 X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "dri-devel" X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Using the media CEC framework the application receives events when the Physical and/or Logical Addresses change. However, if the Physical Address changes to f.f.f.f (Invalid), it does not know whether that is because the HDMI link is disconnected, or because the EDID does not provide a valid Physical Address. That can happen because the display does not support CEC, as is the case for DisplayPort inputs or PC monitors. This is important information to have but this is currently missing. This series adds support for that. Currently drivers set the physical address either with cec_s_phys_addr() or with cec_phys_addr_invalidate(), where the second is just a helper function that calls cec_s_phys_addr with CEC_PHYS_ADDR_INVALID. There are also cec_notifier_ counterparts. Change the behavior so that cec_s_phys_addr() is called whenever the HPD is high. In that case CEC_PHYS_ADDR_INVALID means that the EDID is present but does not contain a valid PA. And cec_phys_addr_invalidate() is only called when the video link is disconnected. Most CEC drivers already did that, except for the few that are fixed in the first 6 patches. The remaining patches implement the new functionality where the CEC framework actually reports whether or not the HPD was present, based on whether cec_s_phys_addr or cec_phys_addr_invalidate was called. Note: I think cec_phys_addr_invalidate should be renamed to something like cec_phys_addr_disconnect given the changes semantics of this function. I will tackle that once this series is in. The drm patches can either be queued up in the drm subsystem independently of the remaining patches, or I can take them through the media subsytem as part of the series, but then I need an Acked/Reviewed-by. Regards, Hans Changes in v3: - Renamed EDID_PRESENT to HPD_PRESENT, since that's what it really is. Changes in v2 (based on sashiko reviews): - missed one incorrect cec_notifier_set_phys_addr call in sti_hdmi.c - cec_notifier_cec_adap_register didn't call cec_phys_addr_invalidate if an earlier cec_notifier_phys_addr_invalidate call indicated that there is no EDID. - sending the initial state change event didn't set the CEC_EVENT_FL_STATE_EDID_PRESENT flag if needed. Hans Verkuil (13): gpu: drm: sti: call cec_notifier_phys_addr_invalidate if no HPD gpu: drm: exynos: call cec_notifier_phys_addr_invalidate if no HPD gpu: drm: omapdrm: call cec_s_phys_addr only if HPD is present media: i2c: adv7511-v4l2: call cec_s_phys_addr only if HPD is high media: cec: extron-da-hd-4k-plus: call cec_s_phys_addr only if HPD is high media: cec: core: improve cec_notifier_phys_addr_invalidate media: uapi: cec.h: add CEC_CAP_HAS_HPD_PRESENT/CEC_LOG_ADDRS_FL_HPD_PRESENT Documentation: media: document HPD_PRESENT cap and flag. media: cec: core: add support for HPD_PRESENT media: uapi: cec.h: add CEC_EVENT_FL_STATE_HPD_PRESENT flag Documentation: media: cec-ioc-dqevent.rst: document STATE_HPD_PRESENT flag media: cec: core: implement CEC_EVENT_FL_STATE_HPD_PRESENT Documentation: media: document cec_phys_addr_invalidate Documentation/driver-api/media/cec-core.rst | 10 +++- .../media/cec/cec-ioc-adap-g-caps.rst | 11 ++++ .../media/cec/cec-ioc-adap-g-log-addrs.rst | 10 ++++ .../media/cec/cec-ioc-dqevent.rst | 10 ++++ drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 7 ++- drivers/gpu/drm/omapdrm/dss/hdmi4_cec.c | 5 ++ drivers/gpu/drm/omapdrm/dss/hdmi4_cec.h | 5 ++ drivers/gpu/drm/sti/sti_hdmi.c | 4 +- drivers/media/cec/core/cec-adap.c | 51 ++++++++++++++++--- drivers/media/cec/core/cec-api.c | 13 +++-- drivers/media/cec/core/cec-core.c | 4 +- drivers/media/cec/core/cec-notifier.c | 26 +++++++++- drivers/media/cec/core/cec-priv.h | 3 +- .../extron-da-hd-4k-plus.c | 8 ++- drivers/media/i2c/adv7511-v4l2.c | 2 +- include/media/cec-notifier.h | 33 +++++++----- include/media/cec.h | 27 +++++----- include/uapi/linux/cec.h | 29 ++++++----- 19 files changed, 193 insertions(+), 67 deletions(-) -- 2.53.0