[PATCH 3.13 04/46] drm/i915: Fix PSR programming

From: Greg Kroah-Hartman
Date: Fri Mar 28 2014 - 13:45:08 EST


3.13-stable review patch. If anyone has any objections, please let me know.

------------------

From: Ben Widawsky <benjamin.widawsky@xxxxxxxxx>

commit 24bd9bf54d45d28089251cdf62bf14323d1aa827 upstream.

| has a higher precedence than ?. Therefore, the calculation doesn't do
at all what you would expect. Thanks to Ken for convincing me that this
was indeed the issue. Send me back to C programmer school, please.

I'm sort of surprised PSR was continuing to work for people. It should
be broken IMO (and it was broken for me, but I had assumed it never
worked).

Regression from:
commit ed8546ac1f99b850879f07b1e9b06b42fb0a36d9
Author: Ben Widawsky <benjamin.widawsky@xxxxxxxxx>
Date: Mon Nov 4 22:45:05 2013 -0800

drm/i915/bdw: Support eDP PSR

Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
Cc: Kenneth Graunke <kenneth.w.graunke@xxxxxxxxx>
Cc: Art Runyan <arthur.j.runyan@xxxxxxxxx>
Reported-by: "Kumar, Kiran S" <kiran.s.kumar@xxxxxxxxx>
Signed-off-by: Ben Widawsky <ben@xxxxxxxxxxxx>
Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
drivers/gpu/drm/i915/intel_dp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1634,7 +1634,7 @@ static void intel_edp_psr_enable_source(
val |= EDP_PSR_LINK_DISABLE;

I915_WRITE(EDP_PSR_CTL(dev), val |
- IS_BROADWELL(dev) ? 0 : link_entry_time |
+ (IS_BROADWELL(dev) ? 0 : link_entry_time) |
max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT |
idle_frames << EDP_PSR_IDLE_FRAME_SHIFT |
EDP_PSR_ENABLE);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/