Message ID | 20230116224909.23884-4-mailingradian@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/mipi-dsi: 16-bit Brightness Endianness Fix | expand |
On 16/01/2023 23:49, Richard Acayan wrote: > This panel communicates brightness in big endian. This is not a quirk of > the panels themselves, but rather, a part of the MIPI standard. Use the > new mipi_dsi_dcs_set_display_brightness_large() function that properly > handles 16-bit brightness instead of bypassing the brightness functions > entirely. > > Signed-off-by: Richard Acayan <mailingradian@gmail.com> > --- > drivers/gpu/drm/panel/panel-visionox-vtdr6130.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c b/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c > index f9a6abc1e121..1092075b31a5 100644 > --- a/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c > +++ b/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c > @@ -243,12 +243,9 @@ static int visionox_vtdr6130_bl_update_status(struct backlight_device *bl) > { > struct mipi_dsi_device *dsi = bl_get_data(bl); > u16 brightness = backlight_get_brightness(bl); > - /* Panel needs big-endian order of brightness value */ > - u8 payload[2] = { brightness >> 8, brightness & 0xff }; > int ret; > > - ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_BRIGHTNESS, > - payload, sizeof(payload)); > + mipi_dsi_dcs_set_display_brightness_large(dsi, brightness); > if (ret < 0) > return ret; > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-MTP Thanks !
diff --git a/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c b/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c index f9a6abc1e121..1092075b31a5 100644 --- a/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c +++ b/drivers/gpu/drm/panel/panel-visionox-vtdr6130.c @@ -243,12 +243,9 @@ static int visionox_vtdr6130_bl_update_status(struct backlight_device *bl) { struct mipi_dsi_device *dsi = bl_get_data(bl); u16 brightness = backlight_get_brightness(bl); - /* Panel needs big-endian order of brightness value */ - u8 payload[2] = { brightness >> 8, brightness & 0xff }; int ret; - ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_BRIGHTNESS, - payload, sizeof(payload)); + mipi_dsi_dcs_set_display_brightness_large(dsi, brightness); if (ret < 0) return ret;
This panel communicates brightness in big endian. This is not a quirk of the panels themselves, but rather, a part of the MIPI standard. Use the new mipi_dsi_dcs_set_display_brightness_large() function that properly handles 16-bit brightness instead of bypassing the brightness functions entirely. Signed-off-by: Richard Acayan <mailingradian@gmail.com> --- drivers/gpu/drm/panel/panel-visionox-vtdr6130.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)