diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-08-14 18:22:03 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-09-03 05:05:19 -0400 |
commit | d9d9bced0a711ab5c14f8a6b6df497e5f27b783d (patch) | |
tree | 90a61727a8f30966c37c857d7ca2951b921e5b30 /drivers/gpu/drm/i915/dvo_ns2501.c | |
parent | bae06ca122a5f37bdd4d8faedae7881f53b145cd (diff) |
drm/i915: Init important ns2501 registers
In my earlier rewrite I missed a few important registers. Thomas Richter
noticed that they're needed to make his machine resume correctly.
Looks like IEGD does a one time init of these three registers. We don't
have a good one time init place in the ns2501 driver, so let's just
stick them into the .mode_set() hook and see if that helps things along.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Thomas Richter <richter@rus.uni-stuttgart.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/dvo_ns2501.c')
-rw-r--r-- | drivers/gpu/drm/i915/dvo_ns2501.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/dvo_ns2501.c b/drivers/gpu/drm/i915/dvo_ns2501.c index b2785716be2a..345235b12601 100644 --- a/drivers/gpu/drm/i915/dvo_ns2501.c +++ b/drivers/gpu/drm/i915/dvo_ns2501.c | |||
@@ -342,6 +342,12 @@ static const struct ns2501_reg regs_1024x768[][86] = { | |||
342 | }, | 342 | }, |
343 | }; | 343 | }; |
344 | 344 | ||
345 | static const struct ns2501_reg regs_init[] = { | ||
346 | [0] = { .offset = 0x35, .value = 0xff, }, | ||
347 | [1] = { .offset = 0x34, .value = 0x00, }, | ||
348 | [2] = { .offset = 0x08, .value = 0x30, }, | ||
349 | }; | ||
350 | |||
345 | struct ns2501_priv { | 351 | struct ns2501_priv { |
346 | bool quiet; | 352 | bool quiet; |
347 | const struct ns2501_reg *regs; | 353 | const struct ns2501_reg *regs; |
@@ -544,6 +550,10 @@ static void ns2501_mode_set(struct intel_dvo_device *dvo, | |||
544 | else | 550 | else |
545 | return; | 551 | return; |
546 | 552 | ||
553 | /* Hopefully doing it every time won't hurt... */ | ||
554 | for (i = 0; i < ARRAY_SIZE(regs_init); i++) | ||
555 | ns2501_writeb(dvo, regs_init[i].offset, regs_init[i].value); | ||
556 | |||
547 | ns->regs = regs_1024x768[mode_idx]; | 557 | ns->regs = regs_1024x768[mode_idx]; |
548 | 558 | ||
549 | for (i = 0; i < 84; i++) | 559 | for (i = 0; i < 84; i++) |