1. 10 Sep, 2013 1 commit
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2013-09-06' of... · 48016851
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2013-09-06' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
      
      - Early stolen mem reservation from Jesse in x86 boot code. Acked by Ingo
        and hpa.  This was ready much earlier but somehow I've thought it'd go
        in through x86 trees, hence why this is late. Avoids the pci resource
        code to plant mmiobars in the middle of stolen mem and other ugliness.
      - vgaarb improvements from Alex Williamson plus the fix from Ville for the
        vgacon->fbcon smooth transition "feature".
      - Render pageflips on ivb/hsw to avoid stalls due to the ring switching
        when only flipping on the blitter (Chris).
      - Deadlock fixes around our flush_workqueue which crept back in - lockdep
        isn't clever enough :(
      - Shrinker recursion fix from Chris - this is the thing that blew the vma
        patches from Ben I've taken out of 3.12.
      - Fixup for the relocation refactoring. Also an igt testcase to make sure
        we don't break this again.
      - Pile of smaller fixups all over, shortlog has full details.
      
      * tag 'drm-intel-fixes-2013-09-06' of git://people.freedesktop.org/~danvet/drm-intel: (29 commits)
        drm/i915: Delay disabling of VGA memory until vgacon->fbcon handoff is done
        drm/i915: try not to lose backlight CBLV precision
        drm/i915: Confine page flips to BCS on Valleyview
        drm/i915: Skip stolen region initialisation if none is reserved
        drm/i915: fix gpu hang vs. flip stall deadlocks
        drm/i915: Hold an object reference whilst we shrink it
        drm/i915: fix i9xx_crtc_clock_get for multiplied pixels
        drm/i915: handle sdvo input pixel multiplier correctly again
        drm/i915: fix hpd work vs. flush_work in the pageflip code deadlock
        drm/i915: fix up the relocate_entry refactoring
        drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode
        drm/i915: Don't call sg_free_table() if sg_alloc_table() fails
        i915: Update VGA arbiter support for newer devices
        vgaarb: Fix VGA decodes changes
        vgaarb: Don't disable resources that are not owned
        drm/i915: Pin pages whilst mapping the dma-buf
        drm/i915: enable trickle feed on Haswell
        x86: add early quirk for reserving Intel graphics stolen memory v5
        drm/i915: split PCI IDs out into i915_drm.h v4
        i915_gem: Convert kmem_cache_alloc(...GFP_ZERO) to kmem_cache_zalloc
        ...
      48016851
  2. 06 Sep, 2013 3 commits
  3. 05 Sep, 2013 25 commits
    • Chris Wilson's avatar
      drm/i915: Skip stolen region initialisation if none is reserved · 6644a4e9
      Chris Wilson authored
      Paulo reported that if he set the amount of reserved memory to 0, then
      we emitted a warning about a conflict before disabling our use of stolen
      memory. This was introduced with
      
      commit eaba1b8f
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Thu Jul 4 12:28:35 2013 +0100
      
          drm/i915: Verify that our stolen memory doesn't conflict
      
      and is simply fixed by checking for a no reservation first.
      Reported-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      6644a4e9
    • Daniel Vetter's avatar
      drm/i915: fix gpu hang vs. flip stall deadlocks · 122f46ba
      Daniel Vetter authored
      Since we've started to clean up pending flips when the gpu hangs in
      
      commit 96a02917
      Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Date:   Mon Feb 18 19:08:49 2013 +0200
      
          drm/i915: Finish page flips and update primary planes after a GPU reset
      
      the gpu reset work now also grabs modeset locks. But since work items
      on our private work queue are not allowed to do that due to the
      flush_workqueue from the pageflip code this results in a neat
      deadlock:
      
      INFO: task kms_flip:14676 blocked for more than 120 seconds.
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      kms_flip        D ffff88019283a5c0     0 14676  13344 0x00000004
       ffff88018e62dbf8 0000000000000046 ffff88013bdb12e0 ffff88018e62dfd8
       ffff88018e62dfd8 00000000001d3b00 ffff88019283a5c0 ffff88018ec21000
       ffff88018f693f00 ffff88018eece000 ffff88018e62dd60 ffff88018eece898
      Call Trace:
       [<ffffffff8138ee7b>] schedule+0x60/0x62
       [<ffffffffa046c0dd>] intel_crtc_wait_for_pending_flips+0xb2/0x114 [i915]
       [<ffffffff81050ff4>] ? finish_wait+0x60/0x60
       [<ffffffffa0478041>] intel_crtc_set_config+0x7f3/0x81e [i915]
       [<ffffffffa031780a>] drm_mode_set_config_internal+0x4f/0xc6 [drm]
       [<ffffffffa0319cf3>] drm_mode_setcrtc+0x44d/0x4f9 [drm]
       [<ffffffff810e44da>] ? might_fault+0x38/0x86
       [<ffffffffa030d51f>] drm_ioctl+0x2f9/0x447 [drm]
       [<ffffffff8107a722>] ? trace_hardirqs_off+0xd/0xf
       [<ffffffffa03198a6>] ? drm_mode_setplane+0x343/0x343 [drm]
       [<ffffffff8112222f>] ? mntput_no_expire+0x3e/0x13d
       [<ffffffff81117f33>] vfs_ioctl+0x18/0x34
       [<ffffffff81118776>] do_vfs_ioctl+0x396/0x454
       [<ffffffff81396b37>] ? sysret_check+0x1b/0x56
       [<ffffffff81118886>] SyS_ioctl+0x52/0x7d
       [<ffffffff81396b12>] system_call_fastpath+0x16/0x1b
      2 locks held by kms_flip/14676:
       #0:  (&dev->mode_config.mutex){+.+.+.}, at: [<ffffffffa0316545>] drm_modeset_lock_all+0x22/0x59 [drm]
       #1:  (&crtc->mutex){+.+.+.}, at: [<ffffffffa031656b>] drm_modeset_lock_all+0x48/0x59 [drm]
      INFO: task kworker/u8:4:175 blocked for more than 120 seconds.
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      kworker/u8:4    D ffff88018de9a5c0     0   175      2 0x00000000
      Workqueue: i915 i915_error_work_func [i915]
       ffff88018e37dc30 0000000000000046 ffff8801938ab8a0 ffff88018e37dfd8
       ffff88018e37dfd8 00000000001d3b00 ffff88018de9a5c0 ffff88018ec21018
       0000000000000246 ffff88018e37dca0 000000005a865a86 ffff88018de9a5c0
      Call Trace:
       [<ffffffff8138ee7b>] schedule+0x60/0x62
       [<ffffffff8138f23d>] schedule_preempt_disabled+0x9/0xb
       [<ffffffff8138d0cd>] mutex_lock_nested+0x205/0x3b1
       [<ffffffffa0477094>] ? intel_display_handle_reset+0x7e/0xbd [i915]
       [<ffffffffa0477094>] ? intel_display_handle_reset+0x7e/0xbd [i915]
       [<ffffffffa0477094>] intel_display_handle_reset+0x7e/0xbd [i915]
       [<ffffffffa044e0a2>] i915_error_work_func+0x128/0x147 [i915]
       [<ffffffff8104a89a>] process_one_work+0x1d4/0x35a
       [<ffffffff8104a821>] ? process_one_work+0x15b/0x35a
       [<ffffffff8104b4a5>] worker_thread+0x144/0x1f0
       [<ffffffff8104b361>] ? rescuer_thread+0x275/0x275
       [<ffffffff8105076d>] kthread+0xac/0xb4
       [<ffffffff81059d30>] ? finish_task_switch+0x3b/0xc0
       [<ffffffff810506c1>] ? __kthread_parkme+0x60/0x60
       [<ffffffff81396a6c>] ret_from_fork+0x7c/0xb0
       [<ffffffff810506c1>] ? __kthread_parkme+0x60/0x60
      3 locks held by kworker/u8:4/175:
       #0:  (i915){.+.+.+}, at: [<ffffffff8104a821>] process_one_work+0x15b/0x35a
       #1:  ((&dev_priv->gpu_error.work)){+.+.+.}, at: [<ffffffff8104a821>] process_one_work+0x15b/0x35a
       #2:  (&crtc->mutex){+.+.+.}, at: [<ffffffffa0477094>] intel_display_handle_reset+0x7e/0xbd [i915]
      
      This blew up while running kms_flip/flip-vs-panning-vs-hang-interruptible
      on one of my older machines.
      
      Unfortunately (despite the proper lockdep annotations for
      flush_workqueue) lockdep still doesn't detect this correctly, so we
      need to rely on chance to discover these bugs.
      
      Apply the usual bugfix and schedule the reset work on the system
      workqueue to keep our own driver workqueue free of any modeset lock
      grabbing.
      
      Note that this is not a terribly serious regression since before the
      offending commit we'd simply have stalled userspace forever due to
      failing to abort all outstanding pageflips.
      
      v2: Add a comment as requested by Chris.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      122f46ba
    • Chris Wilson's avatar
      drm/i915: Hold an object reference whilst we shrink it · 57094f82
      Chris Wilson authored
      Whilst running the shrinker, we need to hold a reference as we unbind
      the objects, or else we may end up waiting for and retiring requests,
      which in turn may result in this object being freed.
      
      This is very similar to the eviction code which also has to be very
      careful to keep a reference to its objects as it retires and unbinds
      them.
      
      Another similarity, that Ben pointed out, is that as we may call
      retire-requests, the unbound_list is outside of our control. We must
      only process a single element of that list at a time, that is we can not
      rely on the "safe" next pointer being valid after a call to
      i915_vma_unbind().
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
        IP: [<ffffffffa0082892>] i915_gem_gtt_finish_object+0x68/0xbd [i915]
        PGD 758d3067 PUD ac0d6067 PMD 0
        Oops: 0000 [#1] SMP
        Modules linked in: dm_mod snd_hda_codec_realtek iTCO_wdt iTCO_vendor_support pcspkr snd_hda_intel i2c_i801 snd_hda_codec snd_hwdep snd_pcm snd_page_alloc snd_timer snd lpc_ich mfd_core soundcore battery ac option usb_wwan usbserial uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core videodev i915 video button drm_kms_helper drm acpi_cpufreq mperf freq_table
        CPU: 1 PID: 16835 Comm: fbo-maxsize Not tainted 3.11.0-rc7_nightlytop_8fdad4_20130902_+ #7977
        task: ffff8800712106d0 ti: ffff880028e4a000 task.ti: ffff880028e4a000
        RIP: 0010:[<ffffffffa0082892>]  [<ffffffffa0082892>] i915_gem_gtt_finish_object+0x68/0xbd [i915]
        RSP: 0018:ffff880028e4b9e8  EFLAGS: 00010246
        RAX: 0000000000000000 RBX: ffff880145734000 RCX: ffff880145735328
        RDX: ffff8801457353fc RSI: 0000000000000000 RDI: ffff88007597cc00
        RBP: ffff88007597cc00 R08: 0000000000000001 R09: ffff88014f257f00
        R10: ffffea0001d65f00 R11: 0000000000bba60b R12: ffff880149e5b000
        R13: ffff880145734001 R14: ffff88007597ccc8 R15: ffff88007597cc00
        FS:  00007ff5bc919740(0000) GS:ffff88014f240000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000008 CR3: 0000000028f4c000 CR4: 00000000001407e0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Stack:
         0000000000000000 ffff88007597cc00 ffff8801440d6840 0000000000000000
         ffff880145734000 ffffffffa007c854 0000000000000010 ffff88007597c900
         0000000000018000 00000000004a1201 ffff88007597cc60 ffffffffa007d183
        Call Trace:
         [<ffffffffa007c854>] ? i915_vma_unbind+0xe2/0x1d1 [i915]
         [<ffffffffa007d183>] ? __i915_gem_shrink+0xf1/0x162 [i915]
         [<ffffffffa007d2ee>] ? i915_gem_object_get_pages_gtt+0xfa/0x303 [i915]
         [<ffffffffa00795f4>] ? i915_gem_object_get_pages+0x54/0x89 [i915]
         [<ffffffffa007cbda>] ? i915_gem_object_pin+0x238/0x5ce [i915]
         [<ffffffff812cba5f>] ? __sg_page_iter_next+0x2b/0x58
         [<ffffffffa0082056>] ? gen6_ppgtt_insert_entries+0xf2/0x114 [i915]
         [<ffffffffa007fe4b>] ? i915_gem_execbuffer_reserve_vma.isra.13+0x79/0x18d [i915]
         [<ffffffffa008017c>] ? i915_gem_execbuffer_reserve+0x21d/0x347 [i915]
         [<ffffffffa0080bfb>] ? i915_gem_do_execbuffer.isra.17+0x4f3/0xe61 [i915]
         [<ffffffffa00795f4>] ? i915_gem_object_get_pages+0x54/0x89 [i915]
         [<ffffffffa007e405>] ? i915_gem_pwrite_ioctl+0x743/0x7a5 [i915]
         [<ffffffffa0081a46>] ? i915_gem_execbuffer2+0x15e/0x1e4 [i915]
         [<ffffffffa000e20d>] ? drm_ioctl+0x2a5/0x3c4 [drm]
         [<ffffffffa00818e8>] ? i915_gem_execbuffer+0x37f/0x37f [i915]
         [<ffffffff816f64c0>] ? __do_page_fault+0x3ab/0x449
         [<ffffffff810be3da>] ? do_mmap_pgoff+0x2b2/0x341
         [<ffffffff810e49be>] ? vfs_ioctl+0x1e/0x31
         [<ffffffff810e5194>] ? do_vfs_ioctl+0x3ad/0x3ef
         [<ffffffff810e5224>] ? SyS_ioctl+0x4e/0x7e
         [<ffffffff816f88d2>] ? system_call_fastpath+0x16/0x1b
        Code: 52 0c a0 48 c7 c6 22 30 0d a0 31 c0 e8 ef 00 f9 ff bf c6 a7 00 00 e8 90 5d 24 e1 f6 85 13 01 00 00 10 75 44 48 8b 85 18 01 00 00 <8b> 50 08 48 8b 30 49 8b 84 24 88 02 00 00 48 89 c7 48 81 c7 98
        RIP  [<ffffffffa0082892>] i915_gem_gtt_finish_object+0x68/0xbd [i915]
        RSP <ffff880028e4b9e8>
        CR2: 0000000000000008
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68171Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@vger.kernel.org
      [danvet: Bikeshed the comments a bit as discussed with Chris.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      57094f82
    • Dave Airlie's avatar
      Merge branch 'exynos-drm-next' of... · 86a7e122
      Dave Airlie authored
      Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next
      
         Summary:
         - Consider fallback option to gem allocation fail
           . try to allocate physically non-contiguous memory
             if iommu is supported when physically contiguous memory allocation
             failed.
         - Add runtime pm support to g2d driver
         - Add device tree support
           . add device tree support to rotator driver, make fimd driver get
             signal polarities from device tree.
         - some fixups
           . correct pixel format setting to fimd driver, and consider pixel
             format checking to a particular window layer.
         - some cleanups
           . replace fb_videomode with videomode.
           . remove non-DT support
      
      * 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (21 commits)
        drm/exynos: Fix build error with exynos_drm_connector.c
        drm/exynos: Remove non-DT support in exynos_drm_fimd
        drm/exynos: Remove non-DT support in exynos_hdmi
        drm/exynos: Remove non-DT support in exynos_drm_g2d
        drm/exynos: Remove non-DT support in exynos_hdmiphy
        drm/exynos: Remove non-DT support in exynos_ddc
        drm/exynos: Make Exynos DRM drivers depend on OF
        drm/exynos: Consider fallback option to allocation fail
        drm/exynos: fimd: move platform data parsing to separate function
        drm/exynos: fimd: get signal polarities from device tree
        drm/exynos: fimd: replace struct fb_videomode with videomode
        drm/exynos: check a pixel format to a particular window layer
        drm/exynos: fix fimd pixel format setting
        drm/exynos: Add NULL pointer check
        drm/exynos: Remove redundant error messages
        drm/exynos: Add missing of.h header include
        drm/exynos: Remove redundant NULL check in exynos_drm_buf
        drm/exynos: add device tree support for rotator
        drm/exynos: Add missing includes
        drm/exynos: add runtime pm interfaces to g2d driver
        ...
      86a7e122
    • Sachin Kamat's avatar
      drm/exynos: Fix build error with exynos_drm_connector.c · 6914262a
      Sachin Kamat authored
      exynos_drm_connector.c now uses videomode helper API. Hence select
      VIDEOMODE_HELPERS at DRM_EXYNOS level itself instead of at
      DRM_EXYNOS_FIMD to avoid the following compilation error when FIMD
      is not selected (introduced by commit cf796235a6 "drm/exynos: fimd:
      replace struct fb_videomode with videomode"):
      drivers/built-in.o: In function `exynos_drm_connector_get_modes':
      drivers/gpu/drm/exynos/exynos_drm_connector.c:86:
      undefined reference to `drm_display_mode_from_videomode'
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      6914262a
    • Sachin Kamat's avatar
      drm/exynos: Remove non-DT support in exynos_drm_fimd · 2d3f173c
      Sachin Kamat authored
      Since commit 383ffda2 ("ARM: EXYNOS: no more support non-DT
      for EXYNOS SoCs"), Exynos platform is DT only. Hence remove
      all the conditional macros and make the driver DT only.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      2d3f173c
    • Sachin Kamat's avatar
      drm/exynos: Remove non-DT support in exynos_hdmi · 88c49815
      Sachin Kamat authored
      Since commit 383ffda2 ("ARM: EXYNOS: no more support non-DT
      for EXYNOS SoCs"), Exynos platform is DT only. Hence remove
      all the conditional macros and make the driver DT only.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      88c49815
    • Sachin Kamat's avatar
      drm/exynos: Remove non-DT support in exynos_drm_g2d · 61c48fbf
      Sachin Kamat authored
      Since commit 383ffda2 ("ARM: EXYNOS: no more support non-DT
      for EXYNOS SoCs"), Exynos platform is DT only. Hence remove
      all the conditional macros and make the driver DT only.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      61c48fbf
    • Sachin Kamat's avatar
      drm/exynos: Remove non-DT support in exynos_hdmiphy · 459e97ee
      Sachin Kamat authored
      Since commit 383ffda2 ("ARM: EXYNOS: no more support non-DT
      for EXYNOS SoCs"), Exynos platform is DT only. Hence remove
      all the conditional macros and make the driver DT only.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      459e97ee
    • Sachin Kamat's avatar
      drm/exynos: Remove non-DT support in exynos_ddc · f61d5f29
      Sachin Kamat authored
      Since commit 383ffda2 ("ARM: EXYNOS: no more support non-DT
      for EXYNOS SoCs"), Exynos platform is DT only. Hence remove
      all the conditional macros and make the driver DT only.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      f61d5f29
    • Sachin Kamat's avatar
      drm/exynos: Make Exynos DRM drivers depend on OF · eccbf0d8
      Sachin Kamat authored
      Exynos is a DT-only platform. Add this info to Kconfig.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      eccbf0d8
    • Vikas Sajjan's avatar
      drm/exynos: Consider fallback option to allocation fail · 3fec4532
      Vikas Sajjan authored
      To address the case where physically contiguous memory
      MAY NOT be a mandatory requirement for framebuffer for
      the application calling exynos_drm_gem_dumb_create,
      the patch adds a feature to get non physically contiguous
      memory for framebuffer, if physically contiguous memory
      allocation fails and if IOMMU is supported.
      Signed-off-by: default avatarVikas Sajjan <vikas.sajjan@linaro.org>
      Signed-off-by: default avatarArun Kumar <arun.kk@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      3fec4532
    • Andrzej Hajda's avatar
      drm/exynos: fimd: move platform data parsing to separate function · 562ad9f4
      Andrzej Hajda authored
      The patch moves platfrom_data and device tree parsing
      to separate function.
      Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      562ad9f4
    • Andrzej Hajda's avatar
      drm/exynos: fimd: get signal polarities from device tree · b063f4af
      Andrzej Hajda authored
      The patch adds code to get signal polarization setting
      from device tree display-timings node.
      Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      b063f4af
    • Andrzej Hajda's avatar
      drm/exynos: fimd: replace struct fb_videomode with videomode · 111e6055
      Andrzej Hajda authored
      The patch replaces all occurrences of struct fb_videomode by
      more accurate struct videomode. The change allows to remove
      mode conversion function and simplifies clock divider calculation.
      Clock configuration is moved to separate function.
      Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      111e6055
    • Inki Dae's avatar
      drm/exynos: check a pixel format to a particular window layer · 5cc4621a
      Inki Dae authored
      This patch checks if a requested window supports alpha channel or not.
      
      In case of s3c64xx, window 0 doesn't support alpha channel so if
      the request pixel format is ARGB8888 then change it to XRGB8888.
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Reviewed-by: default avatarTomasz Figa <t.figa@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      5cc4621a
    • Inki Dae's avatar
      drm/exynos: fix fimd pixel format setting · a4f38a80
      Inki Dae authored
      This patch fixes wrong pixel format setting.
      
      A pixel format is decided according to bpp and depth, or user-requested
      format but fimd driver considered only bpp value to decide a proper pixel
      format. So this patch makes a proper pixel format to be set according
      to drm_framebuffer's pixel_format which is set by addfb with bpp and
      depth, or addfb2 with user-requested format.
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Reviewed-by: default avatarTomasz Figa <t.figa@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      a4f38a80
    • Sachin Kamat's avatar
      drm/exynos: Add NULL pointer check · 4db7fcdf
      Sachin Kamat authored
      devm_kzalloc can fail. Hence check the pointer to avoid NULL pointer
      dereferencing.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      4db7fcdf
    • Sachin Kamat's avatar
      drm/exynos: Remove redundant error messages · 38bb5253
      Sachin Kamat authored
      kzalloc already has built-in error messages. Hence remove
      additional ones.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      38bb5253
    • Sachin Kamat's avatar
      drm/exynos: Add missing of.h header include · 3f1c781d
      Sachin Kamat authored
      Add of.h explicitly for of_* APIs.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      3f1c781d
    • Sachin Kamat's avatar
      drm/exynos: Remove redundant NULL check in exynos_drm_buf · ca7c6220
      Sachin Kamat authored
      kfree handles null pointers. Hence this check is not necessary.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      ca7c6220
    • Chanho Park's avatar
      drm/exynos: add device tree support for rotator · 319477f3
      Chanho Park authored
      The exynos4 platform is only dt-based since 3.10, we should convert driver data
      and ids to dt-based parsing methods. The rotator driver has a limit table to get
      size limit of input picture. Each SoCs has slightly different limit value
      compared with any others.
      For example, exynos4210's max_size of RGB888 is 16k x 16k. But, others have
      8k x 8k. Another example the exynos5250 should have multiple of 2 pixel size
      for its X/Y axis. Thus, we should keep different tables for each of them.
      This patch also includes desciptions of each nodes for the rotator and specifies
      a example how to bind it.
      Signed-off-by: default avatarChanho Park <chanho61.park@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      319477f3
    • Mark Brown's avatar
      drm/exynos: Add missing includes · e30655d0
      Mark Brown authored
      Ensure that all externally accessed functions are correctly prototyped
      when defined in each file by making sure the headers with the protoypes
      are included in the file with the definition.
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      e30655d0
    • Inki Dae's avatar
      drm/exynos: add runtime pm interfaces to g2d driver · b10d6350
      Inki Dae authored
      This patch makes g2d power domain and clock to be controlled
      through pm runtime interfaces instead of controlling them
      respectively.
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      b10d6350
    • Vikas Sajjan's avatar
      drm/exynos: Add fallback option to get non physically contiguous memory for fb · a1bfacf4
      Vikas Sajjan authored
      While trying to get boot-logo up on exynos5420 SMDK which has eDP panel
      connected with resolution 2560x1600, following error occured even with
      IOMMU enabled:
      [0.880000] [drm:lowlevel_buffer_allocate] *ERROR* failed to allocate buffer.
      [0.890000] [drm] Initialized exynos 1.0.0 20110530 on minor 0
      
      To address the cases where physically contiguous memory MAY NOT be a
      mandatory requirement for fb, the patch adds a feature to get non physically
      contiguous memory for fb if physically contiguous memory allocation fails
      and if IOMMU is supported.
      Signed-off-by: default avatarVikas Sajjan <vikas.sajjan@linaro.org>
      Signed-off-by: default avatarArun Kumar <arun.kk@samsung.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      a1bfacf4
  4. 04 Sep, 2013 11 commits