* [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
* 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
* [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 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