1. 23 8月, 2016 4 次提交
    • Y
      drm/rockchip: add an common abstracted PSR driver · 5182c1a5
      Yakir Yang 提交于
      The PSR driver have exported four symbols for specific device driver, and
      it's safe to call them in interrupt context:
      - rockchip_drm_psr_register()
      - rockchip_drm_psr_unregister()
      - rockchip_drm_psr_enable()
      - rockchip_drm_psr_disable()
      - rockchip_drm_psr_flush()
      
      Encoder driver should call the register/unregister interfaces to hook
      itself into common PSR driver, encoder have implement the 'psr_set'
      callback which use the set PSR state in hardware side.
      
      Crtc driver would call the enable/disable interfaces when vblank is
      enable/disable, after that the common PSR driver would call the encoder
      registered callback to set the PSR state.
      
      Fb driver would call the flush interface in 'fb->dirty' callback, this
      helper function would force all PSR enabled encoders to exit from PSR
      for 3 seconds.
      Signed-off-by: NYakir Yang <ykk@rock-chips.com>
      [seanpaul removed leftover psr_enabled/psr_work kruft from drm_vop.c]
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      5182c1a5
    • Y
      drm/rockchip: vop: export line flag function · 69c34e41
      Yakir Yang 提交于
      VOP have integrated a hardware counter which indicate the exact display
      line that vop is scanning. And if we're interested in a specific line,
      we can set the line number to vop line_flag register, and then vop would
      generate a line_flag interrupt for it.
      
      For example eDP PSR function is interested in the vertical blanking
      period, then driver could set the line number to zero.
      
      This patch have exported a symbol that allow other driver to listen the
      line flag event with given timeout limit:
      -  rockchip_drm_wait_line_flag()
      Signed-off-by: NYakir Yang <ykk@rock-chips.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      69c34e41
    • M
      drm/rockchip: vop: add rk3399 vop support · 0a63bfd0
      Mark Yao 提交于
      There are two VOP in rk3399 chip, respectively VOP_BIG and VOP_LIT.
      most registers layout of this two vop is same, their framework are both
      VOP_FULL, the Major differences of this two is that:
      
      VOP_BIG max output resolution is 4096x2160.
      VOP_LIT max output resolution is 2560x1600
      
      VOP_BIG support four windows.
      VOP_LIT only support two windows.
      
      RK3399 vop register layout is similar with rk3288, so some feature
      can reuse with rk3288.
      Reviewed-by: NTomasz Figa <tfiga@chromium.org>
      Signed-off-by: NMark Yao <mark.yao@rock-chips.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      0a63bfd0
    • M
      drm/rockchip: vop: introduce VOP_REG_MASK · d49463ec
      Mark Yao 提交于
      Some new vop register support mask, bit[16-31] is mask,
      bit[0-15] is value, the mask is correspond to the value.
      Signed-off-by: NMark Yao <mark.yao@rock-chips.com>
      [seanpaul masked 'v' per tfiga's review comments]
      Reviewed-by: NMark Yao <mark.yao@rock-chips.com>
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      d49463ec
  2. 09 8月, 2016 2 次提交
  3. 19 7月, 2016 3 次提交
  4. 17 6月, 2016 1 次提交
  5. 10 6月, 2016 4 次提交
  6. 03 6月, 2016 1 次提交
  7. 17 5月, 2016 2 次提交
  8. 03 5月, 2016 3 次提交
  9. 28 3月, 2016 5 次提交
  10. 18 1月, 2016 1 次提交
    • J
      drm/rockchip: vop: fix mask when updating interrupts · c7647f86
      John Keeping 提交于
      Commit dbb3d944 (drm/rockchip: vop: move interrupt registers into
      vop_data) introduced new macros for updating the interrupt control
      registers but these always use the mask from the register definition
      without refining it for the particular bits that are being changed.
      
      This means that whenever we enable/disable a particular interrupt we end
      up disabling all of the others as a side effect.
      Signed-off-by: NJohn Keeping <john@metanate.com>
      c7647f86
  11. 06 1月, 2016 2 次提交
  12. 31 12月, 2015 1 次提交
  13. 28 12月, 2015 9 次提交
  14. 11 12月, 2015 2 次提交
    • V
      drm: Pass 'name' to drm_universal_plane_init() · b0b3b795
      Ville Syrjälä 提交于
      Done with coccinelle for the most part. It choked on
      msm/mdp/mdp5/mdp5_plane.c like so:
      "BAD:!!!!!  enum drm_plane_type type;"
      No idea how to deal with that, so I just fixed that up
      by hand.
      
      Also it thinks '...' is part of the semantic patch, so I put an
      'int DOTDOTDOT' placeholder in its place and got rid of it with
      sed afterwards.
      
      I didn't convert drm_plane_init() since passing the varargs through
      would mean either cpp macros or va_list, and I figured we don't
      care about these legacy functions enough to warrant the extra pain.
      
      @@
      typedef uint32_t;
      identifier dev, plane, possible_crtcs, funcs, formats, format_count, type;
      @@
       int drm_universal_plane_init(struct drm_device *dev,
                                    struct drm_plane *plane,
                                    unsigned long possible_crtcs,
                                    const struct drm_plane_funcs *funcs,
                                    const uint32_t *formats,
                                    unsigned int format_count,
                                    enum drm_plane_type type
      +                             ,const char *name, int DOTDOTDOT
                                    )
      { ... }
      
      @@
      identifier dev, plane, possible_crtcs, funcs, formats, format_count, type;
      @@
       int drm_universal_plane_init(struct drm_device *dev,
                                    struct drm_plane *plane,
                                    unsigned long possible_crtcs,
                                    const struct drm_plane_funcs *funcs,
                                    const uint32_t *formats,
                                    unsigned int format_count,
                                    enum drm_plane_type type
      +                             ,const char *name, int DOTDOTDOT
                                    );
      
      @@
      expression E1, E2, E3, E4, E5, E6, E7;
      @@
       drm_universal_plane_init(E1, E2, E3, E4, E5, E6, E7
      +                         ,NULL
                                )
      
      v2: Split crtc and plane changes apart
          Pass NUL for no-name instead of ""
          Leave drm_plane_init() alone
      v3: Add ', or NULL...' to @name kernel doc (Jani)
          Annotate the function with __printf() attribute (Jani)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1449670795-2853-1-git-send-email-ville.syrjala@linux.intel.com
      b0b3b795
    • V
      drm: Pass 'name' to drm_crtc_init_with_planes() · f9882876
      Ville Syrjälä 提交于
      Done with coccinelle for the most part. However, it thinks '...' is
      part of the semantic patch, so I put an 'int DOTDOTDOT' placeholder
      in its place and got rid of it with sed afterwards.
      
      I didn't convert drm_crtc_init() since passing the varargs through
      would mean either cpp macros or va_list, and I figured we don't
      care about these legacy functions enough to warrant the extra pain.
      
      @@
      identifier dev, crtc, primary, cursor, funcs;
      @@
       int drm_crtc_init_with_planes(struct drm_device *dev,
                                     struct drm_crtc *crtc,
                                     struct drm_plane *primary, struct drm_plane *cursor,
                                     const struct drm_crtc_funcs *funcs
      +                              ,const char *name, int DOTDOTDOT
                                     )
      { ... }
      
      @@
      identifier dev, crtc, primary, cursor, funcs;
      @@
       int drm_crtc_init_with_planes(struct drm_device *dev,
                                     struct drm_crtc *crtc,
                                     struct drm_plane *primary, struct drm_plane *cursor,
                                     const struct drm_crtc_funcs *funcs
      +                              ,const char *name, int DOTDOTDOT
                                     );
      
      @@
      expression E1, E2, E3, E4, E5;
      @@
       drm_crtc_init_with_planes(E1, E2, E3, E4, E5
      +                          ,NULL
                                 )
      
      v2: Split crtc and plane changes apart
          Pass NULL for no-name instead of ""
          Leave drm_crtc_init() alone
      v3: Add ', or NULL...' to @name kernel doc (Jani)
          Annotate the function with __printf() attribute (Jani)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1449670771-2751-1-git-send-email-ville.syrjala@linux.intel.com
      f9882876