Commit Graph

169068 Commits

Author SHA1 Message Date
YoungJun Cho 979c0c7eb0 drm/exynos: release resources properly when fb creation is failed.
This patch releases allocated resources properly when
exynos_user_fb_create() is failed.

Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2013-02-21 15:00:26 +09:00
YoungJun Cho 5af9f116e6 drm/exynos: fix wrong pointer access at vm close.
This patch fixes wrong pointer access issue to filp->f_op and
filp->private_data.

The exynos_drm_gem_mmap_ioctl() changes filp->f_op and
filp->private_data temporarily and restore them to use
original ones in exynos_drm_gem_mmap_buffer() but there
was no lock between the changing and the restoring so
wrong pointer access to filp->f_op and filp->private_data
was induced by vm close callback.

So this patch uses mutex lock properly to resolve this issue.

Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2013-02-21 15:00:26 +09:00
Sachin Kamat e44a5c0016 drm/exynos: Add missing braces around sizeof
Fixes the following checkpatch warning:
WARNING: sizeof *sgt should be sizeof(*sgt)

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
2013-02-21 15:00:26 +09:00
Inki Dae b9ede277e1 drm/exynos: consider exception case to fb handle creation
GETFB ioctl request creates a new handle to only one gem object
so it should check if the given fb has one gem object.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2013-02-21 15:00:26 +09:00
Inki Dae fe9e3137cf drm/exynos: fix iommu address allocation order
This patch modifies iommu address allocation order from 64k
to 4k. 64k order causes waste of the io space and this was
our mistakes.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
2013-02-21 15:00:26 +09:00
Dave Airlie ca18e1426b Merge branch 'tilcdc-next' of git://people.freedesktop.org/~robclark/linux into drm-next
KMS driver for TI LCD controller

* 'tilcdc-next' of git://people.freedesktop.org/~robclark/linux:
  drm/tilcdc: add support for LCD panels (v5)
  drm/tilcdc: add encoder slave (v2)
  drm/i2c: nxp-tda998x (v3)
  drm/tilcdc: add TI LCD Controller DRM driver (v4)
  drm/nouveau: use i2c encoder helper wrappers
  drm: i2c encoder helper wrappers
  drm/cma: add debugfs helpers
  drm: small fix in drm_send_vblank_event()
  drm: Don't set the plane->fb to NULL on successfull set_plane
  drm/cma-helper: fixup compilation

Conflicts:
	drivers/gpu/drm/Kconfig
	drivers/gpu/drm/Makefile
	drivers/gpu/drm/drm_fb_cma_helper.c
2013-02-21 09:31:47 +10:00
Dave Airlie 74e1697478 Merge branch 'drm-next-3.9' of git://people.freedesktop.org/~agd5f/linux into drm-next
More drm-next bits for radeon.  Just bug fixes.

* 'drm-next-3.9' of git://people.freedesktop.org/~agd5f/linux:
  drm/radeon: properly validate the atpx interface
  drm/radeon: switch get_gpu_clock() to a callback (v2)
  drm/radeon: add a asic callback to get the xclk
  drm/radeon: Avoid NULL pointer dereference from atom_index_iio() allocation failure
  drm/radeon: remove overzealous warning in hdmi handling
  drm/radeon: fix multi-head power profile stability on BTC+ asics
2013-02-21 07:15:16 +10:00
Dave Airlie e9f211ad7d Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next
restore debugfs vbios, fix multiple actions with supervisor intrs

* 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
  drm/nouveau: restore debugfs/vbios.rom support
  drm/nv50-/kms: remove UPDATE methods after each encoder disconnect
  drm/nvd0/disp: handle multiple actions from one set of supervisor intrs
  drm/nv50/disp: handle multiple actions from one set of supervisor intrs
2013-02-21 07:13:56 +10:00
Alex Deucher 43a23aa450 drm/radeon: properly validate the atpx interface
Some bioses don't set the function mask correctly
which caused required functions to be disabled.

Fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=53111

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2013-02-20 08:51:21 -05:00
Alex Deucher d041889414 drm/radeon: switch get_gpu_clock() to a callback (v2)
Cleans up the code for future asics

v2: rebase, fix some missing radeon_asic updates

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-02-20 08:51:21 -05:00
Alex Deucher 454d2e2a32 drm/radeon: add a asic callback to get the xclk
This is required to get the reference clock used
by the gfx engine for things like timestamps. Fixes
support for GL extensions the use timestamps on
certain boards.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-02-20 08:51:20 -05:00
Tim Gardner 0e34d0945e drm/radeon: Avoid NULL pointer dereference from atom_index_iio() allocation failure
Smatch anlysis:

drivers/gpu/drm/radeon/atom.c:1242 atom_index_iio() error: potential null
 dereference 'ctx->iio'.  (kzalloc returns null)

Also cleaned up some checks before calls to kfree(). kfree(NULL) is OK.

Cc: David Airlie <airlied@linux.ie>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Michel Dänzer" <michel.daenzer@amd.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2013-02-20 08:51:19 -05:00
Alex Deucher c944b2abb0 drm/radeon: remove overzealous warning in hdmi handling
hdmi audio works fine.  The warning just confuses users.

fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=44341

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Cc: stable@vger.kernel.org
2013-02-20 08:51:19 -05:00
Alex Deucher 7ae764b11e drm/radeon: fix multi-head power profile stability on BTC+ asics
vddci needs to track mclk for multi-head.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2013-02-20 08:51:10 -05:00
Marcin Slusarz 33b903e828 drm/nouveau: restore debugfs/vbios.rom support
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
2013-02-20 20:46:34 +10:00
Ben Skeggs eff76ed788 drm/nv50-/kms: remove UPDATE methods after each encoder disconnect
Supervisor can now handle more than one operation within a single
series of interrupts.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 20:46:31 +10:00
Ben Skeggs 4ea253adf0 drm/nvd0/disp: handle multiple actions from one set of supervisor intrs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 20:46:26 +10:00
Ben Skeggs 16d4c031dd drm/nv50/disp: handle multiple actions from one set of supervisor intrs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 20:46:21 +10:00
Lee, Chun-Yi 2e82b5dd47 gpu: remove gma500 stub driver
In v3.3, the gma500 drm driver moved from staging to drm group by
Alan Cox's 3abcf41fb patch. the gma500 drm driver should control
brightness well and don't need gma500 stub driver anymore.

Reference:
http://lists.freedesktop.org/archives/dri-devel/2012-May/023426.html
http://lists.freedesktop.org/archives/dri-devel/2012-May/023467.html

Acked-by: Matthew Garrett <mjg59@srcf.ucam.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2013-02-20 17:54:58 +10:00
Dave Airlie 1f3a574a4b Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-next
Nothing terribly exciting in here probably:
- reworked thermal stuff from mupuf/I, has a chance of possibly working
well enough when we get to being able to reclock..
- driver will report mmio access faults on chipsets where it's supported
- will now sleep waiting on fences on nv84+ rather than polling
- some cleanup of the internal fencing, looking towards sli/dmabuf sync
- initial support for anx9805 dp/tmds encoder
- nv50+ display fixes related to the above, and also might fix a few
other issues
- nicer error reporting (will log process names with channel errors)
- various other random fixes

* 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: (87 commits)
  nouveau: ACPI support depends on X86 and X86_PLATFORM_DEVICES
  drm/nouveau/i2c: add support for ddc/aux, and dp link training on anx9805
  drm/nv50: initial kms support for off-chip TMDS/DP encoders
  drm/nv50-/disp: initial supervisor support for off-chip encoders
  drm/nv50-/disp: initial work towards supporting external encoders
  drm/nv50-/kms: remove unnecessary wait-for-completion points
  drm/nv50-/disp: move DP link training to core and train from supervisor
  drm/nv50-/disp: handle supervisor tasks from workqueue
  drm/nouveau/i2c: create proper chipset-specific class implementations
  drm/nv50-/disp: 0x0000 is a valid udisp config value
  drm/nv50/devinit: reverse the logic for running encoder init scripts
  drm/nouveau/bios: store a type/mask hash in parsed dcb data
  drm/nouveau/i2c: extend type to 16-bits, add lookup-by-type function
  drm/nouveau/i2c: aux channels not necessarily on nvio
  drm/nouveau/i2c: fix a bit of a thinko in nv_wri2cr helper functions
  drm/nouveau/bios: parse external transmitter type if off-chip
  drm/nouveau: store i2c port pointer directly in nouveau_encoder
  drm/nouveau/i2c: handle i2c/aux mux outside of port lookup function
  drm/nv50/graph: avoid touching 400724, it doesn't exist
  drm/nouveau: Fix DPMS 1 on G4 Snowball, from snow white to coal black.
  ...
2013-02-20 17:54:13 +10:00
Ben Hutchings a91ed42de2 nouveau: ACPI support depends on X86 and X86_PLATFORM_DEVICES
If I build nouveau on ia64, Kconfig warns:

warning: (DRM_NOUVEAU) selects ACPI_WMI which has unmet direct dependencies (X86 && X86_PLATFORM_DEVICES && ACPI)
warning: (DRM_NOUVEAU) selects MXM_WMI which has unmet direct dependencies (X86 && X86_PLATFORM_DEVICES && ACPI_WMI)

Make all the ACPI support depend on X86 and select
X86_PLATFORM_DEVICES.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:05:16 +10:00
Ben Skeggs 5effecd4f8 drm/nouveau/i2c: add support for ddc/aux, and dp link training on anx9805
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:05 +10:00
Ben Skeggs eb6313add6 drm/nv50: initial kms support for off-chip TMDS/DP encoders
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:05 +10:00
Ben Skeggs 476e84e126 drm/nv50-/disp: initial supervisor support for off-chip encoders
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:04 +10:00
Ben Skeggs a2bc283f39 drm/nv50-/disp: initial work towards supporting external encoders
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:04 +10:00
Ben Skeggs 5a885f0b75 drm/nv50-/kms: remove unnecessary wait-for-completion points
DP link training is now handled as part of the supervisor processing,
and can no longer race with it.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:03 +10:00
Ben Skeggs 0a0afd282f drm/nv50-/disp: move DP link training to core and train from supervisor
We need to be able to do link training for PIOR-connected ANX9805 from
the third supervisor handler (due to script ordering in the bios, can't
have the "user" call train because some settings are overwritten from
the modesetting bios scripts).

This moves link training for SOR-connected DP encoders to the second
supervisor interrupt, *before* we call the modesetting scripts (yes,
different ordering from PIOR is necessary).  This is useful since we
should now be able to remove some hacks to workaround races between
the supervisor and link training paths.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:02 +10:00
Ben Skeggs 5cc027f6b1 drm/nv50-/disp: handle supervisor tasks from workqueue
i2c_algo_bit sleeps...

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:02 +10:00
Ben Skeggs 7dcd060c0e drm/nouveau/i2c: create proper chipset-specific class implementations
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:01 +10:00
Ben Skeggs 46c13c131d drm/nv50-/disp: 0x0000 is a valid udisp config value
Return an out-of-range value instead to signal a failure from
exec_clkcmp().

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:01 +10:00
Ben Skeggs ac8cc241a8 drm/nv50/devinit: reverse the logic for running encoder init scripts
A single U encoder table can match multiple DCB entries, whereas the
reverse is not true and can lead to us not matching a DCB entry at
all, and fail to initialise some encoders.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:01:00 +10:00
Ben Skeggs 8e992c8d9e drm/nouveau/bios: store a type/mask hash in parsed dcb data
Matches format used by a couple of other vbios tables, useful
to have laying around already calculated.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:59 +10:00
Ben Skeggs 548ddb6dec drm/nouveau/i2c: extend type to 16-bits, add lookup-by-type function
For off-chip transmitters we won't necessarily have an i2c table entry
to lookup, but we can do it instead by encoding the type to include
the extdev type and looking that up instead.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:59 +10:00
Ben Skeggs 31a34aa421 drm/nouveau/i2c: aux channels not necessarily on nvio
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:58 +10:00
Ben Skeggs eaa8e7ab99 drm/nouveau/i2c: fix a bit of a thinko in nv_wri2cr helper functions
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:58 +10:00
Ben Skeggs f3ed104871 drm/nouveau/bios: parse external transmitter type if off-chip
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:57 +10:00
Ben Skeggs 5ed502096f drm/nouveau: store i2c port pointer directly in nouveau_encoder
This is about to become somewhat more complicated to determine in a
number of cases, so store the "common" case (DDC/AUX) directly inside
the encoder structure.

Pre-nv50 code not touched except to fill the pointer, don't care.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:56 +10:00
Ben Skeggs df3ef6a109 drm/nouveau/i2c: handle i2c/aux mux outside of port lookup function
Not quite how I want it yet, but, I'll fix that at some point.  For
right now, it's needed because find() won't necessarily be used right
before a transaction anymore.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:56 +10:00
Ben Skeggs f63740fd58 drm/nv50/graph: avoid touching 400724, it doesn't exist
Harmless, but we now get MMIO fault reports, so silence it.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:55 +10:00
Stefan de Konink 89e728ce07 drm/nouveau: Fix DPMS 1 on G4 Snowball, from snow white to coal black.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=40275.

Signed-off-by: Stefan de Konink <stefan@konink.de>
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:55 +10:00
Dan Carpenter af1ac18a19 drm/nouveau/disp: sizeof() wrong pointer
"data" is a void pointer and "args" is "data" after we have casted it to
a struct.  We care about the size of the struct here.  Btw,
sizeof(*data) is 1.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:54 +10:00
Ben Skeggs 264ce192b3 drm/nv84-/fence: prepare for emit/sync support of sysram sequences
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:53 +10:00
Ben Skeggs 827520ce06 drm/nouveau/fence: make internal hooks part of the context
A step towards being able to provide fences from other engines not
connected to PFIFO.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:53 +10:00
Ben Skeggs 60e5cb79cb drm/nv17/fence: split from nv10 code
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:52 +10:00
Ben Skeggs bba9852fee drm/nv84-/fence: abstract class emit/sync functions to virt+sequence
Now can be used to operate on any buffer mapped into the GPU virtual
address and not just the main inter-channel sync buffer.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:52 +10:00
Ben Skeggs a34caf78f2 drm/nv84/fence: access fences with full virtual address, not offset
Allows most of the code to be shared between nv84/nvc0 implementations,
and paves the way for doing emit/sync on non-VRAM buffers (multi-gpu,
dma-buf).

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:51 +10:00
Ben Skeggs fa531bc8b4 drm/nouveau/gpio/nve0: interrupt regs moved on kepler apparently
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:51 +10:00
Ben Skeggs 4f47643dbb drm/nouveau/gpio: use event interfaces for interrupt signalling
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:50 +10:00
Ben Skeggs 0f0800661a drm/nouveau/gpio: pass number of on-die gpio lines to base
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:49 +10:00
Ben Skeggs 23fc09ee09 drm/nouveau/drm: store full dcb gpio function data in connector
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2013-02-20 16:00:49 +10:00