* [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support
@ 2026-05-28 13:35 Swamil Jain
2026-05-29 8:58 ` Kumar, Udit
2026-05-29 14:12 ` Nishanth Menon
0 siblings, 2 replies; 5+ messages in thread
From: Swamil Jain @ 2026-05-28 13:35 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh, krzk+dt, conor+dt, tomi.valkeinen
Cc: r-sharma3, devarsht, praneeth, linux-arm-kernel, devicetree,
linux-kernel, s-jain1
From: Devarsh Thakkar <devarsht@ti.com>
Add DSS, DSI, DPHY, and HDMI bridge nodes to enable DPI-to-HDMI output
on AM62L[1]. The DSS uses parallel DPI interface with pinctrl
configuration to drive an external SiI9022 HDMI bridge.
DSI and DPHY nodes are added but remain disabled, as the AM62L shares a
single video port for DPI and DSI output.
DSI functionality can be enabled via overlays when required.
[1]: https://www.ti.com/product/AM62L
Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
Signed-off-by: Swamil Jain <s-jain1@ti.com>
---
Changelog:
v1->v2:
- Update the commit message to elaborate more about the patch.
- Add dpi-pinctrl configuration.
- Update the interrupt routing index for HDMI interrupt line
Link to v1: https://lore.kernel.org/all/20260513210942.692269-1-s-jain1@ti.com/
---
arch/arm64/boot/dts/ti/k3-am62l-main.dtsi | 47 +++++++++++
arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 95 +++++++++++++++++++++++
2 files changed, 142 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
index 80615ca1e01a..1d255c9138db 100644
--- a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
@@ -584,4 +584,51 @@ scmi_shmem: sram@0 {
bootph-all;
};
};
+
+ dss: dss@30200000 {
+ compatible = "ti,am62l-dss";
+ reg = <0x00 0x30200000 0x00 0x1000>, /* common */
+ <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
+ <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
+ <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
+ <0x00 0x30201000 0x00 0x1000>; /* common1 */
+ reg-names = "common", "vidl1", "ovr1", "vp1", "common1";
+ power-domains = <&scmi_pds 39>;
+ clocks = <&scmi_clk 162>,
+ <&scmi_clk 161>;
+ clock-names = "fck", "vp1";
+ interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+ status = "disabled";
+
+ dss_ports: ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
+
+ dphy_tx0: phy@301c0000 {
+ compatible = "ti,j721e-dphy";
+ reg = <0x0 0x301c0000 0x0 0x1000>;
+ clocks = <&scmi_clk 348>, <&scmi_clk 343>;
+ clock-names = "psm", "pll_ref";
+ #phy-cells = <0>;
+ power-domains = <&scmi_pds 86>;
+ assigned-clocks = <&scmi_clk 343>;
+ assigned-clock-parents = <&scmi_clk 341>;
+ assigned-clock-rates = <25000000>;
+ status = "disabled";
+ };
+
+ dsi0: dsi@30500000 {
+ compatible = "ti,j721e-dsi";
+ reg = <0x0 0x30500000 0x0 0x100000>, <0x0 0x30270000 0x0 0x100>;
+ clocks = <&scmi_clk 155>, <&scmi_clk 158>;
+ clock-names = "dsi_p_clk", "dsi_sys_clk";
+ power-domains = <&scmi_pds 38>;
+ interrupt-parent = <&gic500>;
+ interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+ phys = <&dphy_tx0>;
+ phy-names = "dphy";
+ status = "disabled";
+ };
};
diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
index a1af4571a815..9b04fa6d2cba 100644
--- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
@@ -119,6 +119,18 @@ vcc_1v8: regulator-3 {
regulator-always-on;
regulator-boot-on;
};
+
+ hdmi0: connector-hdmi {
+ compatible = "hdmi-connector";
+ label = "hdmi";
+ type = "a";
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&sii9022_out>;
+ };
+ };
+ };
};
&gpio0 {
@@ -192,6 +204,38 @@ exp2: gpio@23 {
bootph-all;
};
+ sii9022: bridge-hdmi@3b {
+ compatible = "sil,sii9022";
+ reg = <0x3b>;
+ interrupt-parent = <&exp1>;
+ interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
+ #sound-dai-cells = <0>;
+ sil,i2s-data-lanes = < 0 >;
+ pinctrl-names = "default";
+ pinctrl-0 = <&dpi_pins_default>;
+ bootph-all;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ sii9022_in: endpoint {
+ remote-endpoint = <&dpi_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ sii9022_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+ };
+ };
+ };
};
&i2c2 {
@@ -221,6 +265,41 @@ usb_con_hs: endpoint {
};
&pmx0 {
+ dpi_pins_default: dpi-default-pins {
+ pinctrl-single,pins = <
+ AM62LX_IOPAD(0x00e4, PIN_OUTPUT, 1) /* (L20) GPMC0_CSn0.VOUT0_VSYNC */
+ AM62LX_IOPAD(0x00dc, PIN_OUTPUT, 1) /* (N21) GPMC0_WPn.VOUT0_HSYNC */
+ AM62LX_IOPAD(0x00e8, PIN_OUTPUT, 1) /* (L19) GPMC0_CSn1.VOUT0_PCLK */
+ AM62LX_IOPAD(0x00e0, PIN_OUTPUT, 1) /* (M21) GPMC0_DIR.VOUT0_DE */
+ AM62LX_IOPAD(0x0078, PIN_OUTPUT, 1) /* (L22) GPMC0_AD0.VOUT0_DATA0 */
+ AM62LX_IOPAD(0x007c, PIN_OUTPUT, 1) /* (L23) GPMC0_AD1.VOUT0_DATA1 */
+ AM62LX_IOPAD(0x0080, PIN_OUTPUT, 1) /* (K22) GPMC0_AD2.VOUT0_DATA2 */
+ AM62LX_IOPAD(0x0084, PIN_OUTPUT, 1) /* (J23) GPMC0_AD3.VOUT0_DATA3 */
+ AM62LX_IOPAD(0x0088, PIN_OUTPUT, 1) /* (K23) GPMC0_AD4.VOUT0_DATA4 */
+ AM62LX_IOPAD(0x008c, PIN_OUTPUT, 1) /* (H22) GPMC0_AD5.VOUT0_DATA5 */
+ AM62LX_IOPAD(0x0090, PIN_OUTPUT, 1) /* (H23) GPMC0_AD6.VOUT0_DATA6 */
+ AM62LX_IOPAD(0x0094, PIN_OUTPUT, 1) /* (J22) GPMC0_AD7.VOUT0_DATA7 */
+ AM62LX_IOPAD(0x0098, PIN_OUTPUT, 1) /* (H19) GPMC0_AD8.VOUT0_DATA8 */
+ AM62LX_IOPAD(0x009c, PIN_OUTPUT, 1) /* (H20) GPMC0_AD9.VOUT0_DATA9 */
+ AM62LX_IOPAD(0x00a0, PIN_OUTPUT, 1) /* (H21) GPMC0_AD10.VOUT0_DATA10 */
+ AM62LX_IOPAD(0x00a4, PIN_OUTPUT, 1) /* (H18) GPMC0_AD11.VOUT0_DATA11 */
+ AM62LX_IOPAD(0x00a8, PIN_OUTPUT, 1) /* (G23) GPMC0_AD12.VOUT0_DATA12 */
+ AM62LX_IOPAD(0x00ac, PIN_OUTPUT, 1) /* (G22) GPMC0_AD13.VOUT0_DATA13 */
+ AM62LX_IOPAD(0x00b0, PIN_OUTPUT, 1) /* (F22) GPMC0_AD14.VOUT0_DATA14 */
+ AM62LX_IOPAD(0x00b4, PIN_OUTPUT, 1) /* (F23) GPMC0_AD15.VOUT0_DATA15 */
+ AM62LX_IOPAD(0x00b8, PIN_OUTPUT, 1) /* (L21) GPMC0_CLK.VOUT0_DATA16 */
+ AM62LX_IOPAD(0x00c0, PIN_OUTPUT, 1) /* (N19) GPMC0_ADVn_ALE.VOUT0_DATA17 */
+ AM62LX_IOPAD(0x00c4, PIN_OUTPUT, 1) /* (N20) GPMC0_OEn_REn.VOUT0_DATA18 */
+ AM62LX_IOPAD(0x00c8, PIN_OUTPUT, 1) /* (M19) GPMC0_WEn.VOUT0_DATA19 */
+ AM62LX_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (P23) GPMC0_BE0n_CLE.VOUT0_DATA20 */
+ AM62LX_IOPAD(0x00d0, PIN_OUTPUT, 1) /* (P22) GPMC0_BE1n.VOUT0_DATA21 */
+ AM62LX_IOPAD(0x00d4, PIN_OUTPUT, 1) /* (N23) GPMC0_WAIT0.VOUT0_DATA22 */
+ AM62LX_IOPAD(0x00d8, PIN_OUTPUT, 1) /* (N22) GPMC0_WAIT1.VOUT0_DATA23 */
+ AM62LX_IOPAD(0x00ec, PIN_OUTPUT, 5) /* (M23) GPMC0_CSn2.VOUT0_EXTPCLKIN */
+ >;
+ bootph-all;
+ };
+
gpio0_ioexp_intr_pins_default: gpio0-ioexp-intr-default-pins {
pinctrl-single,pins = <
AM62LX_IOPAD(0x01b0, PIN_INPUT, 7) /* (B12) SPI0_D1.GPIO0_91 */
@@ -375,6 +454,22 @@ &usb1 {
pinctrl-0 = <&usb1_default_pins>;
};
+&dss {
+ status = "okay";
+ bootph-all;
+};
+
+&dss_ports {
+ /* VP1: DPI Output */
+ port@0 {
+ reg = <0>;
+
+ dpi_out: endpoint {
+ remote-endpoint = <&sii9022_in>;
+ };
+ };
+};
+
&wkup_uart0 {
pinctrl-0 = <&wkup_uart0_pins_default>;
pinctrl-names = "default";
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support
2026-05-28 13:35 [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support Swamil Jain
@ 2026-05-29 8:58 ` Kumar, Udit
2026-07-10 11:13 ` Swamil Jain
2026-05-29 14:12 ` Nishanth Menon
1 sibling, 1 reply; 5+ messages in thread
From: Kumar, Udit @ 2026-05-29 8:58 UTC (permalink / raw)
To: Swamil Jain, nm, vigneshr, kristo, robh, krzk+dt, conor+dt,
tomi.valkeinen
Cc: r-sharma3, devarsht, praneeth, linux-arm-kernel, devicetree,
linux-kernel
On 5/28/2026 7:05 PM, Swamil Jain wrote:
> From: Devarsh Thakkar <devarsht@ti.com>
>
> Add DSS, DSI, DPHY, and HDMI bridge nodes to enable DPI-to-HDMI output
> on AM62L[1]. The DSS uses parallel DPI interface with pinctrl
> configuration to drive an external SiI9022 HDMI bridge.
>
> DSI and DPHY nodes are added but remain disabled, as the AM62L shares a
> single video port for DPI and DSI output.
>
> DSI functionality can be enabled via overlays when required.
>
> [1]: https://www.ti.com/product/AM62L
>
> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
> Signed-off-by: Swamil Jain <s-jain1@ti.com>
> ---
> Changelog:
> v1->v2:
> - Update the commit message to elaborate more about the patch.
> - Add dpi-pinctrl configuration.
> - Update the interrupt routing index for HDMI interrupt line
>
> Link to v1: https://lore.kernel.org/all/20260513210942.692269-1-s-jain1@ti.com/
> ---
> arch/arm64/boot/dts/ti/k3-am62l-main.dtsi | 47 +++++++++++
> arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 95 +++++++++++++++++++++++
> 2 files changed, 142 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> index 80615ca1e01a..1d255c9138db 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> @@ -584,4 +584,51 @@ scmi_shmem: sram@0 {
> bootph-all;
> };
> };
> +
> + dss: dss@30200000 {
> + compatible = "ti,am62l-dss";
> + reg = <0x00 0x30200000 0x00 0x1000>, /* common */
> + <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
> + <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
> + <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
> + <0x00 0x30201000 0x00 0x1000>; /* common1 */
> + reg-names = "common", "vidl1", "ovr1", "vp1", "common1";
> + power-domains = <&scmi_pds 39>;
> + clocks = <&scmi_clk 162>,
> + <&scmi_clk 161>;
> + clock-names = "fck", "vp1";
> + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
> + status = "disabled";
> +
> + dss_ports: ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> + };
> +
> + dphy_tx0: phy@301c0000 {
> + compatible = "ti,j721e-dphy";
> + reg = <0x0 0x301c0000 0x0 0x1000>;
> + clocks = <&scmi_clk 348>, <&scmi_clk 343>;
> + clock-names = "psm", "pll_ref";
> + #phy-cells = <0>;
> + power-domains = <&scmi_pds 86>;
> + assigned-clocks = <&scmi_clk 343>;
> + assigned-clock-parents = <&scmi_clk 341>;
> + assigned-clock-rates = <25000000>;
> + status = "disabled";
> + };
> +
> + dsi0: dsi@30500000 {
> + compatible = "ti,j721e-dsi";
> + reg = <0x0 0x30500000 0x0 0x100000>, <0x0 0x30270000 0x0 0x100>;
> + clocks = <&scmi_clk 155>, <&scmi_clk 158>;
> + clock-names = "dsi_p_clk", "dsi_sys_clk";
> + power-domains = <&scmi_pds 38>;
> + interrupt-parent = <&gic500>;
> + interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
> + phys = <&dphy_tx0>;
> + phy-names = "dphy";
> + status = "disabled";
I think you should add port information for dsi as well
see DSI node in other SOC (J721E, J721S2, J784s4) for reference.
> + };
> };
> diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> index a1af4571a815..9b04fa6d2cba 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> @@ -119,6 +119,18 @@ vcc_1v8: regulator-3 {
> regulator-always-on;
> regulator-boot-on;
> };
> +
[..]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support
2026-05-28 13:35 [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support Swamil Jain
2026-05-29 8:58 ` Kumar, Udit
@ 2026-05-29 14:12 ` Nishanth Menon
2026-07-10 12:04 ` Swamil Jain
1 sibling, 1 reply; 5+ messages in thread
From: Nishanth Menon @ 2026-05-29 14:12 UTC (permalink / raw)
To: Swamil Jain
Cc: vigneshr, kristo, robh, krzk+dt, conor+dt, tomi.valkeinen,
r-sharma3, devarsht, praneeth, linux-arm-kernel, devicetree,
linux-kernel
On 19:05-20260528, Swamil Jain wrote:
> From: Devarsh Thakkar <devarsht@ti.com>
>
> Add DSS, DSI, DPHY, and HDMI bridge nodes to enable DPI-to-HDMI output
> on AM62L[1]. The DSS uses parallel DPI interface with pinctrl
> configuration to drive an external SiI9022 HDMI bridge.
>
> DSI and DPHY nodes are added but remain disabled, as the AM62L shares a
> single video port for DPI and DSI output.
>
> DSI functionality can be enabled via overlays when required.
>
> [1]: https://www.ti.com/product/AM62L
1. please split this up. please dont mix the SoC with evm stuff.
2. I suggest DPI output be a overlay as well
>
> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
> Signed-off-by: Swamil Jain <s-jain1@ti.com>
> ---
> Changelog:
> v1->v2:
> - Update the commit message to elaborate more about the patch.
> - Add dpi-pinctrl configuration.
> - Update the interrupt routing index for HDMI interrupt line
>
> Link to v1: https://lore.kernel.org/all/20260513210942.692269-1-s-jain1@ti.com/
> ---
> arch/arm64/boot/dts/ti/k3-am62l-main.dtsi | 47 +++++++++++
> arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 95 +++++++++++++++++++++++
> 2 files changed, 142 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> index 80615ca1e01a..1d255c9138db 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
> @@ -584,4 +584,51 @@ scmi_shmem: sram@0 {
> bootph-all;
> };
> };
> +
> + dss: dss@30200000 {
> + compatible = "ti,am62l-dss";
> + reg = <0x00 0x30200000 0x00 0x1000>, /* common */
> + <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
> + <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
> + <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
> + <0x00 0x30201000 0x00 0x1000>; /* common1 */
> + reg-names = "common", "vidl1", "ovr1", "vp1", "common1";
> + power-domains = <&scmi_pds 39>;
> + clocks = <&scmi_clk 162>,
> + <&scmi_clk 161>;
> + clock-names = "fck", "vp1";
> + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
> + status = "disabled";
> +
> + dss_ports: ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> + };
> +
> + dphy_tx0: phy@301c0000 {
> + compatible = "ti,j721e-dphy";
> + reg = <0x0 0x301c0000 0x0 0x1000>;
> + clocks = <&scmi_clk 348>, <&scmi_clk 343>;
> + clock-names = "psm", "pll_ref";
> + #phy-cells = <0>;
> + power-domains = <&scmi_pds 86>;
> + assigned-clocks = <&scmi_clk 343>;
> + assigned-clock-parents = <&scmi_clk 341>;
> + assigned-clock-rates = <25000000>;
> + status = "disabled";
> + };
> +
> + dsi0: dsi@30500000 {
> + compatible = "ti,j721e-dsi";
> + reg = <0x0 0x30500000 0x0 0x100000>, <0x0 0x30270000 0x0 0x100>;
> + clocks = <&scmi_clk 155>, <&scmi_clk 158>;
> + clock-names = "dsi_p_clk", "dsi_sys_clk";
> + power-domains = <&scmi_pds 38>;
> + interrupt-parent = <&gic500>;
> + interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
> + phys = <&dphy_tx0>;
> + phy-names = "dphy";
> + status = "disabled";
> + };
> };
> diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> index a1af4571a815..9b04fa6d2cba 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
> @@ -119,6 +119,18 @@ vcc_1v8: regulator-3 {
> regulator-always-on;
> regulator-boot-on;
> };
> +
> + hdmi0: connector-hdmi {
> + compatible = "hdmi-connector";
> + label = "hdmi";
> + type = "a";
> +
> + port {
> + hdmi_connector_in: endpoint {
> + remote-endpoint = <&sii9022_out>;
> + };
> + };
> + };
> };
>
> &gpio0 {
> @@ -192,6 +204,38 @@ exp2: gpio@23 {
> bootph-all;
> };
>
> + sii9022: bridge-hdmi@3b {
> + compatible = "sil,sii9022";
> + reg = <0x3b>;
> + interrupt-parent = <&exp1>;
> + interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
I see you addressed sashiko comments
https://lore.kernel.org/all/20260514112012.0B0D0C2BCB3@smtp.kernel.org/
but i dont see evidence of HPD working. logs please for the next rev.
> + #sound-dai-cells = <0>;
> + sil,i2s-data-lanes = < 0 >;
> + pinctrl-names = "default";
> + pinctrl-0 = <&dpi_pins_default>;
> + bootph-all;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + sii9022_in: endpoint {
> + remote-endpoint = <&dpi_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + sii9022_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> + };
> + };
> + };
> };
>
> &i2c2 {
> @@ -221,6 +265,41 @@ usb_con_hs: endpoint {
> };
>
> &pmx0 {
> + dpi_pins_default: dpi-default-pins {
> + pinctrl-single,pins = <
> + AM62LX_IOPAD(0x00e4, PIN_OUTPUT, 1) /* (L20) GPMC0_CSn0.VOUT0_VSYNC */
> + AM62LX_IOPAD(0x00dc, PIN_OUTPUT, 1) /* (N21) GPMC0_WPn.VOUT0_HSYNC */
> + AM62LX_IOPAD(0x00e8, PIN_OUTPUT, 1) /* (L19) GPMC0_CSn1.VOUT0_PCLK */
> + AM62LX_IOPAD(0x00e0, PIN_OUTPUT, 1) /* (M21) GPMC0_DIR.VOUT0_DE */
> + AM62LX_IOPAD(0x0078, PIN_OUTPUT, 1) /* (L22) GPMC0_AD0.VOUT0_DATA0 */
> + AM62LX_IOPAD(0x007c, PIN_OUTPUT, 1) /* (L23) GPMC0_AD1.VOUT0_DATA1 */
> + AM62LX_IOPAD(0x0080, PIN_OUTPUT, 1) /* (K22) GPMC0_AD2.VOUT0_DATA2 */
> + AM62LX_IOPAD(0x0084, PIN_OUTPUT, 1) /* (J23) GPMC0_AD3.VOUT0_DATA3 */
> + AM62LX_IOPAD(0x0088, PIN_OUTPUT, 1) /* (K23) GPMC0_AD4.VOUT0_DATA4 */
> + AM62LX_IOPAD(0x008c, PIN_OUTPUT, 1) /* (H22) GPMC0_AD5.VOUT0_DATA5 */
> + AM62LX_IOPAD(0x0090, PIN_OUTPUT, 1) /* (H23) GPMC0_AD6.VOUT0_DATA6 */
> + AM62LX_IOPAD(0x0094, PIN_OUTPUT, 1) /* (J22) GPMC0_AD7.VOUT0_DATA7 */
> + AM62LX_IOPAD(0x0098, PIN_OUTPUT, 1) /* (H19) GPMC0_AD8.VOUT0_DATA8 */
> + AM62LX_IOPAD(0x009c, PIN_OUTPUT, 1) /* (H20) GPMC0_AD9.VOUT0_DATA9 */
> + AM62LX_IOPAD(0x00a0, PIN_OUTPUT, 1) /* (H21) GPMC0_AD10.VOUT0_DATA10 */
> + AM62LX_IOPAD(0x00a4, PIN_OUTPUT, 1) /* (H18) GPMC0_AD11.VOUT0_DATA11 */
> + AM62LX_IOPAD(0x00a8, PIN_OUTPUT, 1) /* (G23) GPMC0_AD12.VOUT0_DATA12 */
> + AM62LX_IOPAD(0x00ac, PIN_OUTPUT, 1) /* (G22) GPMC0_AD13.VOUT0_DATA13 */
> + AM62LX_IOPAD(0x00b0, PIN_OUTPUT, 1) /* (F22) GPMC0_AD14.VOUT0_DATA14 */
> + AM62LX_IOPAD(0x00b4, PIN_OUTPUT, 1) /* (F23) GPMC0_AD15.VOUT0_DATA15 */
> + AM62LX_IOPAD(0x00b8, PIN_OUTPUT, 1) /* (L21) GPMC0_CLK.VOUT0_DATA16 */
> + AM62LX_IOPAD(0x00c0, PIN_OUTPUT, 1) /* (N19) GPMC0_ADVn_ALE.VOUT0_DATA17 */
> + AM62LX_IOPAD(0x00c4, PIN_OUTPUT, 1) /* (N20) GPMC0_OEn_REn.VOUT0_DATA18 */
> + AM62LX_IOPAD(0x00c8, PIN_OUTPUT, 1) /* (M19) GPMC0_WEn.VOUT0_DATA19 */
> + AM62LX_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (P23) GPMC0_BE0n_CLE.VOUT0_DATA20 */
> + AM62LX_IOPAD(0x00d0, PIN_OUTPUT, 1) /* (P22) GPMC0_BE1n.VOUT0_DATA21 */
> + AM62LX_IOPAD(0x00d4, PIN_OUTPUT, 1) /* (N23) GPMC0_WAIT0.VOUT0_DATA22 */
> + AM62LX_IOPAD(0x00d8, PIN_OUTPUT, 1) /* (N22) GPMC0_WAIT1.VOUT0_DATA23 */
> + AM62LX_IOPAD(0x00ec, PIN_OUTPUT, 5) /* (M23) GPMC0_CSn2.VOUT0_EXTPCLKIN */
> + >;
> + bootph-all;
> + };
> +
> gpio0_ioexp_intr_pins_default: gpio0-ioexp-intr-default-pins {
> pinctrl-single,pins = <
> AM62LX_IOPAD(0x01b0, PIN_INPUT, 7) /* (B12) SPI0_D1.GPIO0_91 */
> @@ -375,6 +454,22 @@ &usb1 {
> pinctrl-0 = <&usb1_default_pins>;
> };
>
> +&dss {
> + status = "okay";
> + bootph-all;
> +};
> +
> +&dss_ports {
> + /* VP1: DPI Output */
> + port@0 {
> + reg = <0>;
> +
> + dpi_out: endpoint {
> + remote-endpoint = <&sii9022_in>;
> + };
> + };
> +};
> +
Did we miss routing audio? I think it has an option of going to M2.key
> &wkup_uart0 {
> pinctrl-0 = <&wkup_uart0_pins_default>;
> pinctrl-names = "default";
>
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
https://ti.com/opensource
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support
2026-05-29 8:58 ` Kumar, Udit
@ 2026-07-10 11:13 ` Swamil Jain
0 siblings, 0 replies; 5+ messages in thread
From: Swamil Jain @ 2026-07-10 11:13 UTC (permalink / raw)
To: Kumar, Udit, nm, vigneshr, kristo, robh, krzk+dt, conor+dt,
tomi.valkeinen
Cc: r-sharma3, devarsht, praneeth, linux-arm-kernel, devicetree,
linux-kernel
Hi Udit,
On 5/29/26 14:28, Kumar, Udit wrote:
>
>
> On 5/28/2026 7:05 PM, Swamil Jain wrote:
>> From: Devarsh Thakkar <devarsht@ti.com>
>>
>> Add DSS, DSI, DPHY, and HDMI bridge nodes to enable DPI-to-HDMI output
>> on AM62L[1]. The DSS uses parallel DPI interface with pinctrl
>> configuration to drive an external SiI9022 HDMI bridge.
>>
>> DSI and DPHY nodes are added but remain disabled, as the AM62L shares a
>> single video port for DPI and DSI output.
>>
>> DSI functionality can be enabled via overlays when required.
>>
>> [1]: https://www.ti.com/product/AM62L
>>
>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
>> Signed-off-by: Swamil Jain <s-jain1@ti.com>
>> ---
>> Changelog:
>> v1->v2:
>> - Update the commit message to elaborate more about the patch.
>> - Add dpi-pinctrl configuration.
>> - Update the interrupt routing index for HDMI interrupt line
>>
>> Link to v1: https://lore.kernel.org/all/20260513210942.692269-1-s-jain1@ti.com/
>> ---
>> arch/arm64/boot/dts/ti/k3-am62l-main.dtsi | 47 +++++++++++
>> arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 95 +++++++++++++++++++++++
>> 2 files changed, 142 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> index 80615ca1e01a..1d255c9138db 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> +++ b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> @@ -584,4 +584,51 @@ scmi_shmem: sram@0 {
>> bootph-all;
>> };
>> };
>> +
>> + dss: dss@30200000 {
>> + compatible = "ti,am62l-dss";
>> + reg = <0x00 0x30200000 0x00 0x1000>, /* common */
>> + <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
>> + <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
>> + <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
>> + <0x00 0x30201000 0x00 0x1000>; /* common1 */
>> + reg-names = "common", "vidl1", "ovr1", "vp1", "common1";
>> + power-domains = <&scmi_pds 39>;
>> + clocks = <&scmi_clk 162>,
>> + <&scmi_clk 161>;
>> + clock-names = "fck", "vp1";
>> + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
>> + status = "disabled";
>> +
>> + dss_ports: ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + };
>> + };
>> +
>> + dphy_tx0: phy@301c0000 {
>> + compatible = "ti,j721e-dphy";
>> + reg = <0x0 0x301c0000 0x0 0x1000>;
>> + clocks = <&scmi_clk 348>, <&scmi_clk 343>;
>> + clock-names = "psm", "pll_ref";
>> + #phy-cells = <0>;
>> + power-domains = <&scmi_pds 86>;
>> + assigned-clocks = <&scmi_clk 343>;
>> + assigned-clock-parents = <&scmi_clk 341>;
>> + assigned-clock-rates = <25000000>;
>> + status = "disabled";
>> + };
>> +
>> + dsi0: dsi@30500000 {
>> + compatible = "ti,j721e-dsi";
>> + reg = <0x0 0x30500000 0x0 0x100000>, <0x0 0x30270000 0x0 0x100>;
>> + clocks = <&scmi_clk 155>, <&scmi_clk 158>;
>> + clock-names = "dsi_p_clk", "dsi_sys_clk";
>> + power-domains = <&scmi_pds 38>;
>> + interrupt-parent = <&gic500>;
>> + interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
>> + phys = <&dphy_tx0>;
>> + phy-names = "dphy";
>> + status = "disabled";
>
>
> I think you should add port information for dsi as well
> see DSI node in other SOC (J721E, J721S2, J784s4) for reference.
>
Sure, will add ports info. in the next rev.
Regards,
Swamil.
>
>> + };
>> };
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> index a1af4571a815..9b04fa6d2cba 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> +++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> @@ -119,6 +119,18 @@ vcc_1v8: regulator-3 {
>> regulator-always-on;
>> regulator-boot-on;
>> };
>> +
> [..]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support
2026-05-29 14:12 ` Nishanth Menon
@ 2026-07-10 12:04 ` Swamil Jain
0 siblings, 0 replies; 5+ messages in thread
From: Swamil Jain @ 2026-07-10 12:04 UTC (permalink / raw)
To: Nishanth Menon
Cc: vigneshr, kristo, robh, krzk+dt, conor+dt, tomi.valkeinen,
r-sharma3, devarsht, praneeth, linux-arm-kernel, devicetree,
linux-kernel
Hi Nishanth,
On 5/29/26 19:42, Nishanth Menon wrote:
> On 19:05-20260528, Swamil Jain wrote:
>> From: Devarsh Thakkar <devarsht@ti.com>
>>
>> Add DSS, DSI, DPHY, and HDMI bridge nodes to enable DPI-to-HDMI output
>> on AM62L[1]. The DSS uses parallel DPI interface with pinctrl
>> configuration to drive an external SiI9022 HDMI bridge.
>>
>> DSI and DPHY nodes are added but remain disabled, as the AM62L shares a
>> single video port for DPI and DSI output.
>>
>> DSI functionality can be enabled via overlays when required.
>>
>> [1]: https://www.ti.com/product/AM62L
>
> 1. please split this up. please dont mix the SoC with evm stuff.
Sure, will split it.
> 2. I suggest DPI output be a overlay as well
>
Out-of-box HDMI(DPI) is supported, dsi nodes are added here to have base
support to enable DSI panels using overlays.
>>
>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
>> Signed-off-by: Swamil Jain <s-jain1@ti.com>
>> ---
>> Changelog:
>> v1->v2:
>> - Update the commit message to elaborate more about the patch.
>> - Add dpi-pinctrl configuration.
>> - Update the interrupt routing index for HDMI interrupt line
>>
>> Link to v1: https://lore.kernel.org/all/20260513210942.692269-1-s-jain1@ti.com/
>> ---
>> arch/arm64/boot/dts/ti/k3-am62l-main.dtsi | 47 +++++++++++
>> arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 95 +++++++++++++++++++++++
>> 2 files changed, 142 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> index 80615ca1e01a..1d255c9138db 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> +++ b/arch/arm64/boot/dts/ti/k3-am62l-main.dtsi
>> @@ -584,4 +584,51 @@ scmi_shmem: sram@0 {
>> bootph-all;
>> };
>> };
>> +
>> + dss: dss@30200000 {
>> + compatible = "ti,am62l-dss";
>> + reg = <0x00 0x30200000 0x00 0x1000>, /* common */
>> + <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
>> + <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
>> + <0x00 0x3020a000 0x00 0x1000>, /* vp1 */
>> + <0x00 0x30201000 0x00 0x1000>; /* common1 */
>> + reg-names = "common", "vidl1", "ovr1", "vp1", "common1";
>> + power-domains = <&scmi_pds 39>;
>> + clocks = <&scmi_clk 162>,
>> + <&scmi_clk 161>;
>> + clock-names = "fck", "vp1";
>> + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
>> + status = "disabled";
>> +
>> + dss_ports: ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + };
>> + };
>> +
>> + dphy_tx0: phy@301c0000 {
>> + compatible = "ti,j721e-dphy";
>> + reg = <0x0 0x301c0000 0x0 0x1000>;
>> + clocks = <&scmi_clk 348>, <&scmi_clk 343>;
>> + clock-names = "psm", "pll_ref";
>> + #phy-cells = <0>;
>> + power-domains = <&scmi_pds 86>;
>> + assigned-clocks = <&scmi_clk 343>;
>> + assigned-clock-parents = <&scmi_clk 341>;
>> + assigned-clock-rates = <25000000>;
>> + status = "disabled";
>> + };
>> +
>> + dsi0: dsi@30500000 {
>> + compatible = "ti,j721e-dsi";
>> + reg = <0x0 0x30500000 0x0 0x100000>, <0x0 0x30270000 0x0 0x100>;
>> + clocks = <&scmi_clk 155>, <&scmi_clk 158>;
>> + clock-names = "dsi_p_clk", "dsi_sys_clk";
>> + power-domains = <&scmi_pds 38>;
>> + interrupt-parent = <&gic500>;
>> + interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
>> + phys = <&dphy_tx0>;
>> + phy-names = "dphy";
>> + status = "disabled";
>> + };
>> };
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> index a1af4571a815..9b04fa6d2cba 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> +++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
>> @@ -119,6 +119,18 @@ vcc_1v8: regulator-3 {
>> regulator-always-on;
>> regulator-boot-on;
>> };
>> +
>> + hdmi0: connector-hdmi {
>> + compatible = "hdmi-connector";
>> + label = "hdmi";
>> + type = "a";
>> +
>> + port {
>> + hdmi_connector_in: endpoint {
>> + remote-endpoint = <&sii9022_out>;
>> + };
>> + };
>> + };
>> };
>>
>> &gpio0 {
>> @@ -192,6 +204,38 @@ exp2: gpio@23 {
>> bootph-all;
>> };
>>
>> + sii9022: bridge-hdmi@3b {
>> + compatible = "sil,sii9022";
>> + reg = <0x3b>;
>> + interrupt-parent = <&exp1>;
>> + interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
>
> I see you addressed sashiko comments
> https://lore.kernel.org/all/20260514112012.0B0D0C2BCB3@smtp.kernel.org/
>
> but i dont see evidence of HPD working. logs please for the next rev.
>
Sure, will add logs in the next rev.
>> + #sound-dai-cells = <0>;
>> + sil,i2s-data-lanes = < 0 >;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&dpi_pins_default>;
>> + bootph-all;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> +
>> + sii9022_in: endpoint {
>> + remote-endpoint = <&dpi_out>;
>> + };
>> + };
>> +
>> + port@1 {
>> + reg = <1>;
>> +
>> + sii9022_out: endpoint {
>> + remote-endpoint = <&hdmi_connector_in>;
>> + };
>> + };
>> + };
>> + };
>> };
>>
>> &i2c2 {
>> @@ -221,6 +265,41 @@ usb_con_hs: endpoint {
>> };
>>
>> &pmx0 {
>> + dpi_pins_default: dpi-default-pins {
>> + pinctrl-single,pins = <
>> + AM62LX_IOPAD(0x00e4, PIN_OUTPUT, 1) /* (L20) GPMC0_CSn0.VOUT0_VSYNC */
>> + AM62LX_IOPAD(0x00dc, PIN_OUTPUT, 1) /* (N21) GPMC0_WPn.VOUT0_HSYNC */
>> + AM62LX_IOPAD(0x00e8, PIN_OUTPUT, 1) /* (L19) GPMC0_CSn1.VOUT0_PCLK */
>> + AM62LX_IOPAD(0x00e0, PIN_OUTPUT, 1) /* (M21) GPMC0_DIR.VOUT0_DE */
>> + AM62LX_IOPAD(0x0078, PIN_OUTPUT, 1) /* (L22) GPMC0_AD0.VOUT0_DATA0 */
>> + AM62LX_IOPAD(0x007c, PIN_OUTPUT, 1) /* (L23) GPMC0_AD1.VOUT0_DATA1 */
>> + AM62LX_IOPAD(0x0080, PIN_OUTPUT, 1) /* (K22) GPMC0_AD2.VOUT0_DATA2 */
>> + AM62LX_IOPAD(0x0084, PIN_OUTPUT, 1) /* (J23) GPMC0_AD3.VOUT0_DATA3 */
>> + AM62LX_IOPAD(0x0088, PIN_OUTPUT, 1) /* (K23) GPMC0_AD4.VOUT0_DATA4 */
>> + AM62LX_IOPAD(0x008c, PIN_OUTPUT, 1) /* (H22) GPMC0_AD5.VOUT0_DATA5 */
>> + AM62LX_IOPAD(0x0090, PIN_OUTPUT, 1) /* (H23) GPMC0_AD6.VOUT0_DATA6 */
>> + AM62LX_IOPAD(0x0094, PIN_OUTPUT, 1) /* (J22) GPMC0_AD7.VOUT0_DATA7 */
>> + AM62LX_IOPAD(0x0098, PIN_OUTPUT, 1) /* (H19) GPMC0_AD8.VOUT0_DATA8 */
>> + AM62LX_IOPAD(0x009c, PIN_OUTPUT, 1) /* (H20) GPMC0_AD9.VOUT0_DATA9 */
>> + AM62LX_IOPAD(0x00a0, PIN_OUTPUT, 1) /* (H21) GPMC0_AD10.VOUT0_DATA10 */
>> + AM62LX_IOPAD(0x00a4, PIN_OUTPUT, 1) /* (H18) GPMC0_AD11.VOUT0_DATA11 */
>> + AM62LX_IOPAD(0x00a8, PIN_OUTPUT, 1) /* (G23) GPMC0_AD12.VOUT0_DATA12 */
>> + AM62LX_IOPAD(0x00ac, PIN_OUTPUT, 1) /* (G22) GPMC0_AD13.VOUT0_DATA13 */
>> + AM62LX_IOPAD(0x00b0, PIN_OUTPUT, 1) /* (F22) GPMC0_AD14.VOUT0_DATA14 */
>> + AM62LX_IOPAD(0x00b4, PIN_OUTPUT, 1) /* (F23) GPMC0_AD15.VOUT0_DATA15 */
>> + AM62LX_IOPAD(0x00b8, PIN_OUTPUT, 1) /* (L21) GPMC0_CLK.VOUT0_DATA16 */
>> + AM62LX_IOPAD(0x00c0, PIN_OUTPUT, 1) /* (N19) GPMC0_ADVn_ALE.VOUT0_DATA17 */
>> + AM62LX_IOPAD(0x00c4, PIN_OUTPUT, 1) /* (N20) GPMC0_OEn_REn.VOUT0_DATA18 */
>> + AM62LX_IOPAD(0x00c8, PIN_OUTPUT, 1) /* (M19) GPMC0_WEn.VOUT0_DATA19 */
>> + AM62LX_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (P23) GPMC0_BE0n_CLE.VOUT0_DATA20 */
>> + AM62LX_IOPAD(0x00d0, PIN_OUTPUT, 1) /* (P22) GPMC0_BE1n.VOUT0_DATA21 */
>> + AM62LX_IOPAD(0x00d4, PIN_OUTPUT, 1) /* (N23) GPMC0_WAIT0.VOUT0_DATA22 */
>> + AM62LX_IOPAD(0x00d8, PIN_OUTPUT, 1) /* (N22) GPMC0_WAIT1.VOUT0_DATA23 */
>> + AM62LX_IOPAD(0x00ec, PIN_OUTPUT, 5) /* (M23) GPMC0_CSn2.VOUT0_EXTPCLKIN */
>> + >;
>> + bootph-all;
>> + };
>> +
>> gpio0_ioexp_intr_pins_default: gpio0-ioexp-intr-default-pins {
>> pinctrl-single,pins = <
>> AM62LX_IOPAD(0x01b0, PIN_INPUT, 7) /* (B12) SPI0_D1.GPIO0_91 */
>> @@ -375,6 +454,22 @@ &usb1 {
>> pinctrl-0 = <&usb1_default_pins>;
>> };
>>
>> +&dss {
>> + status = "okay";
>> + bootph-all;
>> +};
>> +
>> +&dss_ports {
>> + /* VP1: DPI Output */
>> + port@0 {
>> + reg = <0>;
>> +
>> + dpi_out: endpoint {
>> + remote-endpoint = <&sii9022_in>;
>> + };
>> + };
>> +};
>> +
>
> Did we miss routing audio? I think it has an option of going to M2.key
dss is related to pixel streaming, HDMI audio is taken care by the
hdmi-bridge itself, I am not aware of M2.key audio routing.
Regards,
Swamil.
>
>> &wkup_uart0 {
>> pinctrl-0 = <&wkup_uart0_pins_default>;
>> pinctrl-names = "default";
>>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-10 12:04 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28 13:35 [PATCH v2] arm64: dts: ti: k3-am62l: Add HDMI & DSI support Swamil Jain
2026-05-29 8:58 ` Kumar, Udit
2026-07-10 11:13 ` Swamil Jain
2026-05-29 14:12 ` Nishanth Menon
2026-07-10 12:04 ` Swamil Jain
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox