openwrt/staging/blogic.git
9 years agodrm/i915: Configure GEN6_RP_DOWN_TIMEOUT on CHV
Ville Syrjälä [Mon, 19 Jan 2015 11:50:49 +0000 (13:50 +0200)]
drm/i915: Configure GEN6_RP_DOWN_TIMEOUT on CHV

CherryViewA0_iGfx_BIOS_DRIVER_PUNIT_spec_y14w28d5 tells us not to enable
the RP down timeout interrupt, and says that the timeout value is hence
not used. We do enable that interrupt currently though, so leaving the
timeout as 0 results in very poor performance as the GPU frequency keeps
dropping constantly. So just program the register with the recommended
value.

Leaving the interrupt enabled doesn't seem to do any harm so far. So
I've decided to leave it on for now, just to avoid making CHV a
special case.

This fixes the performance regression from:
 commit 5a0afd4b78ec23f27f5d486ac3d102c2e8d66bd7
 Author: Deepak S <deepak.s@linux.intel.com>
 Date:   Sat Dec 13 11:43:27 2014 +0530

    drm/i915/chv: Use timeout mode for RC6 on chv

Cc: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Deepak S<deepak.s@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915: Change VLV GEN6_RP_DOWN_TIMEOUT value to decimal
Ville Syrjälä [Mon, 19 Jan 2015 11:50:48 +0000 (13:50 +0200)]
drm/i915: Change VLV GEN6_RP_DOWN_TIMEOUT value to decimal

We use decimal for all the other RP magic values, so change
GEN6_RP_DOWN_TIMEOUT to decimal as well. Also change the order
of the register writes to match the BIOS spec for easier verification.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Deepak S<deepak.s@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915: Disable RC6 before configuring in on VLV/CHV
Ville Syrjälä [Mon, 19 Jan 2015 11:50:47 +0000 (13:50 +0200)]
drm/i915: Disable RC6 before configuring in on VLV/CHV

Follow the sequence in the BIOS spec and clear the RC_CONTROL register
before changing any of the other RC6/RP registers.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Deepak S<deepak.s@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915: New offset for reading frequencies on CHV.
Deepak S [Sat, 17 Jan 2015 05:35:59 +0000 (11:05 +0530)]
drm/i915: New offset for reading frequencies on CHV.

Use new Sideband offset to read max/min/gaur freq based on the SKU it
is running on. Based on the Number of EU, we read different bits to
identify the max frequencies at which system can run.

v2: reuse mask definitions & INTEL_INFO() to get device info (Ville)

v3: add break in switch conditions (Ville)

Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915: Increase the range of sideband address.
Deepak S [Fri, 16 Jan 2015 15:12:17 +0000 (20:42 +0530)]
drm/i915: Increase the range of sideband address.

Looks like latest BSW/CHV production system has sideband address > 128.
Use u32 data types to cover new offset/address range :)

Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915/chv: Populate total EU count on Cherryview
Deepak S [Fri, 16 Jan 2015 15:12:16 +0000 (20:42 +0530)]
drm/i915/chv: Populate total EU count on Cherryview

Starting with Cherryview, devices may have a varying number of EU for
a given ID due to creative fusing. Punit support different frequency for
different fuse data. We use this patch to help get total eu enabled and
read the right offset to get RP0

Based upon a patch from Jeff, but reworked to only store eu_total and
avoid sending info to userspace

v2: Format register definitions (Jani)

Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Acked-by: Jeff McGee <jeff.mcgee@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/i915: Don't cleanup plane state in intel_plane_destroy()
Matt Roper [Fri, 16 Jan 2015 15:25:24 +0000 (07:25 -0800)]
drm/i915: Don't cleanup plane state in intel_plane_destroy()

When we transitioned to the atomic plane helpers in commit:

        commit ea2c67bb4affa84080c616920f3899f123786e56
        Author: Matt Roper <matthew.d.roper@intel.com>
        Date:   Tue Dec 23 10:41:52 2014 -0800

            drm/i915: Move to atomic plane helpers (v9)

one of the changes was to call intel_plane_destroy_state() while tearing
down a plane to prevent leaks when unloading the driver.  That made
sense when the patches were first written, but before they were merged,

        commit 3009c0377f25c29852b218a6933a969d02cbdc5d
        Author:     Thierry Reding <treding@nvidia.com>
        Date:       Tue Nov 25 12:09:49 2014 +0100

            drm: Free atomic state during cleanup

had already landed, which made this the responsibility of the DRM core.
The result was that we were kfree()'ing the state twice, and also
possibly double-unref'ing a framebuffer, leading to memory corruption
when the driver was unloaded.

The fix is to simply not try to cleanup the state in the i915 teardown
code now that the core handles this for us.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88433
Testcase: igt/drv_module_reload
Root-cause-analysis-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm: Add rotation value to plane state
Matt Roper [Thu, 22 Jan 2015 00:35:40 +0000 (16:35 -0800)]
drm: Add rotation value to plane state

The rotation property is shared by multiple drivers, so it makes sense
to store the rotation value (for atomic-converted drivers) in the common
plane state so that core code can eventually access it as well.

Cc: dri-devel@lists.freedesktop.org
Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agoMerge branch 'drm-next' of https://github.com/markyzq/kernel-drm-rockchip into drm...
Dave Airlie [Tue, 27 Jan 2015 00:05:44 +0000 (10:05 +1000)]
Merge branch 'drm-next' of https://github.com/markyzq/kernel-drm-rockchip into drm-next

single rockchip fix.

* 'drm-next' of https://github.com/markyzq/kernel-drm-rockchip:
  drm/rockchip: fix dma_alloc_attrs() error check

9 years agoMerge branch 'drm-next-3.20' of git://people.freedesktop.org/~agd5f/linux into drm...
Dave Airlie [Mon, 26 Jan 2015 23:39:58 +0000 (09:39 +1000)]
Merge branch 'drm-next-3.20' of git://people.freedesktop.org/~agd5f/linux into drm-next

Radeon drm-next changes for 3.20.  Highlights:
- Indirect draw support for evergreen/NI hw
- SMC fan control support for SI/CI
- Manual fan control for SI/CI
- DP audio support
- Lots of code cleanup

* 'drm-next-3.20' of git://people.freedesktop.org/~agd5f/linux: (45 commits)
  drm/radeon: make MMU_NOTIFIER optional
  drm/radeon: use NULL rather then 0 in audio detect
  drm/radeon: whitespace clean up in radeon_audio.c
  radeon/audio: enable DP audio
  radeon/audio: moved audio caps programming to audio_hotplug() function
  radeon/audio: applied audio_dpms() and audio_mode_set() calls
  radeon/audio: consolidate audio_mode_set() functions
  radeon/audio: removed unnecessary debug settings
  radeon/audio: moved mute programming to a separate function
  radeon/audio: moved audio packet programming to a separate function
  radeon/audio: set_avi_packet() function cleanup
  radeon/audio: removed unnecessary CRC control programing
  radeon: moved HDMI color depth programming to a separate function
  radeon/audio: moved VBI packet programming to separate functions
  radeon/audio: consolidate update_acr() functions (v2)
  radeon/audio: consolidate update_avi_infoframe() functions
  radeon/audio: consolidate audio_set_dto() functions
  radeon/audio: consolidate audio_fini() functions
  radeon/audio: consolidate audio_enable() functions
  radeon/audio: consolidate select_pin() functions
  ...

9 years agoMerge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daein...
Dave Airlie [Mon, 26 Jan 2015 23:38:29 +0000 (09:38 +1000)]
Merge branch 'exynos-drm-next' of git://git./linux/kernel/git/daeinki/drm-exynos into drm-next

  This pull request includes some code refactoring which removes
   Exynos specific structure names and uses generic structure
   names instead, and makes all plane updating to be done
   by only exynos_update_plane function. And also it includes
   some cleanup and fixup patches.

* 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (22 commits)
  drm/exynos: fimd: check error status for drm_iommu_attach_device
  drm/exynos: create exynos_check_plane()
  drm/exynos: remove mode_set() ops from exynos_crtc
  drm/exynos: don't duplicate drm_display_mode in fimd context
  drm/exynos: remove struct exynos_drm_manager
  drm/exynos: remove drm_dev from struct exynos_drm_manager
  drm/exynos: move 'type' from manager to crtc struct
  drm/exynos: remove pipe member of struct exynos_drm_manager
  drm/exynos: add pipe param to exynos_drm_crtc_create()
  drm/exynos: rename base object of struct exynos_drm_crtc to 'base'
  drm/exynos: remove exynos_drm_crtc_mode_set_commit()
  drm/exynos: call exynos_update_plane() directly on page flips
  drm/exynos: unify plane update on exynos_update_plane()
  drm/exynos: remove exynos_plane_commit() wrapper
  drm/exynos: don't do any DPMS operation while updating planes
  drm/exynos: Don't touch DPMS when updating overlay planes
  drm/exynos/vidi: remove useless ops->commit()
  drm/exynos/fimd: don't initialize 'ret' variable in fimd_probe()
  drm/exynos: remove struct exynos_drm_overlay
  drm/exynos: remove exynos_drm_crtc_plane_* wrappers
  ...

9 years agoMerge tag 'drm-amdkfd-next-fixes-2015-01-25' of git://people.freedesktop.org/~gabbayo...
Dave Airlie [Mon, 26 Jan 2015 23:14:15 +0000 (09:14 +1000)]
Merge tag 'drm-amdkfd-next-fixes-2015-01-25' of git://people.freedesktop.org/~gabbayo/linux into drm-next

Here is a pull request of fixes for 3.20 patches, including the fix you asked
me when you merged the previous pull request.

* tag 'drm-amdkfd-next-fixes-2015-01-25' of git://people.freedesktop.org/~gabbayo/linux:
  drm/amdkfd: change amdkfd version to 0.7.1
  drm/radeon: cik_sdma_ctx_switch_enable() can be static
  drm/amdkfd: Fix sparse errors
  drm/amdkfd: Handle case of invalid queue type
  drm/amdkfd: Add break at the end of case
  drm/amdkfd: Remove negative check of uint variable

9 years agodrm: fix drm_display_info_set_bus_formats kernel doc header
Boris Brezillon [Fri, 23 Jan 2015 20:09:30 +0000 (21:09 +0100)]
drm: fix drm_display_info_set_bus_formats kernel doc header

formats and num_formats arguments were previously called fmts and nfmts.
Fix the kernel doc comment so that it matches the new argument names.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
9 years agoMerge tag 'drm-intel-next-2015-01-17' of git://anongit.freedesktop.org/drm-intel...
Dave Airlie [Mon, 26 Jan 2015 23:01:09 +0000 (09:01 +1000)]
Merge tag 'drm-intel-next-2015-01-17' of git://anongit.freedesktop.org/drm-intel into drm-next

- refactor i915/snd-hda interaction to use the component framework (Imre)
- psr cleanups and small fixes (Rodrigo)
- a few perf w/a from Ken Graunke
- switch to atomic plane helpers (Matt Roper)
- wc mmap support (Chris Wilson & Akash Goel)
- smaller things all over

* tag 'drm-intel-next-2015-01-17' of git://anongit.freedesktop.org/drm-intel: (40 commits)
  drm/i915: Update DRIVER_DATE to 20150117
  i915: reuse %ph to dump small buffers
  drm/i915: Ensure the HiZ RAW Stall Optimization is on for Cherryview.
  drm/i915: Enable the HiZ RAW Stall Optimization on Broadwell.
  drm/i915: PSR link standby at debugfs
  drm/i915: group link_standby setup and let this info visible everywhere.
  drm/i915: Add missing vbt check.
  drm/i915: PSR HSW/BDW: Fix inverted logic at sink main_link_active bit.
  drm/i915: PSR VLV/CHV: Remove condition checks that only applies to Haswell.
  drm/i915: VLV/CHV PSR needs to exit PSR on every flush.
  drm/i915: Fix kerneldoc for i915 atomic plane code
  drm/i915: Don't pretend SDVO hotplug works on 915
  drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV
  drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup()
  drm/i915: Make hpd arrays big enough to avoid out of bounds access
  Revert "drm/i915/chv: Use timeout mode for RC6 on chv"
  drm/i915: Improve HiZ throughput on Cherryview.
  drm/i915: Reset CSB read pointer in ring init
  drm/i915: Drop unused position fields (v2)
  drm/i915: Move to atomic plane helpers (v9)
  ...

9 years agoMerge tag 'topic/core-stuff-2015-01-23' of git://anongit.freedesktop.org/drm-intel...
Dave Airlie [Mon, 26 Jan 2015 22:54:11 +0000 (08:54 +1000)]
Merge tag 'topic/core-stuff-2015-01-23' of git://anongit.freedesktop.org/drm-intel into drm-next

Just flushing out my drm-misc branch, nothing major. Well too old patches
I've dug out from years since a patch from Rob look eerily familiar ;-)

* tag 'topic/core-stuff-2015-01-23' of git://anongit.freedesktop.org/drm-intel:
  drm/probe-helper: clamp unknown connector status in the poll work
  drm/probe-helper: don't lose hotplug event
  next: drm/atomic: Use copy_from_user to copy 64 bit data from user space
  drm: Make drm_read() more robust against multithreaded races
  drm/fb-helper: Propagate errors from initial config failure
  drm: Drop superfluous "select VT_HW_CONSOLE_BINDING"

9 years agodrm/exynos: fimd: check error status for drm_iommu_attach_device
Ajay Kumar [Sun, 11 Jan 2015 16:57:07 +0000 (01:57 +0900)]
drm/exynos: fimd: check error status for drm_iommu_attach_device

check error status for drm_iommu_attach_device() and make sure
it propagates till the caller.

Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
Signed-off-by: Inki Dae <daeinki@gmail.com>
9 years agodrm/exynos: create exynos_check_plane()
Gustavo Padovan [Thu, 27 Nov 2014 16:56:09 +0000 (14:56 -0200)]
drm/exynos: create exynos_check_plane()

Split update plane in two parts, an initial check part that can fail
and the update part that can't fail.

This is a important step for the upcoming atomic modesetting support.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove mode_set() ops from exynos_crtc
Gustavo Padovan [Thu, 27 Nov 2014 18:30:45 +0000 (16:30 -0200)]
drm/exynos: remove mode_set() ops from exynos_crtc

It is no longer used anywhere.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: don't duplicate drm_display_mode in fimd context
Gustavo Padovan [Thu, 27 Nov 2014 18:28:44 +0000 (16:28 -0200)]
drm/exynos: don't duplicate drm_display_mode in fimd context

We can safely use the mode stored in the crtc.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove struct exynos_drm_manager
Gustavo Padovan [Sun, 18 Jan 2015 09:16:23 +0000 (18:16 +0900)]
drm/exynos: remove struct exynos_drm_manager

exynos_drm_manager was just a redundant struct to represent the crtc as
well. In this commit we merge exynos_drm_manager into exynos_drm_crtc to
remove an unnecessary level of indirection easing the understand of the
flow on exynos.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove drm_dev from struct exynos_drm_manager
Gustavo Padovan [Wed, 26 Nov 2014 18:43:27 +0000 (16:43 -0200)]
drm/exynos: remove drm_dev from struct exynos_drm_manager

manager-drm_dev is only accessed by exynos_drm_crtc_create() so this patch
pass drm_dev as argument on exynos_drm_crtc_create() and remove it from
struct exynos_drm_manager.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: move 'type' from manager to crtc struct
Gustavo Padovan [Wed, 5 Nov 2014 21:51:35 +0000 (19:51 -0200)]
drm/exynos: move 'type' from manager to crtc struct

'type' is now part of the struct exynos_drm_crtc. This is just another
step in the struct exynos_drm_manager removal.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove pipe member of struct exynos_drm_manager
Gustavo Padovan [Tue, 4 Nov 2014 20:44:47 +0000 (18:44 -0200)]
drm/exynos: remove pipe member of struct exynos_drm_manager

It is not longer used. This is part of the process of removing
struct exynos_drm_manager entirely.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: add pipe param to exynos_drm_crtc_create()
Gustavo Padovan [Tue, 4 Nov 2014 20:25:27 +0000 (18:25 -0200)]
drm/exynos: add pipe param to exynos_drm_crtc_create()

Get the pipe value from a parameter instead of getting it from
manager->pipe. We are removing manager->pipe.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: rename base object of struct exynos_drm_crtc to 'base'
Gustavo Padovan [Mon, 3 Nov 2014 20:20:29 +0000 (18:20 -0200)]
drm/exynos: rename base object of struct exynos_drm_crtc to 'base'

'base' is more widely used name in the drm subsystem for the base object.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove exynos_drm_crtc_mode_set_commit()
Gustavo Padovan [Fri, 14 Nov 2014 00:30:00 +0000 (22:30 -0200)]
drm/exynos: remove exynos_drm_crtc_mode_set_commit()

This was just as extra chain in the call stack. We just rename it to
_set_base() and let it do everything alone.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: call exynos_update_plane() directly on page flips
Gustavo Padovan [Tue, 25 Nov 2014 18:18:34 +0000 (16:18 -0200)]
drm/exynos: call exynos_update_plane() directly on page flips

Avoid an extra call to exynos_drm_crtc_mode_set_commit() that only calls
exynos_update_plane().

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: unify plane update on exynos_update_plane()
Gustavo Padovan [Tue, 25 Nov 2014 13:21:17 +0000 (11:21 -0200)]
drm/exynos: unify plane update on exynos_update_plane()

We can safely use the exynos_update_plane() to update the plane
framebuffer for both the overlay and primary planes.

Note that this patch removes a call to manager->ops->commit() in
exynos_drm_crtc_mode_set_commit(). The commit() call is used only by the
fimd driver to set underlying timings and need only in full modeset
operations. For plane update only win_commit is needed.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove exynos_plane_commit() wrapper
Gustavo Padovan [Fri, 14 Nov 2014 00:17:46 +0000 (22:17 -0200)]
drm/exynos: remove exynos_plane_commit() wrapper

It's doing nothing but calling exynos_crtc->ops->win_commit(), so let's
call this directly to avoid extra layers of abstraction.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: don't do any DPMS operation while updating planes
Gustavo Padovan [Fri, 14 Nov 2014 00:27:20 +0000 (22:27 -0200)]
drm/exynos: don't do any DPMS operation while updating planes

DPMS only makes sense when the mode changes, for plane update changes do
not perform any dpms operation.

This move places the win_commit() and commit() calls directly in the code
instead of calling exynos_drm_crtc_commit() thus avoiding DPMS operations.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: Don't touch DPMS when updating overlay planes
Gustavo Padovan [Thu, 30 Oct 2014 12:00:54 +0000 (12:00 +0000)]
drm/exynos: Don't touch DPMS when updating overlay planes

DPMS settings should only be changed by a full modeset.
exynos_plane_update() should only care about updating the planes itself
and nothing else.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos/vidi: remove useless ops->commit()
Gustavo Padovan [Thu, 6 Nov 2014 20:15:01 +0000 (18:15 -0200)]
drm/exynos/vidi: remove useless ops->commit()

vidi_commit does nothing, remove it and its callers.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos/fimd: don't initialize 'ret' variable in fimd_probe()
Gustavo Padovan [Mon, 3 Nov 2014 20:56:57 +0000 (18:56 -0200)]
drm/exynos/fimd: don't initialize 'ret' variable in fimd_probe()

We  set it in the beginning of the function, thus no need to set it at
initialization.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove struct exynos_drm_overlay
Gustavo Padovan [Mon, 3 Nov 2014 20:13:27 +0000 (18:13 -0200)]
drm/exynos: remove struct exynos_drm_overlay

struct exynos_drm_overlay has no practical advantage nor serves as
important piece of the exynos API design. The only place it was used
was inside the struct exynos_plane which was just causing a extra
access overhead. Users had to access the overlay first and just then
get the plane information it contains.

This patch merges struct exynos_drm_overlay into struct exynos_plane.
It also renames struct exynos_plane to struct exynos_drm_plane.

The rational is to cut one step to access plane information.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: remove exynos_drm_crtc_plane_* wrappers
Gustavo Padovan [Wed, 29 Oct 2014 19:25:53 +0000 (19:25 +0000)]
drm/exynos: remove exynos_drm_crtc_plane_* wrappers

This functions were doing nothing but calling a manager op function,
so remove them and call the manager directly.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: expose struct exynos_drm_crtc
Gustavo Padovan [Fri, 31 Oct 2014 17:33:30 +0000 (17:33 +0000)]
drm/exynos: expose struct exynos_drm_crtc

Let other pieces of the driver access struct exynos_drm_crtc as well.

struct exynos_drm_manager will be merged into struct exynos_drm_crtc, in
the sense we will move all its members to exynos_drm_crtc, so to start
this conversion exynos_drm_crtc need to be exposed as well.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/exynos: move to_exynos_crtc() macro to main header
Gustavo Padovan [Fri, 31 Oct 2014 14:32:32 +0000 (14:32 +0000)]
drm/exynos: move to_exynos_crtc() macro to main header

With this change we allow other pieces of the code to use this macro.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
9 years agodrm/amdkfd: change amdkfd version to 0.7.1
Oded Gabbay [Thu, 22 Jan 2015 12:57:52 +0000 (14:57 +0200)]
drm/amdkfd: change amdkfd version to 0.7.1

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
9 years agodrm/radeon: cik_sdma_ctx_switch_enable() can be static
kbuild test robot [Wed, 21 Jan 2015 12:32:11 +0000 (20:32 +0800)]
drm/radeon: cik_sdma_ctx_switch_enable() can be static

drivers/gpu/drm/radeon/cik_sdma.c:293:6: sparse: symbol 'cik_sdma_ctx_switch_enable' was not declared. Should it be static?

Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
9 years agodrm/amdkfd: Fix sparse errors
Oded Gabbay [Thu, 22 Jan 2015 11:42:28 +0000 (13:42 +0200)]
drm/amdkfd: Fix sparse errors

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: make MMU_NOTIFIER optional
Rob Clark [Wed, 21 Jan 2015 22:49:59 +0000 (17:49 -0500)]
drm/radeon: make MMU_NOTIFIER optional

In cases where MMU_NOTIFIER is not available, userptr will not be
available.  Similar to i915, although not making an exception for
CAP_SYS_ADMIN.

The proposed userspace patches for userptr seem to handle the fall-
back properly, so a userptr-less kernel should not be a problem.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: use NULL rather then 0 in audio detect
Alex Deucher [Wed, 14 Jan 2015 22:20:10 +0000 (17:20 -0500)]
drm/radeon: use NULL rather then 0 in audio detect

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: whitespace clean up in radeon_audio.c
Alex Deucher [Tue, 13 Jan 2015 17:41:40 +0000 (12:41 -0500)]
drm/radeon: whitespace clean up in radeon_audio.c

Clean up some formatting in radeon_audio.c to be
more consistent with the rest of the driver.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: enable DP audio
Slava Grigorev [Fri, 12 Dec 2014 22:01:42 +0000 (17:01 -0500)]
radeon/audio: enable DP audio

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: moved audio caps programming to audio_hotplug() function
Slava Grigorev [Thu, 11 Dec 2014 18:11:29 +0000 (13:11 -0500)]
radeon/audio: moved audio caps programming to audio_hotplug() function

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: applied audio_dpms() and audio_mode_set() calls
Slava Grigorev [Wed, 10 Dec 2014 19:52:43 +0000 (14:52 -0500)]
radeon/audio: applied audio_dpms() and audio_mode_set() calls

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_mode_set() functions
Slava Grigorev [Wed, 10 Dec 2014 15:43:51 +0000 (10:43 -0500)]
radeon/audio: consolidate audio_mode_set() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: removed unnecessary debug settings
Slava Grigorev [Tue, 9 Dec 2014 22:32:37 +0000 (17:32 -0500)]
radeon/audio: removed unnecessary debug settings

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: moved mute programming to a separate function
Slava Grigorev [Tue, 9 Dec 2014 22:17:35 +0000 (17:17 -0500)]
radeon/audio: moved mute programming to a separate function

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: moved audio packet programming to a separate function
Slava Grigorev [Tue, 9 Dec 2014 21:44:18 +0000 (16:44 -0500)]
radeon/audio: moved audio packet programming to a separate function

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: set_avi_packet() function cleanup
Slava Grigorev [Mon, 8 Dec 2014 23:28:33 +0000 (18:28 -0500)]
radeon/audio: set_avi_packet() function cleanup

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: removed unnecessary CRC control programing
Slava Grigorev [Mon, 8 Dec 2014 21:41:45 +0000 (16:41 -0500)]
radeon/audio: removed unnecessary CRC control programing

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon: moved HDMI color depth programming to a separate function
Slava Grigorev [Mon, 8 Dec 2014 21:25:37 +0000 (16:25 -0500)]
radeon: moved HDMI color depth programming to a separate function

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: moved VBI packet programming to separate functions
Alex Deucher [Wed, 21 Jan 2015 00:20:52 +0000 (19:20 -0500)]
radeon/audio: moved VBI packet programming to separate functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate update_acr() functions (v2)
Slava Grigorev [Sun, 7 Dec 2014 01:19:16 +0000 (20:19 -0500)]
radeon/audio: consolidate update_acr() functions (v2)

V2: fix missing dce6 callback

Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate update_avi_infoframe() functions
Slava Grigorev [Fri, 5 Dec 2014 22:59:56 +0000 (17:59 -0500)]
radeon/audio: consolidate update_avi_infoframe() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_set_dto() functions
Slava Grigorev [Fri, 5 Dec 2014 18:38:31 +0000 (13:38 -0500)]
radeon/audio: consolidate audio_set_dto() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_fini() functions
Slava Grigorev [Wed, 3 Dec 2014 22:07:01 +0000 (17:07 -0500)]
radeon/audio: consolidate audio_fini() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_enable() functions
Slava Grigorev [Wed, 3 Dec 2014 20:29:53 +0000 (15:29 -0500)]
radeon/audio: consolidate audio_enable() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate select_pin() functions
Slava Grigorev [Tue, 2 Dec 2014 22:27:29 +0000 (17:27 -0500)]
radeon/audio: consolidate select_pin() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_get_pin() functions
Slava Grigorev [Tue, 2 Dec 2014 20:22:43 +0000 (15:22 -0500)]
radeon/audio: consolidate audio_get_pin() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate write_latency_fields() functions
Slava Grigorev [Tue, 2 Dec 2014 16:20:48 +0000 (11:20 -0500)]
radeon/audio: consolidate write_latency_fields() functions

Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate write_speaker_allocation() functions
Slava Grigorev [Mon, 1 Dec 2014 23:02:57 +0000 (18:02 -0500)]
radeon/audio: consolidate write_speaker_allocation() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate write_sad_regs() functions
Alex Deucher [Thu, 22 Jan 2015 15:41:55 +0000 (10:41 -0500)]
radeon/audio: consolidate write_sad_regs() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: defined initial audio interface that gets initialized via detect()...
Slava Grigorev [Mon, 1 Dec 2014 18:49:39 +0000 (13:49 -0500)]
radeon/audio: defined initial audio interface that gets initialized via detect() call

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoradeon/audio: consolidate audio_init() functions
Slava Grigorev [Mon, 22 Dec 2014 22:26:51 +0000 (17:26 -0500)]
radeon/audio: consolidate audio_init() functions

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused 7xx dpm code
Alex Deucher [Wed, 14 Jan 2015 21:40:03 +0000 (16:40 -0500)]
drm/radeon: comment out some currently unused 7xx dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused eg dpm code
Alex Deucher [Wed, 14 Jan 2015 21:37:28 +0000 (16:37 -0500)]
drm/radeon: comment out some currently unused eg dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused sumo dpm code
Alex Deucher [Wed, 14 Jan 2015 21:35:52 +0000 (16:35 -0500)]
drm/radeon: comment out some currently unused sumo dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused tn dpm code
Alex Deucher [Wed, 14 Jan 2015 21:33:44 +0000 (16:33 -0500)]
drm/radeon: comment out some currently unused tn dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused btc dpm code
Alex Deucher [Wed, 14 Jan 2015 21:31:38 +0000 (16:31 -0500)]
drm/radeon: comment out some currently unused btc dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused ni dpm code
Alex Deucher [Wed, 14 Jan 2015 21:26:31 +0000 (16:26 -0500)]
drm/radeon: comment out some currently unused ni dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused kv dpm code
Alex Deucher [Wed, 14 Jan 2015 21:20:02 +0000 (16:20 -0500)]
drm/radeon: comment out some currently unused kv dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused si dpm code
Alex Deucher [Wed, 14 Jan 2015 21:18:32 +0000 (16:18 -0500)]
drm/radeon: comment out some currently unused si dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: comment out some currently unused ci dpm code
Alex Deucher [Wed, 14 Jan 2015 21:15:46 +0000 (16:15 -0500)]
drm/radeon: comment out some currently unused ci dpm code

Keep it around for reference.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agogpu: drm: radeon: radeon_object: Remove unused function
Rickard Strandqvist [Sun, 11 Jan 2015 13:17:19 +0000 (14:17 +0100)]
gpu: drm: radeon: radeon_object: Remove unused function

Remove the function radeon_bo_fbdev_mmap() that is not used anywhere.

This was partially found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon/radeon_fb: Remove unused function
Rickard Strandqvist [Tue, 13 Jan 2015 19:02:03 +0000 (20:02 +0100)]
drm/radeon/radeon_fb: Remove unused function

Remove the function radeon_fbdev_total_size() that is not used anywhere.

This was partially found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon/radeon_i2c: Remove unused function
Rickard Strandqvist [Tue, 13 Jan 2015 19:09:27 +0000 (20:09 +0100)]
drm/radeon/radeon_i2c: Remove unused function

Remove the function radeon_best_encoder() that is not used anywhere.

This was partially found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: enable smc fan control on SI
Alex Deucher [Sun, 18 Jan 2015 16:44:40 +0000 (11:44 -0500)]
drm/radeon: enable smc fan control on SI

Working now with Oleg's last round of fixes.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agofixes for SI fan handling
Oleg Chernovskiy [Sat, 17 Jan 2015 18:10:39 +0000 (21:10 +0300)]
fixes for SI fan handling

Added temperature values to SMC payload.
Fan mode check moved check to proper place.

Signed-off-by: Oleg Chernovskiy <algonkvel@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: bind fan control on SI cards to hwmon interface
Alex Deucher [Wed, 7 Jan 2015 20:29:06 +0000 (15:29 -0500)]
drm/radeon: bind fan control on SI cards to hwmon interface

This adds a possibility to control fan on SI parts
via exported hwmon variables. Note that automatic
ucode fan management pauses if you choose to enable
manual fan control.  Use with caution!

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: bind fan control on CI cards to hwmon interface (v2)
Oleg Chernovskiy [Sun, 7 Dec 2014 21:10:46 +0000 (00:10 +0300)]
drm/radeon: bind fan control on CI cards to hwmon interface (v2)

This adds a possibility to control fan on CI parts
via exported hwmon variables. Note that automatic
ucode fan management pauses if you choose to enable
manual fan control.  Use with caution!

v2: agd5f: fix formatting, squash in:

    minor fix for pwm1_enable exposed value

    Track smc control in addition to fan mode
    This fixes pwm1_enable being constantly set
    to 1 because of enabled smc control

also handle the case where smc fan control is disabled.

Signed-off-by: Oleg Chernovskiy <algonkvel@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: add hwmon interface for managing fan pwm (v2)
Oleg Chernovskiy [Sun, 7 Dec 2014 21:10:45 +0000 (00:10 +0300)]
drm/radeon: add hwmon interface for managing fan pwm (v2)

This adds percent-based fan control. Attributes (I hope) follow the
sysfs-interface specification:
* pwm1 - fan speed query/manage
* pwm1_max, pwm1_min - min/max values for fan pwm (constant)
* pwm1_enable - fan control query/manage (enable/disable)

(There is no rpm-based control for now)

v2: agd5f: fix formatting

Signed-off-by: Oleg Chernovskiy <algonkvel@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agoadd common fan control asic callbacks
Oleg Chernovskiy [Sun, 7 Dec 2014 21:10:44 +0000 (00:10 +0300)]
add common fan control asic callbacks

Adds 4 callbacks for managing fan state/speed
* fan_ctrl_set_mode - manages fan control mode (nonzero == manual)
* fan_ctrl_get_mode - queries fan control mode
* set_fan_speed_percent - manages fan speed as percentage value
* get_fan_speed_percent - queries fan speed as percentage value

Signed-off-by: Oleg Chernovskiy <algonkvel@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/radeon: evergreen/cayman indirect draw support (v2)
Glenn Kennard [Sat, 13 Dec 2014 02:32:37 +0000 (03:32 +0100)]
drm/radeon: evergreen/cayman indirect draw support (v2)

Add the necessary set of commands to support OpenGL
indirect draw calls on evergreen/cayman devices that
do not have VM.

v2: agd5f: fix warning on 32-bit

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Glenn Kennard <glenn.kennard@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
9 years agodrm/amdkfd: Handle case of invalid queue type
Oded Gabbay [Thu, 22 Jan 2015 09:40:06 +0000 (11:40 +0200)]
drm/amdkfd: Handle case of invalid queue type

This patch handles a case where amdkfd tries to destroy a queue but the queue
type is invalid.
This case occurs in non-HWS path.

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
9 years agodrm/amdkfd: Add break at the end of case
Oded Gabbay [Thu, 22 Jan 2015 09:15:51 +0000 (11:15 +0200)]
drm/amdkfd: Add break at the end of case

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
9 years agodrm/amdkfd: Remove negative check of uint variable
Oded Gabbay [Thu, 22 Jan 2015 09:09:27 +0000 (11:09 +0200)]
drm/amdkfd: Remove negative check of uint variable

Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
9 years agodrm/probe-helper: clamp unknown connector status in the poll work
Daniel Vetter [Wed, 21 Jan 2015 07:45:22 +0000 (08:45 +0100)]
drm/probe-helper: clamp unknown connector status in the poll work

On some chipset we try to avoid possibly invasive output detection
methods (like load detect which can cause flickering elsewhere) in the
output poll work. Drivers could hence return unknown when a previous
full ->detect call returned a different state.

This change will generate a hotplug event, forcing userspace to do a
full scan. This in turn updates the connector->status field so that we
will _again_ get a state change when the hotplug work re-runs in 10
seconds.

To avoid this ping-pong loop detect this situation and clamp the
connector state to the old value.

Patch is inspired by a patch from Knut Peterson. Knut's patch
completely ignored connector state changes if either the old or new
status was unknown, which seemed to be a bit too agressive to me.

v2: Rebased onto the drm_probe_helper.c extraction.

References: http://lists.freedesktop.org/archives/dri-devel/2012-August/025975.html
Cc: Knut Petersen <Knut_Petersen@t-online.de>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Rob Clark <robdclark@gmail.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agodrm/probe-helper: don't lose hotplug event
Daniel Vetter [Wed, 21 Jan 2015 07:45:21 +0000 (08:45 +0100)]
drm/probe-helper: don't lose hotplug event

There's a race window (small for hpd, 10s large for polled outputs)
where userspace could sneak in with an unrelated connnector probe
ioctl call and eat the hotplug event (since neither the hpd nor the
poll code see a state change).

To avoid this, check whether the connector state changes in all other
->detect calls (in the current helper code that's only probe_single)
and if that's the case, fire off a hotplug event. Note that we can't
directly call the hotplug event handler, since that expects that no
locks are held (due to reentrancy with the fb code to update the kms
console).

Also, this requires that drivers using the probe_single helper
function set up the poll work. All current drivers do that already,
and with the reworked hpd handling there'll be no downside to
unconditionally setting up the poll work any more.

v2: Review from Rob Clark
- Don't bail out of the output poll work immediately if it's disabled
  to make sure we deliver the delayed hoptplug events. Instead just
  jump to the tail.
- Don't scheduel the work when it's not set up. Would be a driver bug
  since using probe helpers for anything dynamic without them
  initialized makes them all noops.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
Cc: Rob Clark <robdclark@gmail.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Tested-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
9 years agoMerge branch 'linux-3.20' of git://anongit.freedesktop.org/git/nouveau/linux-2.6...
Dave Airlie [Thu, 22 Jan 2015 02:35:02 +0000 (12:35 +1000)]
Merge branch 'linux-3.20' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next

There's a huge amount of no-op churn here renaming the majority of the
driver from nouveau_ to nvkm_, in preparation for splitting the module
into two down the track.  Also switched to NVIDIA's unit and chipset
names at the same time.  Despite the massive amount of code touch, the
commits should be safe as objdump was used to verify nothing got
changed accidentally in the renames.

Aside from that, not much in this first pull request:
- nouveau_platform.ko for GK20A was merged into nouveau.ko
- GK20A dynamic reclocking support
- no more vt-switches across suspend/resume
- changed output scaling policy.  if the mode comes from the display's
edid, we program that directly rather than using the gpu to scale to
the panel's native mode.  this should address complaints of having to
jump through hoops for 24/120Hz modes etc
- various other minor fixups and cleanups

* 'linux-3.20' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: (86 commits)
  drm/nouveau: finalise nvkm namespace switch (no binary change)
  drm/nouveau/device: namespace + nvidia gpu names (no binary change)
  drm/nouveau/vp: namespace + nvidia gpu names (no binary change)
  drm/nouveau/sw: namespace + nvidia gpu names (no binary change)
  drm/nouveau/sec: namespace + nvidia gpu names (no binary change)
  drm/nouveau/pm: namespace + nvidia gpu names (no binary change)
  drm/nouveau/msvld: namespace + nvidia gpu names (no binary change)
  drm/nouveau/msppp: namespace + nvidia gpu names (no binary change)
  drm/nouveau/mspdec: namespace + nvidia gpu names (no binary change)
  drm/nouveau/mpeg: namespace + nvidia gpu names (no binary change)
  drm/nouveau/gr: namespace + nvidia gpu names (no binary change)
  drm/nouveau/fifo: namespace + nvidia gpu names (no binary change)
  drm/nouveau/dmaobj: namespace + nvidia gpu names (no binary change)
  drm/nouveau/disp: namespace + nvidia gpu names (no binary change)
  drm/nouveau/cipher: namespace + nvidia gpu names (no binary change)
  drm/nouveau/ce: namespace + nvidia gpu names (no binary change)
  drm/nouveau/bsp: namespace + nvidia gpu names (no binary change)
  drm/nouveau/volt: namespace + nvidia gpu names (no binary change)
  drm/nouveau/timer: namespace + nvidia gpu names (no binary change)
  drm/nouveau/therm: namespace + nvidia gpu names (no binary change)
  ...

9 years agodrm/nouveau: finalise nvkm namespace switch (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:36:34 +0000 (15:36 +1000)]
drm/nouveau: finalise nvkm namespace switch (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/device: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:35:00 +0000 (15:35 +1000)]
drm/nouveau/device: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/vp: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:32:28 +0000 (15:32 +1000)]
drm/nouveau/vp: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/sw: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:32:15 +0000 (15:32 +1000)]
drm/nouveau/sw: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/sec: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:31:24 +0000 (15:31 +1000)]
drm/nouveau/sec: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/pm: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:31:13 +0000 (15:31 +1000)]
drm/nouveau/pm: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/msvld: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:30:40 +0000 (15:30 +1000)]
drm/nouveau/msvld: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/msppp: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:30:22 +0000 (15:30 +1000)]
drm/nouveau/msppp: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
9 years agodrm/nouveau/mspdec: namespace + nvidia gpu names (no binary change)
Ben Skeggs [Wed, 14 Jan 2015 05:30:09 +0000 (15:30 +1000)]
drm/nouveau/mspdec: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver.  This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>