1. 28 9月, 2015 1 次提交
    • R
      drm/i915/skl: Don't call intel_prepare_ddi when encoder list isn't yet initialized. · bc5f2ab1
      Rodrigo Vivi 提交于
      In case something goes wrong with power well initialization we were calling
      intel_prepare_ddi during boot while encoder list isnt't initilized.
      
      [    9.618747] i915 0000:00:02.0: Invalid ROM contents
      [    9.631446] [drm] failed to find VBIOS tables
      [    9.720036] BUG: unable to handle kernel NULL pointer dereference at 00000000
      00000058
      [    9.721986] IP: [<ffffffffa014eb72>] ddi_get_encoder_port+0x82/0x190 [i915]
      [    9.723736] PGD 0
      [    9.724286] Oops: 0000 [#1] PREEMPT SMP
      [    9.725386] Modules linked in: intel_powerclamp snd_hda_intel(+) coretemp crc
      32c_intel snd_hda_codec snd_hda_core serio_raw snd_pcm snd_timer i915(+) parport
      _pc parport pinctrl_sunrisepoint pinctrl_intel nfsd nfs_acl
      [    9.730635] CPU: 0 PID: 497 Comm: systemd-udevd Not tainted 4.3.0-rc2-eywa-10
      967-g72de2cfd-dirty #2
      [    9.732785] Hardware name: Intel Corporation Cannonlake Client platform/Skyla
      ke DT DDR4 RVP8, BIOS CNLSE2R1.R00.X021.B00.1508040310 08/04/2015
      [    9.735785] task: ffff88008a704700 ti: ffff88016a1ac000 task.ti: ffff88016a1a
      c000
      [    9.737584] RIP: 0010:[<ffffffffa014eb72>]  [<ffffffffa014eb72>] ddi_get_enco
      der_port+0x82/0x190 [i915]
      [    9.739934] RSP: 0000:ffff88016a1af710  EFLAGS: 00010296
      [    9.741184] RAX: 000000000000004e RBX: ffff88008a9edc98 RCX: 0000000000000001
      [    9.742934] RDX: 000000000000004e RSI: ffffffff81fc1e82 RDI: 00000000ffffffff
      [    9.744634] RBP: ffff88016a1af730 R08: 0000000000000000 R09: 0000000000000578
      [    9.746333] R10: 0000000000001065 R11: 0000000000000578 R12: fffffffffffffff8
      [    9.748033] R13: ffff88016a1af7a8 R14: ffff88016a1af794 R15: 0000000000000000
      [    9.749733] FS:  00007eff2e1e07c0(0000) GS:ffff88016fc00000(0000) knlGS:00000
      00000000000
      [    9.751683] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [    9.753083] CR2: 0000000000000058 CR3: 000000016922b000 CR4: 00000000003406f0
      [    9.754782] Stack:
      [    9.755332]  ffff88008a9edc98 ffff88008a9ed800 ffffffffa01d07b0 00000000fffb9
      09e
      [    9.757232]  ffff88016a1af7d8 ffffffffa0154ea7 0000000000000246 ffff88016a370
      080
      [    9.759182]  ffff88016a370080 ffff88008a9ed800 0000000000000246 ffff88008a9ed
      c98
      [    9.761132] Call Trace:
      [    9.761782]  [<ffffffffa0154ea7>] intel_prepare_ddi+0x67/0x860 [i915]
      [    9.763332]  [<ffffffff81a56996>] ? _raw_spin_unlock_irqrestore+0x26/0x40
      [    9.765031]  [<ffffffffa00fad01>] ? gen9_read32+0x141/0x360 [i915]
      [    9.766531]  [<ffffffffa00b43e1>] skl_set_power_well+0x431/0xa80 [i915]
      [    9.768181]  [<ffffffffa00b4a63>] skl_power_well_enable+0x13/0x20 [i915]
      [    9.769781]  [<ffffffffa00b2188>] intel_power_well_enable+0x28/0x50 [i915]
      [    9.771481]  [<ffffffffa00b4d52>] intel_display_power_get+0x92/0xc0 [i915]
      [    9.773180]  [<ffffffffa00b4fcb>] intel_display_set_init_power+0x3b/0x40 [i91
      5]
      [    9.774980]  [<ffffffffa00b5170>] intel_power_domains_init_hw+0x120/0x520 [i9
      15]
      [    9.776780]  [<ffffffffa0194c61>] i915_driver_load+0xb21/0xf40 [i915]
      
      So let's protect this case.
      
      My first attempt was to remove the intel_prepare_ddi, but Daniel had pointed out
      this is really needed to restore those registers values. And Imre pointed out
      that this case was without the flag protection and this was actually where things
      were going bad. So I've just checked and this indeed solves my issue.
      
      The regressing intel_prepare_ddi call was added in
      
      commit 1d2b9526
      Author: Damien Lespiau <damien.lespiau@intel.com>
      Date:   Fri Mar 6 18:50:53 2015 +0000
      
          drm/i915/skl: Restore the DDI translation tables when enabling PW1
      
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      [Jani: regression reference]
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      bc5f2ab1
  2. 31 8月, 2015 1 次提交
  3. 05 8月, 2015 2 次提交
  4. 13 7月, 2015 4 次提交
  5. 28 5月, 2015 2 次提交
  6. 20 5月, 2015 1 次提交
  7. 08 5月, 2015 10 次提交
    • V
      Revert "drm/i915: Hack to tie both common lanes together on chv" · 71849b67
      Ville Syrjälä 提交于
      With recent hardware/firmware there don't appear to be any glitches
      on the other PHY when we toggle the cmnreset for the other PHY. So
      detangle the cmnlane power wells from one another and let them be
      controlled independently.
      
      This reverts commit 3dd7b974.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDeepak S <deepak.s@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      71849b67
    • V
      drm/i915: Work around DISPLAY_PHY_CONTROL register corruption on CHV · 70722468
      Ville Syrjälä 提交于
      Sometimes (exactly when is a bit unclear) DISPLAY_PHY_CONTROL appears to
      get corrupted. The values I've managed to read from it seem to have some
      pattern but vary quite a lot. The corruption doesn't seem to just happen
      when the register is accessed, but can also happen spontaneosly during
      modeset. When this happens during a modeset things go south and the
      display doesn't light up.
      
      I've managed to hit the problemn when toggling HDMI on port D on and
      off. When things get corrupted the display doesn't light up, but as soon
      as I manually write the correct value to the register the display comes
      up.
      
      First I was suspicious that we ourselves accidentally overwrite it with
      garbage, but didn't catch anything with the reg_rw tracepoint. Also I
      sprinkled check all over the modeset path to see exactly when the
      corruption happens, and eg. the read back value was fine just before
      intel_dp_set_m(), and corrupted immediately after it. I also made my
      check function repair the register value whenever it was wrong, and with
      this approach the corruption repeated several times during the modeset
      operation, always seeming to trigger in the same exact calls to the
      check function, while other calls to the function never caught anything.
      
      So far I've not seen this problem occurring when carefully avoiding all
      read accesses to DISPLAY_PHY_CONTROL. Not sure if that's just pure luck
      or an actual workaround, but we can hope it works. So let's avoid reading
      the register and instead track the desired value of the register in dev_priv.
      
      v2: Read out the power well state to determine initial register value
      v3: Use DPIO_CHx names instead of raw numbers
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NDeepak S <deepak.s@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      70722468
    • D
      drm/i915/skl: Make the Misc I/O power well part of the PLLS domain · 6222709d
      Damien Lespiau 提交于
      The specs tell us to ungate PG1 and Misc I/O at display init. We'll use
      the PLLS power domain to ensure those two power wells are up.
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6222709d
    • D
    • S
      drm/i915/skl: Assert the requirements to enter or exit DC6. · 93c7cb6c
      Suketu Shah 提交于
      Warn if the conditions to enter or exit DC6 are not satisfied such
      as support for runtime PM, state of power well, CSR loading etc.
      
      v2: Removed camelcase in functions and variables.
      
      v3: Do some minimal check to assert if CSR program is not loaded.
      
      v4:
      1] Correct the check for backlight-disabling in assert_can_enable_dc6().
      2] Check csr.loaded = false before disabling DC6 and simplify other checks.
      
      v5:
      1] Remove checks for DC5 state from assert_can_enable_dc6 function as DC5 is no
         longer enabled before enabling DC6.
      2] Correct the check for CSR-loading in assert_can_disable_dc6 function as CSR must
         be loaded for context restore to happen on DC6 disabling.
      
      v6:
      1] It's okay to explicitly disable DC6 during driver-load/resume even though it might
         already be disabled and so don't warn about it.
      
      v7: Rebase to latest.
      
      v8: Sqashed the patch from Imre -
      [PATCH] drm/i915/skl: avoid false CSR fw not loaded WARN during driver load/resume
      
      v9: After adding dmc ver 1.0 support rebased on top of nightly. (Animesh)
      
      v10: During initialization added a early return before disabling DC5. (Animesh)
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NSuketu Shah <suketu.j.shah@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      93c7cb6c
    • A
      Implement enable/disable for Display C6 state · 74b4f371
      A.Sunil Kamath 提交于
      This patch just implements the basic enable and disable
      functions of DC6 state which is needed for SKL platform.
      
      Its important to load SKL CSR program before calling enable.
      
      DC6 is a deeper power saving state where hardware dynamically
      disables power well 0 and saves the associated registers.
      DC6 can be entered when software allows it, the conditions
      for DC5 are met, and the PCU allows DC6.
      DC6 cannot be used if the backlight is being driven from the
      display utility pin.
      
      Its better to configure display engine to have power well 2
      disabled before getting into DC6 enable function. Hence rpm
      framework will ensure to check status of power well 2 and DC5
      before calling skl_enable_dc6.
      
      v2: Replace HAS_ with IS_ check as per Daniel's review comments
      
      v3: Cleared the bits dc5/dc6 enable of DC_STATE_EN register
      before setting them as per Satheesh's review comments.
      
      v4: No need to call gen9_disable_dc5 inside enable sequence of
      DC6, as its already take care above.
      
      v5: call POSTING_READ for every write to a register to ensure that
      its written immediately.
      Call intel_prepare_ddi during DC6 exit as it's required on low-power exit.
      
      v6: Protect DC6-enabling-disabling functionality with locks to synchronize
      with CSR-loading code.
      
      v7: Remove grabbing CSR-related mutex in skl_enable/disable_dc6 functions as
          deferred DC5-enabling functionality is now removed.
      
      v8: Remove 'Disabling DC5' from the debug comment during DC6 enabling as when
          DC6 is allowed, DC5 is not programmed at all.
      
      v9:
      - Rebase to latest.
      - Move all DC6-related functions from intel_display.c to intel_runtime_pm.c.
      
      v10: After adding dmc ver 1.0 support rebased on top of nightly. (Animesh)
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      74b4f371
    • S
      drm/i915/skl: Add DC6 Trigger sequence. · f75a1985
      Suketu Shah 提交于
      Add triggers for DC6 as per details provided in skl_enable_dc6
      and skl_disable_dc6 implementations.
      
      Also Call POSTING_READ for every write to a register to ensure
      it is written to immediately
      
      v1: Remove POSTING_READ and intel_prepare_ddi calls as they've been added in previous patches.
      
      v2:
      1] Remove check for backlight disabled as it should be the case by that time.
      2] Mark DC5 as disabled when enabling DC6.
      3] Return from DC5-disabling function early if DC5 is already be disabled which can happen
         due to DC6-enabling earlier.
      3] Ensure CSR firmware is loaded after resume from DC6 as corresponding memory contents won't
         be retained after runtime-suspend.
      4] Ensure that CSR isn't identified as loaded before CSR-loading program is called during
         runtime-resume.
      
      v3: Rebase to latest
      Modified as per review comments from Imre and after discussion with Art:
      1] DC6 should be preferably enabled when PG2 is disabled by SW as the check for PG1 being
         disabled is taken of by HW to enter DC6, and disabled when PG2 is enabled respectively.
         This helps save more power, especially in the case when display is disabled but GT is
         enabled. Accordingly, replacing DC5 trigger sequence with DC6 for SKL.
      2] DC6 could be enabled from intel_runtime_suspend() function, if DC5 is already enabled.
      3] Move CSR-load-status setting code from intel_runtime_suspend function to a new function.
      
      v4:
      1] Enable/disable DC6 only when toggling the power-well using a newly defined macro ENABLE_DC6.
      
      v5:
      1] Load CSR on system resume too as firmware may be lost on system suspend preventing
         enabling DC5, DC6.
      2] DDI buffers shouldn't be programmed during driver-load/resume as it's already done
         during modeset initialization then and also that the encoder list is still uninitialized by
         then. Therefore, call intel_prepare_ddi function right after disabling DC6 but outside
         skl_disable_dc6 function and not during driver-load/resume.
      
      v6:
      1] Rebase to latest.
      2] Move SKL_ENABLE_DC6 macro definition from intel_display.c to intel_runtime_pm.c.
      
      v7:
      1) Refactored the code for removing the warning got from checkpatch.
      2) After adding dmc ver 1.0 support rebased on top of nightly. (Animesh)
      
      v8:
      - Reverted the changes done in v7.
      - Removed the condition check in skl_prepare_resune(). (Animesh)
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NSuketu Shah <suketu.j.shah@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      f75a1985
    • S
      drm/i915/skl: Assert the requirements to enter or exit DC5. · 5aefb239
      Suketu Shah 提交于
      Warn if the conditions to enter or exit DC5 are not satisfied such
      as support for runtime PM, state of power well, CSR loading etc.
      
      v2: Removed camelcase in functions and variables.
      
      v3: Do some minimal check to assert if CSR program is not loaded.
      
      v4:
      1] Used an appropriate function lookup_power_well() to identify power well,
      instead of using a magic number which can change in future.
      2] Split the conditions further in assert_can_enable_DC5() and added more checks.
      3] Removed all WARNs from assert_can_disable_DC5 as they were unnecessary and added two
         new ones.
      4] Changed variable names as updated in earlier patches.
      
      v5:
      1] Change lookup_power_well function to take an int power well id.
      2] Define a new intel_display_power_well_is_enabled helper function to check whether a
         particular power well is enabled.
      3] Use CSR-related mutex in assert_csr_loaded function.
      
      v6: Remove use of dc5_enabled variable as it's no longer needed.
      
      v7:
      1] Rebase to latest.
      2] Move all DC5-related functions from intel_display.c to intel_runtime_pm.c.
      
      v8: After adding dmc ver 1.0 support rebased on top of nightly. (Animesh)
      
      v9: Modified below changes based on review comments from Imre.
      - Moved intel_display_power_well_is_enabled() to intel_runtime_pm.c.
      - Removed mutex lock from assert_csr_loaded(). (Animesh)
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NSuketu Shah <suketu.j.shah@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5aefb239
    • A
      drm/i915/skl: Implement enable/disable for Display C5 state. · 6b457d31
      A.Sunil Kamath 提交于
      This patch just implements the basic enable and disable
      functions of DC5 state which is needed for both SKL and BXT.
      
      Its important to load respective CSR program before calling
      enable, which anyways will happen as CSR program is executed
      during boot.
      
      DC5 is a power saving state where hardware dynamically disables
      power well 1 and the CDCLK PLL and saves the associated registers.
      
      DC5 can be entered when software allows it, power well 2 is
      disabled, and hardware detects that all pipes are disabled
      or pipe A is enabled with PSR active.
      
      Its better to configure display engine to have power well 2 disabled before
      getting into DC5 enable function. Hence rpm framework will have to
      ensure to check status of power well 2 before calling gen9_enable_dc5.
      
      Rather dc5 entry criteria should be decided based on power well 2 status.
      If disabled, then call gen9_enable_dc5.
      
      v2: Replace HAS_ with IS_ check as per Daniel's review comments
      
      v3: Cleared the bits dc5/dc6 enable of DC_STATE_EN register
      before setting them as per Satheesh's review comments.
      
      v4: call POSTING_READ for every write to a register to ensure that
      its written immediately.
      
      v5: Modified as per review comments from Imre.
      - Squashed register definitions into this patch.
      - Finetuned comments and functions.
      
      v6:
      Avoid redundant writes in gen9_set_dc_state_debugmask_memory_up function.
      
      v7:
      - Rebase to latest.
      - Move all runtime PM functions defined in intel_display.c to
        intel_runtime_pm.c.
      
      v8: Rebased to drm-intel-nightly. (Animesh)
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6b457d31
    • S
      drm/i915/skl: Add DC5 Trigger Sequence · dc174300
      Suketu Shah 提交于
      Add triggers as per expectations mentioned in gen9_enable_dc5
      and gen9_disable_dc5 patch.
      
      Also call POSTING_READ for every write to a register to ensure that
      its written immediately.
      
      v1: Remove POSTING_READ calls as they've already been added in previous patches.
      
      v2: Rebase to move all runtime pm specific changes to intel_runtime_pm.c file.
      
      Modified as per review comments from Imre:
      1] Change variable name 'dc5_allowed' to 'dc5_enabled' to correspond to relevant
         functions.
      2] Move the check dc5_enabled in skl_set_power_well() to disable DC5 into
         gen9_disable_DC5 which is a more appropriate place.
      3] Convert checks for 'pm.dc5_enabled' and 'pm.suspended' in skl_set_power_well()
         to warnings. However, removing them for now as they'll be included in a future patch
         asserting DC-state entry/exit criteria.
      4] Enable DC5, only when CSR firmware is verified to be loaded. Create new structure
         to track 'enabled' and 'deferred' status of DC5.
      5] Ensure runtime PM reference is obtained, if CSR is not loaded, to avoid entering
         runtime-suspend and release it when it's loaded.
      6] Protect necessary CSR-related code with locks.
      7] Move CSR-loading call to runtime PM initialization, as power domains needed to be
         accessed during deferred DC5-enabling, are not initialized earlier.
      
      v3: Rebase to latest.
      
      Modified as per review comments from Imre:
      1] Use blocking wait for CSR-loading to finish to enable DC5  for simplicity, instead of
         deferring enabling DC5 until CSR is loaded.
      2] Obtain runtime PM reference during CSR-loading initialization itself as deferred DC5-
         enabling is removed and release it at the end of CSR-loading functionality.
      3] Revert calling CSR-loading functionality to the beginning of i915 driver-load
         functionality to avoid any delay in loading.
      4] Define another variable to track whether CSR-loading failed and use it to avoid enabling
         DC5 if it's true.
      5] Define CSR-load-status accessor functions for use later.
      
      v4:
      1] Disable DC5 before enabling PG2 instead of after it.
      2] DC5 was being mistaken enabled even when CSR-loading timed-out. Fix that.
      3] Enable DC5-related functionality using a macro.
      4] Remove dc5_enabled tracking variable and its use as it's not needed now.
      
      v5:
      1] Mark CSR failed to load where necessary in finish_csr_load function.
      2] Use mutex-protected accessor function to check if CSR loaded instead of directly
         accessing the variable.
      3] Prefix csr_load_status_get/set function names with intel_.
      
      v6: rebase to latest.
      v7: Rebase on top of nightly (Damien)
      v8: Squashed the patch from Imre - added csr helper pointers to simplify the code. (Imre)
      v9: After adding dmc ver 1.0 support rebased on top of nightly. (Animesh)
      v10: Added a enum for different csr states, suggested by Imre. (Animesh)
      
      v11: Based on review comments from Imre, Damien and Daniel following changes done
      - enum name chnaged to csr_state (singular form).
      - FW_UNINITIALIZED used as zeroth element in enum csr_state.
      - Prototype changed for helper function(set/get csr status), using enum csr_state instead of bool.
      
      v12: Based on review comment from Imre, introduced bool fw_loaded local to finish_csr_load() which helps
      calling once to set the csr status. The same flag used to fail RPM if find any issue during
      firmware loading.
      
      Issue: VIZ-2819
      Signed-off-by: NA.Sunil Kamath <sunil.kamath@intel.com>
      Signed-off-by: NSuketu Shah <suketu.j.shah@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NAnimesh Manna <animesh.manna@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      dc174300
  8. 16 4月, 2015 1 次提交
  9. 14 4月, 2015 1 次提交
  10. 18 3月, 2015 7 次提交
  11. 14 2月, 2015 1 次提交
    • S
      drm/i915/skl: Implementation of SKL display power well support · 94dd5138
      Satheeshakrishna M 提交于
      This patch implements core logic of SKL display power well.
      
      v2: Addressed Imre's comments
      	- Added respective DDIs under power well #1 and #2
      	- Simplified repetitive code in power well programming
      
      v3: Implemented Imre's comments
      	- Further simplified power well programming
      	- Made sure that PW 1 is enabled prior to PW 2
      
      v4: Fix minor conflict with the the cherryview support (Damien)
      
      v5: Add the PLL power domain to the always on power well (Damien)
      
      v6: Disable BIOS power well (Imre)
          Use power well data for comparison (Imre)
          Put the PLL power domain into PW1 as its needed for CDCLK (Satheesh,
          Damien)
      
      v7: Addressed Imre's comments
        - Lowered the time out to 1ms
        - Added parantheses in macro
        - Moved debug message and fixed wait_for interval
      
      v8:
        - Add a WARN() when swiching on an unknown power well (Imre, done by Damien)
        - Whitespace fixes (spaces instead of tabs) (Damien)
      
      v9: (Imre, done by Damien)
        - Merge the register definitions with this patch
        - Merge the MISC IO power well in this patch
      
      v10: (Imre, done by Damien)
      
        - Define the Misc I/O power domains to be the power well 1 ones as Misc I/O
          needs to be enabled with PW1
        - Added Transcoder A and VGA domains to PW 2
        - Remove the MISC_IO power domains as well in the the always on
          domains definition
        - Move Misc I/O power well at the top of the power well list so it's turned
          on right after PW1.
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: Satheeshakrishna M <satheeshakrishna.m@intel.com> (v3,v6,v7)
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      94dd5138
  12. 27 1月, 2015 1 次提交
  13. 12 1月, 2015 1 次提交
  14. 18 12月, 2014 1 次提交
    • V
      drm/i915: Kill check_power_well() calls · 7f1241ed
      Ville Syrjälä 提交于
      pps_{lock,unlock}() call intel_display_power_{get,put}() outside
      pps_mutes to avoid deadlocks with the power_domain mutex. In theory
      during aux transfers we should usually have the relevant power domain
      references already held by some higher level code, so this should not
      result in much overhead (exception being userspace i2c-dev access).
      However thanks to the check_power_well() calls in
      intel_display_power_{get/put}() we end up doing a few Punit reads for
      each aux transfer. Obviously doing this for each byte transferred via
      i2c-over-aux is not a good idea.
      
      I can't think of a good way to keep check_power_well() while eliminating
      the overhead, so let's just remove check_power_well() entirely.
      
      Fixes a driver init time regression introduced by:
       commit 773538e8
       Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
       Date:   Thu Sep 4 14:54:56 2014 +0300
      
          drm/i915: Reset power sequencer pipe tracking when disp2d is off
      
      Credit goes to Jani for figuring this out.
      
      v2: Add the regression note in the commit message.
      
      Cc: stable@vger.kernel.org (v3.18+)
      Cc: Egbert Eich <eich@suse.de>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86201Tested-by: NWendy Wang <wendy.wang@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      7f1241ed
  15. 16 12月, 2014 1 次提交
    • R
      drm/i915: tame the chattermouth (v2) · e2c719b7
      Rob Clark 提交于
      Many distro's have mechanism in place to collect and automatically file
      bugs for failed WARN()s.  And since i915 has a lot of hw state sanity
      checks which result in WARN(), it generates quite a lot of noise which
      is somewhat disconcerting to the end user.
      
      Separate out the internal hw-is-in-the-state-I-expected checks into
      I915_STATE_WARN()s and allow configuration via i915.verbose_checks module
      param about whether this will generate a full blown stacktrace or just
      DRM_ERROR().  The new moduleparam defaults to true, so by default there
      is no change in behavior.  And even when disabled, you will still get
      an error message logged.
      
      v2: paint the macro names blue, clarify that the default behavior
          remains the same as before
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      Acked-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      e2c719b7
  16. 03 12月, 2014 1 次提交
  17. 17 11月, 2014 1 次提交
  18. 05 11月, 2014 2 次提交
    • V
      drm/i915: Enable pipe-a power well on chv · baa4e575
      Ville Syrjälä 提交于
      It seems that the pipe-a power well has replaced the disp2d power well
      on chv. At least that's the case with the current punit firmware. So
      enable the pipe-a power and expand its domains to cover everything the
      disp2d well ought to cover.
      
      The other power wells (apart from the cmnlane wells) still seem awol
      in the current punit firmware. So leave them disabled in the code.
      
      This fixes a hilarious oops during resume on bsw where
      intel_hdmi_get_config() would read the port register and get back
      0xffffffff and thus think the port is enabled on pipe D. It would then
      go and index the pipe_to_crtc_mapping[] array with PIPE_D and blow up
      when intel_hdmi_get_config() tries to write to crtc->config. Someone
      really ought to replace all naked pipe_to_crtc_mapping[] uses with the
      appropriate function call so we could add a warning there if the pipe
      doesn't actually exist...
      
      We must also call the power seqeuencer state reset function from
      the pipe-a well disable just like we do from disp2d on vlv. Otherwise
      the eDP panel won't recover at resume time since the PPS has lost its
      hold on the port.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84903Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      baa4e575
    • V
      drm/i915: Do vlv cmnlane toggle w/a in more cases · 5d93a6e5
      Ville Syrjälä 提交于
      In case the cmnlane power well is down but cmnreset isn't asserted we
      would currently skip the off+on toggle for the power well. That could
      leave cmnreset deasserted while cmnlane is powered down which might
      lead to problems with the PHY.
      
      To avoid such issues skip the cmnlane toggle only if both cmnlane and
      disp2d wells are up and cmnreset is already deasserted. In all other
      cases power down the cmnlane well which will also make sure cmnreset
      gets asserted correctly while cmnlane is powered down.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5d93a6e5
  19. 24 10月, 2014 1 次提交