* [PATCH 0/3] Add support for the Samsung S6E8FCO display panel
@ 2026-02-23 14:24 Yedaya Katsman
2026-02-23 14:24 ` [PATCH 1/3] dt-bindings: display: panel: Add Samsung S6E8FCO Yedaya Katsman
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-23 14:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio
Cc: ~postmarketos/upstreaming, dri-devel, devicetree, linux-kernel,
linux-arm-msm, Yedaya Katsman
This adds a driver to support the Samsung S6E8FCO display panel found in Xiaomi
Mi A3 (xiaomi-laurel). The driver is generated using
linux-mdss-dsi-panel-driver-generator[0].
The mdss reset dependency makes the screen work more reliably.
[0]: https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator
Original tree with patches: https://gitlab.postmarketos.org/SzczurekYT/linux/-/tree/laurel
Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
---
Yedaya Katsman (3):
dt-bindings: display: panel: Add Samsung S6E8FCO
drivers: gpu: drm: panel: Add Samsung S6E8FCO
arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
.../bindings/display/panel/samsung,s6e8fco.yaml | 64 +++++
MAINTAINERS | 6 +
.../boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 94 +++++++
drivers/gpu/drm/panel/Kconfig | 12 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-samsung-s6e8fco.c | 293 +++++++++++++++++++++
6 files changed, 470 insertions(+)
---
base-commit: d4906ae14a5f136ceb671bb14cedbf13fa560da6
change-id: 20260218-panel-patches-696df7e0d810
prerequisite-message-id: <20260216233600.13098-2-val@packett.cool>
prerequisite-patch-id: 3fba84f11111406e0d530013fd45ad0eb389786b
prerequisite-patch-id: 81440b7f28f9101d3dc5d4bad6dc86e39b81a026
prerequisite-patch-id: 53469d8c9810169d058f1bfd27ac8399038aae74
prerequisite-patch-id: 80809bee71eb6434f6699d5e5f8c7f9d4bcd1ca7
prerequisite-patch-id: 0269e01c9c54a37bb92983635cd516342189aee5
prerequisite-patch-id: e2bbf7c452d4da6d71b1a5194e0d7ce46584e113
Best regards,
--
Yedaya Katsman <yedaya.ka@gmail.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] dt-bindings: display: panel: Add Samsung S6E8FCO
2026-02-23 14:24 [PATCH 0/3] Add support for the Samsung S6E8FCO display panel Yedaya Katsman
@ 2026-02-23 14:24 ` Yedaya Katsman
2026-02-23 14:24 ` [PATCH 2/3] drivers: gpu: drm: " Yedaya Katsman
2026-02-23 14:24 ` [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel Yedaya Katsman
2 siblings, 0 replies; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-23 14:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio
Cc: ~postmarketos/upstreaming, dri-devel, devicetree, linux-kernel,
linux-arm-msm, Yedaya Katsman
Document Samsung S6E8FCO 6.09" 720x1560 panel
found in the Xiaomi Mi A3 smartphone.
Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
---
.../bindings/display/panel/samsung,s6e8fco.yaml | 64 ++++++++++++++++++++++
MAINTAINERS | 5 ++
2 files changed, 69 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml b/Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8c042ce5f65bf317df48e109d88ebdc87ef5d5ed
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/samsung,s6e8fco.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung S6E8FCO AMOLED Panel
+
+maintainers:
+ - Yedaya Katsman <yedaya.ka@gmail.com>
+
+allOf:
+ - $ref: panel-common.yaml#
+
+properties:
+ compatible:
+ const: samsung,s6e8fco
+
+ reg:
+ maxItems: 1
+
+ vddio-supply: true
+ ldo-supply: true
+ iovcc-supply: true
+ reset-gpios: true
+ port: true
+
+required:
+ - compatible
+ - reg
+ - vddio-supply
+ - ldo-supply
+ - iovcc-supply
+ - port
+ - reset-gpios
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ dsi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ panel@0 {
+ compatible = "samsung,s6e8fco";
+ reg = <0>;
+
+ vddio-supply = <&vreg_l9a>;
+ ldo-supply = <&panel_ldo_supply>;
+ iovcc-supply = <&panel_iovcc_supply>;
+
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_LOW>;
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+ };
+ };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index e087673237636268346979ddc270f8cf0905c722..545d4cf68b9ac27765c7981e668e32cfecf3366b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8183,6 +8183,11 @@ S: Maintained
F: Documentation/devicetree/bindings/display/panel/samsung,s6e3ha8.yaml
F: drivers/gpu/drm/panel/panel-samsung-s6e3ha8.c
+DRM DRIVER FOR SAMSUNG S6E8FCO PANELS
+M: Yedaya Katsman <yedaya.ka@gmail.com>
+S: Maintained
+F: Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
+
DRM DRIVER FOR SAMSUNG SOFEF00 DDIC
M: David Heidelberg <david@ixit.cz>
M: Casey Connolly <casey.connolly@linaro.org>
--
2.53.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] drivers: gpu: drm: panel: Add Samsung S6E8FCO
2026-02-23 14:24 [PATCH 0/3] Add support for the Samsung S6E8FCO display panel Yedaya Katsman
2026-02-23 14:24 ` [PATCH 1/3] dt-bindings: display: panel: Add Samsung S6E8FCO Yedaya Katsman
@ 2026-02-23 14:24 ` Yedaya Katsman
2026-02-23 19:37 ` Dmitry Baryshkov
2026-02-23 14:24 ` [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel Yedaya Katsman
2 siblings, 1 reply; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-23 14:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio
Cc: ~postmarketos/upstreaming, dri-devel, devicetree, linux-kernel,
linux-arm-msm, Yedaya Katsman
Add driver for Samsung S6E8FCO DSI video mode panel, used in
Xiaomi Mi A3 mobile phone.
Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
---
MAINTAINERS | 1 +
drivers/gpu/drm/panel/Kconfig | 12 ++
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-samsung-s6e8fco.c | 293 ++++++++++++++++++++++++++
4 files changed, 307 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 545d4cf68b9ac27765c7981e668e32cfecf3366b..238b5332eaf0e0cfb9834084e24671ccaee79939 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8187,6 +8187,7 @@ DRM DRIVER FOR SAMSUNG S6E8FCO PANELS
M: Yedaya Katsman <yedaya.ka@gmail.com>
S: Maintained
F: Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
+F: drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
DRM DRIVER FOR SAMSUNG SOFEF00 DDIC
M: David Heidelberg <david@ixit.cz>
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index 7a83804fedca1b688ce6fbe4295ec9009007e693..734640bb3f73c83e9273573aeb720ea1ba20862f 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -893,6 +893,18 @@ config DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01
~5.6 inch AMOLED display, and the controller is driven by the MIPI
DSI protocol with 4 lanes.
+config DRM_PANEL_SAMSUNG_S6E8FCO
+ tristate "Samsung S6E8FCO DSI video mode panel"
+ depends on OF
+ depends on BACKLIGHT_CLASS_DEVICE
+ select DRM_MIPI_DSI
+ select VIDEOMODE_HELPERS
+ help
+ Say Y or M here if you want to enable support for the Samsung video
+ mode panel S6E8FCO. The panel has a 6.09 inch AMOLED display, with
+ a resolution of 720x1560.
+ Found in the Xiaomi Mi A3 smartphone (xiaomi-laurel).
+
config DRM_PANEL_SAMSUNG_SOFEF00
tristate "Samsung SOFEF00 DSI panel controller"
depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index b9562a6fdcb38bfd0dfee9e8c11e16149ada4386..54eca60e5b57328ea94ed7880f4dead981f87fc1 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -91,6 +91,7 @@ obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS427AP24) += panel-samsung-s6e88a0-ams4
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01) += panel-samsung-s6e88a0-ams452ef01.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0) += panel-samsung-s6e8aa0.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01) += panel-samsung-s6e8aa5x01-ams561ra01.o
+obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8FCO) += panel-samsung-s6e8fco.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_SOFEF00) += panel-samsung-sofef00.o
obj-$(CONFIG_DRM_PANEL_SEIKO_43WVF1G) += panel-seiko-43wvf1g.o
obj-$(CONFIG_DRM_PANEL_SHARP_LQ079L1SX01) += panel-sharp-lq079l1sx01.o
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
new file mode 100644
index 0000000000000000000000000000000000000000..0a1a1c680ee143d2429a6e1ea59a4fdd16b156b4
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
@@ -0,0 +1,293 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (c) 2025 Kamil Gołda <kamil.golda@protonmail.com>
+// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree:
+// Copyright (c) 2026, The Linux Foundation. All rights reserved.
+
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/regulator/consumer.h>
+
+#include <video/mipi_display.h>
+
+#include <drm/drm_mipi_dsi.h>
+#include <drm/drm_modes.h>
+#include <drm/drm_panel.h>
+#include <drm/drm_probe_helper.h>
+
+struct s6e8fco_samsungp {
+ struct drm_panel panel;
+ struct mipi_dsi_device *dsi;
+ struct regulator_bulk_data *supplies;
+ struct gpio_desc *reset_gpio;
+};
+
+static const struct regulator_bulk_data s6e8fco_samsungp_supplies[] = {
+ { .supply = "vddio" },
+ { .supply = "ldo" },
+ { .supply = "iovcc" },
+};
+
+static inline
+struct s6e8fco_samsungp *to_s6e8fco_samsungp(struct drm_panel *panel)
+{
+ return container_of_const(panel, struct s6e8fco_samsungp, panel);
+}
+
+static void s6e8fco_samsungp_reset(struct s6e8fco_samsungp *ctx)
+{
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+ usleep_range(12000, 13000);
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+ usleep_range(2000, 3000);
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+ usleep_range(10000, 11000);
+}
+
+static int s6e8fco_samsungp_on(struct s6e8fco_samsungp *ctx)
+{
+ struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
+
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfc, 0x5a, 0x5a);
+
+ mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx, 0x0000);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_CONTROL_DISPLAY,
+ 0x20);
+ mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);
+ mipi_dsi_msleep(&dsi_ctx, 50);
+ mipi_dsi_dcs_set_display_on_multi(&dsi_ctx);
+
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb0, 0x04, 0xed);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xed,
+ 0xe4, 0x08, 0x96, 0xa4, 0x2a, 0x72, 0xe2,
+ 0xca, 0x00);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfc, 0xa5, 0xa5);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xf0, 0x5a, 0x5a);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfc, 0x5a, 0x5a);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x93);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb0, 0x05, 0xf4);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xf4, 0x03);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xed, 0x01, 0x81, 0x04);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xf0, 0xa5, 0xa5);
+ mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfc, 0xa5, 0xa5);
+
+ return dsi_ctx.accum_err;
+}
+
+static int s6e8fco_samsungp_off(struct s6e8fco_samsungp *ctx)
+{
+ struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
+
+
+ mipi_dsi_dcs_set_display_off_multi(&dsi_ctx);
+ mipi_dsi_msleep(&dsi_ctx, 20);
+ mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx);
+ mipi_dsi_msleep(&dsi_ctx, 120);
+
+ return dsi_ctx.accum_err;
+}
+
+static int s6e8fco_samsungp_prepare(struct drm_panel *panel)
+{
+ struct s6e8fco_samsungp *ctx = to_s6e8fco_samsungp(panel);
+ struct device *dev = &ctx->dsi->dev;
+ int ret;
+
+ ret = regulator_bulk_enable(ARRAY_SIZE(s6e8fco_samsungp_supplies), ctx->supplies);
+ if (ret < 0) {
+ dev_err(dev, "Failed to enable regulators: %d\n", ret);
+ return ret;
+ }
+
+ s6e8fco_samsungp_reset(ctx);
+
+ ret = s6e8fco_samsungp_on(ctx);
+ if (ret < 0) {
+ dev_err(dev, "Failed to initialize panel: %d\n", ret);
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+ regulator_bulk_disable(ARRAY_SIZE(s6e8fco_samsungp_supplies), ctx->supplies);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int s6e8fco_samsungp_unprepare(struct drm_panel *panel)
+{
+ struct s6e8fco_samsungp *ctx = to_s6e8fco_samsungp(panel);
+ struct device *dev = &ctx->dsi->dev;
+ int ret;
+
+ ret = s6e8fco_samsungp_off(ctx);
+ if (ret < 0)
+ dev_err(dev, "Failed to un-initialize panel: %d\n", ret);
+
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+ regulator_bulk_disable(ARRAY_SIZE(s6e8fco_samsungp_supplies), ctx->supplies);
+
+ return 0;
+}
+
+static const struct drm_display_mode s6e8fco_samsungp_mode = {
+ .clock = (720 + 350 + 40 + 294) * (1560 + 17 + 2 + 5) * 60 / 1000,
+ .hdisplay = 720,
+ .hsync_start = 720 + 350,
+ .hsync_end = 720 + 350 + 40,
+ .htotal = 720 + 350 + 40 + 294,
+ .vdisplay = 1560,
+ .vsync_start = 1560 + 17,
+ .vsync_end = 1560 + 17 + 2,
+ .vtotal = 1560 + 17 + 2 + 5,
+ .width_mm = 65,
+ .height_mm = 140,
+ .type = DRM_MODE_TYPE_DRIVER,
+};
+
+static int s6e8fco_samsungp_get_modes(struct drm_panel *panel,
+ struct drm_connector *connector)
+{
+ return drm_connector_helper_get_modes_fixed(connector, &s6e8fco_samsungp_mode);
+}
+
+static const struct drm_panel_funcs s6e8fco_samsungp_panel_funcs = {
+ .prepare = s6e8fco_samsungp_prepare,
+ .unprepare = s6e8fco_samsungp_unprepare,
+ .get_modes = s6e8fco_samsungp_get_modes,
+};
+
+static int s6e8fco_samsungp_bl_update_status(struct backlight_device *bl)
+{
+ struct mipi_dsi_device *dsi = bl_get_data(bl);
+ u16 brightness = backlight_get_brightness(bl);
+ int ret;
+
+ dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ ret = mipi_dsi_dcs_set_display_brightness_large(dsi, brightness);
+ if (ret < 0)
+ return ret;
+
+ dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+ return 0;
+}
+
+static int s6e8fco_samsungp_bl_get_brightness(struct backlight_device *bl)
+{
+ struct mipi_dsi_device *dsi = bl_get_data(bl);
+ u16 brightness;
+ int ret;
+
+ dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ ret = mipi_dsi_dcs_get_display_brightness_large(dsi, &brightness);
+ if (ret < 0)
+ return ret;
+
+ dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+ return brightness;
+}
+
+static const struct backlight_ops s6e8fco_samsungp_bl_ops = {
+ .update_status = s6e8fco_samsungp_bl_update_status,
+ .get_brightness = s6e8fco_samsungp_bl_get_brightness,
+};
+
+static struct backlight_device *
+s6e8fco_samsungp_create_backlight(struct mipi_dsi_device *dsi)
+{
+ struct device *dev = &dsi->dev;
+ const struct backlight_properties props = {
+ .type = BACKLIGHT_RAW,
+ .brightness = 268,
+ .max_brightness = 2047,
+ };
+
+ return devm_backlight_device_register(dev, dev_name(dev), dev, dsi,
+ &s6e8fco_samsungp_bl_ops, &props);
+}
+
+static int s6e8fco_samsungp_probe(struct mipi_dsi_device *dsi)
+{
+ struct device *dev = &dsi->dev;
+ struct s6e8fco_samsungp *ctx;
+ int ret;
+
+ ctx = devm_drm_panel_alloc(dev, struct s6e8fco_samsungp, panel,
+ &s6e8fco_samsungp_panel_funcs,
+ DRM_MODE_CONNECTOR_DSI);
+ if (IS_ERR(ctx))
+ return PTR_ERR(ctx);
+
+ ret = devm_regulator_bulk_get_const(dev,
+ ARRAY_SIZE(s6e8fco_samsungp_supplies),
+ s6e8fco_samsungp_supplies,
+ &ctx->supplies);
+ if (ret < 0)
+ return ret;
+
+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
+ if (IS_ERR(ctx->reset_gpio))
+ return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
+ "Failed to get reset-gpios\n");
+
+ ctx->dsi = dsi;
+ mipi_dsi_set_drvdata(dsi, ctx);
+
+ dsi->lanes = 4;
+ dsi->format = MIPI_DSI_FMT_RGB888;
+ dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
+ MIPI_DSI_CLOCK_NON_CONTINUOUS;
+
+ ctx->panel.prepare_prev_first = true;
+
+ ctx->panel.backlight = s6e8fco_samsungp_create_backlight(dsi);
+ if (IS_ERR(ctx->panel.backlight))
+ return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight),
+ "Failed to create backlight\n");
+
+ drm_panel_add(&ctx->panel);
+
+ ret = mipi_dsi_attach(dsi);
+ if (ret < 0) {
+ drm_panel_remove(&ctx->panel);
+ return dev_err_probe(dev, ret, "Failed to attach to DSI host\n");
+ }
+
+ return 0;
+}
+
+static void s6e8fco_samsungp_remove(struct mipi_dsi_device *dsi)
+{
+ struct s6e8fco_samsungp *ctx = mipi_dsi_get_drvdata(dsi);
+ int ret;
+
+ ret = mipi_dsi_detach(dsi);
+ if (ret < 0)
+ dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret);
+
+ drm_panel_remove(&ctx->panel);
+}
+
+static const struct of_device_id s6e8fco_samsungp_of_match[] = {
+ { .compatible = "samsung,s6e8fco" },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, s6e8fco_samsungp_of_match);
+
+static struct mipi_dsi_driver s6e8fco_samsungp_driver = {
+ .probe = s6e8fco_samsungp_probe,
+ .remove = s6e8fco_samsungp_remove,
+ .driver = {
+ .name = "panel-samsung-s6e8fco",
+ .of_match_table = s6e8fco_samsungp_of_match,
+ },
+};
+module_mipi_dsi_driver(s6e8fco_samsungp_driver);
+
+MODULE_AUTHOR("Kamil Gołda <kamil.golda@protonmail.com>");
+MODULE_DESCRIPTION("DRM driver for s6e8fco samsung amoled video mode dsi panel");
+MODULE_LICENSE("GPL");
--
2.53.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-02-23 14:24 [PATCH 0/3] Add support for the Samsung S6E8FCO display panel Yedaya Katsman
2026-02-23 14:24 ` [PATCH 1/3] dt-bindings: display: panel: Add Samsung S6E8FCO Yedaya Katsman
2026-02-23 14:24 ` [PATCH 2/3] drivers: gpu: drm: " Yedaya Katsman
@ 2026-02-23 14:24 ` Yedaya Katsman
2026-02-24 2:46 ` Dmitry Baryshkov
2 siblings, 1 reply; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-23 14:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio
Cc: ~postmarketos/upstreaming, dri-devel, devicetree, linux-kernel,
linux-arm-msm, Yedaya Katsman
Enable the MDSS nodes and add supplies and bindings for the Samsung
S6E8FCO panel.
The ldo and iovcc pins boot up with a current of 16 mA, but they work
fine with 2mA, so I used that.
Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
---
.../boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 94 ++++++++++++++++++++++
1 file changed, 94 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
index 994fb0412fcbdf5466f87a325c48b697a37b514b..10fd01143a644004b807fc455d2235f8e6a9737a 100644
--- a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
+++ b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
@@ -82,6 +82,32 @@ key-volume-up {
};
};
+ panel_ldo_supply: panel-ldo-supply {
+ compatible = "regulator-fixed";
+ regulator-name = "panel_ldo_supply";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+
+ enable-active-high;
+ gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&panel_ldo_en>;
+ pinctrl-names = "default";
+ };
+
+ panel_iovcc_supply: panel-iovcc-supply {
+ compatible = "regulator-fixed";
+ regulator-name = "panel_iovcc_supply";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-boot-on;
+
+ enable-active-high;
+ gpio = <&tlmm 124 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&panel_iovcc_en>;
+ pinctrl-names = "default";
+ };
+
thermal-zones {
rf-pa0-thermal {
thermal-sensors = <&pm6125_adc_tm 0>;
@@ -128,6 +154,46 @@ &hsusb_phy1 {
status = "okay";
};
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l18a>;
+
+ pinctrl-0 = <&mdss_default>;
+ pinctrl-1 = <&mdss_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ status = "okay";
+
+ panel@0 {
+ compatible = "samsung,s6e8fco";
+ reg = <0>;
+
+ vddio-supply = <&vreg_l9a>;
+ ldo-supply = <&panel_ldo_supply>;
+ iovcc-supply = <&panel_iovcc_supply>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_LOW>;
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&panel_in>;
+};
+
+
+&mdss_dsi0_phy {
+ status = "okay";
+};
+
&pm6125_adc {
pinctrl-names = "default";
pinctrl-0 = <&camera_flash_therm &emmc_ufs_therm>;
@@ -387,6 +453,34 @@ &sdhc_2 {
&tlmm {
gpio-reserved-ranges = <22 2>, <28 6>;
+
+ panel_ldo_en: panel-ldo-default-state {
+ pins = "gpio26";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ mdss_default: mdss-default-state {
+ pins = "gpio90";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ mdss_sleep: mdss-sleep-state {
+ pins = "gpio90";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ panel_iovcc_en: panel-iovcc-default-state {
+ pins = "gpio124";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
};
&ufs_mem_hc {
--
2.53.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] drivers: gpu: drm: panel: Add Samsung S6E8FCO
2026-02-23 14:24 ` [PATCH 2/3] drivers: gpu: drm: " Yedaya Katsman
@ 2026-02-23 19:37 ` Dmitry Baryshkov
2026-02-23 20:17 ` Yedaya Katsman
0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2026-02-23 19:37 UTC (permalink / raw)
To: Yedaya Katsman
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Mon, Feb 23, 2026 at 04:24:03PM +0200, Yedaya Katsman wrote:
> Add driver for Samsung S6E8FCO DSI video mode panel, used in
> Xiaomi Mi A3 mobile phone.
>
> Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
> Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
> Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
> ---
> MAINTAINERS | 1 +
> drivers/gpu/drm/panel/Kconfig | 12 ++
> drivers/gpu/drm/panel/Makefile | 1 +
> drivers/gpu/drm/panel/panel-samsung-s6e8fco.c | 293 ++++++++++++++++++++++++++
> 4 files changed, 307 insertions(+)
Please change the subject to follow "drm: panel: foo bar baz".
With that in place:
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 545d4cf68b9ac27765c7981e668e32cfecf3366b..238b5332eaf0e0cfb9834084e24671ccaee79939 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -8187,6 +8187,7 @@ DRM DRIVER FOR SAMSUNG S6E8FCO PANELS
> M: Yedaya Katsman <yedaya.ka@gmail.com>
> S: Maintained
> F: Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
> +F: drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
>
> DRM DRIVER FOR SAMSUNG SOFEF00 DDIC
> M: David Heidelberg <david@ixit.cz>
> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
> index 7a83804fedca1b688ce6fbe4295ec9009007e693..734640bb3f73c83e9273573aeb720ea1ba20862f 100644
> --- a/drivers/gpu/drm/panel/Kconfig
> +++ b/drivers/gpu/drm/panel/Kconfig
> @@ -893,6 +893,18 @@ config DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01
> ~5.6 inch AMOLED display, and the controller is driven by the MIPI
> DSI protocol with 4 lanes.
>
> +config DRM_PANEL_SAMSUNG_S6E8FCO
> + tristate "Samsung S6E8FCO DSI video mode panel"
> + depends on OF
> + depends on BACKLIGHT_CLASS_DEVICE
> + select DRM_MIPI_DSI
> + select VIDEOMODE_HELPERS
> + help
> + Say Y or M here if you want to enable support for the Samsung video
> + mode panel S6E8FCO. The panel has a 6.09 inch AMOLED display, with
> + a resolution of 720x1560.
> + Found in the Xiaomi Mi A3 smartphone (xiaomi-laurel).
> +
> config DRM_PANEL_SAMSUNG_SOFEF00
> tristate "Samsung SOFEF00 DSI panel controller"
> depends on OF
> diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
> index b9562a6fdcb38bfd0dfee9e8c11e16149ada4386..54eca60e5b57328ea94ed7880f4dead981f87fc1 100644
> --- a/drivers/gpu/drm/panel/Makefile
> +++ b/drivers/gpu/drm/panel/Makefile
> @@ -91,6 +91,7 @@ obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS427AP24) += panel-samsung-s6e88a0-ams4
> obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01) += panel-samsung-s6e88a0-ams452ef01.o
> obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0) += panel-samsung-s6e8aa0.o
> obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01) += panel-samsung-s6e8aa5x01-ams561ra01.o
> +obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8FCO) += panel-samsung-s6e8fco.o
> obj-$(CONFIG_DRM_PANEL_SAMSUNG_SOFEF00) += panel-samsung-sofef00.o
> obj-$(CONFIG_DRM_PANEL_SEIKO_43WVF1G) += panel-seiko-43wvf1g.o
> obj-$(CONFIG_DRM_PANEL_SHARP_LQ079L1SX01) += panel-sharp-lq079l1sx01.o
> diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..0a1a1c680ee143d2429a6e1ea59a4fdd16b156b4
> --- /dev/null
> +++ b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
> @@ -0,0 +1,293 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +// Copyright (c) 2025 Kamil Gołda <kamil.golda@protonmail.com>
> +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree:
> +// Copyright (c) 2026, The Linux Foundation. All rights reserved.
Hmm, so Kamil worked on it before it was written by LF? Are you sure
that the year here is correct?
> +
> +
> +static const struct backlight_ops s6e8fco_samsungp_bl_ops = {
> + .update_status = s6e8fco_samsungp_bl_update_status,
> + .get_brightness = s6e8fco_samsungp_bl_get_brightness,
Does it actually return the written value?
> +};
> +
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] drivers: gpu: drm: panel: Add Samsung S6E8FCO
2026-02-23 19:37 ` Dmitry Baryshkov
@ 2026-02-23 20:17 ` Yedaya Katsman
0 siblings, 0 replies; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-23 20:17 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Mon, 23 Feb 2026 at 21:37, Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Mon, Feb 23, 2026 at 04:24:03PM +0200, Yedaya Katsman wrote:
> > Add driver for Samsung S6E8FCO DSI video mode panel, used in
> > Xiaomi Mi A3 mobile phone.
> >
> > Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
> > Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
> > Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
> > ---
> > MAINTAINERS | 1 +
> > drivers/gpu/drm/panel/Kconfig | 12 ++
> > drivers/gpu/drm/panel/Makefile | 1 +
> > drivers/gpu/drm/panel/panel-samsung-s6e8fco.c | 293 ++++++++++++++++++++++++++
> > 4 files changed, 307 insertions(+)
>
> Please change the subject to follow "drm: panel: foo bar baz".
Ok
> With that in place:
>
>
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Thanks
>
>
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 545d4cf68b9ac27765c7981e668e32cfecf3366b..238b5332eaf0e0cfb9834084e24671ccaee79939 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -8187,6 +8187,7 @@ DRM DRIVER FOR SAMSUNG S6E8FCO PANELS
> > M: Yedaya Katsman <yedaya.ka@gmail.com>
> > S: Maintained
> > F: Documentation/devicetree/bindings/display/panel/samsung,s6e8fco.yaml
> > +F: drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
> >
> > DRM DRIVER FOR SAMSUNG SOFEF00 DDIC
> > M: David Heidelberg <david@ixit.cz>
> > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
> > index 7a83804fedca1b688ce6fbe4295ec9009007e693..734640bb3f73c83e9273573aeb720ea1ba20862f 100644
> > --- a/drivers/gpu/drm/panel/Kconfig
> > +++ b/drivers/gpu/drm/panel/Kconfig
> > @@ -893,6 +893,18 @@ config DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01
> > ~5.6 inch AMOLED display, and the controller is driven by the MIPI
> > DSI protocol with 4 lanes.
> >
> > +config DRM_PANEL_SAMSUNG_S6E8FCO
> > + tristate "Samsung S6E8FCO DSI video mode panel"
> > + depends on OF
> > + depends on BACKLIGHT_CLASS_DEVICE
> > + select DRM_MIPI_DSI
> > + select VIDEOMODE_HELPERS
> > + help
> > + Say Y or M here if you want to enable support for the Samsung video
> > + mode panel S6E8FCO. The panel has a 6.09 inch AMOLED display, with
> > + a resolution of 720x1560.
> > + Found in the Xiaomi Mi A3 smartphone (xiaomi-laurel).
> > +
> > config DRM_PANEL_SAMSUNG_SOFEF00
> > tristate "Samsung SOFEF00 DSI panel controller"
> > depends on OF
> > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
> > index b9562a6fdcb38bfd0dfee9e8c11e16149ada4386..54eca60e5b57328ea94ed7880f4dead981f87fc1 100644
> > --- a/drivers/gpu/drm/panel/Makefile
> > +++ b/drivers/gpu/drm/panel/Makefile
> > @@ -91,6 +91,7 @@ obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS427AP24) += panel-samsung-s6e88a0-ams4
> > obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01) += panel-samsung-s6e88a0-ams452ef01.o
> > obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0) += panel-samsung-s6e8aa0.o
> > obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01) += panel-samsung-s6e8aa5x01-ams561ra01.o
> > +obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8FCO) += panel-samsung-s6e8fco.o
> > obj-$(CONFIG_DRM_PANEL_SAMSUNG_SOFEF00) += panel-samsung-sofef00.o
> > obj-$(CONFIG_DRM_PANEL_SEIKO_43WVF1G) += panel-seiko-43wvf1g.o
> > obj-$(CONFIG_DRM_PANEL_SHARP_LQ079L1SX01) += panel-sharp-lq079l1sx01.o
> > diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..0a1a1c680ee143d2429a6e1ea59a4fdd16b156b4
> > --- /dev/null
> > +++ b/drivers/gpu/drm/panel/panel-samsung-s6e8fco.c
> > @@ -0,0 +1,293 @@
> > +// SPDX-License-Identifier: GPL-2.0-only
> > +// Copyright (c) 2025 Kamil Gołda <kamil.golda@protonmail.com>
> > +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree:
> > +// Copyright (c) 2026, The Linux Foundation. All rights reserved.
>
> Hmm, so Kamil worked on it before it was written by LF? Are you sure
> that the year here is correct?
What happened is kamil worked on it, and then I regenerated it again
with the script. Re-considering it, the LF copyright should be from
the start, I shouldn't have modified it, will fix, thanks for pointing
it out!
> > +
>
> > +
> > +static const struct backlight_ops s6e8fco_samsungp_bl_ops = {
> > + .update_status = s6e8fco_samsungp_bl_update_status,
> > + .get_brightness = s6e8fco_samsungp_bl_get_brightness,
>
> Does it actually return the written value?
Yes, writing to /sys/class/backlight/5e94000.dsi.0/brightness and
reading from /sys/class/backlight/5e94000.dsi.0/actual_brightness
works correctly.
> > +};
> > +
>
> --
> With best wishes
> Dmitry
Regards, Yedaya
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-02-23 14:24 ` [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel Yedaya Katsman
@ 2026-02-24 2:46 ` Dmitry Baryshkov
2026-02-25 16:35 ` Yedaya Katsman
2026-03-04 18:04 ` Yedaya Katsman
0 siblings, 2 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2026-02-24 2:46 UTC (permalink / raw)
To: Yedaya Katsman
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Mon, Feb 23, 2026 at 04:24:04PM +0200, Yedaya Katsman wrote:
> Enable the MDSS nodes and add supplies and bindings for the Samsung
> S6E8FCO panel.
>
> The ldo and iovcc pins boot up with a current of 16 mA, but they work
> fine with 2mA, so I used that.
>
> Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
> Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
> Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
> ---
> .../boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 94 ++++++++++++++++++++++
> 1 file changed, 94 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> index 994fb0412fcbdf5466f87a325c48b697a37b514b..10fd01143a644004b807fc455d2235f8e6a9737a 100644
> --- a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> +++ b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> @@ -82,6 +82,32 @@ key-volume-up {
> };
> };
>
> + panel_ldo_supply: panel-ldo-supply {
regulator-foo-bar-baz
> + compatible = "regulator-fixed";
> + regulator-name = "panel_ldo_supply";
Is it an actual name (e.g. from schematics)?
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-boot-on;
> +
> + enable-active-high;
> + gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>;
> + pinctrl-0 = <&panel_ldo_en>;
> + pinctrl-names = "default";
> + };
> +
> + panel_iovcc_supply: panel-iovcc-supply {
> + compatible = "regulator-fixed";
> + regulator-name = "panel_iovcc_supply";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-boot-on;
> +
> + enable-active-high;
> + gpio = <&tlmm 124 GPIO_ACTIVE_HIGH>;
> + pinctrl-0 = <&panel_iovcc_en>;
> + pinctrl-names = "default";
> + };
> +
> thermal-zones {
> rf-pa0-thermal {
> thermal-sensors = <&pm6125_adc_tm 0>;
> @@ -128,6 +154,46 @@ &hsusb_phy1 {
> status = "okay";
> };
>
> +&mdss {
> + status = "okay";
> +};
> +
> +&mdss_dsi0 {
> + vdda-supply = <&vreg_l18a>;
> +
> + pinctrl-0 = <&mdss_default>;
> + pinctrl-1 = <&mdss_sleep>;
> + pinctrl-names = "default", "sleep";
> +
> + status = "okay";
> +
> + panel@0 {
> + compatible = "samsung,s6e8fco";
> + reg = <0>;
> +
> + vddio-supply = <&vreg_l9a>;
> + ldo-supply = <&panel_ldo_supply>;
> + iovcc-supply = <&panel_iovcc_supply>;
> + reset-gpios = <&tlmm 90 GPIO_ACTIVE_LOW>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&mdss_dsi0_out>;
> + };
> + };
> + };
> +};
> +
> +&mdss_dsi0_out {
> + data-lanes = <0 1 2 3>;
> + remote-endpoint = <&panel_in>;
> +};
> +
> +
> +&mdss_dsi0_phy {
> + status = "okay";
Missing vdds-supply.
> +};
> +
> &pm6125_adc {
> pinctrl-names = "default";
> pinctrl-0 = <&camera_flash_therm &emmc_ufs_therm>;
> @@ -387,6 +453,34 @@ &sdhc_2 {
>
> &tlmm {
> gpio-reserved-ranges = <22 2>, <28 6>;
> +
> + panel_ldo_en: panel-ldo-default-state {
> + pins = "gpio26";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> +
> + mdss_default: mdss-default-state {
> + pins = "gpio90";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + mdss_sleep: mdss-sleep-state {
> + pins = "gpio90";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + panel_iovcc_en: panel-iovcc-default-state {
> + pins = "gpio124";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> };
>
> &ufs_mem_hc {
>
> --
> 2.53.0
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-02-24 2:46 ` Dmitry Baryshkov
@ 2026-02-25 16:35 ` Yedaya Katsman
2026-03-04 18:04 ` Yedaya Katsman
1 sibling, 0 replies; 12+ messages in thread
From: Yedaya Katsman @ 2026-02-25 16:35 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Tue, 24 Feb 2026 at 04:46, Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Mon, Feb 23, 2026 at 04:24:04PM +0200, Yedaya Katsman wrote:
> > Enable the MDSS nodes and add supplies and bindings for the Samsung
> > S6E8FCO panel.
> >
> > The ldo and iovcc pins boot up with a current of 16 mA, but they work
> > fine with 2mA, so I used that.
> >
> > Co-developed-by: Kamil Gołda <kamil.golda@protonmail.com>
> > Signed-off-by: Kamil Gołda <kamil.golda@protonmail.com>
> > Signed-off-by: Yedaya Katsman <yedaya.ka@gmail.com>
> > ---
> > .../boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 94 ++++++++++++++++++++++
> > 1 file changed, 94 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> > index 994fb0412fcbdf5466f87a325c48b697a37b514b..10fd01143a644004b807fc455d2235f8e6a9737a 100644
> > --- a/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> > +++ b/arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts
> > @@ -82,6 +82,32 @@ key-volume-up {
> > };
> > };
> >
> > + panel_ldo_supply: panel-ldo-supply {
>
> regulator-foo-bar-baz
Will change
>
> > + compatible = "regulator-fixed";
> > + regulator-name = "panel_ldo_supply";
>
> Is it an actual name (e.g. from schematics)?
In the downstream dts it's called "panel_ldo-gpio-supply". [0]
[0] https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/d3766fc8cda2d96de2850faa9ce58e5a37ea9f9c/arch/arm64/boot/dts/qcom/trinket-sde-display.dtsi#L28
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-boot-on;
> > +
> > + enable-active-high;
> > + gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>;
> > + pinctrl-0 = <&panel_ldo_en>;
> > + pinctrl-names = "default";
> > + };
> > +
> > + panel_iovcc_supply: panel-iovcc-supply {
> > + compatible = "regulator-fixed";
> > + regulator-name = "panel_iovcc_supply";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + regulator-boot-on;
> > +
> > + enable-active-high;
> > + gpio = <&tlmm 124 GPIO_ACTIVE_HIGH>;
> > + pinctrl-0 = <&panel_iovcc_en>;
> > + pinctrl-names = "default";
> > + };
> > +
> > thermal-zones {
> > rf-pa0-thermal {
> > thermal-sensors = <&pm6125_adc_tm 0>;
> > @@ -128,6 +154,46 @@ &hsusb_phy1 {
> > status = "okay";
> > };
> >
> > +&mdss {
> > + status = "okay";
> > +};
> > +
> > +&mdss_dsi0 {
> > + vdda-supply = <&vreg_l18a>;
> > +
> > + pinctrl-0 = <&mdss_default>;
> > + pinctrl-1 = <&mdss_sleep>;
> > + pinctrl-names = "default", "sleep";
> > +
> > + status = "okay";
> > +
> > + panel@0 {
> > + compatible = "samsung,s6e8fco";
> > + reg = <0>;
> > +
> > + vddio-supply = <&vreg_l9a>;
> > + ldo-supply = <&panel_ldo_supply>;
> > + iovcc-supply = <&panel_iovcc_supply>;
> > + reset-gpios = <&tlmm 90 GPIO_ACTIVE_LOW>;
> > +
> > + port {
> > + panel_in: endpoint {
> > + remote-endpoint = <&mdss_dsi0_out>;
> > + };
> > + };
> > + };
> > +};
> > +
> > +&mdss_dsi0_out {
> > + data-lanes = <0 1 2 3>;
> > + remote-endpoint = <&panel_in>;
> > +};
> > +
> > +
> > +&mdss_dsi0_phy {
> > + status = "okay";
>
> Missing vdds-supply.
Will add
> > +};
> > +
> > &pm6125_adc {
> > pinctrl-names = "default";
> > pinctrl-0 = <&camera_flash_therm &emmc_ufs_therm>;
> > @@ -387,6 +453,34 @@ &sdhc_2 {
> >
> > &tlmm {
> > gpio-reserved-ranges = <22 2>, <28 6>;
> > +
> > + panel_ldo_en: panel-ldo-default-state {
> > + pins = "gpio26";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-pull-up;
> > + };
> > +
> > + mdss_default: mdss-default-state {
> > + pins = "gpio90";
> > + function = "gpio";
> > + drive-strength = <8>;
> > + bias-disable;
> > + };
> > +
> > + mdss_sleep: mdss-sleep-state {
> > + pins = "gpio90";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-pull-down;
> > + };
> > +
> > + panel_iovcc_en: panel-iovcc-default-state {
> > + pins = "gpio124";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-pull-up;
> > + };
> > };
> >
> > &ufs_mem_hc {
> >
> > --
> > 2.53.0
> >
>
> --
> With best wishes
> Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-02-24 2:46 ` Dmitry Baryshkov
2026-02-25 16:35 ` Yedaya Katsman
@ 2026-03-04 18:04 ` Yedaya Katsman
2026-03-04 22:34 ` Dmitry Baryshkov
1 sibling, 1 reply; 12+ messages in thread
From: Yedaya Katsman @ 2026-03-04 18:04 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Tue, 24 Feb 2026 at 04:46, Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
<snip>
> > +
> > +&mdss_dsi0 {
> > + vdda-supply = <&vreg_l18a>;
> > +
> > + pinctrl-0 = <&mdss_default>;
> > + pinctrl-1 = <&mdss_sleep>;
> > + pinctrl-names = "default", "sleep";
> > +
> > + status = "okay";
> > +
> > + panel@0 {
> > + compatible = "samsung,s6e8fco";
> > + reg = <0>;
> > +
> > + vddio-supply = <&vreg_l9a>;
> > + ldo-supply = <&panel_ldo_supply>;
> > + iovcc-supply = <&panel_iovcc_supply>;
> > + reset-gpios = <&tlmm 90 GPIO_ACTIVE_LOW>;
> > +
> > + port {
> > + panel_in: endpoint {
> > + remote-endpoint = <&mdss_dsi0_out>;
> > + };
> > + };
> > + };
> > +};
> > +
> > +&mdss_dsi0_out {
> > + data-lanes = <0 1 2 3>;
> > + remote-endpoint = <&panel_in>;
> > +};
> > +
> > +
> > +&mdss_dsi0_phy {
> > + status = "okay";
>
> Missing vdds-supply.
>
Can you expand on that? The `dsi-phy-14nm` schema doesn't have the
vdds-supply property. Do you think it needs it?
<snip>
> --
> With best wishes
> Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-03-04 18:04 ` Yedaya Katsman
@ 2026-03-04 22:34 ` Dmitry Baryshkov
2026-03-12 10:26 ` Yedaya Katsman
0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2026-03-04 22:34 UTC (permalink / raw)
To: Yedaya Katsman
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Wed, 4 Mar 2026 at 20:04, Yedaya Katsman <yedaya.ka@gmail.com> wrote:
>
> On Tue, 24 Feb 2026 at 04:46, Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> <snip>
> > > +
> > > +&mdss_dsi0_phy {
> > > + status = "okay";
> >
> > Missing vdds-supply.
> >
> Can you expand on that? The `dsi-phy-14nm` schema doesn't have the
> vdds-supply property. Do you think it needs it?
14nm PHYs have vcca-supply. Anyway, the PHY needs to be supplied by something.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-03-04 22:34 ` Dmitry Baryshkov
@ 2026-03-12 10:26 ` Yedaya Katsman
2026-03-12 14:18 ` Dmitry Baryshkov
0 siblings, 1 reply; 12+ messages in thread
From: Yedaya Katsman @ 2026-03-12 10:26 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Thu, 5 Mar 2026 at 00:35, Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Wed, 4 Mar 2026 at 20:04, Yedaya Katsman <yedaya.ka@gmail.com> wrote:
> >
> > On Tue, 24 Feb 2026 at 04:46, Dmitry Baryshkov
> > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > <snip>
> > > > +
>
> > > > +&mdss_dsi0_phy {
> > > > + status = "okay";
> > >
> > > Missing vdds-supply.
> > >
> > Can you expand on that? The `dsi-phy-14nm` schema doesn't have the
> > vdds-supply property. Do you think it needs it?
>
> 14nm PHYs have vcca-supply. Anyway, the PHY needs to be supplied by something.
vcca is VDDMX, the power-domain is set in s6125.dtsi
> --
> With best wishes
> Dmitry
Regards, Yedaya
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel
2026-03-12 10:26 ` Yedaya Katsman
@ 2026-03-12 14:18 ` Dmitry Baryshkov
0 siblings, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2026-03-12 14:18 UTC (permalink / raw)
To: Yedaya Katsman
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Kamil Gołda,
Bjorn Andersson, Konrad Dybcio, ~postmarketos/upstreaming,
dri-devel, devicetree, linux-kernel, linux-arm-msm
On Thu, Mar 12, 2026 at 12:26:19PM +0200, Yedaya Katsman wrote:
> On Thu, 5 Mar 2026 at 00:35, Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Wed, 4 Mar 2026 at 20:04, Yedaya Katsman <yedaya.ka@gmail.com> wrote:
> > >
> > > On Tue, 24 Feb 2026 at 04:46, Dmitry Baryshkov
> > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > <snip>
> > > > > +
> >
> > > > > +&mdss_dsi0_phy {
> > > > > + status = "okay";
> > > >
> > > > Missing vdds-supply.
> > > >
> > > Can you expand on that? The `dsi-phy-14nm` schema doesn't have the
> > > vdds-supply property. Do you think it needs it?
> >
> > 14nm PHYs have vcca-supply. Anyway, the PHY needs to be supplied by something.
>
> vcca is VDDMX, the power-domain is set in s6125.dtsi
ACk, please mention it in the commit message.
> > --
> > With best wishes
> > Dmitry
>
> Regards, Yedaya
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-03-12 14:18 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-23 14:24 [PATCH 0/3] Add support for the Samsung S6E8FCO display panel Yedaya Katsman
2026-02-23 14:24 ` [PATCH 1/3] dt-bindings: display: panel: Add Samsung S6E8FCO Yedaya Katsman
2026-02-23 14:24 ` [PATCH 2/3] drivers: gpu: drm: " Yedaya Katsman
2026-02-23 19:37 ` Dmitry Baryshkov
2026-02-23 20:17 ` Yedaya Katsman
2026-02-23 14:24 ` [PATCH 3/3] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Enable MDSS and add panel Yedaya Katsman
2026-02-24 2:46 ` Dmitry Baryshkov
2026-02-25 16:35 ` Yedaya Katsman
2026-03-04 18:04 ` Yedaya Katsman
2026-03-04 22:34 ` Dmitry Baryshkov
2026-03-12 10:26 ` Yedaya Katsman
2026-03-12 14:18 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox