[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250407-drm-hdmi-connector-cec-v5-0-04809b10d206@oss.qualcomm.com>
Date: Mon, 07 Apr 2025 18:10:57 +0300
From: Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>
To: Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>,
Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>,
Dave Stevenson <dave.stevenson@...pberrypi.com>,
MaĆra Canal <mcanal@...lia.com>,
Raspberry Pi Kernel Maintenance <kernel-list@...pberrypi.com>,
Andrzej Hajda <andrzej.hajda@...el.com>,
Neil Armstrong <neil.armstrong@...aro.org>,
Robert Foss <rfoss@...nel.org>,
Laurent Pinchart <Laurent.pinchart@...asonboard.com>,
Jonas Karlman <jonas@...boo.se>,
Jernej Skrabec <jernej.skrabec@...il.com>
Cc: dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
Dmitry Baryshkov <lumag@...nel.org>
Subject: [PATCH v5 00/11] drm/display: generic HDMI CEC helpers
Currently it is next to impossible to implement CEC handling for the
setup using drm_bridges and drm_bridge_connector: bridges don't have a
hold of the connector at the proper time to be able to route CEC events.
At the same time it not very easy and obvious to get the CEC physical
address handling correctly. Drivers handle it at various places, ending
up with the slight differences in behaviour.
Follow up the HDMI Connector and HDMI Audio series and implement generic
HDMI CEC set of helpers that link into the HDMI Connector and
drm_bridge_connector frameworks and provide a way to implement CEC
handling for HDMI bridges in an easy yet standard way.
Notes:
- the patchset was only compile-tested
- being an RFC some of the API functions and structures are left
undocumented
- although the patchset provides drm_bridge / drm_bridge_connector API
for working with CEC, there is no actual bridge that uses the API
(yet)
- I'm pretty unhappy with the drm_bridge integration code, we end up
duplicating wrappers for CEC functions instead of reusing the
drm_connector wrapping functions. An easy way would be to map
drm_bridge to the corresponding drm_connector, but that would
either require a state or storing drm_connector inside a drm_bridge.
Current code stores cec_adapter instead.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@...aro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>
---
Changes in v5:
- Fixed the check in adv7511_bridge_hdmi_tmds_char_rate_valid().
- Major rework of HDMI CEC to follow 'helpers' design. Implemented
generic data structures that can be used for both CEC notifiers and
CEC adapters (Maxime).
- Link to v4: https://lore.kernel.org/r/20250202-drm-hdmi-connector-cec-v4-0-a71620a54d50@linaro.org
Changes in v4:
- Rebased on top of drm-misc-next + commit 78a5acf5433d ("drm/display:
hdmi: Do not read EDID on disconnected connectors")
- Moved 'select DRM_DISPLAY_HDMI_CEC_HELPER' under the
DRM_I2C_ADV7511_CEC symbol
- Fixed documentation for @hdmi_audio_i2s_formats to describe default
behaviour.
- Split drm_connector_cleanup() patch from the patch adding CEC-related
data structures (Maxime).
- Documented that CEC mutex protects all data fields in struct
drm_connector_cec (Maxime).
- Improved drm_connector_cec_funcs.unregister() documentation.
- Documented struct drm_connector_hdmi_cec_adapter_ops fields. Added a
note to the commit message on the difference between it and struct
drm_connector_cec_funcs (Maxime).
- Fixed Kconfig dependencies.
- Link to v3: https://lore.kernel.org/r/20250126-drm-hdmi-connector-cec-v3-0-5b5b2d4956da@linaro.org
Changes in v3:
- Moved default available_las setting to
drm_connector_hdmi_cec_register(), allowing drivers to pass 0 instead
of CEC_MAX_LOG_ADDRS.
- Reworked drm_bridge interface to store opaque pointer and interpret it
as drm_connector in CEC helpers code.
- Fixed EINVAL checks in drm_connector_hdmi_cec_register().
- Added the adv7511 patch, demonstrating CEC helpers for the DRM
bridges.
- Link to v2: https://lore.kernel.org/r/20250110-drm-hdmi-connector-cec-v2-0-9067c8f34663@linaro.org
Changes in v2:
- Refactored CEC funcs, adding more wrappers to provide more consistent
interface (Maxime)
- Removed export of drm_connector_cec_unregister() (Maxime)
- Restored and rephrased comment in vc4_hdmi (Maxime)
- Squashed vc4 patches
- Link to v1: https://lore.kernel.org/r/20241225-drm-hdmi-connector-cec-v1-0-b80380c67221@linaro.org
---
Dmitry Baryshkov (11):
drm/bridge: move private data to the end of the struct
drm/bridge: allow limiting I2S formats
drm/connector: add CEC-related fields
drm/connector: unregister CEC data
drm/display: move CEC_CORE selection to DRM_DISPLAY_HELPER
drm/display: add CEC helpers code
drm/display: hdmi-state-helper: handle CEC physical address
drm/vc4: hdmi: switch to generic CEC helpers
drm/display: bridge-connector: hook in CEC notifier support
drm/display: bridge-connector: handle CEC adapters
drm/bridge: adv7511: switch to the HDMI connector helpers
drivers/gpu/drm/bridge/adv7511/Kconfig | 5 +-
drivers/gpu/drm/bridge/adv7511/adv7511.h | 52 ++--
drivers/gpu/drm/bridge/adv7511/adv7511_audio.c | 77 +----
drivers/gpu/drm/bridge/adv7511/adv7511_cec.c | 57 ++--
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 345 +++++++++------------
drivers/gpu/drm/bridge/adv7511/adv7533.c | 4 -
drivers/gpu/drm/display/Kconfig | 13 +-
drivers/gpu/drm/display/Makefile | 4 +
drivers/gpu/drm/display/drm_bridge_connector.c | 108 +++++++
drivers/gpu/drm/display/drm_hdmi_audio_helper.c | 3 +
drivers/gpu/drm/display/drm_hdmi_cec_helper.c | 175 +++++++++++
.../gpu/drm/display/drm_hdmi_cec_notifier_helper.c | 60 ++++
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 7 +-
drivers/gpu/drm/drm_connector.c | 51 +++
drivers/gpu/drm/vc4/Kconfig | 1 +
drivers/gpu/drm/vc4/vc4_hdmi.c | 140 ++++-----
drivers/gpu/drm/vc4/vc4_hdmi.h | 1 -
include/drm/display/drm_hdmi_audio_helper.h | 1 +
include/drm/display/drm_hdmi_cec_helper.h | 74 +++++
include/drm/drm_bridge.h | 76 ++++-
include/drm/drm_connector.h | 56 ++++
21 files changed, 879 insertions(+), 431 deletions(-)
---
base-commit: 231adeda9f674ece664b09b75b68a4c023180fb4
change-id: 20241223-drm-hdmi-connector-cec-34902ce847b7
Best regards,
--
Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>
Powered by blists - more mailing lists