* [PATCH v2 0/3] Add display overlays for imx8mp-phyboard-pollux
@ 2025-09-24 11:59 Yannic Moog
2025-09-24 11:59 ` [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays Yannic Moog
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Yannic Moog @ 2025-09-24 11:59 UTC (permalink / raw)
To: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: imx, linux-arm-kernel, devicetree, linux-kernel, upstream,
Yannic Moog
The phyBOARD-Pollux has an LVDS + backlight connector where one LVDS
channel is routed through.
Also, an expansion board (PEB-AV-10) may be connected to the baseboard
where the other LVDS channel (of the imx8mp SoC LVDS display bridge) is
routed to and there, too, an LVDS display may be connected.
However, both LVDS channels must not be used simultaneously as this is
not supported.
Currently, 2 displays are supported. Both are 10" touch displays, where the
edt is deprecated and kept for backward compatibility reasons. The powertip
panel is the successor to the edt panel and the current panel of choice.
The expansion board (PEB-AV-10) also has a 3.5 mm audio jack and thus
the expansion board may also be used for audio purposes without
displays.
---
Changes in v2:
- Change license identifier of pollux and peb-av overlays.
- Link to v1: https://lore.kernel.org/r/20250915-imx8mp-pollux-display-overlays-v1-0-59508d578f0f@phytec.de
---
Yannic Moog (3):
arm64: dts: imx8mp pollux: add display overlays
arm64: dts: imx8mp pollux: add expansion board overlay
arm64: dts: imx8mp pollux: add displays for expansion board
arch/arm64/boot/dts/freescale/Makefile | 15 ++
.../imx8mp-phyboard-pollux-etml1010g3dra.dtso | 44 +++++
...mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso | 45 +++++
...8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso | 45 +++++
.../imx8mp-phyboard-pollux-peb-av-10.dtsi | 198 +++++++++++++++++++++
.../imx8mp-phyboard-pollux-peb-av-10.dtso | 9 +
.../imx8mp-phyboard-pollux-ph128800t006.dtso | 45 +++++
.../dts/freescale/imx8mp-phyboard-pollux-rdk.dts | 53 ++----
8 files changed, 413 insertions(+), 41 deletions(-)
---
base-commit: e6b9dce0aeeb91dfc0974ab87f02454e24566182
change-id: 20250908-imx8mp-pollux-display-overlays-b4ab84966c66
Best regards,
--
Yannic Moog <y.moog@phytec.de>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays
2025-09-24 11:59 [PATCH v2 0/3] Add display overlays for imx8mp-phyboard-pollux Yannic Moog
@ 2025-09-24 11:59 ` Yannic Moog
2025-09-25 7:32 ` [Upstream] " Teresa Remmet
2025-09-24 11:59 ` [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay Yannic Moog
2025-09-24 11:59 ` [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board Yannic Moog
2 siblings, 1 reply; 9+ messages in thread
From: Yannic Moog @ 2025-09-24 11:59 UTC (permalink / raw)
To: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: imx, linux-arm-kernel, devicetree, linux-kernel, upstream,
Yannic Moog
imx8mp-phyboard-pollux had a display baked into its board dts file.
However this approach does not truly discribe the hardware and is not
suitable when using different displays.
Move display specific description into an overlay and add the successor
display for the phyboard-pollux as an additional overlay.
Signed-off-by: Yannic Moog <y.moog@phytec.de>
---
arch/arm64/boot/dts/freescale/Makefile | 6 +++
.../imx8mp-phyboard-pollux-etml1010g3dra.dtso | 44 ++++++++++++++++++
.../imx8mp-phyboard-pollux-ph128800t006.dtso | 45 ++++++++++++++++++
.../dts/freescale/imx8mp-phyboard-pollux-rdk.dts | 53 +++++-----------------
4 files changed, 107 insertions(+), 41 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 23535ed47631ca8f9db65bec5c07b6a7a7e36525..805ab9e5942bc9e2b9776e92412f56e969b6b39a 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -218,7 +218,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-navqp.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-enc-carrier-board.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-smarc-universal-board.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
+imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
+ imx8mp-phyboard-pollux-etml1010g3dra.dtbo
+imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
+ imx8mp-phyboard-pollux-ph128800t006.dtbo
imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-hdmi.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-etml1010g3dra.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-etml1010g3dra.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..9c14f7818fec807577f4774c0e48e9daf5014734
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-etml1010g3dra.dtso
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx8mp-clock.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_lvds1 {
+ brightness-levels = <0 8 16 32 64 128 255>;
+ default-brightness-level = <8>;
+ enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
+ num-interpolated-steps = <2>;
+ pwms = <&pwm3 0 50000 0>;
+ status = "okay";
+};
+
+&lcdif2 {
+ status = "okay";
+};
+
+&lvds_bridge {
+ assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+ assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+ /*
+ * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
+ * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout
+ * engine can reach accurate pixel clock of exactly 72.4 MHz.
+ */
+ assigned-clock-rates = <0>, <506800000>;
+ status = "okay";
+};
+
+&panel_lvds1 {
+ compatible = "edt,etml1010g3dra";
+ status = "okay";
+};
+
+&pwm3 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-ph128800t006.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-ph128800t006.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..0df34c50cce7df58322161f0a2f72eaddf2307a7
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-ph128800t006.dtso
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx8mp-clock.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_lvds1 {
+ brightness-levels = <0 8 16 32 64 128 255>;
+ default-brightness-level = <8>;
+ enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
+ num-interpolated-steps = <2>;
+ pwms = <&pwm3 0 66667 0>;
+ status = "okay";
+};
+
+&lcdif2 {
+ status = "okay";
+};
+
+&lvds_bridge {
+ assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+ assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+ /*
+ * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
+ * 66.5 * 7 = 465.5 MHz so the LDB serializer and LCDIFv3 scanout
+ * engine can reach accurate pixel clock of exactly 66.5 MHz.
+ */
+ assigned-clock-rates = <0>, <465500000>;
+ status = "okay";
+};
+
+
+&panel_lvds1 {
+ compatible = "powertip,ph128800t006-zhc01";
+ status = "okay";
+};
+
+&pwm3 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts
index 436152308642270c320e3ae3b21b9e46b923c043..76a9ae34ba469cbc65648f588c63c4016119821e 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts
@@ -1,6 +1,6 @@
-// SPDX-License-Identifier: GPL-2.0
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
- * Copyright (C) 2020 PHYTEC Messtechnik GmbH
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
* Author: Teresa Remmet <t.remmet@phytec.de>
*/
@@ -8,7 +8,6 @@
#include <dt-bindings/phy/phy-imx8-pcie.h>
#include <dt-bindings/leds/leds-pca9532.h>
-#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/thermal/thermal.h>
#include "imx8mp-phycore-som.dtsi"
@@ -21,16 +20,12 @@ chosen {
stdout-path = &uart1;
};
- backlight_lvds: backlight {
+ backlight_lvds1: backlight1 {
compatible = "pwm-backlight";
- pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds1>;
- brightness-levels = <0 4 8 16 32 64 128 255>;
- default-brightness-level = <11>;
- enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
- num-interpolated-steps = <2>;
+ pinctrl-names = "default";
power-supply = <®_lvds1_reg_en>;
- pwms = <&pwm3 0 50000 0>;
+ status = "disabled";
};
fan0: fan {
@@ -43,10 +38,11 @@ fan0: fan {
#cooling-cells = <2>;
};
- panel1_lvds: panel-lvds {
- compatible = "edt,etml1010g3dra";
- backlight = <&backlight_lvds>;
+ panel_lvds1: panel-lvds1 {
+ /* compatible panel in overlay */
+ backlight = <&backlight_lvds1>;
power-supply = <®_vcc_3v3_sw>;
+ status = "disabled";
port {
panel1_in: endpoint {
@@ -232,32 +228,8 @@ led-3 {
};
};
-&lcdif2 {
- status = "okay";
-};
-
-&lvds_bridge {
- status = "okay";
-
- ports {
- port@2 {
- ldb_lvds_ch1: endpoint {
- remote-endpoint = <&panel1_in>;
- };
- };
- };
-};
-
-&media_blk_ctrl {
- /*
- * The LVDS panel on this device uses 72.4 MHz pixel clock,
- * set IMX8MP_VIDEO_PLL1 to 72.4 * 7 = 506.8 MHz so the LDB
- * serializer and LCDIFv3 scanout engine can reach accurate
- * pixel clock of exactly 72.4 MHz.
- */
- assigned-clock-rates = <500000000>, <200000000>,
- <0>, <0>, <500000000>,
- <506800000>;
+&ldb_lvds_ch1 {
+ remote-endpoint = <&panel1_in>;
};
&snvs_pwrkey {
@@ -282,9 +254,8 @@ &pcie {
};
&pwm3 {
- status = "okay";
- pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm3>;
+ pinctrl-names = "default";
};
&rv3028 {
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay
2025-09-24 11:59 [PATCH v2 0/3] Add display overlays for imx8mp-phyboard-pollux Yannic Moog
2025-09-24 11:59 ` [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays Yannic Moog
@ 2025-09-24 11:59 ` Yannic Moog
2025-09-24 14:36 ` Frank Li
2025-09-24 11:59 ` [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board Yannic Moog
2 siblings, 1 reply; 9+ messages in thread
From: Yannic Moog @ 2025-09-24 11:59 UTC (permalink / raw)
To: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: imx, linux-arm-kernel, devicetree, linux-kernel, upstream,
Yannic Moog
An expansion board (PEB-AV-10) may be connected to the
imx8mp-phyboard-pollux. Its main purpose is to provide multimedia
interfaces, featuring a 3.5mm headphone jack, a USB-A port and LVDS as
well as backlight connectors.
Signed-off-by: Yannic Moog <y.moog@phytec.de>
---
arch/arm64/boot/dts/freescale/Makefile | 3 +
.../imx8mp-phyboard-pollux-peb-av-10.dtsi | 198 +++++++++++++++++++++
.../imx8mp-phyboard-pollux-peb-av-10.dtso | 9 +
3 files changed, 210 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 805ab9e5942bc9e2b9776e92412f56e969b6b39a..9c121041128972d2239e2cc74df98b0bf7de1ac2 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -220,10 +220,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-smarc-universal-board.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-phyboard-pollux-etml1010g3dra.dtbo
+imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
+ imx8mp-phyboard-pollux-peb-av-10.dtbo
imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-phyboard-pollux-ph128800t006.dtbo
imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..4653af62b582ead04aed2cffde11ef0b142be343
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
@@ -0,0 +1,198 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/clock/imx8mp-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx8mp-pinfunc.h"
+
+&{/} {
+ backlight_lvds0: backlight0 {
+ compatible = "pwm-backlight";
+ pinctrl-0 = <&pinctrl_lvds0>;
+ pinctrl-names = "default";
+ power-supply = <®_vcc_12v>;
+ status = "disabled";
+ };
+
+ panel_lvds0: panel-lvds0 {
+ backlight = <&backlight_lvds0>;
+ power-supply = <®_vcc_3v3_sw>;
+ status = "disabled";
+
+ port {
+ panel0_in: endpoint {
+ remote-endpoint = <&ldb_lvds_ch0>;
+ };
+ };
+ };
+
+ reg_vcc_12v: regulator-12v {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <12000000>;
+ regulator-min-microvolt = <12000000>;
+ regulator-name = "VCC_12V";
+ };
+
+ reg_vcc_1v8_audio: regulator-1v8 {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <1800000>;
+ regulator-min-microvolt = <1800000>;
+ regulator-name = "VCC_1V8_Audio";
+ };
+
+ reg_vcc_3v3_analog: regulator-3v3 {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <3300000>;
+ regulator-name = "VCC_3V3_Analog";
+ };
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "snd-peb-av-10";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,bitclock-master = <&dailink_master>;
+ simple-audio-card,frame-master = <&dailink_master>;
+ simple-audio-card,mclk-fs = <32>;
+ simple-audio-card,widgets =
+ "Line", "Line In",
+ "Speaker", "Speaker",
+ "Microphone", "Microphone Jack",
+ "Headphone", "Headphone Jack";
+ simple-audio-card,routing =
+ "Speaker", "SPOP",
+ "Speaker", "SPOM",
+ "Headphone Jack", "HPLOUT",
+ "Headphone Jack", "HPROUT",
+ "LINE1L", "Line In",
+ "LINE1R", "Line In",
+ "MIC3R", "Microphone Jack",
+ "Microphone Jack", "Mic Bias";
+
+ simple-audio-card,cpu {
+ sound-dai = <&sai2>;
+ };
+
+ dailink_master: simple-audio-card,codec {
+ sound-dai = <&codec>;
+ clocks = <&clk IMX8MP_CLK_SAI2>;
+ };
+ };
+};
+
+&i2c4 {
+ clock-frequency = <400000>;
+ pinctrl-0 = <&pinctrl_i2c4>;
+ pinctrl-1 = <&pinctrl_i2c4_gpio>;
+ pinctrl-names = "default", "gpio";
+ scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ codec: codec@18 {
+ compatible = "ti,tlv320aic3007";
+ reg = <0x18>;
+ pinctrl-0 = <&pinctrl_tlv320>;
+ pinctrl-names = "default";
+ #sound-dai-cells = <0>;
+ reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
+ ai3x-gpio-func = <0xd 0x0>;
+ ai3x-micbias-vg = <2>;
+ AVDD-supply = <®_vcc_3v3_analog>;
+ DRVDD-supply = <®_vcc_3v3_analog>;
+ DVDD-supply = <®_vcc_1v8_audio>;
+ IOVDD-supply = <®_vcc_3v3_sw>;
+ };
+
+ eeprom@57 {
+ compatible = "atmel,24c32";
+ reg = <0x57>;
+ pagesize = <32>;
+ vcc-supply = <®_vcc_3v3_sw>;
+ };
+};
+
+&ldb_lvds_ch0 {
+ remote-endpoint = <&panel0_in>;
+};
+
+&pwm4 {
+ pinctrl-0 = <&pinctrl_pwm4>;
+ pinctrl-names = "default";
+};
+
+&sai2 {
+ pinctrl-0 = <&pinctrl_sai2>;
+ pinctrl-names = "default";
+ assigned-clocks = <&clk IMX8MP_CLK_SAI2>;
+ assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+ assigned-clock-rates = <12288000>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_IPG>,
+ <&clk IMX8MP_CLK_DUMMY>,
+ <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK1>,
+ <&clk IMX8MP_CLK_DUMMY>,
+ <&clk IMX8MP_CLK_DUMMY>,
+ <&clk IMX8MP_AUDIO_PLL1_OUT>,
+ <&clk IMX8MP_AUDIO_PLL2_OUT>;
+ clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k",
+ "pll11k";
+ #sound-dai-cells = <0>;
+ fsl,sai-mclk-direction-output;
+ fsl,sai-synchronous-rx;
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl_i2c4: i2c4grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL 0x400001c2
+ MX8MP_IOMUXC_I2C4_SDA__I2C4_SDA 0x400001c2
+ >;
+ };
+
+ pinctrl_i2c4_gpio: i2c4gpiogrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20 0x1e2
+ MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21 0x1e2
+ >;
+ };
+
+ pinctrl_lvds0: lvds0grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SAI3_TXD__GPIO5_IO01 0x12
+ >;
+ };
+
+ pinctrl_pwm4: pwm4grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT 0x12
+ >;
+ };
+
+ pinctrl_sai2: sai2grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6
+ MX8MP_IOMUXC_SAI2_RXFS__AUDIOMIX_SAI2_RX_SYNC 0xd6
+ MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6
+ MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
+ MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI2_RX_DATA00 0xd6
+ >;
+ };
+
+ pinctrl_tlv320: tlv320grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28 0x16
+ MX8MP_IOMUXC_SAI2_RXC__GPIO4_IO22 0x16
+ >;
+ };
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..52020c9361cc8fc84823fcae93aa3651332b91d2
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board
2025-09-24 11:59 [PATCH v2 0/3] Add display overlays for imx8mp-phyboard-pollux Yannic Moog
2025-09-24 11:59 ` [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays Yannic Moog
2025-09-24 11:59 ` [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay Yannic Moog
@ 2025-09-24 11:59 ` Yannic Moog
2025-09-24 14:40 ` Frank Li
2 siblings, 1 reply; 9+ messages in thread
From: Yannic Moog @ 2025-09-24 11:59 UTC (permalink / raw)
To: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: imx, linux-arm-kernel, devicetree, linux-kernel, upstream,
Yannic Moog
The same displays that can be connected directly to the
imx8mp-phyboard-pollux can also be connected to the expansion board
PEB-AV-10. For displays connected to the expansion board, a second LVDS
channel of the i.MX 8M Plus SoC is used and only a single display
connected to the SoC LVDS display bridge at a given time is supported.
Signed-off-by: Yannic Moog <y.moog@phytec.de>
---
arch/arm64/boot/dts/freescale/Makefile | 6 +++
...mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso | 45 ++++++++++++++++++++++
...8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso | 45 ++++++++++++++++++++++
3 files changed, 96 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 9c121041128972d2239e2cc74df98b0bf7de1ac2..e4b097446440f41785dd1a0e5d354796e800ee76 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -222,11 +222,17 @@ imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-phyboard-pollux-etml1010g3dra.dtbo
imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-phyboard-pollux-peb-av-10.dtbo
+imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
+ imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtbo
+imx8mp-phyboard-pollux-peb-av-10-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
+ imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtbo
imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-phyboard-pollux-ph128800t006.dtbo
imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..d71945430c801a0136a95d691af0cec64622a066
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx8mp-clock.h>
+#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
+
+&backlight_lvds0 {
+ brightness-levels = <0 8 16 32 64 128 255>;
+ default-brightness-level = <8>;
+ enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+ num-interpolated-steps = <2>;
+ pwms = <&pwm4 0 50000 0>;
+ status = "okay";
+};
+
+&lcdif2 {
+ status = "okay";
+};
+
+&lvds_bridge {
+ assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+ assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+ /*
+ * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
+ * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout
+ * engine can reach accurate pixel clock of exactly 72.4 MHz.
+ */
+ assigned-clock-rates = <0>, <506800000>;
+ status = "okay";
+};
+
+&panel_lvds0 {
+ compatible = "edt,etml1010g3dra";
+ status = "okay";
+};
+
+&pwm4 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..8ec4bbbbabb5cc7f5ae05d641fb5d14931250daf
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx8mp-clock.h>
+#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
+
+&backlight_lvds0 {
+ brightness-levels = <0 8 16 32 64 128 255>;
+ default-brightness-level = <8>;
+ enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+ num-interpolated-steps = <2>;
+ pwms = <&pwm4 0 66667 0>;
+ status = "okay";
+};
+
+&lcdif2 {
+ status = "okay";
+};
+
+&lvds_bridge {
+ assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+ assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+ /*
+ * The LVDS panel uses 66.5 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
+ * 66.5 * 7 = 465.5 MHz so the LDB serializer and LCDIFv3 scanout
+ * engine can reach accurate pixel clock of exactly 66.5 MHz.
+ */
+ assigned-clock-rates = <0>, <465500000>;
+ status = "okay";
+};
+
+&panel_lvds0 {
+ compatible = "powertip,ph128800t006-zhc01";
+ status = "okay";
+};
+
+&pwm4 {
+ status = "okay";
+};
--
2.51.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay
2025-09-24 11:59 ` [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay Yannic Moog
@ 2025-09-24 14:36 ` Frank Li
2025-09-25 6:56 ` Yannic Moog
0 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2025-09-24 14:36 UTC (permalink / raw)
To: Yannic Moog
Cc: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, imx,
linux-arm-kernel, devicetree, linux-kernel, upstream
On Wed, Sep 24, 2025 at 01:59:05PM +0200, Yannic Moog wrote:
> An expansion board (PEB-AV-10) may be connected to the
> imx8mp-phyboard-pollux. Its main purpose is to provide multimedia
> interfaces, featuring a 3.5mm headphone jack, a USB-A port and LVDS as
> well as backlight connectors.
>
> Signed-off-by: Yannic Moog <y.moog@phytec.de>
> ---
> arch/arm64/boot/dts/freescale/Makefile | 3 +
> .../imx8mp-phyboard-pollux-peb-av-10.dtsi | 198 +++++++++++++++++++++
> .../imx8mp-phyboard-pollux-peb-av-10.dtso | 9 +
> 3 files changed, 210 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index 805ab9e5942bc9e2b9776e92412f56e969b6b39a..9c121041128972d2239e2cc74df98b0bf7de1ac2 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -220,10 +220,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-smarc-universal-board.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
> imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> imx8mp-phyboard-pollux-etml1010g3dra.dtbo
> +imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> + imx8mp-phyboard-pollux-peb-av-10.dtbo
> imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> imx8mp-phyboard-pollux-ph128800t006.dtbo
> imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
> +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
> new file mode 100644
> index 0000000000000000000000000000000000000000..4653af62b582ead04aed2cffde11ef0b142be343
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
> @@ -0,0 +1,198 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +#include <dt-bindings/clock/imx8mp-clock.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include "imx8mp-pinfunc.h"
> +
> +&{/} {
> + backlight_lvds0: backlight0 {
> + compatible = "pwm-backlight";
> + pinctrl-0 = <&pinctrl_lvds0>;
> + pinctrl-names = "default";
> + power-supply = <®_vcc_12v>;
> + status = "disabled";
> + };
> +
> + panel_lvds0: panel-lvds0 {
> + backlight = <&backlight_lvds0>;
> + power-supply = <®_vcc_3v3_sw>;
> + status = "disabled";
> +
> + port {
> + panel0_in: endpoint {
> + remote-endpoint = <&ldb_lvds_ch0>;
> + };
> + };
> + };
> +
> + reg_vcc_12v: regulator-12v {
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-max-microvolt = <12000000>;
> + regulator-min-microvolt = <12000000>;
> + regulator-name = "VCC_12V";
> + };
> +
> + reg_vcc_1v8_audio: regulator-1v8 {
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-max-microvolt = <1800000>;
> + regulator-min-microvolt = <1800000>;
> + regulator-name = "VCC_1V8_Audio";
> + };
> +
> + reg_vcc_3v3_analog: regulator-3v3 {
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-max-microvolt = <3300000>;
> + regulator-min-microvolt = <3300000>;
> + regulator-name = "VCC_3V3_Analog";
> + };
> +
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "snd-peb-av-10";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,bitclock-master = <&dailink_master>;
> + simple-audio-card,frame-master = <&dailink_master>;
> + simple-audio-card,mclk-fs = <32>;
> + simple-audio-card,widgets =
> + "Line", "Line In",
> + "Speaker", "Speaker",
> + "Microphone", "Microphone Jack",
> + "Headphone", "Headphone Jack";
> + simple-audio-card,routing =
> + "Speaker", "SPOP",
> + "Speaker", "SPOM",
> + "Headphone Jack", "HPLOUT",
> + "Headphone Jack", "HPROUT",
> + "LINE1L", "Line In",
> + "LINE1R", "Line In",
> + "MIC3R", "Microphone Jack",
> + "Microphone Jack", "Mic Bias";
> +
> + simple-audio-card,cpu {
> + sound-dai = <&sai2>;
> + };
> +
> + dailink_master: simple-audio-card,codec {
> + sound-dai = <&codec>;
> + clocks = <&clk IMX8MP_CLK_SAI2>;
> + };
> + };
> +};
> +
> +&i2c4 {
> + clock-frequency = <400000>;
> + pinctrl-0 = <&pinctrl_i2c4>;
> + pinctrl-1 = <&pinctrl_i2c4_gpio>;
> + pinctrl-names = "default", "gpio";
> + scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> + sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "okay";
> +
> + codec: codec@18 {
> + compatible = "ti,tlv320aic3007";
> + reg = <0x18>;
> + pinctrl-0 = <&pinctrl_tlv320>;
> + pinctrl-names = "default";
> + #sound-dai-cells = <0>;
> + reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
> + ai3x-gpio-func = <0xd 0x0>;
> + ai3x-micbias-vg = <2>;
> + AVDD-supply = <®_vcc_3v3_analog>;
> + DRVDD-supply = <®_vcc_3v3_analog>;
> + DVDD-supply = <®_vcc_1v8_audio>;
> + IOVDD-supply = <®_vcc_3v3_sw>;
> + };
> +
> + eeprom@57 {
> + compatible = "atmel,24c32";
> + reg = <0x57>;
> + pagesize = <32>;
> + vcc-supply = <®_vcc_3v3_sw>;
> + };
> +};
> +
> +&ldb_lvds_ch0 {
> + remote-endpoint = <&panel0_in>;
> +};
> +
> +&pwm4 {
> + pinctrl-0 = <&pinctrl_pwm4>;
> + pinctrl-names = "default";
> +};
> +
> +&sai2 {
> + pinctrl-0 = <&pinctrl_sai2>;
> + pinctrl-names = "default";
> + assigned-clocks = <&clk IMX8MP_CLK_SAI2>;
> + assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
> + assigned-clock-rates = <12288000>;
> + clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_IPG>,
> + <&clk IMX8MP_CLK_DUMMY>,
> + <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK1>,
> + <&clk IMX8MP_CLK_DUMMY>,
> + <&clk IMX8MP_CLK_DUMMY>,
> + <&clk IMX8MP_AUDIO_PLL1_OUT>,
> + <&clk IMX8MP_AUDIO_PLL2_OUT>;
> + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k",
> + "pll11k";
> + #sound-dai-cells = <0>;
> + fsl,sai-mclk-direction-output;
> + fsl,sai-synchronous-rx;
> + status = "okay";
> +};
> +
> +&iomuxc {
> + pinctrl_i2c4: i2c4grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL 0x400001c2
> + MX8MP_IOMUXC_I2C4_SDA__I2C4_SDA 0x400001c2
> + >;
> + };
> +
> + pinctrl_i2c4_gpio: i2c4gpiogrp {
> + fsl,pins = <
> + MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20 0x1e2
> + MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21 0x1e2
> + >;
> + };
> +
> + pinctrl_lvds0: lvds0grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_SAI3_TXD__GPIO5_IO01 0x12
> + >;
> + };
> +
> + pinctrl_pwm4: pwm4grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT 0x12
> + >;
> + };
> +
> + pinctrl_sai2: sai2grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6
> + MX8MP_IOMUXC_SAI2_RXFS__AUDIOMIX_SAI2_RX_SYNC 0xd6
> + MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6
> + MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
> + MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI2_RX_DATA00 0xd6
> + >;
> + };
> +
> + pinctrl_tlv320: tlv320grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28 0x16
> + MX8MP_IOMUXC_SAI2_RXC__GPIO4_IO22 0x16
> + >;
> + };
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
> new file mode 100644
> index 0000000000000000000000000000000000000000..52020c9361cc8fc84823fcae93aa3651332b91d2
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
Your dtso only include one dtsi file, why not direct use
imx8mp-phyboard-pollux-peb-av-10.dtsi as dtso.
Frank
>
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board
2025-09-24 11:59 ` [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board Yannic Moog
@ 2025-09-24 14:40 ` Frank Li
2025-09-25 7:04 ` Yannic Moog
0 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2025-09-24 14:40 UTC (permalink / raw)
To: Yannic Moog
Cc: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, imx,
linux-arm-kernel, devicetree, linux-kernel, upstream
On Wed, Sep 24, 2025 at 01:59:06PM +0200, Yannic Moog wrote:
> The same displays that can be connected directly to the
> imx8mp-phyboard-pollux can also be connected to the expansion board
> PEB-AV-10. For displays connected to the expansion board, a second LVDS
> channel of the i.MX 8M Plus SoC is used and only a single display
> connected to the SoC LVDS display bridge at a given time is supported.
>
> Signed-off-by: Yannic Moog <y.moog@phytec.de>
> ---
> arch/arm64/boot/dts/freescale/Makefile | 6 +++
> ...mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso | 45 ++++++++++++++++++++++
> ...8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso | 45 ++++++++++++++++++++++
I think you squash this to previous patch, or move previous patch dtso into
this patch to show dtsi's usage.
Frank
> 3 files changed, 96 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index 9c121041128972d2239e2cc74df98b0bf7de1ac2..e4b097446440f41785dd1a0e5d354796e800ee76 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -222,11 +222,17 @@ imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> imx8mp-phyboard-pollux-etml1010g3dra.dtbo
> imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> imx8mp-phyboard-pollux-peb-av-10.dtbo
> +imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> + imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtbo
> +imx8mp-phyboard-pollux-peb-av-10-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> + imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtbo
> imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> imx8mp-phyboard-pollux-ph128800t006.dtbo
> imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-eth.dtbo
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
> +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtb
> +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
> new file mode 100644
> index 0000000000000000000000000000000000000000..d71945430c801a0136a95d691af0cec64622a066
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/clock/imx8mp-clock.h>
> +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
> +
> +&backlight_lvds0 {
> + brightness-levels = <0 8 16 32 64 128 255>;
> + default-brightness-level = <8>;
> + enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
> + num-interpolated-steps = <2>;
> + pwms = <&pwm4 0 50000 0>;
> + status = "okay";
> +};
> +
> +&lcdif2 {
> + status = "okay";
> +};
> +
> +&lvds_bridge {
> + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
> + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> + /*
> + * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
> + * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout
> + * engine can reach accurate pixel clock of exactly 72.4 MHz.
> + */
> + assigned-clock-rates = <0>, <506800000>;
> + status = "okay";
> +};
> +
> +&panel_lvds0 {
> + compatible = "edt,etml1010g3dra";
> + status = "okay";
> +};
> +
> +&pwm4 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
> new file mode 100644
> index 0000000000000000000000000000000000000000..8ec4bbbbabb5cc7f5ae05d641fb5d14931250daf
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/clock/imx8mp-clock.h>
> +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
> +
> +&backlight_lvds0 {
> + brightness-levels = <0 8 16 32 64 128 255>;
> + default-brightness-level = <8>;
> + enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
> + num-interpolated-steps = <2>;
> + pwms = <&pwm4 0 66667 0>;
> + status = "okay";
> +};
> +
> +&lcdif2 {
> + status = "okay";
> +};
> +
> +&lvds_bridge {
> + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
> + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> + /*
> + * The LVDS panel uses 66.5 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
> + * 66.5 * 7 = 465.5 MHz so the LDB serializer and LCDIFv3 scanout
> + * engine can reach accurate pixel clock of exactly 66.5 MHz.
> + */
> + assigned-clock-rates = <0>, <465500000>;
> + status = "okay";
> +};
> +
> +&panel_lvds0 {
> + compatible = "powertip,ph128800t006-zhc01";
> + status = "okay";
> +};
> +
> +&pwm4 {
> + status = "okay";
> +};
>
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay
2025-09-24 14:36 ` Frank Li
@ 2025-09-25 6:56 ` Yannic Moog
0 siblings, 0 replies; 9+ messages in thread
From: Yannic Moog @ 2025-09-25 6:56 UTC (permalink / raw)
To: Frank.li@nxp.com
Cc: upstream@lists.phytec.de, kernel@pengutronix.de,
s.hauer@pengutronix.de, festevam@gmail.com, robh@kernel.org,
shawnguo@kernel.org, krzk+dt@kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, conor+dt@kernel.org,
imx@lists.linux.dev, devicetree@vger.kernel.org
On Wed, 2025-09-24 at 10:36 -0400, Frank Li wrote:
> On Wed, Sep 24, 2025 at 01:59:05PM +0200, Yannic Moog wrote:
> > An expansion board (PEB-AV-10) may be connected to the
> > imx8mp-phyboard-pollux. Its main purpose is to provide multimedia
> > interfaces, featuring a 3.5mm headphone jack, a USB-A port and LVDS as
> > well as backlight connectors.
> >
> > Signed-off-by: Yannic Moog <y.moog@phytec.de>
> > ---
> > arch/arm64/boot/dts/freescale/Makefile | 3 +
> > .../imx8mp-phyboard-pollux-peb-av-10.dtsi | 198 +++++++++++++++++++++
> > .../imx8mp-phyboard-pollux-peb-av-10.dtso | 9 +
> > 3 files changed, 210 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> > index 805ab9e5942bc9e2b9776e92412f56e969b6b39a..9c121041128972d2239e2cc74df98b0bf7de1ac2 100644
> > --- a/arch/arm64/boot/dts/freescale/Makefile
> > +++ b/arch/arm64/boot/dts/freescale/Makefile
> > @@ -220,10 +220,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-smarc-universal-board.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
> > imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > imx8mp-phyboard-pollux-etml1010g3dra.dtbo
> > +imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > + imx8mp-phyboard-pollux-peb-av-10.dtbo
> > imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > imx8mp-phyboard-pollux-ph128800t006.dtbo
> > imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-
> > eth.dtbo
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
> > +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
> > b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..4653af62b582ead04aed2cffde11ef0b142be343
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtsi
> > @@ -0,0 +1,198 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> > + */
> > +
> > +#include <dt-bindings/clock/imx8mp-clock.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include "imx8mp-pinfunc.h"
> > +
> > +&{/} {
> > + backlight_lvds0: backlight0 {
> > + compatible = "pwm-backlight";
> > + pinctrl-0 = <&pinctrl_lvds0>;
> > + pinctrl-names = "default";
> > + power-supply = <®_vcc_12v>;
> > + status = "disabled";
> > + };
> > +
> > + panel_lvds0: panel-lvds0 {
> > + backlight = <&backlight_lvds0>;
> > + power-supply = <®_vcc_3v3_sw>;
> > + status = "disabled";
> > +
> > + port {
> > + panel0_in: endpoint {
> > + remote-endpoint = <&ldb_lvds_ch0>;
> > + };
> > + };
> > + };
> > +
> > + reg_vcc_12v: regulator-12v {
> > + compatible = "regulator-fixed";
> > + regulator-always-on;
> > + regulator-boot-on;
> > + regulator-max-microvolt = <12000000>;
> > + regulator-min-microvolt = <12000000>;
> > + regulator-name = "VCC_12V";
> > + };
> > +
> > + reg_vcc_1v8_audio: regulator-1v8 {
> > + compatible = "regulator-fixed";
> > + regulator-always-on;
> > + regulator-boot-on;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-min-microvolt = <1800000>;
> > + regulator-name = "VCC_1V8_Audio";
> > + };
> > +
> > + reg_vcc_3v3_analog: regulator-3v3 {
> > + compatible = "regulator-fixed";
> > + regulator-always-on;
> > + regulator-boot-on;
> > + regulator-max-microvolt = <3300000>;
> > + regulator-min-microvolt = <3300000>;
> > + regulator-name = "VCC_3V3_Analog";
> > + };
> > +
> > + sound {
> > + compatible = "simple-audio-card";
> > + simple-audio-card,name = "snd-peb-av-10";
> > + simple-audio-card,format = "i2s";
> > + simple-audio-card,bitclock-master = <&dailink_master>;
> > + simple-audio-card,frame-master = <&dailink_master>;
> > + simple-audio-card,mclk-fs = <32>;
> > + simple-audio-card,widgets =
> > + "Line", "Line In",
> > + "Speaker", "Speaker",
> > + "Microphone", "Microphone Jack",
> > + "Headphone", "Headphone Jack";
> > + simple-audio-card,routing =
> > + "Speaker", "SPOP",
> > + "Speaker", "SPOM",
> > + "Headphone Jack", "HPLOUT",
> > + "Headphone Jack", "HPROUT",
> > + "LINE1L", "Line In",
> > + "LINE1R", "Line In",
> > + "MIC3R", "Microphone Jack",
> > + "Microphone Jack", "Mic Bias";
> > +
> > + simple-audio-card,cpu {
> > + sound-dai = <&sai2>;
> > + };
> > +
> > + dailink_master: simple-audio-card,codec {
> > + sound-dai = <&codec>;
> > + clocks = <&clk IMX8MP_CLK_SAI2>;
> > + };
> > + };
> > +};
> > +
> > +&i2c4 {
> > + clock-frequency = <400000>;
> > + pinctrl-0 = <&pinctrl_i2c4>;
> > + pinctrl-1 = <&pinctrl_i2c4_gpio>;
> > + pinctrl-names = "default", "gpio";
> > + scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> > + sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + status = "okay";
> > +
> > + codec: codec@18 {
> > + compatible = "ti,tlv320aic3007";
> > + reg = <0x18>;
> > + pinctrl-0 = <&pinctrl_tlv320>;
> > + pinctrl-names = "default";
> > + #sound-dai-cells = <0>;
> > + reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
> > + ai3x-gpio-func = <0xd 0x0>;
> > + ai3x-micbias-vg = <2>;
> > + AVDD-supply = <®_vcc_3v3_analog>;
> > + DRVDD-supply = <®_vcc_3v3_analog>;
> > + DVDD-supply = <®_vcc_1v8_audio>;
> > + IOVDD-supply = <®_vcc_3v3_sw>;
> > + };
> > +
> > + eeprom@57 {
> > + compatible = "atmel,24c32";
> > + reg = <0x57>;
> > + pagesize = <32>;
> > + vcc-supply = <®_vcc_3v3_sw>;
> > + };
> > +};
> > +
> > +&ldb_lvds_ch0 {
> > + remote-endpoint = <&panel0_in>;
> > +};
> > +
> > +&pwm4 {
> > + pinctrl-0 = <&pinctrl_pwm4>;
> > + pinctrl-names = "default";
> > +};
> > +
> > +&sai2 {
> > + pinctrl-0 = <&pinctrl_sai2>;
> > + pinctrl-names = "default";
> > + assigned-clocks = <&clk IMX8MP_CLK_SAI2>;
> > + assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
> > + assigned-clock-rates = <12288000>;
> > + clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_IPG>,
> > + <&clk IMX8MP_CLK_DUMMY>,
> > + <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK1>,
> > + <&clk IMX8MP_CLK_DUMMY>,
> > + <&clk IMX8MP_CLK_DUMMY>,
> > + <&clk IMX8MP_AUDIO_PLL1_OUT>,
> > + <&clk IMX8MP_AUDIO_PLL2_OUT>;
> > + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k",
> > + "pll11k";
> > + #sound-dai-cells = <0>;
> > + fsl,sai-mclk-direction-output;
> > + fsl,sai-synchronous-rx;
> > + status = "okay";
> > +};
> > +
> > +&iomuxc {
> > + pinctrl_i2c4: i2c4grp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL 0x400001c2
> > + MX8MP_IOMUXC_I2C4_SDA__I2C4_SDA 0x400001c2
> > + >;
> > + };
> > +
> > + pinctrl_i2c4_gpio: i2c4gpiogrp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20 0x1e2
> > + MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21 0x1e2
> > + >;
> > + };
> > +
> > + pinctrl_lvds0: lvds0grp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_SAI3_TXD__GPIO5_IO01 0x12
> > + >;
> > + };
> > +
> > + pinctrl_pwm4: pwm4grp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT 0x12
> > + >;
> > + };
> > +
> > + pinctrl_sai2: sai2grp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6
> > + MX8MP_IOMUXC_SAI2_RXFS__AUDIOMIX_SAI2_RX_SYNC 0xd6
> > + MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6
> > + MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6
> > + MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI2_RX_DATA00 0xd6
> > + >;
> > + };
> > +
> > + pinctrl_tlv320: tlv320grp {
> > + fsl,pins = <
> > + MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28 0x16
> > + MX8MP_IOMUXC_SAI2_RXC__GPIO4_IO22 0x16
> > + >;
> > + };
> > +};
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
> > b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..52020c9361cc8fc84823fcae93aa3651332b91d2
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10.dtso
> > @@ -0,0 +1,9 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
>
> Your dtso only include one dtsi file, why not direct use
> imx8mp-phyboard-pollux-peb-av-10.dtsi as dtso.
The peb-av-10 may have different displays connected. These will be overlays and thus include this
dtsi file to form a single, "complete" dtbo.
However, the PEB-AV-10 expansion board may also be used without a display, e.g. to provide access
to an audio connector.
Yannic
>
>
> Frank
> >
> > --
> > 2.51.0
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board
2025-09-24 14:40 ` Frank Li
@ 2025-09-25 7:04 ` Yannic Moog
0 siblings, 0 replies; 9+ messages in thread
From: Yannic Moog @ 2025-09-25 7:04 UTC (permalink / raw)
To: Frank.li@nxp.com
Cc: upstream@lists.phytec.de, kernel@pengutronix.de,
s.hauer@pengutronix.de, festevam@gmail.com, robh@kernel.org,
shawnguo@kernel.org, krzk+dt@kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, conor+dt@kernel.org,
imx@lists.linux.dev, devicetree@vger.kernel.org
On Wed, 2025-09-24 at 10:40 -0400, Frank Li wrote:
> On Wed, Sep 24, 2025 at 01:59:06PM +0200, Yannic Moog wrote:
> > The same displays that can be connected directly to the
> > imx8mp-phyboard-pollux can also be connected to the expansion board
> > PEB-AV-10. For displays connected to the expansion board, a second LVDS
> > channel of the i.MX 8M Plus SoC is used and only a single display
> > connected to the SoC LVDS display bridge at a given time is supported.
> >
> > Signed-off-by: Yannic Moog <y.moog@phytec.de>
> > ---
> > arch/arm64/boot/dts/freescale/Makefile | 6 +++
> > ...mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso | 45 ++++++++++++++++++++++
> > ...8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso | 45 ++++++++++++++++++++++
>
> I think you squash this to previous patch, or move previous patch dtso into
> this patch to show dtsi's usage.
I split the displays from the expansion board itself, because the expansion board can be used as is
without displays.
I had split the commits the same way in the past as to me they are different "topics".
If you insist I will squash, but my suggestion for a compromise is that I amend the commit
description for the expansion board patch to better explain why it exists as a dtsi file.
Yannic
>
> Frank
>
> > 3 files changed, 96 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> > index 9c121041128972d2239e2cc74df98b0bf7de1ac2..e4b097446440f41785dd1a0e5d354796e800ee76 100644
> > --- a/arch/arm64/boot/dts/freescale/Makefile
> > +++ b/arch/arm64/boot/dts/freescale/Makefile
> > @@ -222,11 +222,17 @@ imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-
> > rdk.dtb \
> > imx8mp-phyboard-pollux-etml1010g3dra.dtbo
> > imx8mp-phyboard-pollux-peb-av-10-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > imx8mp-phyboard-pollux-peb-av-10.dtbo
> > +imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > + imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtbo
> > +imx8mp-phyboard-pollux-peb-av-10-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > + imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtbo
> > imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-rdk.dtb \
> > imx8mp-phyboard-pollux-ph128800t006.dtbo
> > imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-rdk.dtb imx8mp-phycore-no-
> > eth.dtbo
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10.dtb
> > +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtb
> > +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
> > dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
> > b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..d71945430c801a0136a95d691af0cec64622a066
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-etml1010g3dra.dtso
> > @@ -0,0 +1,45 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/clock/imx8mp-clock.h>
> > +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
> > +
> > +&backlight_lvds0 {
> > + brightness-levels = <0 8 16 32 64 128 255>;
> > + default-brightness-level = <8>;
> > + enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
> > + num-interpolated-steps = <2>;
> > + pwms = <&pwm4 0 50000 0>;
> > + status = "okay";
> > +};
> > +
> > +&lcdif2 {
> > + status = "okay";
> > +};
> > +
> > +&lvds_bridge {
> > + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
> > + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> > + /*
> > + * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
> > + * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout
> > + * engine can reach accurate pixel clock of exactly 72.4 MHz.
> > + */
> > + assigned-clock-rates = <0>, <506800000>;
> > + status = "okay";
> > +};
> > +
> > +&panel_lvds0 {
> > + compatible = "edt,etml1010g3dra";
> > + status = "okay";
> > +};
> > +
> > +&pwm4 {
> > + status = "okay";
> > +};
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
> > b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..8ec4bbbbabb5cc7f5ae05d641fb5d14931250daf
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-peb-av-10-ph128800t006.dtso
> > @@ -0,0 +1,45 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/clock/imx8mp-clock.h>
> > +#include "imx8mp-phyboard-pollux-peb-av-10.dtsi"
> > +
> > +&backlight_lvds0 {
> > + brightness-levels = <0 8 16 32 64 128 255>;
> > + default-brightness-level = <8>;
> > + enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
> > + num-interpolated-steps = <2>;
> > + pwms = <&pwm4 0 66667 0>;
> > + status = "okay";
> > +};
> > +
> > +&lcdif2 {
> > + status = "okay";
> > +};
> > +
> > +&lvds_bridge {
> > + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
> > + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> > + /*
> > + * The LVDS panel uses 66.5 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
> > + * 66.5 * 7 = 465.5 MHz so the LDB serializer and LCDIFv3 scanout
> > + * engine can reach accurate pixel clock of exactly 66.5 MHz.
> > + */
> > + assigned-clock-rates = <0>, <465500000>;
> > + status = "okay";
> > +};
> > +
> > +&panel_lvds0 {
> > + compatible = "powertip,ph128800t006-zhc01";
> > + status = "okay";
> > +};
> > +
> > +&pwm4 {
> > + status = "okay";
> > +};
> >
> > --
> > 2.51.0
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Upstream] [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays
2025-09-24 11:59 ` [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays Yannic Moog
@ 2025-09-25 7:32 ` Teresa Remmet
0 siblings, 0 replies; 9+ messages in thread
From: Teresa Remmet @ 2025-09-25 7:32 UTC (permalink / raw)
To: Yannic Moog, kernel@pengutronix.de, s.hauer@pengutronix.de,
festevam@gmail.com, robh@kernel.org, shawnguo@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org
Cc: imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
upstream@lists.phytec.de
Hello Yannic,
Am Mittwoch, dem 24.09.2025 um 13:59 +0200 schrieb Yannic Moog:
> imx8mp-phyboard-pollux had a display baked into its board dts file.
> However this approach does not truly discribe the hardware and is not
> suitable when using different displays.
> Move display specific description into an overlay and add the
> successor
> display for the phyboard-pollux as an additional overlay.
>
> Signed-off-by: Yannic Moog <y.moog@phytec.de>
> ---
> arch/arm64/boot/dts/freescale/Makefile | 6 +++
> .../imx8mp-phyboard-pollux-etml1010g3dra.dtso | 44
> ++++++++++++++++++
> .../imx8mp-phyboard-pollux-ph128800t006.dtso | 45
> ++++++++++++++++++
> .../dts/freescale/imx8mp-phyboard-pollux-rdk.dts | 53 +++++-------
> ----------
> 4 files changed, 107 insertions(+), 41 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile
> b/arch/arm64/boot/dts/freescale/Makefile
> index
> 23535ed47631ca8f9db65bec5c07b6a7a7e36525..805ab9e5942bc9e2b9776e92412
> f56e969b6b39a 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -218,7 +218,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-navqp.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-enc-carrier-board.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-nitrogen-smarc-universal-board.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
> +imx8mp-phyboard-pollux-etml1010g3dra-dtbs += imx8mp-phyboard-pollux-
> rdk.dtb \
> + imx8mp-phyboard-pollux-etml1010g3dra.dtbo
> +imx8mp-phyboard-pollux-ph128800t006-dtbs += imx8mp-phyboard-pollux-
> rdk.dtb \
> + imx8mp-phyboard-pollux-ph128800t006.dtbo
> imx8mp-phyboard-pollux-rdk-no-eth-dtbs += imx8mp-phyboard-pollux-
> rdk.dtb imx8mp-phycore-no-eth.dtbo
> +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-etml1010g3dra.dtb
> +dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-ph128800t006.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk-no-eth.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-basic.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-hdmi.dtb
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> etml1010g3dra.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-
> pollux-etml1010g3dra.dtso
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..9c14f7818fec807577f4774c0e4
> 8e9daf5014734
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> etml1010g3dra.dtso
> @@ -0,0 +1,44 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/clock/imx8mp-clock.h>
> +
> +/dts-v1/;
> +/plugin/;
> +
> +&backlight_lvds1 {
> + brightness-levels = <0 8 16 32 64 128 255>;
> + default-brightness-level = <8>;
> + enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
> + num-interpolated-steps = <2>;
> + pwms = <&pwm3 0 50000 0>;
> + status = "okay";
> +};
> +
> +&lcdif2 {
> + status = "okay";
> +};
> +
> +&lvds_bridge {
> + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk
> IMX8MP_VIDEO_PLL1>;
> + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> + /*
> + * The LVDS panel uses 72.4 MHz pixel clock, set
> IMX8MP_VIDEO_PLL1 to
> + * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3
> scanout
> + * engine can reach accurate pixel clock of exactly 72.4 MHz.
> + */
> + assigned-clock-rates = <0>, <506800000>;
> + status = "okay";
> +};
> +
> +&panel_lvds1 {
> + compatible = "edt,etml1010g3dra";
> + status = "okay";
> +};
> +
> +&pwm3 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> ph128800t006.dtso b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-
> pollux-ph128800t006.dtso
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..0df34c50cce7df58322161f0a2f
> 72eaddf2307a7
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> ph128800t006.dtso
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/clock/imx8mp-clock.h>
> +
> +/dts-v1/;
> +/plugin/;
> +
> +&backlight_lvds1 {
> + brightness-levels = <0 8 16 32 64 128 255>;
> + default-brightness-level = <8>;
> + enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
> + num-interpolated-steps = <2>;
> + pwms = <&pwm3 0 66667 0>;
> + status = "okay";
> +};
> +
> +&lcdif2 {
> + status = "okay";
> +};
> +
> +&lvds_bridge {
> + assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk
> IMX8MP_VIDEO_PLL1>;
> + assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
> + /*
> + * The LVDS panel uses 72.4 MHz pixel clock, set
> IMX8MP_VIDEO_PLL1 to
> + * 66.5 * 7 = 465.5 MHz so the LDB serializer and LCDIFv3
> scanout
> + * engine can reach accurate pixel clock of exactly 66.5 MHz.
> + */
> + assigned-clock-rates = <0>, <465500000>;
> + status = "okay";
> +};
> +
> +
> +&panel_lvds1 {
> + compatible = "powertip,ph128800t006-zhc01";
> + status = "okay";
> +};
> +
> +&pwm3 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> rdk.dts b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-
> rdk.dts
> index
> 436152308642270c320e3ae3b21b9e46b923c043..76a9ae34ba469cbc65648f588c6
> 3c4016119821e 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-phyboard-pollux-rdk.dts
> @@ -1,6 +1,6 @@
> -// SPDX-License-Identifier: GPL-2.0
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
I think this is a good idea to update the License of the Pollux file.
But you should move this out to a separate patch to highlight the
change. Then please do the same for the SoM.
Besides this.
Reviewed-by: Teresa Remmet <t.remmet@phytec.de>
Teresa
> /*
> - * Copyright (C) 2020 PHYTEC Messtechnik GmbH
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> * Author: Teresa Remmet <t.remmet@phytec.de>
> */
>
> @@ -8,7 +8,6 @@
>
> #include <dt-bindings/phy/phy-imx8-pcie.h>
> #include <dt-bindings/leds/leds-pca9532.h>
> -#include <dt-bindings/pwm/pwm.h>
> #include <dt-bindings/thermal/thermal.h>
> #include "imx8mp-phycore-som.dtsi"
>
> @@ -21,16 +20,12 @@ chosen {
> stdout-path = &uart1;
> };
>
> - backlight_lvds: backlight {
> + backlight_lvds1: backlight1 {
> compatible = "pwm-backlight";
> - pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_lvds1>;
> - brightness-levels = <0 4 8 16 32 64 128 255>;
> - default-brightness-level = <11>;
> - enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
> - num-interpolated-steps = <2>;
> + pinctrl-names = "default";
> power-supply = <®_lvds1_reg_en>;
> - pwms = <&pwm3 0 50000 0>;
> + status = "disabled";
> };
>
> fan0: fan {
> @@ -43,10 +38,11 @@ fan0: fan {
> #cooling-cells = <2>;
> };
>
> - panel1_lvds: panel-lvds {
> - compatible = "edt,etml1010g3dra";
> - backlight = <&backlight_lvds>;
> + panel_lvds1: panel-lvds1 {
> + /* compatible panel in overlay */
> + backlight = <&backlight_lvds1>;
> power-supply = <®_vcc_3v3_sw>;
> + status = "disabled";
>
> port {
> panel1_in: endpoint {
> @@ -232,32 +228,8 @@ led-3 {
> };
> };
>
> -&lcdif2 {
> - status = "okay";
> -};
> -
> -&lvds_bridge {
> - status = "okay";
> -
> - ports {
> - port@2 {
> - ldb_lvds_ch1: endpoint {
> - remote-endpoint = <&panel1_in>;
> - };
> - };
> - };
> -};
> -
> -&media_blk_ctrl {
> - /*
> - * The LVDS panel on this device uses 72.4 MHz pixel clock,
> - * set IMX8MP_VIDEO_PLL1 to 72.4 * 7 = 506.8 MHz so the LDB
> - * serializer and LCDIFv3 scanout engine can reach accurate
> - * pixel clock of exactly 72.4 MHz.
> - */
> - assigned-clock-rates = <500000000>, <200000000>,
> - <0>, <0>, <500000000>,
> - <506800000>;
> +&ldb_lvds_ch1 {
> + remote-endpoint = <&panel1_in>;
> };
>
> &snvs_pwrkey {
> @@ -282,9 +254,8 @@ &pcie {
> };
>
> &pwm3 {
> - status = "okay";
> - pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_pwm3>;
> + pinctrl-names = "default";
> };
>
> &rv3028 {
>
--
PHYTEC Messtechnik GmbH | Barcelona-Allee 1 | 55129 Mainz, Germany
Geschäftsführer: Dipl.-Ing. Michael Mitezki, Dipl.-Ing. Bodo Huber,
Dipl.-Ing. (FH) Markus Lickes | Handelsregister Mainz HRB 4656 |
Finanzamt Mainz | St.Nr. 26/665/00608, DE 149059855
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-09-25 7:32 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-24 11:59 [PATCH v2 0/3] Add display overlays for imx8mp-phyboard-pollux Yannic Moog
2025-09-24 11:59 ` [PATCH v2 1/3] arm64: dts: imx8mp pollux: add display overlays Yannic Moog
2025-09-25 7:32 ` [Upstream] " Teresa Remmet
2025-09-24 11:59 ` [PATCH v2 2/3] arm64: dts: imx8mp pollux: add expansion board overlay Yannic Moog
2025-09-24 14:36 ` Frank Li
2025-09-25 6:56 ` Yannic Moog
2025-09-24 11:59 ` [PATCH v2 3/3] arm64: dts: imx8mp pollux: add displays for expansion board Yannic Moog
2025-09-24 14:40 ` Frank Li
2025-09-25 7:04 ` Yannic Moog
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox