From: Jani Nikula <jani.nikula@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Puthikorn Voravootivat <puthik@chromium.org>
Subject: Re: [PATCH 2/5] drm/i915: Correctly enable blacklight adjustment via DPCD
Date: Thu, 09 Mar 2017 12:03:15 +0200 [thread overview]
Message-ID: <87o9xahin0.fsf@intel.com> (raw)
In-Reply-To: <20170308213053.194062-3-puthik@chromium.org>
On Wed, 08 Mar 2017, Puthikorn Voravootivat <puthik@chromium.org> wrote:
> intel_dp_aux_enable_backlight() assumed that the register
> BACKLIGHT_BRIGHTNESS_CONTROL_MODE can only has value 01
> (DP_EDP_BACKLIGHT_CONTROL_MODE_PRESET) when initialize.
>
> This patch fixed that by handling all cases of that register.
>
> Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
> ---
> drivers/gpu/drm/i915/intel_dp_aux_backlight.c | 29 +++++++++++++++++++++------
> 1 file changed, 23 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/intel_dp_aux_backlight.c
> index abfb09c1269f..16cd1265d264 100644
> --- a/drivers/gpu/drm/i915/intel_dp_aux_backlight.c
> +++ b/drivers/gpu/drm/i915/intel_dp_aux_backlight.c
> @@ -101,15 +101,32 @@ static void intel_dp_aux_enable_backlight(struct intel_connector *connector)
> {
> struct intel_dp *intel_dp = enc_to_intel_dp(&connector->encoder->base);
> uint8_t dpcd_buf = 0;
> + uint8_t edp_backlight_mode = 0;
>
> set_aux_backlight_enable(intel_dp, true);
>
> - if ((drm_dp_dpcd_readb(&intel_dp->aux,
> - DP_EDP_BACKLIGHT_MODE_SET_REGISTER, &dpcd_buf) == 1) &&
> - ((dpcd_buf & DP_EDP_BACKLIGHT_CONTROL_MODE_MASK) ==
> - DP_EDP_BACKLIGHT_CONTROL_MODE_PRESET))
> - drm_dp_dpcd_writeb(&intel_dp->aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER,
> - (dpcd_buf | DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD));
That's clearly bonkers, it ends up selecting
DP_EDP_BACKLIGHT_CONTROL_MODE_PRODUCT by accident, not
DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD, because it doesn't mask the bits.
> + if (!drm_dp_dpcd_readb(&intel_dp->aux,
> + DP_EDP_BACKLIGHT_MODE_SET_REGISTER, &dpcd_buf)) {
> + return;
> + }
> +
> + edp_backlight_mode = dpcd_buf & DP_EDP_BACKLIGHT_CONTROL_MODE_MASK;
> +
> + switch (edp_backlight_mode) {
> + case DP_EDP_BACKLIGHT_CONTROL_MODE_PWM:
> + case DP_EDP_BACKLIGHT_CONTROL_MODE_PRESET:
> + dpcd_buf &= ~DP_EDP_BACKLIGHT_CONTROL_MODE_MASK;
> + dpcd_buf |= DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD;
> + drm_dp_dpcd_writeb(&intel_dp->aux,
> + DP_EDP_BACKLIGHT_MODE_SET_REGISTER, dpcd_buf);
> + break;
> +
> + /* Do nothing in these cases */
> + case DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD:
> + case DP_EDP_BACKLIGHT_CONTROL_MODE_PRODUCT:
Based on the current requirements for using DPCD backlight control, the
only power-on default we should end up here with is
DP_EDP_BACKLIGHT_CONTROL_MODE_PRESET.
In particular, I don't think we should accept the PRODUCT mode without
ensuring we output PWM to the eDP pins as well. And currently DPCD and
PWM controls are mutually exclusive.
BR,
Jani.
> + default:
> + break;
> + }
> }
>
> static void intel_dp_aux_disable_backlight(struct intel_connector *connector)
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-03-09 10:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-08 21:30 [PATCH 0/5] Enchancement to intel_dp_aux_backlight driver Puthikorn Voravootivat
2017-03-08 21:30 ` [PATCH 1/5] drm/i915: Fix condition check for backlight control via DPCD Puthikorn Voravootivat
2017-03-09 9:50 ` Jani Nikula
2017-03-09 21:15 ` Puthikorn Voravootivat
2017-03-08 21:30 ` [PATCH 2/5] drm/i915: Correctly enable blacklight adjustment " Puthikorn Voravootivat
2017-03-09 10:03 ` Jani Nikula [this message]
2017-03-08 21:30 ` [PATCH 3/5] drm/i915: Support dynamic backlight via DPCD register Puthikorn Voravootivat
2017-03-09 10:10 ` Jani Nikula
2017-03-08 21:30 ` [PATCH 4/5] drm/i915: Use highest frequency divider for PWM Puthikorn Voravootivat
2017-03-09 10:40 ` Jani Nikula
2017-03-09 21:18 ` Puthikorn Voravootivat
2017-03-08 21:30 ` [PATCH 5/5] drm/i915: Store brightness level in aux backlight driver Puthikorn Voravootivat
2017-03-08 22:17 ` ✓ Fi.CI.BAT: success for Enchancement to intel_dp_aux_backlight driver 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=87o9xahin0.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=puthik@chromium.org \
/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.