Message ID | 20210813024649.7197-1-shawn.c.lee@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4] drm/i915/dsi: Send proper brightness value via MIPI DCS command | expand |
On Fri, 13 Aug 2021, Lee Shawn C <shawn.c.lee@intel.com> wrote: > Driver has to swap the endian before send brightness level value > to tcon. > > v2: Use __be16 instead of u16 to fix sparse warning. > > Reported-by: kernel test robot <lkp@intel.com> > Cc: Ville Syrjala <ville.syrjala@linux.intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> > Cc: Cooper Chiou <cooper.chiou@intel.com> > Cc: William Tseng <william.tseng@intel.com> > Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c > index cd85520d36e2..71c2adfa8931 100644 > --- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c > +++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c > @@ -66,10 +66,9 @@ static void dcs_set_backlight(const struct drm_connector_state *conn_state, u32 > { > struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder)); > struct mipi_dsi_device *dsi_device; > - u8 data = level; > + __be16 data = cpu_to_be16(level); Just discussed this with Vandita. Both the set and get brightness need to be adjusted, and the read/write size (one or two bytes) has to depend on the precision. From MIPI DCS spec: Note: It is up to display manufacturer to determine the implementation of this register and background logic. Only one parameter shall be sent for devices that support 8-bit brightness levels. Two parameters shall be sent for devices that support between 9-bit and 16-bit brightness levels. BR, Jani. > enum port port; > > - /* FIXME: Need to take care of 16 bit brightness level */ > for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) { > dsi_device = intel_dsi->dsi_hosts[port]->device; > mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
On Wed, 18 Aug 2021, Jani Nikula <jani.nikula@linux.intel.com> wrote: >On Fri, 13 Aug 2021, Lee Shawn C <shawn.c.lee@intel.com> wrote: >> Driver has to swap the endian before send brightness level value to >> tcon. >> >> v2: Use __be16 instead of u16 to fix sparse warning. >> >> Reported-by: kernel test robot <lkp@intel.com> >> Cc: Ville Syrjala <ville.syrjala@linux.intel.com> >> Cc: Jani Nikula <jani.nikula@linux.intel.com> >> Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> >> Cc: Cooper Chiou <cooper.chiou@intel.com> >> Cc: William Tseng <william.tseng@intel.com> >> Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com> >> --- >> drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c >> b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c >> index cd85520d36e2..71c2adfa8931 100644 >> --- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c >> +++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c >> @@ -66,10 +66,9 @@ static void dcs_set_backlight(const struct >> drm_connector_state *conn_state, u32 { >> struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder)); >> struct mipi_dsi_device *dsi_device; >> - u8 data = level; >> + __be16 data = cpu_to_be16(level); > >Just discussed this with Vandita. Both the set and get brightness need to be adjusted, and the read/write size (one or two bytes) has to depend on the precision. From MIPI DCS spec: > > Note: It is up to display manufacturer to determine the > implementation of this register and background logic. Only one > parameter shall be sent for devices that support 8-bit > brightness levels. Two parameters shall be sent for devices that > support between 9-bit and 16-bit brightness levels. > >BR, >Jani. > OK! We will send a patch that modify read/write size depend on precision setting. Best regards, Shawn > >> enum port port; >> >> - /* FIXME: Need to take care of 16 bit brightness level */ >> for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) { >> dsi_device = intel_dsi->dsi_hosts[port]->device; >> mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS, > >-- >Jani Nikula, Intel Open Source Graphics Center
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c index cd85520d36e2..71c2adfa8931 100644 --- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c +++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c @@ -66,10 +66,9 @@ static void dcs_set_backlight(const struct drm_connector_state *conn_state, u32 { struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder)); struct mipi_dsi_device *dsi_device; - u8 data = level; + __be16 data = cpu_to_be16(level); enum port port; - /* FIXME: Need to take care of 16 bit brightness level */ for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) { dsi_device = intel_dsi->dsi_hosts[port]->device; mipi_dsi_dcs_write(dsi_device, MIPI_DCS_SET_DISPLAY_BRIGHTNESS,
Driver has to swap the endian before send brightness level value to tcon. v2: Use __be16 instead of u16 to fix sparse warning. Reported-by: kernel test robot <lkp@intel.com> Cc: Ville Syrjala <ville.syrjala@linux.intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> Cc: Cooper Chiou <cooper.chiou@intel.com> Cc: William Tseng <william.tseng@intel.com> Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com> --- drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)