* [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on
@ 2026-11-01 21:24 Vladimir Zapolskiy
2026-11-01 21:24 ` [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first Vladimir Zapolskiy
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Vladimir Zapolskiy @ 2026-11-01 21:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
Two fixes for the Visionox R66451 panel driver, found while enabling the
panel on the Qualcomm SM8350-HDK display card.
The first change sends the DCS brightness value MSB first, as the panel
expects. Without it, the brightness does not follow the requested value,
and the default brightness is received as a different value.
The second change waits longer after the panel reset. With the current
10ms delay, the panel misses the initialization commands, does not exit
sleep mode, and the display stays black.
Vladimir Zapolskiy (2):
drm/panel: visionox-r66451: Send the brightness value MSB first
drm/panel: visionox-r66451: Wait longer after the panel reset
drivers/gpu/drm/panel/panel-visionox-r66451.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first
2026-11-01 21:24 [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Vladimir Zapolskiy
@ 2026-11-01 21:24 ` Vladimir Zapolskiy
2026-11-02 13:03 ` Neil Armstrong
2026-11-01 21:24 ` [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset Vladimir Zapolskiy
2026-11-02 13:47 ` [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Neil Armstrong
2 siblings, 1 reply; 6+ messages in thread
From: Vladimir Zapolskiy @ 2026-11-01 21:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
The panel expects to get two bytes of the DCS Set Display Brightness
command with the most significant byte first, and it uses the lower
12 bits of the value, use mipi_dsi_dcs_set_display_brightness_large()
to correct the programmed brightness values.
Tested on the SM8350-HDK display card, the display brightness increases
gradually with:
for v in $(seq 16 16 4095); do sleep 0.1; \
echo $v > /sys/class/backlight/ae94000.dsi.0/brightness; \
done
while without the change the display is dark during all writes.
Fixes: a6dfab2738fc ("drm/panel: Add driver for Visionox r66451 panel")
Signed-off-by: Vladimir Zapolskiy <vz@kernel.org>
---
drivers/gpu/drm/panel/panel-visionox-r66451.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-visionox-r66451.c b/drivers/gpu/drm/panel/panel-visionox-r66451.c
index 1efb139bb711..4f28bd3b6080 100644
--- a/drivers/gpu/drm/panel/panel-visionox-r66451.c
+++ b/drivers/gpu/drm/panel/panel-visionox-r66451.c
@@ -227,7 +227,7 @@ static int visionox_r66451_bl_update_status(struct backlight_device *bl)
struct mipi_dsi_device *dsi = bl_get_data(bl);
u16 brightness = backlight_get_brightness(bl);
- return mipi_dsi_dcs_set_display_brightness(dsi, brightness);
+ return mipi_dsi_dcs_set_display_brightness_large(dsi, brightness);
}
static const struct backlight_ops visionox_r66451_bl_ops = {
--
2.51.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first
2026-11-01 21:24 ` [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first Vladimir Zapolskiy
@ 2026-11-02 13:03 ` Neil Armstrong
0 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-11-02 13:03 UTC (permalink / raw)
To: Vladimir Zapolskiy, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
On 11/1/26 22:24, Vladimir Zapolskiy wrote:
> The panel expects to get two bytes of the DCS Set Display Brightness
> command with the most significant byte first, and it uses the lower
> 12 bits of the value, use mipi_dsi_dcs_set_display_brightness_large()
> to correct the programmed brightness values.
>
> Tested on the SM8350-HDK display card, the display brightness increases
> gradually with:
>
> for v in $(seq 16 16 4095); do sleep 0.1; \
> echo $v > /sys/class/backlight/ae94000.dsi.0/brightness; \
> done
>
> while without the change the display is dark during all writes.
>
> Fixes: a6dfab2738fc ("drm/panel: Add driver for Visionox r66451 panel")
> Signed-off-by: Vladimir Zapolskiy <vz@kernel.org>
> ---
> drivers/gpu/drm/panel/panel-visionox-r66451.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-visionox-r66451.c b/drivers/gpu/drm/panel/panel-visionox-r66451.c
> index 1efb139bb711..4f28bd3b6080 100644
> --- a/drivers/gpu/drm/panel/panel-visionox-r66451.c
> +++ b/drivers/gpu/drm/panel/panel-visionox-r66451.c
> @@ -227,7 +227,7 @@ static int visionox_r66451_bl_update_status(struct backlight_device *bl)
> struct mipi_dsi_device *dsi = bl_get_data(bl);
> u16 brightness = backlight_get_brightness(bl);
>
> - return mipi_dsi_dcs_set_display_brightness(dsi, brightness);
> + return mipi_dsi_dcs_set_display_brightness_large(dsi, brightness);
> }
>
> static const struct backlight_ops visionox_r66451_bl_ops = {
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Thanks,
Neil
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset
2026-11-01 21:24 [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Vladimir Zapolskiy
2026-11-01 21:24 ` [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first Vladimir Zapolskiy
@ 2026-11-01 21:24 ` Vladimir Zapolskiy
2026-11-02 13:03 ` Neil Armstrong
2026-11-02 13:47 ` [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Neil Armstrong
2 siblings, 1 reply; 6+ messages in thread
From: Vladimir Zapolskiy @ 2026-11-01 21:24 UTC (permalink / raw)
To: Neil Armstrong, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
The initialization sequence is sent 10ms after the panel reset is
deasserted, however on the SM8350-HDK display card the panel does not
answer a DCS read at that time, as a result the panel initialization
commands are lost, and the panel does not exit sleep mode and the display
stays black. With the first command sent about 15ms after the reset
the panel comes up reliably, so wait 20ms after deasserting the reset.
Fixes: a6dfab2738fc ("drm/panel: Add driver for Visionox r66451 panel")
Signed-off-by: Vladimir Zapolskiy <vz@kernel.org>
---
drivers/gpu/drm/panel/panel-visionox-r66451.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-visionox-r66451.c b/drivers/gpu/drm/panel/panel-visionox-r66451.c
index 4f28bd3b6080..b0559e8b1cb5 100644
--- a/drivers/gpu/drm/panel/panel-visionox-r66451.c
+++ b/drivers/gpu/drm/panel/panel-visionox-r66451.c
@@ -36,7 +36,7 @@ static void visionox_r66451_reset(struct visionox_r66451 *ctx)
gpiod_set_value_cansleep(ctx->reset_gpio, 1);
usleep_range(10000, 10100);
gpiod_set_value_cansleep(ctx->reset_gpio, 0);
- usleep_range(10000, 10100);
+ usleep_range(20000, 21000);
}
static int visionox_r66451_on(struct visionox_r66451 *ctx)
--
2.51.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset
2026-11-01 21:24 ` [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset Vladimir Zapolskiy
@ 2026-11-02 13:03 ` Neil Armstrong
0 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-11-02 13:03 UTC (permalink / raw)
To: Vladimir Zapolskiy, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
On 11/1/26 22:24, Vladimir Zapolskiy wrote:
> The initialization sequence is sent 10ms after the panel reset is
> deasserted, however on the SM8350-HDK display card the panel does not
> answer a DCS read at that time, as a result the panel initialization
> commands are lost, and the panel does not exit sleep mode and the display
> stays black. With the first command sent about 15ms after the reset
> the panel comes up reliably, so wait 20ms after deasserting the reset.
>
> Fixes: a6dfab2738fc ("drm/panel: Add driver for Visionox r66451 panel")
> Signed-off-by: Vladimir Zapolskiy <vz@kernel.org>
> ---
> drivers/gpu/drm/panel/panel-visionox-r66451.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-visionox-r66451.c b/drivers/gpu/drm/panel/panel-visionox-r66451.c
> index 4f28bd3b6080..b0559e8b1cb5 100644
> --- a/drivers/gpu/drm/panel/panel-visionox-r66451.c
> +++ b/drivers/gpu/drm/panel/panel-visionox-r66451.c
> @@ -36,7 +36,7 @@ static void visionox_r66451_reset(struct visionox_r66451 *ctx)
> gpiod_set_value_cansleep(ctx->reset_gpio, 1);
> usleep_range(10000, 10100);
> gpiod_set_value_cansleep(ctx->reset_gpio, 0);
> - usleep_range(10000, 10100);
> + usleep_range(20000, 21000);
> }
>
> static int visionox_r66451_on(struct visionox_r66451 *ctx)
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Thanks,
Neil
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on
2026-11-01 21:24 [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Vladimir Zapolskiy
2026-11-01 21:24 ` [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first Vladimir Zapolskiy
2026-11-01 21:24 ` [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset Vladimir Zapolskiy
@ 2026-11-02 13:47 ` Neil Armstrong
2 siblings, 0 replies; 6+ messages in thread
From: Neil Armstrong @ 2026-11-02 13:47 UTC (permalink / raw)
To: Jessica Zhang, Vladimir Zapolskiy
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel
Hi,
On Sun, 01 Nov 2026 23:24:56 +0200, Vladimir Zapolskiy wrote:
> Two fixes for the Visionox R66451 panel driver, found while enabling the
> panel on the Qualcomm SM8350-HDK display card.
>
> The first change sends the DCS brightness value MSB first, as the panel
> expects. Without it, the brightness does not follow the requested value,
> and the default brightness is received as a different value.
>
> [...]
Thanks, Applied to https://gitlab.freedesktop.org/drm/misc/kernel.git (drm-misc-fixes)
[1/2] drm/panel: visionox-r66451: Send the brightness value MSB first
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/00fe6be187ffde738fdb71ea7deb671fc939e583
[2/2] drm/panel: visionox-r66451: Wait longer after the panel reset
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/b4b2778d5e175b166e4a27e5df5d61da468ad004
--
Neil
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-11-02 13:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-01 21:24 [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Vladimir Zapolskiy
2026-11-01 21:24 ` [PATCH 1/2] drm/panel: visionox-r66451: Send the brightness value MSB first Vladimir Zapolskiy
2026-11-02 13:03 ` Neil Armstrong
2026-11-01 21:24 ` [PATCH 2/2] drm/panel: visionox-r66451: Wait longer after the panel reset Vladimir Zapolskiy
2026-11-02 13:03 ` Neil Armstrong
2026-11-02 13:47 ` [PATCH 0/2] drm/panel: visionox-r66451: Fix brightness and power on Neil Armstrong
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.