* [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes
@ 2026-05-22 13:15 Neil Armstrong
2026-05-22 13:47 ` sashiko-bot
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Neil Armstrong @ 2026-05-22 13:15 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Geert Uytterhoeven, Magnus Damm
Cc: linux-arm-msm, devicetree, linux-kernel, linux-renesas-soc,
KancyJoe, Neil Armstrong
From: KancyJoe <kancy2333@outlook.com>
Add nodes for the dual DSI panel, the SGM3804 regulator, the
SY7758 backlight controller, the touch controller, and enable
the GPU to enable full display support.
Signed-off-by: KancyJoe <kancy2333@outlook.com>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Depends on follwing bindings, all reviewed:
- https://lore.kernel.org/all/20260522-topic-sm8650-ayaneo-pocket-s2-r63419-v6-1-16edddda9951@linaro.org/
- https://lore.kernel.org/all/20260521-topic-sm8650-ayaneo-pocket-s2-sy7758-v4-1-73c732615e4a@linaro.org/
- https://lore.kernel.org/all/20260522-topic-sm8650-ayaneo-pocket-s2-sgm3804-v5-1-bd6b1c300ecc@linaro.org/
---
Changes in v2:
- Update for bindings changes
- Remove empty line
- Link to v1: https://patch.msgid.link/20260428-topic-sm8650-ayaneo-pocket-s2-display-dt-v1-1-ff132c00d076@linaro.org
---
.../boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts | 241 +++++++++++++++++++++
1 file changed, 241 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
index 0dc994f4e48d..af890e76813b 100644
--- a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
+++ b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
@@ -220,6 +220,22 @@ upd720201_vdd33_reg: upd720201-vdd33-regulator {
pinctrl-names = "default";
};
+ sy7758_vdd33_reg: sy7758-vdd33-regulator {
+ compatible = "regulator-fixed";
+
+ regulator-name = "sy7758_vdd33";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpios = <&tlmm 163 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ vin-supply = <&vph_pwr>;
+
+ pinctrl-0 = <&sy7758_vdd33>;
+ pinctrl-names = "default";
+ };
+
sound {
compatible = "qcom,sm8650-sndcard", "qcom,sm8450-sndcard";
model = "SM8650-APS2";
@@ -986,6 +1002,14 @@ gpu7_active: trip-active {
};
};
+&gpu {
+ status = "okay";
+
+ zap-shader {
+ firmware-name = "qcom/sm8650/ayaneo/ps2/gen70900_zap.mbn";
+ };
+};
+
&i2c3 {
clock-frequency = <100000>;
@@ -1016,6 +1040,30 @@ wcd_usbss_sbu_mux: endpoint {
};
};
+&i2c4 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ touchscreen@5d {
+ compatible = "goodix,gt911";
+ reg = <0x5d>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <162 IRQ_TYPE_EDGE_FALLING>;
+
+ reset-gpios = <&tlmm 161 GPIO_ACTIVE_HIGH>;
+ VDDIO-supply = <&vreg_l14b_3p2>;
+ AVDD28-supply = <&vreg_l14b_3p2>;
+
+ touchscreen-size-x = <1440>;
+ touchscreen-size-y = <2560>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ts_reset_default>, <&ts_irq_default>;
+ };
+};
+
&i2c6 {
clock-frequency = <100000>;
@@ -1053,6 +1101,49 @@ redriver_ss_in: endpoint {
};
};
+&i2c9 {
+ status = "okay";
+
+ /* Screen power */
+ regulator@3e {
+ compatible = "sgmicro,sgm3804";
+ reg = <0x3e>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&sgm3804_default>;
+
+ vin-supply = <&vph_pwr>;
+
+ sgm3804_pos: pos {
+ regulator-name = "panel-avdd-pos";
+ regulator-min-microvolt = <5200000>;
+ regulator-max-microvolt = <5200000>;
+ regulator-active-discharge = <1>;
+ enable-gpios = <&tlmm 59 GPIO_ACTIVE_HIGH>;
+ };
+
+ sgm3804_neg: neg {
+ regulator-name = "panel-avdd-neg";
+ regulator-min-microvolt = <5200000>;
+ regulator-max-microvolt = <5200000>;
+ regulator-active-discharge = <1>;
+ enable-gpios = <&tlmm 58 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ /* Backlight */
+ sy7758_backlight: sy7758@2e {
+ compatible = "silergy,sy7758";
+ reg = <0x2e>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&sy7758_default>;
+
+ vddio-supply = <&sy7758_vdd33_reg>;
+ enable-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+ };
+};
+
&iris {
status = "okay";
};
@@ -1065,6 +1156,93 @@ &mdss {
status = "okay";
};
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3i_1p2>;
+
+ qcom,master-dsi;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+
+ status = "okay";
+
+ panel@0 {
+ status = "okay";
+ compatible = "ayaneo,wt0630-2k", "renesas,r63419";
+ reg = <0>;
+
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&disp0_reset_n_active>;
+ pinctrl-1 = <&disp0_reset_n_suspend>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ vdd-supply = <&vreg_l11b_1p2>;
+ vsp-supply = <&sgm3804_pos>;
+ vsn-supply = <&sgm3804_neg>;
+ vci-supply = <&vreg_l13b_3p0>;
+
+ backlight = <&sy7758_backlight>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+
+ rotation = <90>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ panel0_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1{
+ reg = <1>;
+ panel0_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel0_in_0>;
+
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1i_0p88>;
+
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3i_1p2>;
+
+ assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+ <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
+
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel0_in_1>;
+
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1i_0p88>;
+
+ status = "okay";
+};
+
&mdss_dp0 {
status = "okay";
};
@@ -1390,6 +1568,20 @@ sw-ctrl-pins {
};
};
+ disp0_reset_n_active: disp0-reset-n-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ disp0_reset_n_suspend: disp0-reset-n-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
fan_pwr_pins: fan-pwr-state {
pins = "gpio125";
function = "gpio";
@@ -1411,6 +1603,20 @@ fan_int: fan-int-state {
bias-pull-up;
};
+ mdp_vsync_active: mdp-vsync-active-state {
+ pins = "gpio86";
+ function = "mdp_vsync";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ mdp_vsync_suspend: mdp-vsync-suspend-state {
+ pins = "gpio86";
+ function = "mdp_vsync";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
upd720201_avdd33: upd720201-avdd33-state {
pins = "gpio123";
function = "gpio";
@@ -1440,6 +1646,13 @@ gamepad_pwr_en: gamepad-pwr-en-active-state {
output-high;
};
+ sgm3804_default: sgm3804-default-state {
+ pins = "gpio58", "gpio59";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
spkr_23_sd_n_active: spkr-23-sd-n-active-state {
pins = "gpio77";
function = "gpio";
@@ -1454,6 +1667,34 @@ spkr_01_sd_n_active: spkr-01-sd-n-active-state {
bias-disable;
};
+ sy7758_default: sy7758-default-state {
+ pins = "gpio164";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sy7758_vdd33: sy7758-vdd33-state {
+ pins = "gpio163";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ts_irq_default: ts-irq-active-state {
+ pins = "gpio162";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ts_reset_default: ts-reset-active-state {
+ pins = "gpio161";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
wcd_default: wcd-reset-n-active-state {
pins = "gpio107";
function = "gpio";
---
base-commit: 5e9b7d093f3f77cb0af4409559e3d139babfb443
change-id: 20260428-topic-sm8650-ayaneo-pocket-s2-display-dt-539bb79eb709
prerequisite-change-id: 20260428-topic-sm8650-ayaneo-pocket-s2-sgm3804-8764fbb72eb7:v5
prerequisite-patch-id: 901a0948e1afbb03ff78a063d4f66c17665588ef
prerequisite-patch-id: 5ca959a92d05c86ae7a77400d5c4c9bb8bb214f4
prerequisite-change-id: 20260428-topic-sm8650-ayaneo-pocket-s2-sy7758-3081ee7f1e25:v4
prerequisite-patch-id: eba24fd4013ddf353136a6b77cba84678e60edce
prerequisite-patch-id: 63b9ea68bb624685fae324bd8db9545f73658e23
prerequisite-change-id: 20260428-topic-sm8650-ayaneo-pocket-s2-r63419-e72467e2db0f:v6
prerequisite-patch-id: 53130195c1df5886a953f3eb1ffea6e5b32257ec
prerequisite-patch-id: 268452dda581581e0126cfd331cf99537544fe65
Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes
2026-05-22 13:15 [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes Neil Armstrong
@ 2026-05-22 13:47 ` sashiko-bot
2026-06-17 12:36 ` Konrad Dybcio
2026-06-17 12:37 ` Konrad Dybcio
2 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-05-22 13:47 UTC (permalink / raw)
To: Neil Armstrong; +Cc: conor+dt, devicetree, robh, wsa+renesas
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] The Goodix GT911 touchscreen node specifies `reset-gpios` but omits the required `irq-gpios` property, silently disabling the driver's hardware reset and power management logic.
- [High] The device tree relies on hardware components (SGM3804 regulator and SY7758 backlight) that currently have no supporting driver or device tree binding in the kernel.
- [Medium] The `mdp_vsync_active` and `mdp_vsync_suspend` pinctrl states are defined but never referenced in the display or MDSS nodes, preventing the hardware VSYNC signal from being routed.
- [Low] The backlight node is named `sy7758@2e` instead of a generic name like `backlight@2e`.
--
commit a7774645b5e43100828950906f34539f8e7aadef
Author: KancyJoe <kancy2333@outlook.com>
arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes
This commit adds device tree nodes for the dual DSI panel, the SGM3804
regulator, and the SY7758 backlight controller. It also enables the GPU
and the touch controller to provide full display support.
> diff --git a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> index 0dc994f4e48d9..af890e76813b7 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
[ ... ]
> @@ -1016,6 +1040,30 @@ wcd_usbss_sbu_mux: endpoint {
> };
> };
>
> +&i2c4 {
> + clock-frequency = <400000>;
> +
> + status = "okay";
> +
> + touchscreen@5d {
> + compatible = "goodix,gt911";
> + reg = <0x5d>;
> +
> + interrupt-parent = <&tlmm>;
> + interrupts = <162 IRQ_TYPE_EDGE_FALLING>;
> +
> + reset-gpios = <&tlmm 161 GPIO_ACTIVE_HIGH>;
[Severity: High]
Is the irq-gpios property missing from this node?
The Goodix driver requires retrieving the interrupt GPIO via the irq-gpios
property to execute its hardware reset sequence, as the INT pin state
determines the I2C address.
When irq-gpios is omitted, the driver's irq_pin_access_method falls back
to IRQ_PIN_ACCESS_NONE. This completely bypasses the goodix_reset()
function during probe.
Additionally, goodix_suspend() and goodix_resume() will return early without
issuing the deep sleep command, which can cause power drain during system
suspend.
> + VDDIO-supply = <&vreg_l14b_3p2>;
> + AVDD28-supply = <&vreg_l14b_3p2>;
> +
> + touchscreen-size-x = <1440>;
> + touchscreen-size-y = <2560>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&ts_reset_default>, <&ts_irq_default>;
> + };
> +};
> +
[ ... ]
> @@ -1053,6 +1101,49 @@ redriver_ss_in: endpoint {
> };
> };
>
> +&i2c9 {
> + status = "okay";
> +
> + /* Screen power */
> + regulator@3e {
> + compatible = "sgmicro,sgm3804";
[Severity: High]
Do these components currently have supporting drivers and device tree bindings
upstream?
Because there are no existing drivers for sgmicro,sgm3804 or silergy,sy7758
in the kernel, they will not probe.
When the panel driver attempts to acquire its essential supplies (vsp-supply,
vsn-supply, and backlight), it will hit a permanent -EPROBE_DEFER, preventing
the entire display subsystem from initializing.
> + reg = <0x3e>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&sgm3804_default>;
> +
> + vin-supply = <&vph_pwr>;
> +
[ ... ]
> + /* Backlight */
> + sy7758_backlight: sy7758@2e {
[Severity: Low]
Could this node be named using a generic class like backlight@2e?
The Devicetree Specification recommends using generic node names that reflect
the function of the device rather than the specific model or IC name.
Non-generic names can trigger validation errors during dt_binding_check.
> + compatible = "silergy,sy7758";
> + reg = <0x2e>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&sy7758_default>;
> +
> + vddio-supply = <&sy7758_vdd33_reg>;
> + enable-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
> + };
> +};
[ ... ]
> @@ -1411,6 +1603,20 @@ fan_int: fan-int-state {
> bias-pull-up;
> };
>
> + mdp_vsync_active: mdp-vsync-active-state {
> + pins = "gpio86";
> + function = "mdp_vsync";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + mdp_vsync_suspend: mdp-vsync-suspend-state {
> + pins = "gpio86";
> + function = "mdp_vsync";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
[Severity: Medium]
Are these mdp_vsync pinctrl states supposed to be referenced in the panel or
MDSS nodes?
They appear to be defined here but are never assigned to the pinctrl-0 or
pinctrl-1 properties of the display components. Command-mode panels typically
rely on this Tearing Effect (TE) signal to synchronize frame updates.
Without routing the signal, the display controller may fall back to software
synchronization or timeout waiting for TE interrupts, which can result in
frame drops or tearing.
> upd720201_avdd33: upd720201-avdd33-state {
> pins = "gpio123";
> function = "gpio";
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260522-topic-sm8650-ayaneo-pocket-s2-display-dt-v2-1-cdd4b70e5a16@linaro.org?part=1
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes
2026-05-22 13:15 [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes Neil Armstrong
2026-05-22 13:47 ` sashiko-bot
@ 2026-06-17 12:36 ` Konrad Dybcio
2026-06-17 12:37 ` Konrad Dybcio
2 siblings, 0 replies; 4+ messages in thread
From: Konrad Dybcio @ 2026-06-17 12:36 UTC (permalink / raw)
To: Neil Armstrong, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm
Cc: linux-arm-msm, devicetree, linux-kernel, linux-renesas-soc,
KancyJoe
On 5/22/26 3:15 PM, Neil Armstrong wrote:
> From: KancyJoe <kancy2333@outlook.com>
>
> Add nodes for the dual DSI panel, the SGM3804 regulator, the
> SY7758 backlight controller, the touch controller, and enable
> the GPU to enable full display support.
>
> Signed-off-by: KancyJoe <kancy2333@outlook.com>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
[...]
> + /* Backlight */
> + sy7758_backlight: sy7758@2e {
If it's the only one, 'backlight:' is good for the label. The node name
must definitely be backlight@, as those are supposed to be generic
> + compatible = "silergy,sy7758";
> + reg = <0x2e>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&sy7758_default>;
Please use this order, everywhere:
property-n
property-names
otherwise:
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes
2026-05-22 13:15 [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes Neil Armstrong
2026-05-22 13:47 ` sashiko-bot
2026-06-17 12:36 ` Konrad Dybcio
@ 2026-06-17 12:37 ` Konrad Dybcio
2 siblings, 0 replies; 4+ messages in thread
From: Konrad Dybcio @ 2026-06-17 12:37 UTC (permalink / raw)
To: Neil Armstrong, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm
Cc: linux-arm-msm, devicetree, linux-kernel, linux-renesas-soc,
KancyJoe
On 5/22/26 3:15 PM, Neil Armstrong wrote:
> From: KancyJoe <kancy2333@outlook.com>
>
> Add nodes for the dual DSI panel, the SGM3804 regulator, the
> SY7758 backlight controller, the touch controller, and enable
> the GPU to enable full display support.
>
> Signed-off-by: KancyJoe <kancy2333@outlook.com>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
> Depends on follwing bindings, all reviewed:
> - https://lore.kernel.org/all/20260522-topic-sm8650-ayaneo-pocket-s2-r63419-v6-1-16edddda9951@linaro.org/
> - https://lore.kernel.org/all/20260521-topic-sm8650-ayaneo-pocket-s2-sy7758-v4-1-73c732615e4a@linaro.org/
> - https://lore.kernel.org/all/20260522-topic-sm8650-ayaneo-pocket-s2-sgm3804-v5-1-bd6b1c300ecc@linaro.org/
> ---
> Changes in v2:
> - Update for bindings changes
> - Remove empty line
> - Link to v1: https://patch.msgid.link/20260428-topic-sm8650-ayaneo-pocket-s2-display-dt-v1-1-ff132c00d076@linaro.org
> ---
> .../boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts | 241 +++++++++++++++++++++
> 1 file changed, 241 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> index 0dc994f4e48d..af890e76813b 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8650-ayaneo-pocket-s2.dts
> @@ -220,6 +220,22 @@ upd720201_vdd33_reg: upd720201-vdd33-regulator {
> pinctrl-names = "default";
> };
>
> + sy7758_vdd33_reg: sy7758-vdd33-regulator {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "sy7758_vdd33";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpios = <&tlmm 163 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + vin-supply = <&vph_pwr>;
> +
> + pinctrl-0 = <&sy7758_vdd33>;
> + pinctrl-names = "default";
regulator-boot-on would be my guess, probably also on the other
disp regulators
Konrad
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-06-17 12:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-22 13:15 [PATCH v2] arm64: dts: qcom: sm8650-ayaneo-pocket-s2: add display nodes Neil Armstrong
2026-05-22 13:47 ` sashiko-bot
2026-06-17 12:36 ` Konrad Dybcio
2026-06-17 12:37 ` Konrad Dybcio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox