Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp703453rdb; Tue, 5 Dec 2023 18:34:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IG3oy3EGVFwlpwMwHctX6K+sosy3xBhhTWG1p4q2Couz1oLei00tD+/4KFlvOaEjQYuZtho X-Received: by 2002:a05:6a20:a39c:b0:18f:c92c:86a8 with SMTP id w28-20020a056a20a39c00b0018fc92c86a8mr94625pzk.15.1701830093384; Tue, 05 Dec 2023 18:34:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701830093; cv=none; d=google.com; s=arc-20160816; b=UX5iI4ppTblGOk6Iw3VhmDomVhqlIAZoguHMYtJObLiSs25c3z1JRLRN3sJDduMxvy Ls8yL5E265Z3rJb3N0oguPVloo1Fll206YBpiYakFrmPJOZ59aiw0lrdhbKMBqTG+iRR KsBWsrYXOl8A9neOPJ+JiW2J1WxpgorWXFyFffs7/wFkPc206YASLh573Hu3I19SZm7i oikYviu5RWeqz1hHSFX7KIiN59m1z5BZTsi5DpBPbgAvQCW0pz4A3qr9GWgd0JyyFtkQ q0rBrLP2hw9tg8JXHGkg3hwzumTVgknEg4zxzGqghfX7wuttoptUD5vjtEb2QMUCut2O KMyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=6dNQmuaIwwRM5WBICyrqPEu9aeqj1Y2gLhIDQuDV3EI=; fh=sVTUm66VIQSAuvQvimCN5pdkzoeNopOv1LekUTXdvFQ=; b=T/39bJXPiqgq/Ac4YyoxTFxxvVTkMMieeXRtvjILqhMHkGgbPKml/WT5Dw0Ue7Nypj zSdrHwXhMKfdZD+uUnj2qvlDwfPczSmGdR+1ykvA/m31xkeppC1OF0b1eM4XlBJGXHCo eS4yovVV+x9Hhqc4oQ9Xnjh2mpzDuS2Lio7NoY0Ico2nPgdupn71tfl2BDt8XaeFzO38 iTN5TPyShNsBwcr1OHF7fs3QauHTraB30iE18YDZNtPpCa4kKOa9qdAIwKkXE7yg3jZO 4LB2x1oeY4FmcIikdxOsg3qw4P+h5zqkhblkhWKjLiT2l58kOPaU1sr+HFntMTFGWSWH xwfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mmYFJqQx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id pc14-20020a17090b3b8e00b00285b78adbd3si4393021pjb.137.2023.12.05.18.34.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 18:34:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mmYFJqQx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 9DC788063D50; Tue, 5 Dec 2023 18:34:50 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229680AbjLFCef (ORCPT + 99 others); Tue, 5 Dec 2023 21:34:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229493AbjLFCee (ORCPT ); Tue, 5 Dec 2023 21:34:34 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1D21183 for ; Tue, 5 Dec 2023 18:34:40 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D35CC433C9; Wed, 6 Dec 2023 02:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701830080; bh=eOtQBTM2Kdc45YATziQT3LPLtwtktPj5VY0qE5Ruwhc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mmYFJqQx/qEisY6e11GQdJZaukYCvcCQCfU4gxLBiEaP7InDlhd2o60gwEr2hHbl8 hMXMrJVensJMMsoji+W5gk1dk+tKRDWvFNNcCxENeJuv53iNwfIMHpqQSQ6gPv03Bv +YlzRzc7LOy1X9porIS7GUReo9onkFLA2QwbmqVvArHUTDD+n/2NDwKZCueHdoasnA 5tkyqQ0vtZMVUR+fB9+Iz0x/ta38Dj5hxj+6T/0XcP2XredJay9FOi+ruq2u8uY21x 94N9hDPeG6x5XKxKNCp7KSTZKz11G235R19ScA954YQ5X3LN5pD2Ts1AnGbLc80HRr A6hHj/wVkm58Q== Date: Wed, 6 Dec 2023 10:34:34 +0800 From: Shawn Guo To: Frieder Schrempf Cc: Conor Dooley , devicetree@vger.kernel.org, Krzysztof Kozlowski , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Rob Herring , Sascha Hauer , Frieder Schrempf , Fabio Estevam , NXP Linux Team , Pengutronix Kernel Team Subject: Re: [PATCH v2 01/14] arm64: dts: imx8mm-kontron: Add support for display bridges on BL i.MX8MM Message-ID: <20231206023434.GL236001@dragon> References: <20231130161657.556483-1-frieder@fris.de> <20231130161657.556483-2-frieder@fris.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231130161657.556483-2-frieder@fris.de> X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 05 Dec 2023 18:34:50 -0800 (PST) On Thu, Nov 30, 2023 at 05:16:01PM +0100, Frieder Schrempf wrote: > From: Frieder Schrempf > > The Kontron Electronics BL i.MX8MM has oboard disply bridges for > DSI->HDMI and DSI->LVDS conversion. The DSI interface is muxed by > a GPIO-controlled switch to one of these two bridges. > > By default the HDMI bridge is enabled. The LVDS bridge can be > selected by loading an additional (panel-specific) overlay. > > Signed-off-by: Frieder Schrempf > --- > Changes for v2: > * Rework DSI mux GPIO logic to be compatible with overlay > * Switch from 4 to 2 DSI lanes for LVDS bridge to fix non-working display > --- > .../boot/dts/freescale/imx8mm-kontron-bl.dts | 158 ++++++++++++++++++ > 1 file changed, 158 insertions(+) > > diff --git a/arch/arm64/boot/dts/freescale/imx8mm-kontron-bl.dts b/arch/arm64/boot/dts/freescale/imx8mm-kontron-bl.dts > index dcec57c20399e..0fb16b811461e 100644 > --- a/arch/arm64/boot/dts/freescale/imx8mm-kontron-bl.dts > +++ b/arch/arm64/boot/dts/freescale/imx8mm-kontron-bl.dts > @@ -25,6 +25,17 @@ osc_can: clock-osc-can { > clock-output-names = "osc-can"; > }; > > + hdmi-out { > + compatible = "hdmi-connector"; > + type = "a"; > + > + port { > + hdmi_in_conn: endpoint { > + remote-endpoint = <&bridge_out_conn>; > + }; > + }; > + }; > + > leds { > compatible = "gpio-leds"; > pinctrl-names = "default"; > @@ -132,6 +143,102 @@ ethphy: ethernet-phy@0 { > }; > }; > > +&gpio4 { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_gpio4>; > + > + dsi_mux_sel_hdmi: dsi-mux-sel-hdmi-hog { > + gpio-hog; > + gpios = <14 GPIO_ACTIVE_HIGH>; > + output-high; > + line-name = "dsi-mux-sel"; > + status = "okay"; Status "okay" is usually used to flip "disabled". > + }; > + > + dsi_mux_sel_lvds: dsi-mux-sel-lvds-hog { > + gpio-hog; > + gpios = <14 GPIO_ACTIVE_HIGH>; > + output-low; > + line-name = "dsi-mux-sel"; > + status = "disabled"; > + }; > + > + dsi-mux-oe-hog { > + gpio-hog; > + gpios = <15 GPIO_ACTIVE_LOW>; > + output-high; > + line-name = "dsi-mux-oe"; > + }; > +}; > + > +&i2c3 { > + clock-frequency = <400000>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_i2c3>; > + status = "okay"; > + > + hdmi: hdmi@39 { > + compatible = "adi,adv7535"; > + reg = <0x39>; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_adv7535>; > + > + interrupt-parent = <&gpio4>; > + interrupts = <16 IRQ_TYPE_LEVEL_LOW>; > + > + adi,dsi-lanes = <4>; > + > + a2vdd-supply = <®_vdd_1v8>; > + avdd-supply = <®_vdd_1v8>; > + dvdd-supply = <®_vdd_1v8>; > + pvdd-supply = <®_vdd_1v8>; > + v1p2-supply = <®_vdd_1v8>; > + v3p3-supply = <®_vdd_3v3>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; Have a newline between properties and child node. Shawn > + bridge_in_dsi_hdmi: endpoint { > + remote-endpoint = <&dsi_out_bridge>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + bridge_out_conn: endpoint { > + remote-endpoint = <&hdmi_in_conn>; > + }; > + }; > + }; > + }; > + > + lvds: bridge@2c { > + compatible = "ti,sn65dsi84"; > + reg = <0x2c>; > + enable-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_sn65dsi84>; > + status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + bridge_in_dsi_lvds: endpoint { > + remote-endpoint = <&dsi_out_bridge>; > + data-lanes = <1 2>; > + }; > + }; > + }; > + }; > +}; > + > &i2c4 { > clock-frequency = <100000>; > pinctrl-names = "default"; > @@ -144,6 +251,30 @@ rx8900: rtc@32 { > }; > }; > > +&lcdif { > + status = "okay"; > +}; > + > +&mipi_dsi { > + samsung,esc-clock-frequency = <54000000>; > + /* > + * Let the driver calculate an appropriate clock rate based on the pixel > + * clock instead of using the fixed value from imx8mm.dtsi. > + */ > + /delete-property/ samsung,pll-clock-frequency; > + status = "okay"; > + > + ports { > + port@1 { > + reg = <1>; > + > + dsi_out_bridge: endpoint { > + remote-endpoint = <&bridge_in_dsi_hdmi>; > + }; > + }; > + }; > +}; > + > &pwm2 { > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_pwm2>; > @@ -207,6 +338,12 @@ &iomuxc { > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_gpio>; > > + pinctrl_adv7535: adv7535grp { > + fsl,pins = < > + MX8MM_IOMUXC_SAI1_TXD4_GPIO4_IO16 0x19 > + >; > + }; > + > pinctrl_can: cangrp { > fsl,pins = < > MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x19 > @@ -277,6 +414,20 @@ MX8MM_IOMUXC_SAI3_MCLK_GPIO5_IO2 0x19 > >; > }; > > + pinctrl_gpio4: gpio4grp { > + fsl,pins = < > + MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14 0x19 > + MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15 0x19 > + >; > + }; > + > + pinctrl_i2c3: i2c3grp { > + fsl,pins = < > + MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x40000083 > + MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x40000083 > + >; > + }; > + > pinctrl_i2c4: i2c4grp { > fsl,pins = < > MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3 > @@ -290,6 +441,13 @@ MX8MM_IOMUXC_SPDIF_RX_PWM2_OUT 0x19 > >; > }; > > + pinctrl_sn65dsi84: sn65dsi84grp { > + fsl,pins = < > + MX8MM_IOMUXC_SAI2_TXD0_GPIO4_IO26 0x19 > + MX8MM_IOMUXC_SD2_WP_GPIO2_IO20 0x19 > + >; > + }; > + > pinctrl_uart1: uart1grp { > fsl,pins = < > MX8MM_IOMUXC_SAI2_RXC_UART1_DCE_RX 0x140 > -- > 2.43.0 >