1. 09 11月, 2013 2 次提交
  2. 29 10月, 2013 1 次提交
  3. 28 10月, 2013 1 次提交
  4. 10 10月, 2013 1 次提交
  5. 09 10月, 2013 1 次提交
  6. 01 10月, 2013 4 次提交
  7. 13 9月, 2013 2 次提交
  8. 10 9月, 2013 1 次提交
  9. 09 9月, 2013 1 次提交
  10. 04 9月, 2013 1 次提交
  11. 23 8月, 2013 1 次提交
  12. 06 8月, 2013 2 次提交
  13. 05 8月, 2013 1 次提交
  14. 18 7月, 2013 1 次提交
    • R
      drm/i915: Hook PSR functionality · 4906557e
      Rodrigo Vivi 提交于
      PSR must be enabled after transcoder and port are running.
      And it is only available for HSW.
      
      v2: move enable/disable to intel_ddi
      v3: The spec suggests PSR should be disabled even before backlight (by pzanoni)
      v4: also disabling and enabling whenever panel is disabled/enabled.
      v5: make it last patch to avoid breaking whenever bisecting. So calling for
          update and force exit came to this patch along with enable/disable calls.
      v6: Remove unused and unecessary psr_enable/disable calls, as notice by Paulo.
      
      CC: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@gmail.com>
      [danvet: Drop the psr exit code in the busy ioctl since I didn't merge
      that part of the infrastructure yet - it needs more thought.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4906557e
  15. 13 7月, 2013 1 次提交
  16. 28 6月, 2013 3 次提交
    • P
      drm/i915: fix the "ghost eDP" encoder unwind path · 15b1d171
      Paulo Zanoni 提交于
      Because calling intel_dp_encoder_destroy inside
      intel_edp_init_connector is just wrong. This is the initialization
      path, so we should properly unwind all the initialization through the
      whole caller stack.
      
      On the intel_dp_encoder_destroy function we do the following:
      1 - Call i2c_del_adapter
      2 - Call drm_encoder_cleanup
      3 - If edp:
      3.1 - Cancel panel_vdd_work
      3.2 - Call ironlake_panel_vdd_of_sync
      4 - Free the encoder
      
      And here is how we unwind each specific step:
      1 - We have intel_dp_init_connector -> intel_dp_i2c_init ->
          i2c_dp_aux_add_bus -> i2c_add_adapter, so we call
          i2c_del_dapter at intel_dp_init_connector
      2 - Call it in the same function that called drm_encoder_init
      3 - Call it in the same function that called INIT_DELAYED_WORK
      4 - Free it in the same function that allocated it
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NZoltan Nyul <zoltan.nyul@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      15b1d171
    • P
      drm/i915: fix the "ghost eDP" connector unwind path · b2f246a8
      Paulo Zanoni 提交于
      Because calling intel_dp_destroy inside intel_edp_init_connector is
      just wrong. This is the initialization path, so we should properly
      unwind all the initialization through the whole caller stack.
      
      On the intel_dp_destroy function we do the following:
      1 - Free edid if it exists
      2 - Call intel_panel_fini in case it's eDP
      3 - Call drm_sysfs_connector_remove
      4 - Call drm_connector_cleanup
      5 - Free the connector
      
      And here is how we unwind each specific step:
      1 - No need as we still didn't assign anything
      2 - No need as we still didn't call intel_panel_init
      3 - Call it in the same function that called drm_sysfs_connector_add
      4 - Call it in the same function that called drm_connector_init
      5 - Free it in the same function that allocated it
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NZoltan Nyul <zoltan.nyul@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b2f246a8
    • P
      drm/i915: propagate errors from intel_dp_init_connector · 16c25533
      Paulo Zanoni 提交于
      In case we detect a "ghost eDP", intel_edp_init_connector frees both
      the connector and encoder and then returns. On Haswell, intel_ddi_init
      then tries to use the freed encoder on the HDMI initialization path
      since the following commit:
      
      commit 21a8e6a4
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Apr 10 23:28:35 2013 +0200
          drm/i915: don't setup hdmi for port D edp in ddi_init
      
      So now on intel_ddi_init we check for the "ghost eDP" case and return
      without trying to initialize HDMI. This way we won't try to read the
      freed "intel_encoder" struct in the next "if" statement.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NZoltan Nyul <zoltan.nyul@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      16c25533
  17. 06 6月, 2013 1 次提交
  18. 04 6月, 2013 1 次提交
    • D
      drm/i915: store adjusted dotclock in adjusted_mode->clock · ff9a6750
      Daniel Vetter 提交于
      ... not the port clock. This allows us to kill the funny semantics
      around pixel_target_clock.
      
      Since the dpll code still needs the real port clock, add a new
      port_clock field to the pipe configuration. Handling the default case
      for that one is a bit tricky, since encoders might not consistently
      overwrite it when retrying the crtc/encoder bw arbitrage step in the
      compute config stage. Hence we need to always clear port_clock and
      update it again if the encoder hasn't put in something more specific.
      This can't be done in one step since the encoder might want to adjust
      the mode first.
      
      I was a bit on the fence whether I should subsume the pixel multiplier
      handling into the port_clock, too. But then I decided against this
      since it's on an abstract level still the dotclock of the adjusted
      mode, and only our hw makes it a bit special due to the separate pixel
      mulitplier setting (which requires that the dpll runs at the
      non-multiplied dotclock).
      
      So after this patch the adjusted_mode accurately describes the mode we
      feed into the port, after the panel fitter and pixel multiplier (or
      line doubling, if we ever bother with that) have done their job.
      Since the fdi link is between the pfit and the pixel multiplier steps
      we need to be careful with calculating the fdi link config.
      
      v2: Fix up ilk cpu pll handling.
      
      v3: Introduce an fdi_dotclock variable in ironlake_fdi_compute_config
      to make it clearer that we transmit the adjusted_mode without the
      pixel multiplier taken into account. The old code multiplied the the
      available link bw with the pixel multiplier, which results in the same
      fdi configuration, but is much more confusing.
      
      v4: Rebase on top of Imre's is_cpu_edp removal.
      
      v5: Rebase on top of Paulo's haswell watermark fixes, which introduce
      a new place which looked at the pixel_clock and so needed conversion.
      
      v6: Split out prep patches as requested by Paulo Zanoni. Also rebase
      on top of the fdi dotclock handling fix in the fdi lanes/bw
      computation code.
      
      Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> (v3)
      Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> (v6)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ff9a6750
  19. 01 6月, 2013 1 次提交
    • D
      drm/i915: hw state readout&check support for cpu_transcoder · eccb140b
      Daniel Vetter 提交于
      This allows us to drop a bunch of ugly hacks and finally implement
      what
      
      commit cc464b2a
      Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Date:   Fri Jan 25 16:59:16 2013 -0200
      
          drm/i915: set TRANSCODER_EDP even earlier
      
      tried to achieve, but that was reverted again in
      
      commit bba2181c
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Fri Mar 22 10:53:40 2013 +0100
      
          Revert "drm/i915: set TRANSCODER_EDP even earlier"
      
      Now we should always have a consistent cpu_transcoder in the
      pipe_config.
      
      v2: Fix up the code as spotted by Paulo:
      - read the register for real
      - assign the right pipes
      - break out if the hw state doesn't make sense
      
      v3: Shut up gcc.
      
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      eccb140b
  20. 21 5月, 2013 2 次提交
    • P
      drm/i915: make intel_ddi_get_cdclk_freq return values in KHz · b2b877ff
      Paulo Zanoni 提交于
      With this, that 338 can finally become the correct 337500.
      
      Due to the change we need to adjust the intel_dp_aux_ch function to
      set the correct value, so adjust the division and also use
      DIV_ROUND_CLOSEST instead of the old "round down" behavior because the
      spec says the value "should be programmed to get as close as possible
      to the ideal rate of 2MHz".
      
      Quoting Paulo's follow-up to a question from Chris Wilson to explain
      what exactly will change:
      
      I use the 337500 value on the next patch, when setting the
      ips_linetime value. The correct frequency is 337500, not 338000.
      
      ips_linetime = DIV_ROUND_CLOSEST(mode->htotal * 1000 * 8,
      intel_ddi_get_cdclk_freq);
      For a mode with htotal of 2640 [0] we'll have: (i) (2640 * 1000 * 8) /
      338000 = 62.48, resulting in 62 and (ii) (2640 * 1000 * 8) / 337500 =
      62.57 resulting in 63.
      
      For the case inside intel_dp.c:
      Previously we were using 338. So with the old formula we were writing
      338/2 = 169 to the register. And 337500 / 169 = 1997.04 (we use 337500
      here because it's the real clock value). With the new value of
      337500/2000 we'll have 168.75, which is 168 on the round-down case and
      169 on the round-closest case. If we write 168 to the register, 337500
      / 168 = 2008.92, and 2008.92 is more distant from 2000 than 1997.04.
      So with this patch we're changing the formula but still writing the
      same correct value to the DP AUX register.
      
      [0]: That's 1920x1080@50Hz on my DP monitor.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      [danvet: Pimp the commit message with Paulo's follow-up.]
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b2b877ff
    • J
      drm/i915: add encoder get_config function v5 · 045ac3b5
      Jesse Barnes 提交于
      We can use this for fetching encoder specific pipe_config state, like
      mode flags, adjusted clock, etc.
      
      Just used for mode flags atm, so we can check the pipe config state at
      mode set time.
      
      v2: get_config when checking hw state too
      v3: fix DVO and LVDS mode flags (Ville)
          get SDVO DTD for flag fetch (Ville)
      v4: use input timings (Ville)
          correct command used (Ville)
          remove gen4 check (Ville)
      v5: get DDI flag config too
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v4)
      Tested-by: Paulo Zanoni <przanoni@gmail.com> (the new hsw ddi stuff)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      045ac3b5
  21. 11 5月, 2013 3 次提交
  22. 06 5月, 2013 1 次提交
  23. 04 5月, 2013 1 次提交
    • I
      drm/i915: hsw: fix link training for eDP on port-A · 3ab9c637
      Imre Deak 提交于
      According to BSpec the link training sequence for eDP on HSW port-A
      should be as follows:
      
      1. link training: clock recovery
      2. link training: equalization
      3. link training: set idle transmission mode
      4. display pipe enable
      5. link training: disable (set normal mode)
      
      Contrary to this at the moment we don't do step 3. and we do step 5.
      before step 4. Fix this by setting idle transmission mode for eDP at
      the end of intel_dp_complete_link_train and adding a new
      intel_dp_stop_link_training function to disable link training. With
      these changes we'll end up with the following functions corresponding
      to the above steps:
      
      intel_dp_start_link_train    -> step 1.
      intel_dp_complete_link_train -> step 2., step 3.
      intel_dp_stop_link_train     -> step 5.
      
      For port-A we'll call intel_dp_stop_link_train only after enabling the
      pipe, for everything else we'll call it right after
      intel_dp_complete_link_train to preserve the current behavior.
      
      Tested on HSW/HSW-ULT.
      
      In v2:
      - Due to a HW issue we must set idle transmission mode for port-A too
        before enabling the pipe. Thanks for Arthur Runyan for explaining
        this.
      - Update the patch subject to make it clear that it's an eDP fix, DP is
        not affected.
      
      v3:
      - rename intel_dp_link_train() to intel_dp_set_link_train(), use 'val'
        instead 'l' as var name. (Paulo)
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Tested-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      3ab9c637
  24. 03 5月, 2013 1 次提交
  25. 30 4月, 2013 2 次提交
  26. 26 4月, 2013 1 次提交
  27. 19 4月, 2013 1 次提交
  28. 18 4月, 2013 1 次提交