From patchwork Thu Jan 23 09:53:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Brezillon X-Patchwork-Id: 205430 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C9B3C2D0DB for ; Thu, 23 Jan 2020 09:53:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EBA6E22522 for ; Thu, 23 Jan 2020 09:53:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728900AbgAWJxk (ORCPT ); Thu, 23 Jan 2020 04:53:40 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:43798 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727278AbgAWJxk (ORCPT ); Thu, 23 Jan 2020 04:53:40 -0500 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 14B79283C3D; Thu, 23 Jan 2020 09:53:37 +0000 (GMT) From: Boris Brezillon To: dri-devel@lists.freedesktop.org Cc: Lucas Stach , Chris Healy , Andrey Smirnov , Nikita Yushchenko , kernel@collabora.com, Daniel Vetter , Thierry Reding , Sam Ravnborg , Philipp Zabel , Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Rob Herring , Mark Rutland , devicetree@vger.kernel.org, intel-gfx-trybot@lists.freedesktop.org, Boris Brezillon Subject: [PATCH v8 00/12] drm: Add support for bus-format negotiation Date: Thu, 23 Jan 2020 10:53:21 +0100 Message-Id: <20200123095333.2085810-1-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org 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. Two new fixes in this v8, one moving functions out of a ifdef CONFIG_DEBUGFS section and another fixing a check in drm_atomic_bridge_chain_select_bus_fmts(). A more detailed changelog is provided in each patch. This patch series is also available here [1]. Thanks, Boris [1]https://github.com/bbrezillon/linux-0day/commits/drm-bridge-busfmt-v8 Boris Brezillon (12): drm/bridge: Add a drm_bridge_state object drm/bridge: Patch atomic hooks to take a drm_bridge_state drm/rcar-du: Plug atomic state hooks to the default implementation drm/bridge: analogix: Plug atomic state hooks to the default implementation 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 | 131 ++++++ drivers/gpu/drm/drm_bridge.c | 407 +++++++++++++++++- drivers/gpu/drm/imx/parallel-display.c | 176 ++++++-- 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 | 172 +++++++- 16 files changed, 1248 insertions(+), 81 deletions(-)