* [PATCH 0/2] drm/panel: Add driver for DLC DLC0697 DSI panel
@ 2026-05-18 11:04 Arpit Saini
2026-05-18 11:04 ` [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller Arpit Saini
2026-05-18 11:04 ` [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver Arpit Saini
0 siblings, 2 replies; 13+ messages in thread
From: Arpit Saini @ 2026-05-18 11:04 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, quic_rajeevny, quic_vproddut, Arpit Saini
This series adds support for the DLC DLC0697 1080x1920@60Hz MIPI DSI
panel which uses the Ilitek ILI7807S display controller.
The panel operates in video burst mode with four data lanes using
RGB888 pixel format. Backlight brightness is controlled by sending
DCS commands directly over DSI.
A panel_desc descriptor struct is used to describe the panel-specific
init sequence and display mode, allowing additional ILI7807S-based
panels to be added in the future.
Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
---
Arpit Saini (2):
dt-bindings: display: panel: add Ilitek ILI7807S panel controller
drm/panel: add Ilitek ILI7807S panel driver
.../bindings/display/panel/ilitek,ili7807s.yaml | 80 +++++
MAINTAINERS | 7 +
drivers/gpu/drm/panel/Kconfig | 12 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-ilitek-ili7807s.c | 328 +++++++++++++++++++++
5 files changed, 428 insertions(+)
---
base-commit: 61680cdf162e59a3c7cde3a2b026a448e1b65a53
change-id: 20260518-ili7807s-panel-8592da51b1eb
Best regards,
--
Arpit Saini <arpit.saini@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-18 11:04 [PATCH 0/2] drm/panel: Add driver for DLC DLC0697 DSI panel Arpit Saini
@ 2026-05-18 11:04 ` Arpit Saini
2026-05-18 16:23 ` Dmitry Baryshkov
2026-05-19 10:32 ` Krzysztof Kozlowski
2026-05-18 11:04 ` [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver Arpit Saini
1 sibling, 2 replies; 13+ messages in thread
From: Arpit Saini @ 2026-05-18 11:04 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, quic_rajeevny, quic_vproddut, Arpit Saini
ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
The DLC DLC0697 1080x1920 LCD panel is based on this controller.
The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
supply (vddi), positive LCD bias supply (avdd) and negative LCD bias
supply (avee). The panel operates in video burst mode with four data
lanes using RGB888 pixel format.
Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
---
.../bindings/display/panel/ilitek,ili7807s.yaml | 80 ++++++++++++++++++++++
MAINTAINERS | 7 ++
2 files changed, 87 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
new file mode 100644
index 000000000000..93c511d03c00
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/ilitek,ili7807s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ilitek ILI7807S-based DSI panels
+
+maintainers:
+ - Arpit Saini <arpit.saini@oss.qualcomm.com>
+
+allOf:
+ - $ref: panel-common.yaml#
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - dlc,dlc0697
+ - const: ilitek,ili7807s
+
+ reg:
+ maxItems: 1
+ description: DSI virtual channel
+
+ reset-gpios: true
+
+ backlight-en-gpios:
+ description: Backlight enable GPIO (active high)
+
+ vddi-supply:
+ description: I/O voltage supply (1.8V)
+
+ avdd-supply:
+ description: Positive LCD bias supply (AVDD), typically +5.5V
+ (range 4.5V to 6.3V)
+
+ avee-supply:
+ description: Negative LCD bias supply (AVEE), typically -5.5V
+ (range -6.3V to -4.5V)
+
+ port: true
+
+required:
+ - compatible
+ - reg
+ - reset-gpios
+ - vddi-supply
+ - avdd-supply
+ - avee-supply
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ dsi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ panel@0 {
+ compatible = "dlc,dlc0697", "ilitek,ili7807s";
+ reg = <0>;
+
+ reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
+ backlight-en-gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>;
+
+ vddi-supply = <&pm4125_l15>;
+ avdd-supply = <&avdd>;
+ avee-supply = <&avee>;
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&dsi0_out>;
+ };
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 26060e51c067..529aed669401 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7941,6 +7941,13 @@ S: Maintained
F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
F: drivers/gpu/drm/bridge/chipone-icn6211.c
+DRM DRIVER FOR ILITEK ILI7807S DSI PANEL
+M: Arpit Saini <arpit.saini@oss.qualcomm.com>
+S: Maintained
+T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
+F: Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
+F: drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
+
DRM DRIVER FOR EBBG FT8719 PANEL
M: Joel Selvaraj <jo@jsfamily.in>
S: Maintained
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver
2026-05-18 11:04 [PATCH 0/2] drm/panel: Add driver for DLC DLC0697 DSI panel Arpit Saini
2026-05-18 11:04 ` [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller Arpit Saini
@ 2026-05-18 11:04 ` Arpit Saini
2026-05-18 13:50 ` Neil Armstrong
1 sibling, 1 reply; 13+ messages in thread
From: Arpit Saini @ 2026-05-18 11:04 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, quic_rajeevny, quic_vproddut, Arpit Saini
Add a DRM panel driver for the DLC DLC0697 1080x1920@60Hz MIPI DSI
panel based on the Ilitek ILI7807S display controller.
Backlight brightness is controlled by sending DCS commands
directly over DSI using mipi_dsi_dcs.
The panel operates in video burst mode with four data lanes using
RGB888 pixel format.
Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
---
drivers/gpu/drm/panel/Kconfig | 12 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-ilitek-ili7807s.c | 328 ++++++++++++++++++++++++++
3 files changed, 341 insertions(+)
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index 307152ad7759..226e4923aa3a 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -228,6 +228,18 @@ config DRM_PANEL_HYDIS_HV101HD1
If M is selected the module will be called panel-hydis-hv101hd1
+config DRM_PANEL_ILITEK_ILI7807S
+ tristate "Ilitek ILI7807S-based panels"
+ depends on OF
+ depends on DRM_MIPI_DSI
+ depends on BACKLIGHT_CLASS_DEVICE
+ help
+ Say Y if you want to enable support for panels based on the
+ Ilitek ILI7807S display controller, such as the DLC DLC0697
+ 1080x1920 MIPI DSI panel.
+
+ If M is selected the module will be called panel-ilitek-ili7807s.
+
config DRM_PANEL_ILITEK_IL9322
tristate "Ilitek ILI9322 320x240 QVGA panels"
depends on OF && SPI
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index aeffaa95666d..13bd324e17a8 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) += panel-himax-hx83112a.o
obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112B) += panel-himax-hx83112b.o
obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o
obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) += panel-hydis-hv101hd1.o
+obj-$(CONFIG_DRM_PANEL_ILITEK_ILI7807S) += panel-ilitek-ili7807s.o
obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) += panel-ilitek-ili9805.o
diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c b/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
new file mode 100644
index 000000000000..09288b602a94
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
@@ -0,0 +1,328 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regulator/consumer.h>
+
+#include <drm/drm_mipi_dsi.h>
+#include <drm/drm_modes.h>
+#include <drm/drm_panel.h>
+#include <drm/drm_probe_helper.h>
+
+struct panel_desc {
+ const struct drm_display_mode *mode;
+ unsigned int lanes;
+ enum mipi_dsi_pixel_format format;
+ unsigned long mode_flags;
+ void (*init)(struct mipi_dsi_multi_context *dsi_ctx);
+};
+
+struct ili7807s {
+ struct drm_panel panel;
+ struct mipi_dsi_device *dsi;
+ const struct panel_desc *desc;
+
+ struct regulator_bulk_data *supplies;
+ struct gpio_desc *reset_gpio;
+ struct gpio_desc *backlight_en_gpio;
+};
+
+static const struct regulator_bulk_data ili7807s_supplies[] = {
+ { .supply = "vddi" },
+ { .supply = "avdd" },
+ { .supply = "avee" },
+};
+
+static inline struct ili7807s *to_ili7807s(struct drm_panel *panel)
+{
+ return container_of(panel, struct ili7807s, panel);
+}
+
+static void ili7807s_reset(struct ili7807s *ctx)
+{
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+ usleep_range(10000, 11000);
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+ usleep_range(10000, 11000);
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+ usleep_range(10000, 11000);
+}
+
+static void dlc0697_init_sequence(struct mipi_dsi_multi_context *dsi_ctx)
+{
+ mipi_dsi_dcs_soft_reset_multi(dsi_ctx);
+ mipi_dsi_msleep(dsi_ctx, 120);
+
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0xff, 0x78, 0x07, 0x00);
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x35, 0x00);
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x5e, 0x09, 0x99);
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x55, 0x01);
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x51, 0x3f, 0xff);
+
+ mipi_dsi_dcs_exit_sleep_mode_multi(dsi_ctx);
+ mipi_dsi_msleep(dsi_ctx, 120);
+
+ mipi_dsi_dcs_set_display_on_multi(dsi_ctx);
+ mipi_dsi_msleep(dsi_ctx, 20);
+}
+
+static int ili7807s_on(struct ili7807s *ctx)
+{
+ struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
+
+ ctx->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+ ctx->desc->init(&dsi_ctx);
+
+ ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ return dsi_ctx.accum_err;
+}
+
+static int ili7807s_off(struct ili7807s *ctx)
+{
+ struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
+
+ ctx->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+ 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);
+
+ ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ return dsi_ctx.accum_err;
+}
+
+static int ili7807s_enable(struct drm_panel *panel)
+{
+ struct ili7807s *ctx = to_ili7807s(panel);
+
+ if (ctx->backlight_en_gpio)
+ gpiod_set_value_cansleep(ctx->backlight_en_gpio, 1);
+
+ return 0;
+}
+
+static int ili7807s_disable(struct drm_panel *panel)
+{
+ struct ili7807s *ctx = to_ili7807s(panel);
+
+ if (ctx->backlight_en_gpio)
+ gpiod_set_value_cansleep(ctx->backlight_en_gpio, 0);
+
+ return 0;
+}
+
+static int ili7807s_prepare(struct drm_panel *panel)
+{
+ struct ili7807s *ctx = to_ili7807s(panel);
+ int ret;
+
+ ret = regulator_bulk_enable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
+ if (ret < 0) {
+ dev_err(ctx->panel.dev, "failed to enable regulators: %d\n", ret);
+ return ret;
+ }
+
+ msleep(20);
+
+ ili7807s_reset(ctx);
+
+ ret = ili7807s_on(ctx);
+ if (ret < 0) {
+ dev_err(ctx->panel.dev, "failed to initialise panel: %d\n", ret);
+ goto err;
+ }
+
+ return 0;
+
+err:
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+
+ regulator_bulk_disable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
+ return ret;
+}
+
+static int ili7807s_unprepare(struct drm_panel *panel)
+{
+ struct ili7807s *ctx = to_ili7807s(panel);
+ int ret;
+
+ ret = ili7807s_off(ctx);
+ if (ret < 0)
+ dev_err(ctx->panel.dev, "failed to disable panel: %d\n", ret);
+
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+
+ regulator_bulk_disable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
+
+ return 0;
+}
+
+static int ili7807s_get_modes(struct drm_panel *panel,
+ struct drm_connector *connector)
+{
+ struct ili7807s *ctx = to_ili7807s(panel);
+
+ return drm_connector_helper_get_modes_fixed(connector, ctx->desc->mode);
+}
+
+static const struct drm_panel_funcs ili7807s_panel_funcs = {
+ .prepare = ili7807s_prepare,
+ .unprepare = ili7807s_unprepare,
+ .enable = ili7807s_enable,
+ .disable = ili7807s_disable,
+ .get_modes = ili7807s_get_modes,
+};
+
+static int ili7807s_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 ret;
+}
+
+static const struct backlight_ops ili7807s_bl_ops = {
+ .update_status = ili7807s_bl_update_status,
+};
+
+static struct backlight_device *ili7807s_create_backlight(struct mipi_dsi_device *dsi)
+{
+ struct device *dev = &dsi->dev;
+ const struct backlight_properties props = {
+ .type = BACKLIGHT_RAW,
+ .brightness = 0x3fff,
+ .max_brightness = 0x3fff,
+ };
+
+ return devm_backlight_device_register(dev, dev_name(dev), dev, dsi,
+ &ili7807s_bl_ops, &props);
+}
+
+static const struct drm_display_mode dlc0697_mode = {
+ .clock = 131911,
+
+ .hdisplay = 1080,
+ .hsync_start = 1080 + 18,
+ .hsync_end = 1080 + 18 + 2,
+ .htotal = 1080 + 18 + 2 + 16,
+
+ .vdisplay = 1920,
+ .vsync_start = 1920 + 26,
+ .vsync_end = 1920 + 26 + 4,
+ .vtotal = 1920 + 26 + 4 + 20,
+
+ .width_mm = 0,
+ .height_mm = 0,
+ .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
+};
+
+static const struct panel_desc dlc0697_desc = {
+ .mode = &dlc0697_mode,
+ .lanes = 4,
+ .format = MIPI_DSI_FMT_RGB888,
+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
+ .init = dlc0697_init_sequence,
+};
+
+static int ili7807s_probe(struct mipi_dsi_device *dsi)
+{
+ struct device *dev = &dsi->dev;
+ const struct panel_desc *desc;
+ struct ili7807s *ctx;
+ int ret;
+
+ ctx = devm_drm_panel_alloc(dev, struct ili7807s, panel,
+ &ili7807s_panel_funcs,
+ DRM_MODE_CONNECTOR_DSI);
+ if (IS_ERR(ctx))
+ return PTR_ERR(ctx);
+
+ desc = of_device_get_match_data(dev);
+ ctx->desc = desc;
+
+ ret = devm_regulator_bulk_get_const(dev, ARRAY_SIZE(ili7807s_supplies),
+ ili7807s_supplies, &ctx->supplies);
+ if (ret < 0)
+ return dev_err_probe(dev, ret, "failed to get regulators\n");
+
+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
+ if (IS_ERR(ctx->reset_gpio))
+ return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
+ "failed to get reset gpio\n");
+
+ ctx->backlight_en_gpio = devm_gpiod_get_optional(dev, "backlight-en",
+ GPIOD_OUT_LOW);
+ if (IS_ERR(ctx->backlight_en_gpio))
+ return dev_err_probe(dev, PTR_ERR(ctx->backlight_en_gpio),
+ "failed to get backlight-en gpio\n");
+
+ ctx->dsi = dsi;
+ mipi_dsi_set_drvdata(dsi, ctx);
+
+ dsi->lanes = desc->lanes;
+ dsi->format = desc->format;
+ dsi->mode_flags = desc->mode_flags;
+
+ ctx->panel.prepare_prev_first = true;
+
+ ctx->panel.backlight = ili7807s_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 = devm_mipi_dsi_attach(dev, dsi);
+ if (ret < 0)
+ return dev_err_probe(dev, ret, "failed to attach dsi\n");
+
+ return 0;
+}
+
+static void ili7807s_remove(struct mipi_dsi_device *dsi)
+{
+ struct ili7807s *ctx = mipi_dsi_get_drvdata(dsi);
+
+ drm_panel_remove(&ctx->panel);
+}
+
+static const struct of_device_id ili7807s_of_match[] = {
+ { .compatible = "dlc,dlc0697", .data = &dlc0697_desc },
+ { }
+};
+MODULE_DEVICE_TABLE(of, ili7807s_of_match);
+
+static struct mipi_dsi_driver ili7807s_dsi_driver = {
+ .probe = ili7807s_probe,
+ .remove = ili7807s_remove,
+ .driver = {
+ .name = "panel-ilitek-ili7807s",
+ .of_match_table = ili7807s_of_match,
+ },
+};
+module_mipi_dsi_driver(ili7807s_dsi_driver);
+
+MODULE_AUTHOR("Arpit Saini <arpit.saini@oss.qualcomm.com>");
+MODULE_DESCRIPTION("Panel driver for Ilitek ILI7807S LCD DSI panel");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver
2026-05-18 11:04 ` [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver Arpit Saini
@ 2026-05-18 13:50 ` Neil Armstrong
0 siblings, 0 replies; 13+ messages in thread
From: Neil Armstrong @ 2026-05-18 13:50 UTC (permalink / raw)
To: Arpit Saini, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, quic_rajeevny, quic_vproddut
Hi,
On 5/18/26 13:04, Arpit Saini wrote:
> Add a DRM panel driver for the DLC DLC0697 1080x1920@60Hz MIPI DSI
> panel based on the Ilitek ILI7807S display controller.
>
> Backlight brightness is controlled by sending DCS commands
> directly over DSI using mipi_dsi_dcs.
>
> The panel operates in video burst mode with four data lanes using
> RGB888 pixel format.
>
> Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
> ---
> drivers/gpu/drm/panel/Kconfig | 12 +
> drivers/gpu/drm/panel/Makefile | 1 +
> drivers/gpu/drm/panel/panel-ilitek-ili7807s.c | 328 ++++++++++++++++++++++++++
> 3 files changed, 341 insertions(+)
>
> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
> index 307152ad7759..226e4923aa3a 100644
> --- a/drivers/gpu/drm/panel/Kconfig
> +++ b/drivers/gpu/drm/panel/Kconfig
> @@ -228,6 +228,18 @@ config DRM_PANEL_HYDIS_HV101HD1
>
> If M is selected the module will be called panel-hydis-hv101hd1
>
> +config DRM_PANEL_ILITEK_ILI7807S
> + tristate "Ilitek ILI7807S-based panels"
> + depends on OF
> + depends on DRM_MIPI_DSI
> + depends on BACKLIGHT_CLASS_DEVICE
> + help
> + Say Y if you want to enable support for panels based on the
> + Ilitek ILI7807S display controller, such as the DLC DLC0697
> + 1080x1920 MIPI DSI panel.
> +
> + If M is selected the module will be called panel-ilitek-ili7807s.
> +
> config DRM_PANEL_ILITEK_IL9322
> tristate "Ilitek ILI9322 320x240 QVGA panels"
> depends on OF && SPI
> diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
> index aeffaa95666d..13bd324e17a8 100644
> --- a/drivers/gpu/drm/panel/Makefile
> +++ b/drivers/gpu/drm/panel/Makefile
> @@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) += panel-himax-hx83112a.o
> obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112B) += panel-himax-hx83112b.o
> obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o
> obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) += panel-hydis-hv101hd1.o
> +obj-$(CONFIG_DRM_PANEL_ILITEK_ILI7807S) += panel-ilitek-ili7807s.o
> obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o
> obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o
> obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) += panel-ilitek-ili9805.o
> diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c b/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
> new file mode 100644
> index 000000000000..09288b602a94
> --- /dev/null
> +++ b/drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
> @@ -0,0 +1,328 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#include <linux/backlight.h>
> +#include <linux/delay.h>
> +#include <linux/gpio/consumer.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/regulator/consumer.h>
> +
> +#include <drm/drm_mipi_dsi.h>
> +#include <drm/drm_modes.h>
> +#include <drm/drm_panel.h>
> +#include <drm/drm_probe_helper.h>
> +
> +struct panel_desc {
> + const struct drm_display_mode *mode;
> + unsigned int lanes;
> + enum mipi_dsi_pixel_format format;
> + unsigned long mode_flags;
> + void (*init)(struct mipi_dsi_multi_context *dsi_ctx);
> +};
> +
> +struct ili7807s {
> + struct drm_panel panel;
> + struct mipi_dsi_device *dsi;
> + const struct panel_desc *desc;
> +
> + struct regulator_bulk_data *supplies;
> + struct gpio_desc *reset_gpio;
> + struct gpio_desc *backlight_en_gpio;
> +};
> +
> +static const struct regulator_bulk_data ili7807s_supplies[] = {
> + { .supply = "vddi" },
> + { .supply = "avdd" },
> + { .supply = "avee" },
> +};
> +
> +static inline struct ili7807s *to_ili7807s(struct drm_panel *panel)
> +{
> + return container_of(panel, struct ili7807s, panel);
> +}
> +
> +static void ili7807s_reset(struct ili7807s *ctx)
> +{
> + gpiod_set_value_cansleep(ctx->reset_gpio, 0);
> + usleep_range(10000, 11000);
> + gpiod_set_value_cansleep(ctx->reset_gpio, 1);
> + usleep_range(10000, 11000);
> + gpiod_set_value_cansleep(ctx->reset_gpio, 0);
> + usleep_range(10000, 11000);
> +}
> +
> +static void dlc0697_init_sequence(struct mipi_dsi_multi_context *dsi_ctx)
> +{
> + mipi_dsi_dcs_soft_reset_multi(dsi_ctx);
> + mipi_dsi_msleep(dsi_ctx, 120);
> +
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0xff, 0x78, 0x07, 0x00);
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x35, 0x00);
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x5e, 0x09, 0x99);
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x55, 0x01);
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x51, 0x3f, 0xff);
> +
> + mipi_dsi_dcs_exit_sleep_mode_multi(dsi_ctx);
> + mipi_dsi_msleep(dsi_ctx, 120);
> +
> + mipi_dsi_dcs_set_display_on_multi(dsi_ctx);
> + mipi_dsi_msleep(dsi_ctx, 20);
> +}
> +
> +static int ili7807s_on(struct ili7807s *ctx)
> +{
> + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
> +
> + ctx->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
> +
> + ctx->desc->init(&dsi_ctx);
> +
> + ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
> +
> + return dsi_ctx.accum_err;
> +}
> +
> +static int ili7807s_off(struct ili7807s *ctx)
> +{
> + struct mipi_dsi_multi_context dsi_ctx = { .dsi = ctx->dsi };
> +
> + ctx->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
> +
> + 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);
> +
> + ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
> +
> + return dsi_ctx.accum_err;
> +}
> +
> +static int ili7807s_enable(struct drm_panel *panel)
> +{
> + struct ili7807s *ctx = to_ili7807s(panel);
> +
> + if (ctx->backlight_en_gpio)
Drop the check, if backlight_en_gpio is NULL (since optional), set_value will be a no-op.
> + gpiod_set_value_cansleep(ctx->backlight_en_gpio, 1);
> +
> + return 0;
> +}
> +
> +static int ili7807s_disable(struct drm_panel *panel)
> +{
> + struct ili7807s *ctx = to_ili7807s(panel);
> +
> + if (ctx->backlight_en_gpio)
Ditto
> + gpiod_set_value_cansleep(ctx->backlight_en_gpio, 0);
> +
> + return 0;
> +}
> +
> +static int ili7807s_prepare(struct drm_panel *panel)
> +{
> + struct ili7807s *ctx = to_ili7807s(panel);
> + int ret;
> +
> + ret = regulator_bulk_enable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
> + if (ret < 0) {
> + dev_err(ctx->panel.dev, "failed to enable regulators: %d\n", ret);
> + return ret;
> + }
> +
> + msleep(20);
> +
> + ili7807s_reset(ctx);
> +
> + ret = ili7807s_on(ctx);
> + if (ret < 0) {
> + dev_err(ctx->panel.dev, "failed to initialise panel: %d\n", ret);
> + goto err;
> + }
> +
> + return 0;
> +
> +err:
> + gpiod_set_value_cansleep(ctx->reset_gpio, 1);
> +
> + regulator_bulk_disable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
> + return ret;
> +}
> +
> +static int ili7807s_unprepare(struct drm_panel *panel)
> +{
> + struct ili7807s *ctx = to_ili7807s(panel);
> + int ret;
> +
> + ret = ili7807s_off(ctx);
> + if (ret < 0)
> + dev_err(ctx->panel.dev, "failed to disable panel: %d\n", ret);
> +
> + gpiod_set_value_cansleep(ctx->reset_gpio, 1);
> +
> + regulator_bulk_disable(ARRAY_SIZE(ili7807s_supplies), ctx->supplies);
> +
> + return 0;
> +}
> +
> +static int ili7807s_get_modes(struct drm_panel *panel,
> + struct drm_connector *connector)
> +{
> + struct ili7807s *ctx = to_ili7807s(panel);
> +
> + return drm_connector_helper_get_modes_fixed(connector, ctx->desc->mode);
> +}
> +
> +static const struct drm_panel_funcs ili7807s_panel_funcs = {
> + .prepare = ili7807s_prepare,
> + .unprepare = ili7807s_unprepare,
> + .enable = ili7807s_enable,
> + .disable = ili7807s_disable,
> + .get_modes = ili7807s_get_modes,
> +};
> +
> +static int ili7807s_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;
Add back MIPI_DSI_MODE_LPM before checking ret like :
+ dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ ret = mipi_dsi_dcs_set_display_brightness_large(dsi, brightness);
+ dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+ if (ret < 0)
+ return ret;
> +
> + return ret;
> +}
> +
> +static const struct backlight_ops ili7807s_bl_ops = {
> + .update_status = ili7807s_bl_update_status,
> +};
> +
> +static struct backlight_device *ili7807s_create_backlight(struct mipi_dsi_device *dsi)
> +{
> + struct device *dev = &dsi->dev;
> + const struct backlight_properties props = {
> + .type = BACKLIGHT_RAW,
> + .brightness = 0x3fff,
> + .max_brightness = 0x3fff,
> + };
> +
> + return devm_backlight_device_register(dev, dev_name(dev), dev, dsi,
> + &ili7807s_bl_ops, &props);
> +}
> +
> +static const struct drm_display_mode dlc0697_mode = {
> + .clock = 131911,
> +
> + .hdisplay = 1080,
> + .hsync_start = 1080 + 18,
> + .hsync_end = 1080 + 18 + 2,
> + .htotal = 1080 + 18 + 2 + 16,
> +
> + .vdisplay = 1920,
> + .vsync_start = 1920 + 26,
> + .vsync_end = 1920 + 26 + 4,
> + .vtotal = 1920 + 26 + 4 + 20,
> +
> + .width_mm = 0,
> + .height_mm = 0,
> + .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
> +};
> +
> +static const struct panel_desc dlc0697_desc = {
> + .mode = &dlc0697_mode,
> + .lanes = 4,
> + .format = MIPI_DSI_FMT_RGB888,
> + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
> + .init = dlc0697_init_sequence,
> +};
> +
> +static int ili7807s_probe(struct mipi_dsi_device *dsi)
> +{
> + struct device *dev = &dsi->dev;
> + const struct panel_desc *desc;
> + struct ili7807s *ctx;
> + int ret;
> +
> + ctx = devm_drm_panel_alloc(dev, struct ili7807s, panel,
> + &ili7807s_panel_funcs,
> + DRM_MODE_CONNECTOR_DSI);
> + if (IS_ERR(ctx))
> + return PTR_ERR(ctx);
> +
> + desc = of_device_get_match_data(dev);
> + ctx->desc = desc;
> +
> + ret = devm_regulator_bulk_get_const(dev, ARRAY_SIZE(ili7807s_supplies),
> + ili7807s_supplies, &ctx->supplies);
> + if (ret < 0)
> + return dev_err_probe(dev, ret, "failed to get regulators\n");
> +
> + ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
> + if (IS_ERR(ctx->reset_gpio))
> + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
> + "failed to get reset gpio\n");
> +
> + ctx->backlight_en_gpio = devm_gpiod_get_optional(dev, "backlight-en",
> + GPIOD_OUT_LOW);
> + if (IS_ERR(ctx->backlight_en_gpio))
> + return dev_err_probe(dev, PTR_ERR(ctx->backlight_en_gpio),
> + "failed to get backlight-en gpio\n");
> +
> + ctx->dsi = dsi;
> + mipi_dsi_set_drvdata(dsi, ctx);
> +
> + dsi->lanes = desc->lanes;
> + dsi->format = desc->format;
> + dsi->mode_flags = desc->mode_flags;
> +
> + ctx->panel.prepare_prev_first = true;
> +
> + ctx->panel.backlight = ili7807s_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);
Switch to devm_drm_panel_add()
> +
> + ret = devm_mipi_dsi_attach(dev, dsi);
> + if (ret < 0)
> + return dev_err_probe(dev, ret, "failed to attach dsi\n");
> +
> + return 0;
> +}
> +
> +static void ili7807s_remove(struct mipi_dsi_device *dsi)
> +{
> + struct ili7807s *ctx = mipi_dsi_get_drvdata(dsi);
> +
> + drm_panel_remove(&ctx->panel);
> +}
And drop remove
> +
> +static const struct of_device_id ili7807s_of_match[] = {
> + { .compatible = "dlc,dlc0697", .data = &dlc0697_desc },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, ili7807s_of_match);
> +
> +static struct mipi_dsi_driver ili7807s_dsi_driver = {
> + .probe = ili7807s_probe,
> + .remove = ili7807s_remove,
> + .driver = {
> + .name = "panel-ilitek-ili7807s",
> + .of_match_table = ili7807s_of_match,
> + },
> +};
> +module_mipi_dsi_driver(ili7807s_dsi_driver);
> +
> +MODULE_AUTHOR("Arpit Saini <arpit.saini@oss.qualcomm.com>");
> +MODULE_DESCRIPTION("Panel driver for Ilitek ILI7807S LCD DSI panel");
> +MODULE_LICENSE("GPL");
>
Thanks,
Neil
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-18 11:04 ` [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller Arpit Saini
@ 2026-05-18 16:23 ` Dmitry Baryshkov
2026-05-20 12:54 ` Arpit Saini
2026-05-19 10:32 ` Krzysztof Kozlowski
1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Baryshkov @ 2026-05-18 16:23 UTC (permalink / raw)
To: Arpit Saini
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, quic_rajeevny,
quic_vproddut
On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>
> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
> supply (vddi), positive LCD bias supply (avdd) and negative LCD bias
> supply (avee). The panel operates in video burst mode with four data
> lanes using RGB888 pixel format.
>
> Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
> ---
> .../bindings/display/panel/ilitek,ili7807s.yaml | 80 ++++++++++++++++++++++
> MAINTAINERS | 7 ++
> 2 files changed, 87 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> new file mode 100644
> index 000000000000..93c511d03c00
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> @@ -0,0 +1,80 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/panel/ilitek,ili7807s.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Ilitek ILI7807S-based DSI panels
> +
> +maintainers:
> + - Arpit Saini <arpit.saini@oss.qualcomm.com>
> +
> +allOf:
> + - $ref: panel-common.yaml#
> +
> +properties:
> + compatible:
> + items:
> + - enum:
> + - dlc,dlc0697
> + - const: ilitek,ili7807s
> +
> + reg:
> + maxItems: 1
> + description: DSI virtual channel
> +
> + reset-gpios: true
> +
> + backlight-en-gpios:
> + description: Backlight enable GPIO (active high)
Is this actual GPIO or the GPIO-controlled supply?
> +
> + vddi-supply:
> + description: I/O voltage supply (1.8V)
> +
> + avdd-supply:
> + description: Positive LCD bias supply (AVDD), typically +5.5V
> + (range 4.5V to 6.3V)
> +
> + avee-supply:
> + description: Negative LCD bias supply (AVEE), typically -5.5V
> + (range -6.3V to -4.5V)
> +
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-18 11:04 ` [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller Arpit Saini
2026-05-18 16:23 ` Dmitry Baryshkov
@ 2026-05-19 10:32 ` Krzysztof Kozlowski
2026-05-20 12:40 ` Arpit Saini
1 sibling, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2026-05-19 10:32 UTC (permalink / raw)
To: Arpit Saini
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, quic_rajeevny,
quic_vproddut
On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>
> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
If panel requires it, so should the binding.
...
> + reg:
> + maxItems: 1
> + description: DSI virtual channel
> +
> + reset-gpios: true
> +
> + backlight-en-gpios:
> + description: Backlight enable GPIO (active high)
What is the name of the pin in ili7807s device?
> +
> + vddi-supply:
> + description: I/O voltage supply (1.8V)
> +
> + avdd-supply:
> + description: Positive LCD bias supply (AVDD), typically +5.5V
> + (range 4.5V to 6.3V)
> +
> + avee-supply:
> + description: Negative LCD bias supply (AVEE), typically -5.5V
> + (range -6.3V to -4.5V)
> +
> + port: true
> +
> +required:
> + - compatible
> + - reg
> + - reset-gpios
> + - vddi-supply
> + - avdd-supply
> + - avee-supply
> + - port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + dsi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + panel@0 {
> + compatible = "dlc,dlc0697", "ilitek,ili7807s";
> + reg = <0>;
> +
> + reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> + backlight-en-gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>;
> +
> + vddi-supply = <&pm4125_l15>;
> + avdd-supply = <&avdd>;
> + avee-supply = <&avee>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&dsi0_out>;
> + };
> + };
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 26060e51c067..529aed669401 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -7941,6 +7941,13 @@ S: Maintained
> F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
> F: drivers/gpu/drm/bridge/chipone-icn6211.c
>
> +DRM DRIVER FOR ILITEK ILI7807S DSI PANEL
> +M: Arpit Saini <arpit.saini@oss.qualcomm.com>
> +S: Maintained
> +T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
Drop, unless you handle patches for this driver.
> +F: Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> +F: drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
Drop, no such file at this point.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-19 10:32 ` Krzysztof Kozlowski
@ 2026-05-20 12:40 ` Arpit Saini
2026-05-20 13:19 ` Krzysztof Kozlowski
2026-05-20 13:26 ` Dmitry Baryshkov
0 siblings, 2 replies; 13+ messages in thread
From: Arpit Saini @ 2026-05-20 12:40 UTC (permalink / raw)
To: Krzysztof Kozlowski, dmitry.baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, rajeevny
Hi Krzysztof , Dmitry
On 5/19/2026 4:02 PM, Krzysztof Kozlowski wrote:
> On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
>> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
>> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>>
>> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
>
> If panel requires it, so should the binding.
>
Ack, I will update.
> ...
>
>> + reg:
>> + maxItems: 1
>> + description: DSI virtual channel
>> +
>> + reset-gpios: true
>> +
>> + backlight-en-gpios:
>> + description: Backlight enable GPIO (active high)
>
> What is the name of the pin in ili7807s device?
>
Display daughter card has WLED driver as well as LCD bias driver.
The WLED driver's Enable is coming from WLED_P1_EN and PWM is coming
from LCD_CABC output of the panel.
DISPLAY0_BACKLIGHT_ENABLE (GPIO 91) of ITP baseband card ==> WLED_P1_EN
of Display Daughter Card (DC)
In the display daughter card of Shikra ITP platform, we are not using
the external PWM for WLED driver. But connected the CABC output of the
panel to the WLED driver. Backlight update is happening using MIPI DCS
command which is driving the CABC output (i.e., PWM for WLED).
Because of above HW configuration, we need to enable the MIPI DCS
brightness update on this panel. The below command of
dlc0697_init_sequence() is enabling this.
mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
After checking this, I realized that this panel can be used without the
DCS backlight as well when it's using PWM based backlight control.
I can add `has_dcs_backlight` in panel_desc and set it true for
dlc0697. I will update bindings and add backlight as optional property.
Currently "backlight-en" as optional. I will fix the commit text as
Krzysztof pointed out and update the commit text to get add more clarity.
please let me know if you have any comments.
>> +
>> + vddi-supply:
>> + description: I/O voltage supply (1.8V)
>> +
>> + avdd-supply:
>> + description: Positive LCD bias supply (AVDD), typically +5.5V
>> + (range 4.5V to 6.3V)
>> +
>> + avee-supply:
>> + description: Negative LCD bias supply (AVEE), typically -5.5V
>> + (range -6.3V to -4.5V)
>> +
>> + port: true
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - reset-gpios
>> + - vddi-supply
>> + - avdd-supply
>> + - avee-supply
>> + - port
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/gpio/gpio.h>
>> +
>> + dsi {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + panel@0 {
>> + compatible = "dlc,dlc0697", "ilitek,ili7807s";
>> + reg = <0>;
>> +
>> + reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
>> + backlight-en-gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>;
>> +
>> + vddi-supply = <&pm4125_l15>;
>> + avdd-supply = <&avdd>;
>> + avee-supply = <&avee>;
>> +
>> + port {
>> + panel_in: endpoint {
>> + remote-endpoint = <&dsi0_out>;
>> + };
>> + };
>> + };
>> + };
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 26060e51c067..529aed669401 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -7941,6 +7941,13 @@ S: Maintained
>> F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
>> F: drivers/gpu/drm/bridge/chipone-icn6211.c
>>
>> +DRM DRIVER FOR ILITEK ILI7807S DSI PANEL
>> +M: Arpit Saini <arpit.saini@oss.qualcomm.com>
>> +S: Maintained
>> +T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
>
> Drop, unless you handle patches for this driver.
Ack, I will update.
>
>> +F: Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
>> +F: drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
>
> Drop, no such file at this point.
Ack, I will update.
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-18 16:23 ` Dmitry Baryshkov
@ 2026-05-20 12:54 ` Arpit Saini
2026-06-06 12:16 ` Dmitry Baryshkov
0 siblings, 1 reply; 13+ messages in thread
From: Arpit Saini @ 2026-05-20 12:54 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, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, quic_rajeevny,
quic_vproddut
Hi Dmitry,
On 5/18/2026 9:53 PM, Dmitry Baryshkov wrote:
> On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
>> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
>> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>>
>> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
>> supply (vddi), positive LCD bias supply (avdd) and negative LCD bias
>> supply (avee). The panel operates in video burst mode with four data
>> lanes using RGB888 pixel format.
>>
>> Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
>> ---
>> .../bindings/display/panel/ilitek,ili7807s.yaml | 80 ++++++++++++++++++++++
>> MAINTAINERS | 7 ++
>> 2 files changed, 87 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
>> new file mode 100644
>> index 000000000000..93c511d03c00
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
>> @@ -0,0 +1,80 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/panel/ilitek,ili7807s.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Ilitek ILI7807S-based DSI panels
>> +
>> +maintainers:
>> + - Arpit Saini <arpit.saini@oss.qualcomm.com>
>> +
>> +allOf:
>> + - $ref: panel-common.yaml#
>> +
>> +properties:
>> + compatible:
>> + items:
>> + - enum:
>> + - dlc,dlc0697
>> + - const: ilitek,ili7807s
>> +
>> + reg:
>> + maxItems: 1
>> + description: DSI virtual channel
>> +
>> + reset-gpios: true
>> +
>> + backlight-en-gpios:
>> + description: Backlight enable GPIO (active high)
>
> Is this actual GPIO or the GPIO-controlled supply?
>
Addressed here
https://lore.kernel.org/all/dd065ccd-d7cb-45b5-8733-64b4f6571b3d@oss.qualcomm.com/
Thanks
Arpit
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-20 12:40 ` Arpit Saini
@ 2026-05-20 13:19 ` Krzysztof Kozlowski
2026-05-20 13:26 ` Dmitry Baryshkov
1 sibling, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2026-05-20 13:19 UTC (permalink / raw)
To: Arpit Saini, dmitry.baryshkov
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, rajeevny
On 20/05/2026 14:40, Arpit Saini wrote:
> Hi Krzysztof , Dmitry
>
> On 5/19/2026 4:02 PM, Krzysztof Kozlowski wrote:
>> On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
>>> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
>>> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>>>
>>> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
>>
>> If panel requires it, so should the binding.
>>
> Ack, I will update.
>> ...
>>
>>> + reg:
>>> + maxItems: 1
>>> + description: DSI virtual channel
>>> +
>>> + reset-gpios: true
>>> +
>>> + backlight-en-gpios:
>>> + description: Backlight enable GPIO (active high)
>>
>> What is the name of the pin in ili7807s device?
>>
> Display daughter card has WLED driver as well as LCD bias driver.
>
> The WLED driver's Enable is coming from WLED_P1_EN and PWM is coming
> from LCD_CABC output of the panel.
WLED driver is not ili7807s. LCD bias driver also sounds like something
else than ili7807s.
So my question stays.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-20 12:40 ` Arpit Saini
2026-05-20 13:19 ` Krzysztof Kozlowski
@ 2026-05-20 13:26 ` Dmitry Baryshkov
2026-05-26 10:32 ` Arpit Saini
1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Baryshkov @ 2026-05-20 13:26 UTC (permalink / raw)
To: Arpit Saini
Cc: Krzysztof Kozlowski, Neil Armstrong, Jessica Zhang, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, rajeevny
On Wed, May 20, 2026 at 06:10:57PM +0530, Arpit Saini wrote:
> Hi Krzysztof , Dmitry
>
> On 5/19/2026 4:02 PM, Krzysztof Kozlowski wrote:
> > On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
> > > ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
> > > The DLC DLC0697 1080x1920 LCD panel is based on this controller.
I can't find this panel on the DLC website. Do you have a pointer to the
product page?
> > >
> > > The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
> >
> > If panel requires it, so should the binding.
> >
> Ack, I will update.
> > ...
> >
> > > + reg:
> > > + maxItems: 1
> > > + description: DSI virtual channel
> > > +
> > > + reset-gpios: true
> > > +
> > > + backlight-en-gpios:
> > > + description: Backlight enable GPIO (active high)
> >
> > What is the name of the pin in ili7807s device?
> >
> Display daughter card has WLED driver as well as LCD bias driver.
What is the display daughter card here? Is it a Qualcomm board or is it
a part of the panel?
Also you wrote a lot of text, but you didn't really answer either of the
quesitons. Is there a GPIO on the panel connector that enables the
backlight? If not, this is some external supply on your (assumingly)
daughter card. And it should be modelled accordingly.
>
> The WLED driver's Enable is coming from WLED_P1_EN and PWM is coming from
> LCD_CABC output of the panel.
>
> DISPLAY0_BACKLIGHT_ENABLE (GPIO 91) of ITP baseband card ==> WLED_P1_EN of
> Display Daughter Card (DC)
>
> In the display daughter card of Shikra ITP platform, we are not using the
> external PWM for WLED driver. But connected the CABC output of the panel to
> the WLED driver. Backlight update is happening using MIPI DCS command which
> is driving the CABC output (i.e., PWM for WLED).
>
> Because of above HW configuration, we need to enable the MIPI DCS brightness
> update on this panel. The below command of dlc0697_init_sequence() is
> enabling this.
> mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
So, this should be then dependent on the presence of the backlight in
the DT. Either it is a panel-internal one, or an external one.
>
>
> After checking this, I realized that this panel can be used without the DCS
> backlight as well when it's using PWM based backlight control.
>
> I can add `has_dcs_backlight` in panel_desc and set it true for dlc0697. I
> will update bindings and add backlight as optional property.
Why? Use backlight property instead. It's already there. Anyway, you
really, really need to describe the panel in the bidings. Not your
daughter card.
>
> Currently "backlight-en" as optional. I will fix the commit text as
> Krzysztof pointed out and update the commit text to get add more clarity.
>
> please let me know if you have any comments.
> > > +
> > > + vddi-supply:
> > > + description: I/O voltage supply (1.8V)
> > > +
> > > + avdd-supply:
> > > + description: Positive LCD bias supply (AVDD), typically +5.5V
> > > + (range 4.5V to 6.3V)
> > > +
> > > + avee-supply:
> > > + description: Negative LCD bias supply (AVEE), typically -5.5V
> > > + (range -6.3V to -4.5V)
> > > +
> > > + port: true
> > > +
> > > +required:
> > > + - compatible
> > > + - reg
> > > + - reset-gpios
> > > + - vddi-supply
> > > + - avdd-supply
> > > + - avee-supply
> > > + - port
> > > +
> > > +additionalProperties: false
> > > +
> > > +examples:
> > > + - |
> > > + #include <dt-bindings/gpio/gpio.h>
> > > +
> > > + dsi {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + panel@0 {
> > > + compatible = "dlc,dlc0697", "ilitek,ili7807s";
> > > + reg = <0>;
> > > +
> > > + reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> > > + backlight-en-gpios = <&tlmm 91 GPIO_ACTIVE_HIGH>;
> > > +
> > > + vddi-supply = <&pm4125_l15>;
> > > + avdd-supply = <&avdd>;
> > > + avee-supply = <&avee>;
> > > +
> > > + port {
> > > + panel_in: endpoint {
> > > + remote-endpoint = <&dsi0_out>;
> > > + };
> > > + };
> > > + };
> > > + };
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index 26060e51c067..529aed669401 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -7941,6 +7941,13 @@ S: Maintained
> > > F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml
> > > F: drivers/gpu/drm/bridge/chipone-icn6211.c
> > > +DRM DRIVER FOR ILITEK ILI7807S DSI PANEL
> > > +M: Arpit Saini <arpit.saini@oss.qualcomm.com>
> > > +S: Maintained
> > > +T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
> >
> > Drop, unless you handle patches for this driver.
> Ack, I will update.
> >
> > > +F: Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> > > +F: drivers/gpu/drm/panel/panel-ilitek-ili7807s.c
> >
> > Drop, no such file at this point.
> Ack, I will update.
> >
> > Best regards,
> > Krzysztof
> >
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-20 13:26 ` Dmitry Baryshkov
@ 2026-05-26 10:32 ` Arpit Saini
2026-06-06 12:13 ` Dmitry Baryshkov
0 siblings, 1 reply; 13+ messages in thread
From: Arpit Saini @ 2026-05-26 10:32 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Krzysztof Kozlowski, Neil Armstrong, Jessica Zhang, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, rajeevny
Hi Krzysztof , Dmitry
On 5/20/2026 6:56 PM, Dmitry Baryshkov wrote:
> On Wed, May 20, 2026 at 06:10:57PM +0530, Arpit Saini wrote:
>> Hi Krzysztof , Dmitry
>>
>> On 5/19/2026 4:02 PM, Krzysztof Kozlowski wrote:
>>> On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
>>>> ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
>>>> The DLC DLC0697 1080x1920 LCD panel is based on this controller.
>
> I can't find this panel on the DLC website. Do you have a pointer to the
> product page?
>
https://v4.cecdn.yun300.cn/100001_2012175013/DLC0697AAL21MF-1.pdf
>>>>
>>>> The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
>>>
>>> If panel requires it, so should the binding.
>>>
>> Ack, I will update.
>>> ...
>>>
>>>> + reg:
>>>> + maxItems: 1
>>>> + description: DSI virtual channel
>>>> +
>>>> + reset-gpios: true
>>>> +
>>>> + backlight-en-gpios:
>>>> + description: Backlight enable GPIO (active high)
>>>
>>> What is the name of the pin in ili7807s device?
>>>
>> Display daughter card has WLED driver as well as LCD bias driver.
>
> What is the display daughter card here? Is it a Qualcomm board or is it
> a part of the panel?
>
> Also you wrote a lot of text, but you didn't really answer either of the
> quesitons. Is there a GPIO on the panel connector that enables the
> backlight? If not, this is some external supply on your (assumingly)
> daughter card. And it should be modelled accordingly.
>
>>
>> The WLED driver's Enable is coming from WLED_P1_EN and PWM is coming from
>> LCD_CABC output of the panel.
>>
>> DISPLAY0_BACKLIGHT_ENABLE (GPIO 91) of ITP baseband card ==> WLED_P1_EN of
>> Display Daughter Card (DC)
>>
>> In the display daughter card of Shikra ITP platform, we are not using the
>> external PWM for WLED driver. But connected the CABC output of the panel to
>> the WLED driver. Backlight update is happening using MIPI DCS command which
>> is driving the CABC output (i.e., PWM for WLED).
>>
>> Because of above HW configuration, we need to enable the MIPI DCS brightness
>> update on this panel. The below command of dlc0697_init_sequence() is
>> enabling this.
>> mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
>
> So, this should be then dependent on the presence of the backlight in
> the DT. Either it is a panel-internal one, or an external one.
>
>>
>>
>> After checking this, I realized that this panel can be used without the DCS
>> backlight as well when it's using PWM based backlight control.
>>
>> I can add `has_dcs_backlight` in panel_desc and set it true for dlc0697. I
>> will update bindings and add backlight as optional property.
>
> Why? Use backlight property instead. It's already there. Anyway, you
> really, really need to describe the panel in the bidings. Not your
> daughter card.
>
This `has_dcs_backlight` in panel_desc will serves both the purpose, as
for our current platform constraint , we need to create our own backlight.
But this panel can be used without the DCS
backlight as well when it's using PWM based backlight control.
So in this case I need to implement the backlight as implemented in
panel-novatek-nt36523.c, panel-himax-hx83121a.c.
with this implementation ,I will remove the backlight from the dt-bindings.
Please let me know,if I am missing something.
Thanks,
Arpit
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-26 10:32 ` Arpit Saini
@ 2026-06-06 12:13 ` Dmitry Baryshkov
0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Baryshkov @ 2026-06-06 12:13 UTC (permalink / raw)
To: Arpit Saini
Cc: Krzysztof Kozlowski, Neil Armstrong, Jessica Zhang, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
dri-devel, devicetree, linux-kernel, linux-arm-msm,
Ayushi Makhija, rajeevny
On Tue, May 26, 2026 at 04:02:45PM +0530, Arpit Saini wrote:
> Hi Krzysztof , Dmitry
>
> On 5/20/2026 6:56 PM, Dmitry Baryshkov wrote:
> > On Wed, May 20, 2026 at 06:10:57PM +0530, Arpit Saini wrote:
> > > Hi Krzysztof , Dmitry
> > >
> > > On 5/19/2026 4:02 PM, Krzysztof Kozlowski wrote:
> > > > On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
> > > > > ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
> > > > > The DLC DLC0697 1080x1920 LCD panel is based on this controller.
> >
> > I can't find this panel on the DLC website. Do you have a pointer to the
> > product page?
> >
> https://v4.cecdn.yun300.cn/100001_2012175013/DLC0697AAL21MF-1.pdf
"Invalid referrer"
> > > > >
> > > > > The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
> > > >
> > > > If panel requires it, so should the binding.
> > > >
> > > Ack, I will update.
> > > > ...
> > > >
> > > > > + reg:
> > > > > + maxItems: 1
> > > > > + description: DSI virtual channel
> > > > > +
> > > > > + reset-gpios: true
> > > > > +
> > > > > + backlight-en-gpios:
> > > > > + description: Backlight enable GPIO (active high)
> > > >
> > > > What is the name of the pin in ili7807s device?
> > > >
> > > Display daughter card has WLED driver as well as LCD bias driver.
> >
> > What is the display daughter card here? Is it a Qualcomm board or is it
> > a part of the panel?
> >
> > Also you wrote a lot of text, but you didn't really answer either of the
> > quesitons. Is there a GPIO on the panel connector that enables the
> > backlight? If not, this is some external supply on your (assumingly)
> > daughter card. And it should be modelled accordingly.
Still unanswered.
> >
> > >
> > > The WLED driver's Enable is coming from WLED_P1_EN and PWM is coming from
> > > LCD_CABC output of the panel.
> > >
> > > DISPLAY0_BACKLIGHT_ENABLE (GPIO 91) of ITP baseband card ==> WLED_P1_EN of
> > > Display Daughter Card (DC)
> > >
> > > In the display daughter card of Shikra ITP platform, we are not using the
> > > external PWM for WLED driver. But connected the CABC output of the panel to
> > > the WLED driver. Backlight update is happening using MIPI DCS command which
> > > is driving the CABC output (i.e., PWM for WLED).
> > >
> > > Because of above HW configuration, we need to enable the MIPI DCS brightness
> > > update on this panel. The below command of dlc0697_init_sequence() is
> > > enabling this.
> > > mipi_dsi_dcs_write_seq_multi(dsi_ctx, 0x53, 0x24);
> >
> > So, this should be then dependent on the presence of the backlight in
> > the DT. Either it is a panel-internal one, or an external one.
> >
> > >
> > >
> > > After checking this, I realized that this panel can be used without the DCS
> > > backlight as well when it's using PWM based backlight control.
> > >
> > > I can add `has_dcs_backlight` in panel_desc and set it true for dlc0697. I
> > > will update bindings and add backlight as optional property.
> >
> > Why? Use backlight property instead. It's already there. Anyway, you
> > really, really need to describe the panel in the bidings. Not your
> > daughter card.
> >
> This `has_dcs_backlight` in panel_desc will serves both the purpose, as for
> our current platform constraint , we need to create our own backlight.
> But this panel can be used without the DCS
> backlight as well when it's using PWM based backlight control.
>
> So in this case I need to implement the backlight as implemented in
> panel-novatek-nt36523.c, panel-himax-hx83121a.c.
>
> with this implementation ,I will remove the backlight from the dt-bindings.
Much easier. Call drm_panel_of_backlight() and if there is no error and
panel->backlight is still NULL, then create your own backlight device.
>
> Please let me know,if I am missing something.
>
> Thanks,
> Arpit
>
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller
2026-05-20 12:54 ` Arpit Saini
@ 2026-06-06 12:16 ` Dmitry Baryshkov
0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Baryshkov @ 2026-06-06 12:16 UTC (permalink / raw)
To: Arpit Saini
Cc: Neil Armstrong, Jessica Zhang, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree,
linux-kernel, linux-arm-msm, Ayushi Makhija, quic_rajeevny,
quic_vproddut
On Wed, May 20, 2026 at 06:24:20PM +0530, Arpit Saini wrote:
> Hi Dmitry,
>
> On 5/18/2026 9:53 PM, Dmitry Baryshkov wrote:
> > On Mon, May 18, 2026 at 04:34:12PM +0530, Arpit Saini wrote:
> > > ILI7807S is a DSI display controller used to drive MIPI-DSI panels.
> > > The DLC DLC0697 1080x1920 LCD panel is based on this controller.
> > >
> > > The panel requires a reset GPIO, backlight enable GPIO, I/O voltage
> > > supply (vddi), positive LCD bias supply (avdd) and negative LCD bias
> > > supply (avee). The panel operates in video burst mode with four data
> > > lanes using RGB888 pixel format.
> > >
> > > Signed-off-by: Arpit Saini <arpit.saini@oss.qualcomm.com>
> > > ---
> > > .../bindings/display/panel/ilitek,ili7807s.yaml | 80 ++++++++++++++++++++++
> > > MAINTAINERS | 7 ++
> > > 2 files changed, 87 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> > > new file mode 100644
> > > index 000000000000..93c511d03c00
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili7807s.yaml
> > > @@ -0,0 +1,80 @@
> > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/display/panel/ilitek,ili7807s.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Ilitek ILI7807S-based DSI panels
> > > +
> > > +maintainers:
> > > + - Arpit Saini <arpit.saini@oss.qualcomm.com>
> > > +
> > > +allOf:
> > > + - $ref: panel-common.yaml#
> > > +
> > > +properties:
> > > + compatible:
> > > + items:
> > > + - enum:
> > > + - dlc,dlc0697
> > > + - const: ilitek,ili7807s
> > > +
> > > + reg:
> > > + maxItems: 1
> > > + description: DSI virtual channel
> > > +
> > > + reset-gpios: true
> > > +
> > > + backlight-en-gpios:
> > > + description: Backlight enable GPIO (active high)
> >
> > Is this actual GPIO or the GPIO-controlled supply?
> >
> Addressed here https://lore.kernel.org/all/dd065ccd-d7cb-45b5-8733-64b4f6571b3d@oss.qualcomm.com/
It's not. Or, from your description, I can assume that it is a PWM
controller external to the panel. Please model it accordingly. I assume
there is no 'backlight-en' pin on the panel connector.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-06-06 12:16 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-18 11:04 [PATCH 0/2] drm/panel: Add driver for DLC DLC0697 DSI panel Arpit Saini
2026-05-18 11:04 ` [PATCH 1/2] dt-bindings: display: panel: add Ilitek ILI7807S panel controller Arpit Saini
2026-05-18 16:23 ` Dmitry Baryshkov
2026-05-20 12:54 ` Arpit Saini
2026-06-06 12:16 ` Dmitry Baryshkov
2026-05-19 10:32 ` Krzysztof Kozlowski
2026-05-20 12:40 ` Arpit Saini
2026-05-20 13:19 ` Krzysztof Kozlowski
2026-05-20 13:26 ` Dmitry Baryshkov
2026-05-26 10:32 ` Arpit Saini
2026-06-06 12:13 ` Dmitry Baryshkov
2026-05-18 11:04 ` [PATCH 2/2] drm/panel: add Ilitek ILI7807S panel driver Arpit Saini
2026-05-18 13:50 ` Neil Armstrong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox