Message ID | 20230116224909.23884-3-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: > These panels communicate 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 doing special processing > of the brightness values. > > Signed-off-by: Richard Acayan <mailingradian@gmail.com> > Tested-by: Caleb Connolly <caleb@connolly.tech> > --- > drivers/gpu/drm/panel/panel-samsung-sofef00.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-samsung-sofef00.c b/drivers/gpu/drm/panel/panel-samsung-sofef00.c > index 9db49a028930..1ebb79e3103c 100644 > --- a/drivers/gpu/drm/panel/panel-samsung-sofef00.c > +++ b/drivers/gpu/drm/panel/panel-samsung-sofef00.c > @@ -10,7 +10,6 @@ > #include <linux/of.h> > #include <linux/of_device.h> > #include <linux/regulator/consumer.h> > -#include <linux/swab.h> > #include <linux/backlight.h> > > #include <video/mipi_display.h> > @@ -213,13 +212,9 @@ static int sofef00_panel_bl_update_status(struct backlight_device *bl) > { > struct mipi_dsi_device *dsi = bl_get_data(bl); > int err; > - u16 brightness; > + u16 brightness = (u16)backlight_get_brightness(bl); > > - brightness = (u16)backlight_get_brightness(bl); > - // This panel needs the high and low bytes swapped for the brightness value > - brightness = __swab16(brightness); > - > - err = mipi_dsi_dcs_set_display_brightness(dsi, brightness); > + err = mipi_dsi_dcs_set_display_brightness_large(dsi, brightness); > if (err < 0) > return err; > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
diff --git a/drivers/gpu/drm/panel/panel-samsung-sofef00.c b/drivers/gpu/drm/panel/panel-samsung-sofef00.c index 9db49a028930..1ebb79e3103c 100644 --- a/drivers/gpu/drm/panel/panel-samsung-sofef00.c +++ b/drivers/gpu/drm/panel/panel-samsung-sofef00.c @@ -10,7 +10,6 @@ #include <linux/of.h> #include <linux/of_device.h> #include <linux/regulator/consumer.h> -#include <linux/swab.h> #include <linux/backlight.h> #include <video/mipi_display.h> @@ -213,13 +212,9 @@ static int sofef00_panel_bl_update_status(struct backlight_device *bl) { struct mipi_dsi_device *dsi = bl_get_data(bl); int err; - u16 brightness; + u16 brightness = (u16)backlight_get_brightness(bl); - brightness = (u16)backlight_get_brightness(bl); - // This panel needs the high and low bytes swapped for the brightness value - brightness = __swab16(brightness); - - err = mipi_dsi_dcs_set_display_brightness(dsi, brightness); + err = mipi_dsi_dcs_set_display_brightness_large(dsi, brightness); if (err < 0) return err;