The starting point for this work was adding support for the HDMI cape: https://www.seeedstudio.com/Seeed-Studio-BeagleBone-Green-HDMI-Cape.html This will be sent in a later series.
Initially, Miguel proposed modifying the ite-it66121 bridge to support the legacy behavior without the DRM_BRIDGE_ATTACH_NO_CONNECTOR flag: https://lore.kernel.org/lkml/[email protected]/ This patch was NAK'd as we don't want to add more legacy code. Maxime requested that the tilcdc driver be updated to use DRM_BRIDGE_ATTACH_NO_CONNECTOR instead. While working on this update, I discovered that the tilcdc driver contained significant amounts of legacy code that needed cleaning. Since this driver was developed alongside the tda998x driver for several AM335x boards, the tda998x driver also required cleanup and support for the DRM_BRIDGE_ATTACH_NO_CONNECTOR flag. A new tilcdc_panel_legacy driver replaces the old tilcdc_panel driver. It modifies the devicetree at boot time to properly bind the tilcdc driver with the standard panel-simple driver. This series is based on the tilcdc fix sent to mainline: https://lore.kernel.org/lkml/[email protected]/ This series has been tested on: - BeagleBone Black (tilcdc + tda998x bridge) - BeagleBone Black with LCD cape (tilcdc + ti,tilcdc,panel binding) - BeagleBone Green Eco with HDMI cape (tilcdc + it66121 bridge) The following mainline devicetrees still use ti,tilcdc,panel binding. I believe this series maintains compatibility, but I cannot test without hardware: - da850-evm.dts - am335x-guardian.dts - am335x-pdu001.dts - am335x-pepper.dts - am335x-sbc-t335.dts - am335x-sl50.dts Patches 1-2: Convert tilcdc binding to YAML and set the ti,tilcdc,panel sub-binding as legacy. Patches 3-6: Replace tilcdc_panel driver to the new tilcdc_panel_legacy driver which is tweaking the devicetree at boot time. Patches 7-15: Clean up tilcdc driver. Patches 16-18: Clean up tda998x driver. Patch 19: Add DRM_BRIDGE_ATTACH_NO_CONNECTOR support for tda998x driver. Patch 20: Add DRM_BRIDGE_ATTACH_NO_CONNECTOR support for tilcdc driver. Changes in v2: - Remove patch 2 that add fifo-threshold property. Use FIFO threshold value from SoC id instead. - Remove the part that breaks DTB compatibility. - Add tilcdc_panel_legacy to modify the devicetree at boot time to properly bind the tilcdc driver with the standard panel-simple driver. - Link to v1: https://lore.kernel.org/r/[email protected] Signed-off-by: Kory Maincent (TI.com) <[email protected]> --- Kory Maincent (TI.com) (20): dt-bindings: display: tilcdc: Convert to DT schema dt-bindings: display: tilcdc: Mark panel binding as deprecated drm/tilcdc: Remove simulate_vesa_sync flag drm/tilcdc: Add support for DRM bus flags and simplify panel config drm/tilcdc: Convert legacy panel binding via DT overlay at boot time drm/tilcdc: Remove tilcdc panel driver drm/tilcdc: Remove component framework support drm/tilcdc: Remove tilcdc_panel_info structure drm/tilcdc: Remove redundant #endif/#ifdef in debugfs code drm/tilcdc: Remove unused encoder and connector tracking arrays drm/tilcdc: Rename external_encoder and external_connector to encoder and connector drm/tilcdc: Rename tilcdc_external to tilcdc_encoder drm/tilcdc: Remove the useless module list support drm/tilcdc: Modernize driver initialization and cleanup paths drm/tilcdc: Remove the use of drm_device private_data drm/bridge: tda998x: Remove component support drm/bridge: tda998x: Move tda998x_create/destroy into probe and remove drm/bridge: tda998x: Remove useless tda998x_connector_destroy wrapper drm/bridge: tda998x: Add support for DRM_BRIDGE_ATTACH_NO_CONNECTOR drm/tilcdc: Add support for DRM_BRIDGE_ATTACH_NO_CONNECTOR .../devicetree/bindings/display/tilcdc/panel.txt | 1 + .../devicetree/bindings/display/tilcdc/tilcdc.txt | 82 ---- .../devicetree/bindings/display/tilcdc/tilcdc.yaml | 96 +++++ drivers/gpu/drm/bridge/tda998x_drv.c | 251 +++++------ drivers/gpu/drm/tilcdc/Kconfig | 14 + drivers/gpu/drm/tilcdc/Makefile | 5 +- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 117 ++--- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 479 ++++++++------------- drivers/gpu/drm/tilcdc/tilcdc_drv.h | 88 +--- drivers/gpu/drm/tilcdc/tilcdc_encoder.c | 93 ++++ .../tilcdc/{tilcdc_external.h => tilcdc_encoder.h} | 5 +- drivers/gpu/drm/tilcdc/tilcdc_external.c | 179 -------- drivers/gpu/drm/tilcdc/tilcdc_panel.c | 408 ------------------ drivers/gpu/drm/tilcdc/tilcdc_panel.h | 15 - drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.c | 159 +++++++ drivers/gpu/drm/tilcdc/tilcdc_panel_legacy.dtso | 44 ++ drivers/gpu/drm/tilcdc/tilcdc_plane.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_regs.h | 8 +- 18 files changed, 752 insertions(+), 1294 deletions(-) --- base-commit: f1c12d4576a46c82d3fdace1343e040daa0561f2 change-id: 20251014-feature_tilcdc-79cd49e67bf9 Best regards, -- Köry Maincent, Bootlin Embedded Linux and kernel engineering https://bootlin.com
