From patchwork Tue Jan 28 13:55:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Brezillon X-Patchwork-Id: 11354279 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 89DD8138C for ; Tue, 28 Jan 2020 13:55:27 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 716F324685 for ; Tue, 28 Jan 2020 13:55:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 716F324685 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AB4BD6EE47; Tue, 28 Jan 2020 13:55:22 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2236D6EE43; Tue, 28 Jan 2020 13:55:21 +0000 (UTC) Received: from localhost.localdomain (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: bbrezillon) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 4C9462613D9; Tue, 28 Jan 2020 13:55:19 +0000 (GMT) From: Boris Brezillon To: dri-devel@lists.freedesktop.org Subject: [PATCH v10 00/12] drm: Add support for bus-format negotiation Date: Tue, 28 Jan 2020 14:55:02 +0100 Message-Id: <20200128135514.108171-1-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 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: Nikita Yushchenko , Mark Rutland , Jernej Skrabec , Neil Armstrong , Andrey Smirnov , Jonas Karlman , Rob Herring , Andrzej Hajda , devicetree@vger.kernel.org, Thierry Reding , Laurent Pinchart , Boris Brezillon , intel-gfx-trybot@lists.freedesktop.org, kernel@collabora.com, Sam Ravnborg , Chris Healy Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hello, This patch series aims at adding support for runtime bus-format negotiation between all elements of the 'encoder -> bridges -> connector/display' section of the pipeline. In order to support that, we need drm bridges to fully take part in the atomic state validation process, which requires adding a drm_bridge_state and a new drm_bridge_funcs.atomic_check() hook. Once those basic building blocks are in place, we can add new hooks to allow bus format negotiation (those are called just before ->atomic_check()). The bus format selection is done at runtime by testing all possible combinations across the whole bridge chain until one is reported to work. No fundamental changes in this v10, just collected R-bs, addressed Philipp's comments and moved the changelog back to the visible part of the commit message. I plan to apply patches 1 to 7 soon, so if there's anything you don't like in there, please say it now. Still waiting for review on the LVDS bridge and panel stuff. This patch series is also available here [1]. Thanks, Boris [1]https://github.com/bbrezillon/linux-0day/commits/drm-bridge-busfmt-v10 Boris Brezillon (12): drm/bridge: Add a drm_bridge_state object drm/rcar-du: Plug atomic state hooks to the default implementation drm/bridge: analogix: Plug atomic state hooks to the default implementation drm/bridge: Patch atomic hooks to take a drm_bridge_state drm/bridge: Add an ->atomic_check() hook drm/bridge: Add the necessary bits to support bus format negotiation drm/imx: pd: Use bus format/flags provided by the bridge when available drm/bridge: lvds-codec: Implement basic bus format negotiation dt-bindings: display: bridge: lvds-codec: Add new bus-width prop drm/bridge: panel: Propage bus format/flags drm/panel: simple: Fix the lt089ac29000 bus_format ARM: dts: imx: imx51-zii-rdu1: Fix the display pipeline definition .../bindings/display/bridge/lvds-codec.yaml | 8 + arch/arm/boot/dts/imx51-zii-rdu1.dts | 24 +- .../drm/bridge/analogix/analogix_dp_core.c | 44 +- drivers/gpu/drm/bridge/lvds-codec.c | 64 ++- drivers/gpu/drm/bridge/panel.c | 4 + drivers/gpu/drm/drm_atomic.c | 116 +++++ drivers/gpu/drm/drm_atomic_helper.c | 73 ++- drivers/gpu/drm/drm_atomic_state_helper.c | 103 +++++ drivers/gpu/drm/drm_bridge.c | 437 +++++++++++++++++- drivers/gpu/drm/imx/parallel-display.c | 177 ++++++- drivers/gpu/drm/panel/panel-simple.c | 2 +- drivers/gpu/drm/rcar-du/rcar_lvds.c | 11 +- include/drm/drm_atomic.h | 76 +++ include/drm/drm_atomic_helper.h | 8 + include/drm/drm_atomic_state_helper.h | 13 + include/drm/drm_bridge.h | 179 ++++++- 16 files changed, 1258 insertions(+), 81 deletions(-)