1. 24 3月, 2015 1 次提交
  2. 20 3月, 2015 16 次提交
  3. 18 3月, 2015 5 次提交
  4. 25 2月, 2015 1 次提交
    • S
      drm/i915/skl: Add support for edp1.4 low vswing · 7ad14a29
      Sonika Jindal 提交于
      Based upon vbt's vswing preemph settings value select the appropriate
      translations for edp.
      
      v2: Incorporating bspec changes for vswing and preemph levels, adding edp
      translation table. Removed HSW from selection 9 which is specific to skl and
      correcting the returning of level2 from max pre emph (Damien)
      
      v3: Rebasing on top of renaming patches. Adding level(3,0) since level(2,2) as
      mentioned in bspec is invalid as per edp spec. Also changed the determining of
      size of the table selected (Satheesh).
      
      v4: Adding level 3 in max voltage selection if low vswing is selected (Satheesh)
      
      v5: Add a comment stating that skl_ddi_translations_edp is for eDP 1.4
          low vswing panels.
      
      v6: Updating recommended DDI translation table for edp 1.4
      
      Reviewed-by: Satheeshakrishna M <satheeshakrishna.m@intel.com> (v4)
      Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> (v6)
      Signed-off-by: NSonika Jindal <sonika.jindal@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7ad14a29
  5. 24 2月, 2015 5 次提交
  6. 14 2月, 2015 2 次提交
  7. 11 2月, 2015 1 次提交
  8. 10 2月, 2015 1 次提交
  9. 27 1月, 2015 8 次提交
    • M
      drm/i915: Add atomic_get_property entrypoint for connectors (v2) · 2545e4a6
      Matt Roper 提交于
      Even though we only support atomic plane updates at the moment, we still
      need to add an .atomic_get_property() entrypoint for connectors before
      we allow the driver to flip on the DRIVER_ATOMIC bit.  As soon as that
      bit gets set, the DRM core will start adding atomic connector properties
      (in addition to the plane properties we care about at the moment), so we
      need to be able to handle the new way the DRM core will interact with
      us.
      
      For simplicity, we just lookup driver-specific connector properties in
      the usual shadow array maintained by the core.  Once we get real atomic
      modeset support for crtc's and planes, this code should be re-written to
      pull the data out of crtc/connector state structures.
      
      v2: Fix intel_dvo and intel_dsi that I missed on the first pass (Ander)
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2545e4a6
    • M
      drm/i915: Setup dummy atomic state for connectors (v3) · c6f95f27
      Matt Roper 提交于
      We want to enable/test plane updates via the atomic interface, but as
      soon as we flip DRIVER_ATOMIC on, the DRM core will take some atomic
      codepaths to lookup properties during drmModeGetConnector() and some of
      those codepaths unconditionally dereference connector->state
      (specifically when looking up the CRTC ID property in
      drm_atomic_connector_get_property()).  Create a dummy connector state
      for each connector at init time to ensure the DRM core doesn't try to
      dereference a NULL connector->state.  The actual connector properties
      will never be updated or contain useful information, but since we're
      doing this specifically for testing/debug of the plane operations (and
      only when a specific kernel module option is given), that shouldn't
      really matter.
      
      Once we start creating connector states, the DRM core will want to be
      able to clean them up for us.  We also need to hook up the destruction
      entrypoint to the core's helper.
      
      v2: Squash in the patch to set the state destruction hook (Ander & Bob)
      
      v3: Only create dummy connector states when we're actually faking
          atomic support.  (Ander)
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c6f95f27
    • V
      drm/i915: DRRS calls based on frontbuffer · a93fad0f
      Vandana Kannan 提交于
      Calls have been added to invalidate/flush DRRS whenever invalidate/flush is
      called as part of frontbuffer tracking.
      Apart from calls as a result of GEM tracking to fb invalidate/flush, a
      call has been added to invalidate fb obj from crtc_page_flip as well. This
      is to track busyness through flip calls.
      The call to fb_obj_invalidate (in flip) is placed before queuing flip for this
      obj.
      
      drrs_invalidate() and drrs_flush() check for drrs.dp which would be NULL if
      it was setup in drrs_enable(). This covers for the condition when DRRS is
      not supported.
      
      v2: Removing the call to invalidate_drrs from page_flip.
      This has not been tested on Android yet, but, in case DRRS transtions do not
      work as expected, check by adding back this call in page_flip.
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      a93fad0f
    • V
      drm/i915: Enable/disable DRRS · c395578e
      Vandana Kannan 提交于
      Calling enable/disable DRRS when enable/disable DDI are called.
      These functions are responsible for setup of drrs data (in enable) and
      reset of drrs (in disable).
      has_drrs is true when downclock_mode is found and SEAMLESS_DRRS is set in
      the VBT. A check has been added for has_drrs in these functions, to make
      sure the functions go through only if DRRS will work on the platform with
      the attached panel.
      
      V2: [By Ram]: WARN_ON is used when intel_edp_drrs_enable() is called more than
      once [Rodrigo]
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c395578e
    • V
      drm/i915: Initialize DRRS delayed work · 4e9ac947
      Vandana Kannan 提交于
      Add DRRS work function to trigger a switch to low refresh rate,
      when no activity is detected on screen till 1 sec duration.
      
      v2: [By Ram]: drrs.dp also protected with drrs.mutex and worker function
      is renamed to intel_edp_drrs_downclock_work [Chris]
      Signed-off-by: NVandana Kannan <vandana.kannan@intel.com>
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4e9ac947
    • D
      drm/i915: Use symbolic irqreturn for ->hpd_pulse · b2c5c181
      Daniel Vetter 提交于
      Self-explanatory code is better code.
      
      Cc: Dave Airlie <airlied@redhat.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      b2c5c181
    • A
      drm/i915: Make intel_crtc->config a pointer · 6e3c9717
      Ander Conselvan de Oliveira 提交于
      To match the semantics of drm_crtc->state, which this will eventually
      become. The allocation of the memory for config will be fixed in a
      followup patch. By adding the extra _config field to intel_crtc it was
      possible to generate this entire patch with the cocci script below.
      
      @@ @@
      struct intel_crtc {
      ...
      -struct intel_crtc_state config;
      +struct intel_crtc_state _config;
      +struct intel_crtc_state *config;
      ...
      }
      @@ struct intel_crtc *crtc; @@
      -memset(&crtc->config, 0, sizeof(crtc->config));
      +memset(crtc->config, 0, sizeof(*crtc->config));
      @@ @@
      __intel_set_mode(...) {
      <...
      -to_intel_crtc(crtc)->config = *pipe_config;
      +(*(to_intel_crtc(crtc)->config)) = *pipe_config;
      ...>
      }
      @@ @@
      intel_crtc_init(...) {
      ...
      WARN_ON(drm_crtc_index(&intel_crtc->base) != intel_crtc->pipe);
      +intel_crtc->config = &intel_crtc->_config;
      return;
      ...
      }
      @@ struct intel_crtc *crtc; @@
      -&crtc->config
      +crtc->config
      @@ struct intel_crtc *crtc; identifier member; @@
      -crtc->config.member
      +crtc->config->member
      @@ expression E; @@
      -&(to_intel_crtc(E)->config)
      +to_intel_crtc(E)->config
      @@ expression E; identifier member; @@
      -to_intel_crtc(E)->config.member
      +to_intel_crtc(E)->config->member
      
      v2: Clarify manual changes by splitting them into another patch. (Matt)
          Improve cocci script to generate even more of the changes. (Ander)
      Signed-off-by: NAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6e3c9717
    • A
      drm/i915: Embedded struct drm_crtc_state in intel_crtc_state · 2d112de7
      Ander Conselvan de Oliveira 提交于
      And get rid of the duplicate mode structures. This patch was generated
      with the following semantic patch:
      
      @@ @@
      struct intel_crtc_state {
      +struct drm_crtc_state base;
      +
      ...
      -struct drm_display_mode requested_mode;
      -struct drm_display_mode adjusted_mode;
      ...
      }
      @@ struct intel_crtc_state *state; @@
      -state->adjusted_mode
      +state->base.adjusted_mode
      @@ struct intel_crtc_state *state; @@
      -state->requested_mode
      +state->base.mode
      @@ struct intel_crtc_state state; @@
      -state.adjusted_mode
      +state.base.adjusted_mode
      @@ struct intel_crtc_state state; @@
      -state.requested_mode
      +state.base.mode
      @@ struct drm_crtc *crtc; @@
      -to_intel_crtc(crtc)->config.adjusted_mode
      +to_intel_crtc(crtc)->config.base.adjusted_mode
      @@ identifier member; expression E; @@
      -PIPE_CONF_CHECK_FLAGS(adjusted_mode.member, E);
      +PIPE_CONF_CHECK_FLAGS(base.adjusted_mode.member, E);
      @@ identifier member; @@
      -PIPE_CONF_CHECK_I(adjusted_mode.member);
      +PIPE_CONF_CHECK_I(base.adjusted_mode.member);
      @@ identifier member; @@
      -PIPE_CONF_CHECK_CLOCK_FUZZY(adjusted_mode.member);
      +PIPE_CONF_CHECK_CLOCK_FUZZY(base.adjusted_mode.member);
      
      v2: Completely generate the patch with cocci. (Ander)
      Signed-off-by: NAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      2d112de7