Add an overlay to use the PEB-AV-15 AV-Adapter. It's a small expansion board
using a Lontium LT8912B DSI->HDMI bridge and a TLV320AIC3007 audio codec.
Signed-off-by: Dominik Haller <d.haller@phytec.de>
---
arch/arm64/boot/dts/ti/Makefile | 4 +
.../ti/k3-am68-phyboard-izar-peb-av-15.dtso | 192 ++++++++++++++++++
2 files changed, 196 insertions(+)
create mode 100644 arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index a188e62e32b4..ae5994818ad2 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -135,6 +135,9 @@ dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar-lvds-ph128800t006.dtb
k3-am68-phyboard-izar-lvds-ph128800t006-dtbs := k3-am68-phyboard-izar.dtb \
k3-am68-phyboard-izar-lvds-ph128800t006.dtbo
+dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar-peb-av-15.dtb
+k3-am68-phyboard-izar-peb-av-15-dtbs := k3-am68-phyboard-izar.dtb \
+ k3-am68-phyboard-izar-peb-av-15.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-am68-sk-base-board.dtb
dtb-$(CONFIG_ARCH_K3) += k3-am68-sk-base-board-pcie1-ep.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-j721s2-common-proc-board.dtb
@@ -323,6 +326,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
k3-am642-tqma64xxl-mbax4xxl-wlan.dtb \
k3-am67a-kontron-sa67-base-gpios.dtb \
k3-am68-phyboard-izar-lvds-ph128800t006.dtb \
+ k3-am68-phyboard-izar-peb-av-15.dtb \
k3-am68-sk-base-board-csi2-dual-imx219.dtb \
k3-am68-sk-base-board-pcie1-ep.dtb \
k3-am69-sk-csi2-dual-imx219.dtb \
diff --git a/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso b/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
new file mode 100644
index 000000000000..a86971fcdee1
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
@@ -0,0 +1,192 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2026 PHYTEC Messtechnik GmbH
+ * Author: Dominik Haller <d.haller@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "k3-pinctrl.h"
+
+&{/} {
+ audio_refclk1: audio-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <19200000>;
+ };
+
+ hdmi: hdmi-connector {
+ compatible = "hdmi-connector";
+ label = "hdmi";
+ type = "a";
+ ddc-i2c-bus = <&main_i2c2>;
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <<8912b_out>;
+ };
+ };
+ };
+
+ reg_audio_3v3: regulator-audio-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC3V3_AUDIO";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ reg_audio_1v8: regulator-audio-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC1V8_AUDIO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "PEB-AV-15";
+ simple-audio-card,widgets =
+ "Headphone", "Headphone Jack",
+ "Microphone", "Mic Jack";
+ simple-audio-card,routing =
+ "Headphone Jack", "HPLOUT",
+ "Headphone Jack", "HPROUT",
+ "MIC3R", "Mic Jack",
+ "Mic Jack", "Mic Bias";
+ simple-audio-card,format = "dsp_b";
+ simple-audio-card,bitclock-inversion;
+ simple-audio-card,bitclock-master = <&link0_codec>;
+ simple-audio-card,frame-master = <&link0_codec>;
+
+ link0_cpu: simple-audio-card,cpu {
+ sound-dai = <&mcasp0>;
+ };
+
+ link0_codec: simple-audio-card,codec {
+ sound-dai = <&audio_codec>;
+ clocks = <&audio_refclk1>;
+ };
+ };
+
+};
+
+&dphy_tx1 {
+ status = "okay";
+};
+
+&dsi1 {
+ status = "okay";
+};
+
+&dsi1_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ dsi1_out: endpoint {
+ remote-endpoint = <<8912b_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ dsi1_in: endpoint {
+ remote-endpoint = <&dpi3_out>;
+ };
+ };
+};
+
+&dss {
+ status = "okay";
+};
+
+&dss_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@3 {
+ reg = <3>;
+ dpi3_out: endpoint {
+ remote-endpoint = <&dsi1_in>;
+ };
+ };
+};
+
+&mcasp0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcasp0_pins>;
+
+ #sound-dai-cells = <0>;
+
+ op-mode = <0>; /* MCASP_IIS_MODE */
+ tdm-slots = <2>;
+
+ /* 4 serializers */
+ serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
+ 2 0 0 1
+ 0 0 0 0
+ 0 0 0 0
+ 0 0 0 0
+ >;
+
+ tx-num-evt = <32>;
+ rx-num-evt = <32>;
+ status = "okay";
+};
+
+&main_i2c2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ audio_codec: audio-codec@18 {
+ compatible = "ti,tlv320aic3007";
+ reg = <0x18>;
+ #sound-dai-cells= <0>;
+ ai3x-micbias-vg = <2>;
+ AVDD-supply = <®_audio_3v3>;
+ IOVDD-supply = <®_audio_3v3>;
+ DRVDD-supply = <®_audio_3v3>;
+ DVDD-supply = <®_audio_1v8>;
+
+ };
+
+ bridge@48 {
+ compatible = "lontium,lt8912b";
+ reg = <0x48>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ lt8912b_in: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&dsi1_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ lt8912b_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+ };
+ };
+ };
+};
+
+&main_pmx0 {
+ mcasp0_pins: mcasp0-default-pins {
+ pinctrl-single,pins = <
+ J721S2_IOPAD(0x03c, PIN_INPUT, 1) /* (U27) WCLK, MCASP0_AFSX.MCASP0_AFSX */
+ J721S2_IOPAD(0x038, PIN_INPUT, 1) /* (AB28) BCLK, MCASP0_ACLKX.MCASP0_ACLKX */
+ J721S2_IOPAD(0x040, PIN_OUTPUT, 1) /* (AC28) DOUT, MCASP0_AXR0.MCASP0_AXR0 */
+ J721S2_IOPAD(0x07c, PIN_INPUT, 1) /* (T27) DIN, MCASP0_AXR3.MCASP0_AXR3 */
+ >;
+ };
+};
--
2.43.0
On 12/03/26 05:18, Dominik Haller wrote:
> Add an overlay to use the PEB-AV-15 AV-Adapter. It's a small expansion board
> using a Lontium LT8912B DSI->HDMI bridge and a TLV320AIC3007 audio codec.
>
> Signed-off-by: Dominik Haller <d.haller@phytec.de>
> ---
> arch/arm64/boot/dts/ti/Makefile | 4 +
> .../ti/k3-am68-phyboard-izar-peb-av-15.dtso | 192 ++++++++++++++++++
> 2 files changed, 196 insertions(+)
> create mode 100644 arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
>
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index a188e62e32b4..ae5994818ad2 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -135,6 +135,9 @@ dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar-lvds-ph128800t006.dtb
> k3-am68-phyboard-izar-lvds-ph128800t006-dtbs := k3-am68-phyboard-izar.dtb \
> k3-am68-phyboard-izar-lvds-ph128800t006.dtbo
> +dtb-$(CONFIG_ARCH_K3) += k3-am68-phyboard-izar-peb-av-15.dtb
> +k3-am68-phyboard-izar-peb-av-15-dtbs := k3-am68-phyboard-izar.dtb \
> + k3-am68-phyboard-izar-peb-av-15.dtbo
> dtb-$(CONFIG_ARCH_K3) += k3-am68-sk-base-board.dtb
> dtb-$(CONFIG_ARCH_K3) += k3-am68-sk-base-board-pcie1-ep.dtbo
> dtb-$(CONFIG_ARCH_K3) += k3-j721s2-common-proc-board.dtb
> @@ -323,6 +326,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
> k3-am642-tqma64xxl-mbax4xxl-wlan.dtb \
> k3-am67a-kontron-sa67-base-gpios.dtb \
> k3-am68-phyboard-izar-lvds-ph128800t006.dtb \
> + k3-am68-phyboard-izar-peb-av-15.dtb \
> k3-am68-sk-base-board-csi2-dual-imx219.dtb \
> k3-am68-sk-base-board-pcie1-ep.dtb \
> k3-am69-sk-csi2-dual-imx219.dtb \
> diff --git a/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso b/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
> new file mode 100644
> index 000000000000..a86971fcdee1
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-am68-phyboard-izar-peb-av-15.dtso
> @@ -0,0 +1,192 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * Copyright (C) 2026 PHYTEC Messtechnik GmbH
> + * Author: Dominik Haller <d.haller@phytec.de>
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include "k3-pinctrl.h"
> +
> +&{/} {
> + audio_refclk1: audio-clock {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <19200000>;
> + };
> +
> + hdmi: hdmi-connector {
> + compatible = "hdmi-connector";
> + label = "hdmi";
> + type = "a";
> + ddc-i2c-bus = <&main_i2c2>;
> +
> + port {
> + hdmi_connector_in: endpoint {
> + remote-endpoint = <<8912b_out>;
> + };
> + };
> + };
> +
> + reg_audio_3v3: regulator-audio-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC3V3_AUDIO";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + };
> +
> + reg_audio_1v8: regulator-audio-1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC1V8_AUDIO";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-always-on;
> + };
> +
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "PEB-AV-15";
> + simple-audio-card,widgets =
> + "Headphone", "Headphone Jack",
> + "Microphone", "Mic Jack";
> + simple-audio-card,routing =
> + "Headphone Jack", "HPLOUT",
> + "Headphone Jack", "HPROUT",
> + "MIC3R", "Mic Jack",
> + "Mic Jack", "Mic Bias";
> + simple-audio-card,format = "dsp_b";
> + simple-audio-card,bitclock-inversion;
> + simple-audio-card,bitclock-master = <&link0_codec>;
> + simple-audio-card,frame-master = <&link0_codec>;
> +
> + link0_cpu: simple-audio-card,cpu {
> + sound-dai = <&mcasp0>;
> + };
> +
> + link0_codec: simple-audio-card,codec {
> + sound-dai = <&audio_codec>;
> + clocks = <&audio_refclk1>;
> + };
> + };
> +
> +};
> +
> +&dphy_tx1 {
> + status = "okay";
You have spacs instead of tabs
> +};
> +
> +&dsi1 {
> + status = "okay";
> +};
> +
> +&dsi1_ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + port@0 {
> + reg = <0>;
> + dsi1_out: endpoint {
> + remote-endpoint = <<8912b_in>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> + dsi1_in: endpoint {
> + remote-endpoint = <&dpi3_out>;
> + };
> + };
> +};
> +
> +&dss {
> + status = "okay";
> +};
> +
> +&dss_ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
Here too... Please check the entire series.
> + port@3 {
> + reg = <3>;
> + dpi3_out: endpoint {
> + remote-endpoint = <&dsi1_in>;
> + };
> + };
> +};
> +
> +&mcasp0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mcasp0_pins>;
> +
> + #sound-dai-cells = <0>;
> +
> + op-mode = <0>; /* MCASP_IIS_MODE */
> + tdm-slots = <2>;
> +
> + /* 4 serializers */
> + serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
> + 2 0 0 1
> + 0 0 0 0
> + 0 0 0 0
> + 0 0 0 0
> + >;
> +
> + tx-num-evt = <32>;
> + rx-num-evt = <32>;
> + status = "okay";
> +};
> +
> +&main_i2c2 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + audio_codec: audio-codec@18 {
> + compatible = "ti,tlv320aic3007";
> + reg = <0x18>;
> + #sound-dai-cells= <0>;
Missing space before "="
> + ai3x-micbias-vg = <2>;
> + AVDD-supply = <®_audio_3v3>;
> + IOVDD-supply = <®_audio_3v3>;
> + DRVDD-supply = <®_audio_3v3>;
> + DVDD-supply = <®_audio_1v8>;
> +
> + };
> +
> + bridge@48 {
> + compatible = "lontium,lt8912b";
> + reg = <0x48>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + lt8912b_in: endpoint {
> + data-lanes = <0 1 2 3>;
> + remote-endpoint = <&dsi1_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> + lt8912b_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> +};
> +
> +&main_pmx0 {
> + mcasp0_pins: mcasp0-default-pins {
> + pinctrl-single,pins = <
> + J721S2_IOPAD(0x03c, PIN_INPUT, 1) /* (U27) WCLK, MCASP0_AFSX.MCASP0_AFSX */
> + J721S2_IOPAD(0x038, PIN_INPUT, 1) /* (AB28) BCLK, MCASP0_ACLKX.MCASP0_ACLKX */
> + J721S2_IOPAD(0x040, PIN_OUTPUT, 1) /* (AC28) DOUT, MCASP0_AXR0.MCASP0_AXR0 */
> + J721S2_IOPAD(0x07c, PIN_INPUT, 1) /* (T27) DIN, MCASP0_AXR3.MCASP0_AXR3 */
> + >;
> + };
> +};
--
Regards
Vignesh
https://ti.com/opensource
© 2016 - 2026 Red Hat, Inc.