All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Lee Shawn C <shawn.c.lee@intel.com>, intel-gfx@lists.freedesktop.org
Cc: Lee Shawn C <shawn.c.lee@intel.com>,
	Ville Syrjala <ville.syrjala@linux.intel.com>,
	Vandita Kulkarni <vandita.kulkarni@intel.com>,
	Cooper Chiou <cooper.chiou@intel.com>,
	William Tseng <william.tseng@intel.com>
Subject: Re: [Intel-gfx] [PATCH 5/5] drm/i915/dsi: Read/write proper brightness value via MIPI DCS command
Date: Wed, 01 Sep 2021 18:32:15 +0300	[thread overview]
Message-ID: <871r68b9c0.fsf@intel.com> (raw)
In-Reply-To: <20210901085445.427-6-shawn.c.lee@intel.com>

On Wed, 01 Sep 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.
> v3: Send one or two bytes brightness value depend on the precision.
>
> 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>
> ---
>  .../drm/i915/display/intel_dsi_dcs_backlight.c    | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 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 21ab9e1acb57..722411b5cb21 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
> @@ -47,33 +47,36 @@ static u32 dcs_get_backlight(struct intel_connector *connector, enum pipe unused
>  {
>  	struct intel_encoder *encoder = intel_attached_encoder(connector);
>  	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
> +	struct intel_panel *panel = &connector->panel;
>  	struct mipi_dsi_device *dsi_device;
> -	u8 data = 0;
> +	u8 data[2] = {0, 0};

	u8 data[2] = {};

>  	enum port port;

	size_t len = panel->backlight.max > U8_MAX ? 2 : 1;

>  
>  	/* 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_read(dsi_device, MIPI_DCS_GET_DISPLAY_BRIGHTNESS,
> -				  &data, sizeof(data));
> +				  &data,
> +				  (panel->backlight.max >> 8) ? sizeof(data) : 1);
>  		break;
>  	}
>  
> -	return data;
> +	return ((data[1] << 8) | data[0]);

Unnecessary braces around the whole thing.

>  }
>  
>  static void dcs_set_backlight(const struct drm_connector_state *conn_state, u32 level)
>  {
>  	struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder));
> +	struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel;
>  	struct mipi_dsi_device *dsi_device;
> -	u8 data = level;
> +	__be16 data = cpu_to_be16(level);

I think it's confusing to use __be16 in set and u8 data[2] in get. Let's
just use u8 data[2] in both. Especially because this one will always
write 0 for len == 1 as it's big-endian data!

You may have to do something like to keep it clear:

	size_t len = panel->backlight.max > U8_MAX ? 2 : 1;

	if (len == 1) {
		data[0] = level;
	} else {
		data[0] = level >> 8;
		data[1] = 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,
> -				   &data, sizeof(data));
> +				   &data,
> +				   (panel->backlight.max >> 8) ? sizeof(data) : 1);
>  	}
>  }

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2021-09-01 15:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01  8:54 [Intel-gfx] [PATCH 0/5] DSI driver improvement Lee Shawn C
2021-09-01  8:54 ` [Intel-gfx] [PATCH 1/5] drm/i915/dsi: wait for header and payload credit available Lee Shawn C
2021-09-01  8:54 ` [Intel-gfx] [PATCH 2/5] drm/i915/dsi: refine send MIPI DCS command sequence Lee Shawn C
2021-09-01  8:54 ` [Intel-gfx] [PATCH 3/5] drm/i915: Get proper min cdclk if vDSC enabled Lee Shawn C
2021-09-01  8:54 ` [Intel-gfx] [PATCH 4/5] drm/i915/dsi: Retrieve max brightness level from VBT Lee Shawn C
2021-09-01  8:54 ` [Intel-gfx] [PATCH 5/5] drm/i915/dsi: Read/write proper brightness value via MIPI DCS command Lee Shawn C
2021-09-01 15:32   ` Jani Nikula [this message]
2021-09-01  9:40 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for DSI driver improvement Patchwork
2021-09-01  9:41 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-09-01 10:09 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-01 11:58 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871r68b9c0.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=cooper.chiou@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=shawn.c.lee@intel.com \
    --cc=vandita.kulkarni@intel.com \
    --cc=ville.syrjala@linux.intel.com \
    --cc=william.tseng@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.