1. 24 Mar, 2015 8 commits
    • Tomi Valkeinen's avatar
      drm/omap: handle incompatible buffer stride and pixel size · 2dab0bab
      Tomi Valkeinen authored
      omapdrm doesn't check if the pitch of the framebuffer and the color
      format's bits-per-pixel are compatible. omapdss requires that the stride
      of a buffer is an integer number of pixels
      
      For example, when using modetest with a display that has x resolution of
      1280, and using packed 24 RGB mode (3 bytes per pixel), modetest
      allocates a buffer with a byte stride of 4 * 1280 = 5120. But 5120 / 3 =
      1706.666... pixels, which causes wrong colors and a tilt on the screen.
      
      Add a check into omapdrm to return an error if the user tries to use
      such a combination.
      
      Note: this is not a HW requirement at least for non-rotation use cases,
      but a SW driver requirement. In the future we should study if also
      rotation use cases are fine with any stride size, and if so, change the
      driver to allow these strides.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      2dab0bab
    • Tomi Valkeinen's avatar
      drm/omap: fix error handling in omap_framebuffer_create() · 925e4940
      Tomi Valkeinen authored
      When an error happens in omap_framebuffer_create(),
      omap_framebuffer_create() calls omap_framebuffer_destroy() if the fb
      struct has been allocated. However, that crashes, as
      omap_framebuffer_destroy(), which calls drm_framebuffer_cleanup(),
      should only be called after drm_framebuffer_init()
      
      Fix this by just calling kfree() for the allocated fb when an error
      happens.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      925e4940
    • Tomi Valkeinen's avatar
      drm/omap: fix operation without fbdev · c7c1aecd
      Tomi Valkeinen authored
      omapdrm should work fine even if fbdev is missing. The current driver
      crashes in that case, though, as it is missing checks for the fbdev.
      
      Add the checks so that we don't free fbdev or restore fbdev mode when
      there's no fbdev.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      c7c1aecd
    • Tomi Valkeinen's avatar
      drm/omap: add a comment why locking is missing · f7c5f5d9
      Tomi Valkeinen authored
      unpin_worker() calls omap_framebuffer_unpin() without any locks, which
      looks very suspicious. However, both pin and unpin are always called via
      the driver's private workqueue, so the access is synchronized that way.
      
      Add a comment to make this clear.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      f7c5f5d9
    • Tomi Valkeinen's avatar
      drm/omap: add pin refcounting to omap_framebuffer · f36eb5a8
      Tomi Valkeinen authored
      omap_framebuffer_pin() and omap_framebuffer_unpin() are currently
      broken, as they cannot be called multiple times (i.e. pin, pin, unpin,
      unpin), which is what happens in certain cases. This issue causes the
      driver to possibly use 0 as an address for a displayed buffer, leading
      to OCP error from DSS.
      
      This patch fixes the issue by adding a simple pin_count, used to track
      the number of pins.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      f36eb5a8
    • Tomi Valkeinen's avatar
      drm/omap: clear omap_obj->paddr in omap_gem_put_paddr() · 3f4d17c4
      Tomi Valkeinen authored
      Clear omap_obj's paddr when unmapping the memory, so that it's easier to
      catch bad use of the paddr.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      3f4d17c4
    • Tomi Valkeinen's avatar
      drm/omap: page_flip: return -EBUSY if flip pending · 549a7549
      Tomi Valkeinen authored
      The DRM documentation says:
      
      "If a page flip is already pending, the page_flip operation must return
      -EBUSY."
      
      Currently omapdrm returns -EINVAL instead. Fix omapdrm by returning
      -EBUSY.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      549a7549
    • Tomi Valkeinen's avatar
      drm/omap: fix encoder-crtc mapping · 17337297
      Tomi Valkeinen authored
      OMAP DSS hardware supports changing the output port to which an overlay
      manager's video stream goes. For example, DPI video stream can come from
      any of the four overlay managers on OMAP5.
      
      However, as it's difficult to manage the change in the driver, the
      omapdss driver does not support that at the moment, and has a hardcoded
      overlay manager per output.
      
      omapdrm, on the other hand, uses the hardware features to find out which
      overlay manager to use for an output, which causes problems. For
      example, on OMAP5, omapdrm tries to use DIGIT overlay manager for DPI
      output, instead of the LCD3 required by the omapdss driver.
      
      This patch changes the omapdrm to use the omapdss driver's hardcoded
      overlay managers, which fixes the issue.
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      17337297
  2. 20 Mar, 2015 14 commits
  3. 19 Mar, 2015 2 commits
    • Dave Airlie's avatar
      Merge branch 'drm_next' of https://github.com/markyzq/kernel-drm-rockchip into drm-next · 6b94aea0
      Dave Airlie authored
      rockchip fixes.
      
      * 'drm_next' of https://github.com/markyzq/kernel-drm-rockchip:
        drm/rockchip: vop: power off until vop standby take effect
        drm/rockchip: vop: set vop enabled after enable iommu
        drm/rockchip: vop use is_enabled instead of dpms mode
        drm/rockchip: vop: fix vop vsync/hsync polarity
        drm/rockchip: Only alloc a kmap for fbdev gem object
      6b94aea0
    • Dave Airlie's avatar
      Merge tag 'topic/drm-misc-2015-03-18' of git://anongit.freedesktop.org/drm-intel into drm-next · d79dc0a9
      Dave Airlie authored
      Another drm-misch pull request. Mostly the fbdev sizes deconfusion series
      from Rob, everything else is small stuff all over. And the large i2c over
      aux transfers patch, too.
      
      * tag 'topic/drm-misc-2015-03-18' of git://anongit.freedesktop.org/drm-intel:
        drm: check that planes types are correct while initializing CRTC
        drm: change connector to tmp_connector
        drm: Fix some typo mistake of the annotations
        drm: Silence sparse warnings
        drm: %pF is only for function pointers
        drm/fb: handle tiled connectors better
        drm/fb: small cleanup
        drm/rockchip: use correct fb width/height
        drm/exynos: use correct fb width/height
        drm/cma: use correct fb width/height
        drm/atomic: minor kerneldoc typo fix
        drm/fb: document drm_fb_helper_surface_size
        drm/dp: Use large transactions for I2C over AUX
        drm/plane-helper: Fixup mismerge
        drm/atomic: Constify a bunch of functions pointer structs
      d79dc0a9
  4. 17 Mar, 2015 3 commits
  5. 16 Mar, 2015 5 commits
  6. 13 Mar, 2015 2 commits
    • Ville Syrjälä's avatar
      drm: Silence sparse warnings · 43fc884e
      Ville Syrjälä authored
      ../drivers/gpu/drm/drm_vm.c:405:6: warning: symbol 'drm_vm_open_locked' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_vm.c:431:6: warning: symbol 'drm_vm_close_locked' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_vm.c:681:5: warning: symbol 'drm_vma_info' was not declared. Should it be static?
      
      ../drivers/gpu/drm/drm_pci.c:146:5: warning: symbol 'drm_pci_set_unique' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_pci.c:216:5: warning: symbol 'drm_irq_by_busid' was not declared. Should it be static?
      
      ../drivers/gpu/drm/drm_info.c:47:5: warning: symbol 'drm_name_info' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_info.c:72:5: warning: symbol 'drm_vm_info' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_info.c:116:5: warning: symbol 'drm_bufs_info' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_info.c:159:5: warning: symbol 'drm_clients_info' was not declared. Should it be static?
      ../drivers/gpu/drm/drm_info.c:209:5: warning: symbol 'drm_gem_name_info' was not declared. Should it be static?
      
      ../drivers/gpu/drm/drm_ioc32.c:1019:20: warning: symbol 'drm_compat_ioctls' was not declared. Should it be static?
      
      ../drivers/gpu/drm/drm_bridge.c:52:12: warning: function 'drm_bridge_attach' with external linkage has definition
      Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      43fc884e
    • Scott Wood's avatar
      drm: %pF is only for function pointers · 2ee762b3
      Scott Wood authored
      Use %pS for actual addresses, otherwise you'll get bad output
      on arches like ppc64 where %pF expects a function descriptor.
      Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
      Cc: dri-devel@lists.freedesktop.org
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      2ee762b3
  7. 11 Mar, 2015 6 commits