On 5/21/26 22:24, Dmitry Baryshkov wrote:
On Thu, May 21, 2026 at 10:46:06PM +0800, Jun Nie wrote:
Add support for the dual-panel system found in the virtual reality device.
This system consists of two physical 2160x2160 panels, each connected via
a MIPI DSI interface. The backlight is managed through DSI link.
Signed-off-by: Jun Nie <[email protected]>
---
.../bindings/display/panel/synaptics,r63455.yaml | 125 +++++++++++++++++++++
1 file changed, 125 insertions(+)
diff --git
a/Documentation/devicetree/bindings/display/panel/synaptics,r63455.yaml
b/Documentation/devicetree/bindings/display/panel/synaptics,r63455.yaml
new file mode 100644
index 0000000000000..a94b355ed9557
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/synaptics,r63455.yaml
@@ -0,0 +1,125 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/synaptics,r63455.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synaptics R63455 based dual 2160x2160 MIPI-DSI Panel
+
+maintainers:
+ - Jun Nie <[email protected]>
+
+description:
+ Synaptics R63455 is a Virtual Reality Display Driver and VR Bridge, used in
+ pair in Headset devices. The Virtual Reality Display complex is composed of
+ two strictly identical display panels, each driven by its own DSI interface
+ but forms a single virtual display for the human eye perception and thus
+ requires a strict synchronization of the two display panel content update.
+
+allOf:
+ - $ref: panel-common.yaml#
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - sharp,ls026b3sa06
+ - boe,vs026c4m-n52-6000
+ - const: synaptics,r63455
+
+ reset-gpios:
+ maxItems: 2
+ description: 2 reset pins for 2 physical panels
+
+ left-pos-supply:
+ description: Positive 5.7V supply for left panel
So, is the R63455 driving both panels or are there two panels, each
having R63455 controller? What if somebody gets a single Sharp panel and
wants to use it in their device? How will it match these bindings?
It's highly improbable, those are very specialized panels that are designed
for xr usage in pair. Yes a hobbyist could try to use a single panel
but it's only usable when placed close to an eye, and barely useless if you
don't have both eyes.
Let's skip highly improbable use-cases and focus on the main use case of the
hardware device.
+
+ right-pos-supply:
+ description: Positive 5.7V supply for right panel
+
+ left-neg-supply:
+ description: Negative 5.7V supply for left panel
+
+ right-neg-supply:
+ description: Negative 5.7V supply for right panel
+
+ left-backlight-supply:
+ description: Backlight 21V supply for left panel
+
+ right-backlight-supply:
+ description: Backlight 21V supply for right panel
+
+ vdda-supply:
+ description: core 1.8V supply for panels
+
+ ports: $ref: /schemas/graph.yaml#/properties/ports
+
+required:
+ - compatible
+ - reset-gpios
+ - left-pos-supply
+ - left-neg-supply
+ - right-pos-supply
+ - right-neg-supply
+ - left-backlight-supply
+ - right-backlight-supply
+ - vdda-supply
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ &mdss_dsi0 {
Please drop the MDSS specifics, there should be one (or two) DSI busses,
driving your panels. The rests are details which are not necessary for
the example.
+ vdda-supply = <&vreg_l3i_1p2>;
+ status = "okay";
+
+ qcom,dual-dsi-mode;
+ qcom,master-dsi;
+
+ panel: panel@0 {
+ compatible = "sharp,ls026b3sa06", "synaptics,r63455";
+ reg = <0>;
+
+ reset-gpios = <&pm8550_gpios 3 GPIO_ACTIVE_HIGH>,
+ <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+
+ left-pos-supply = <&vpos_left>;
+ left-neg-supply = <&vneg_left>;
+ right-pos-supply = <&vpos_right>;
+ right-neg-supply = <&vneg_right>;
+ left-backlight-supply = <&backlight_left>;
+ right-backlight-supply = <&backlight_right>;
+
+ vdda-supply = <&vreg_l12b_1p8>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ panel0_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
What is mdss_dsi0_out?
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ panel1_in: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+
+ &mdss_dsi0_out {
+ remote-endpoint = <&panel0_in>;
+ data-lanes = <0 1 2>;
+ };
+
+ &mdss_dsi1_out {
+ remote-endpoint = <&panel1_in>;
+ data-lanes = <0 1 2>;
+ };
+...
--
2.43.0