From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k7X9M-00024u-8O for barebox@lists.infradead.org; Mon, 17 Aug 2020 04:53:37 +0000 From: Ahmad Fatoum Date: Mon, 17 Aug 2020 06:53:30 +0200 Message-Id: <20200817045332.28099-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 1/3] video: add simple, transparent, bridge implementation To: barebox@lists.infradead.org Cc: Ahmad Fatoum This enables support for simple bridges, i.e. bridges that can be used without initialization. This is e.g. the case with bridges that have persistent configuration, the kernel has a full-fledged driver to configure the bridge and persist it. The bootloader then needs to do nothing more. Having such a transparent bridge allows reusing the kernel device tree without changing the graph specification. Signed-off-by: Ahmad Fatoum --- .../video/display/bridge/simple-bridge.txt | 41 +++++++++++++ drivers/video/Kconfig | 7 +++ drivers/video/Makefile | 2 +- drivers/video/simple-bridge.c | 57 +++++++++++++++++++ 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/video/display/bridge/simple-bridge.txt create mode 100644 drivers/video/simple-bridge.c diff --git a/Documentation/devicetree/bindings/video/display/bridge/simple-bridge.txt b/Documentation/devicetree/bindings/video/display/bridge/simple-bridge.txt new file mode 100644 index 000000000000..b1485569d992 --- /dev/null +++ b/Documentation/devicetree/bindings/video/display/bridge/simple-bridge.txt @@ -0,0 +1,41 @@ +Simple display bridge +===================== + +bridge node +----------- + +Required properties: + - compatible : "barebox,simple-bridge". + - #address-cells : must be <1> + - #size-cells : must be <0> + - video interfaces: Device node should contain two video interface port + nodes for input and output according to [1]. + - port@0 - bridge input + - port@1 - bridge output + +[1]: dts/Bindings/media/video-interfaces.txt + + +Example: + fpga-display-bridge@0 { + compatible = "barebox,simple-bridge"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + ch0_lcd_in: endpoint { + remote-endpoint = <¶llel_display_out>; + }; + }; + + port@1 { + reg = <1>; + + ch0_out: endpoint { + remote-endpoint = <&disp1_in>; + }; + }; + }; diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index a26bace176a1..b153978492a9 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -161,4 +161,11 @@ config DRIVER_VIDEO_SIMPLE_PANEL Linux Kernel implementation this one is able to understand display-timings nodes so that it's not necessary to keep a list of all known displays with their corresponding timings in barebox. + +config DRIVER_VIDEO_SIMPLE_BRIDGE + bool "Simple bridge support" + depends on OFTREE + help + This enables support for simple bridges, i.e. bridges that can be + used without initialization. endif diff --git a/drivers/video/Makefile b/drivers/video/Makefile index 01fabe880920..2296c14ccc73 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -24,4 +24,4 @@ obj-$(CONFIG_DRIVER_VIDEO_IMX_IPUV3) += imx-ipu-v3/ obj-$(CONFIG_DRIVER_VIDEO_EFI_GOP) += efi_gop.o obj-$(CONFIG_DRIVER_VIDEO_FB_SSD1307) += ssd1307fb.o obj-$(CONFIG_BACKLIGHT_RAVE_SP) += rave-sp-backlight.o - +obj-$(CONFIG_DRIVER_VIDEO_SIMPLE_BRIDGE) += simple-bridge.o diff --git a/drivers/video/simple-bridge.c b/drivers/video/simple-bridge.c new file mode 100644 index 000000000000..0d6621df7b0c --- /dev/null +++ b/drivers/video/simple-bridge.c @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyright-Text: 2020 Pengutronix, Ahmad Fatoum + +#include +#include +#include +#include