aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-10-31drm/tegra: hdmi: Parameterize based on compatible propertyThierry Reding2-30/+53
Use a structure to parameterize the code to handle differences between the HDMI hardware on various SoC generations. This removes the need to clutter the code with checks for individual compatible values. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: hdmi: Rename tegra{2,3} to tegra{20,30}Thierry Reding1-6/+6
Everything related to Tegra uses Tegra20 and Tegra30 instead of Tegra2 and Tegra3, respectively. Rename the TMDS arrays in the HDMI driver for consistency. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Add support for Tegra114Thierry Reding7-1/+620
Tegra114 uses a slightly updated version of host1x with an additional syncpoint. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Allocate resources at probe timeThierry Reding5-27/+56
Since the .init() and .exit() functions are executed whenever the DRM driver is loaded or unloaded, care must be taken not to use them for resource allocation. Otherwise deferred probing cannot be used, since the .init() and .exit() are not run at probe time. Similarly the code that frees resources must be run at .remove() time. If it is run from the .exit() function, it can release resources multiple times. To handle this more consistently, rename the tegra_output_parse_dt() function to tegra_output_probe() and introduce tegra_output_remove() which can be used to free output-related resources. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Properly cleanup and zero out resourcesThierry Reding3-5/+36
When the DRM driver is unloaded, all the associated resources must be cleaned up and zeroed out. This is necessary because of the architecture of the Tegra DRM driver, where not all subdrivers are unloaded along with the DRM driver. Therefore device-managed managed won't be freed and memory cannot be assumed to have been cleared (because it hasn't been reallocated using kzalloc()) by the time the DRM driver is reloaded. It is therefore necessary to zero out the structures to prevent strange errors (such as slab corruptions) from occurring. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Move driver to DRM treeThierry Reding21-17/+27
In order to make subsystem-wide changes easier, move the Tegra DRM driver back into the DRM tree. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Use relative include pathsThierry Reding7-26/+24
This is slightly safer than adding -Idrivers/gpu/host1x to cflags-y. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Move subdevice infrastructure to host1xThierry Reding13-365/+898
The Tegra DRM driver currently uses some infrastructure to defer the DRM core initialization until all required devices have registered. The same infrastructure can potentially be used by any other driver that requires more than a single sub-device of the host1x module. Make the infrastructure more generic and keep only the DRM specific code in the DRM part of the driver. Eventually this will make it easy to move the DRM driver part back to the DRM subsystem. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Expose syncpt and channel functionalityThierry Reding14-254/+211
Expose the buffer objects, syncpoint and channel functionality in the public public header so that drivers can use them. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Introduce tegra_drm_client structureThierry Reding6-83/+114
This structure derives from host1x_client. DRM-specific fields are moved from host1x_client to this structure, so that host1x_client can remain agnostic of DRM. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Make host1x header file publicThierry Reding5-10/+9
In preparation to support host1x clients other than DRM, move this header into a public location. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: gem: Miscellaneous cleanupsThierry Reding1-11/+10
Rename the host1x_to_drm_bo() macro to host1x_to_tegra_bo() for consistency and fixup various stylistic issues. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Rename gr2d to tegra-gr2dThierry Reding1-1/+1
Other drivers use the tegra- prefix in their names, so add it to this driver's name as well for consistency. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: gr2d: Miscellaneous cleanupsThierry Reding1-51/+49
Rework the address table code for the host1x firewall. The previous implementation allocated a bitfield but didn't check for a valid pointer so it could potentially crash. Instead, embed a static bitmap within the gr2d structure to avoid the allocation and use the Linux bitmap API to reduce code complexity. Don't annotate the driver's .remove() function __exit. Even if built in the driver can be unloaded via sysfs, so .remove() needs to stick around after initialization. Also remove the explicit initialization of the driver's .owner field to THIS_MODULE because that's now handled by the driver core. Furthermore make an error message more consistent with other subdrivers, index the syncpts array for better readability, remove a gratuituous newline and reorder some variable declarations to make the code easier to read. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: firewall: Refactor register checkThierry Reding1-26/+31
The same code sequence is used in various places to validate a register access in the command stream. This can be refactored into a separate function. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: firewall: Rename cmdbuf_id -> cmdbufThierry Reding1-5/+5
The value stored in this field is a pointer to a command buffer, not an ID. Avoid some confusion by reflecting that in the field's name. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Fix alignment of function argumentsThierry Reding1-1/+1
Arguments on subsequent lines should be aligned with the first argument. This one occurrence went unnoticed during code review. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Do not discard .remove()Thierry Reding1-4/+3
The device can be unbound from the driver via sysfs, so regardless of whether the driver is builtin or a module, its .remove() function needs to stick around. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Cleanup includesThierry Reding9-51/+2
Most of the included files are either not required or already included by some other header file. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Rename host1x_drm_context to tegra_drm_contextThierry Reding3-20/+28
The structure represents a context associated with a particular process that has opened the Tegra DRM device and requested a channel. This is a very DRM-specific notion and has nothing to do with host1x. Rename the structure to more clearly mark the boundaries between the two. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Rename host1x_drm_file to tegra_drm_fileThierry Reding2-15/+15
This structure extends drm_file with Tegra DRM specific fields and has nothing to do with host1x. Rename the structure to more clearly mark the boundaries between host1x and Tegra DRM. While at it, move the structure definition out of the header. It's never used outside of the drm.c source file, so it can be defined within that. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Rename host1x_drm structure to tegra_drmThierry Reding8-116/+115
The host1x and Tegra DRM drivers are currently tightly coupled. Renaming the structure marks the boundary more clearly. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Cleanup tegra_dc structureThierry Reding1-4/+1
Remove the unused host1x field from the structure and group the fields more logically. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/tegra: Remove unused fieldsThierry Reding1-4/+0
Some of the fields in struct host1x_drm haven't been used for a while, so remove them. Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: Remove unused MakefileThierry Reding1-6/+0
Signed-off-by: Thierry Reding <[email protected]>
2013-10-31gpu: host1x: check relocs after all gathers are consumedErik Faye-Lund1-4/+4
The num_relocs count are passed to the kernel per job, not per gather. For multi-gather jobs, we would previously fail if there were relocs in other gathers aside from the first one. Fix this by simply moving the check until all gathers have been consumed. Signed-off-by: Erik Faye-Lund <[email protected]> Reviewed-by: Arto Merilainen <[email protected]> Acked-By: Terje Bergstrom <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm: Fix typo in debug messageThierry Reding1-1/+1
Fix a typo (iotcl -> ioctl) in the debug message when an unknown IOCTL is encountered. Acked-by: David Airlie <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm: Track the proper DPMS mode of connectorsThierry Reding1-0/+8
When userspace removes the active framebuffer using DRM_IOCTL_MODE_RMFB, or explicitly disables the CRTC (by calling drmModeSetCrtc(..., NULL) for example), a NULL framebuffer will be passed to the .set_config() implementation of a CRTC. The drm_crtc_helper_set_config() helper will decide to disable a CRTC when that happens. To do so, it calls drm_crtc_helper_disable(), which in turn will iterate over all encoders and decouple them from their connectors and finally call drm_helper_disable_unused_functions() to clean up and call the .disable() or .dpms() implementation for each encoder. However, at no point during this sequence does it track the DPMS mode of a connector, so it will usually remain on after this. When a connector is enabled again, drm_helper_connector_dpms() will not notice that the DPMS mode actually changed and won't do anything, which causes the connector to stay disabled indefinitely. To prevent this from happening, explicitly set the connector's DPMS mode to off when the CRTC is disabled. That way it reflects the correct state and can be enabled again. This solves an issue observed when terminating an X server running on the xf86-video-modesetting driver. Without this patch, the connector would not be enabled properly and the screen would stay dark. Acked-by: David Airlie <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2013-10-31drm/sysfs: Do not drop device reference twiceThierry Reding1-2/+0
device_unregister() already drops its reference to the struct device, so explicitly calling put_device() before device_unregister() can cause the device to have been freed before it can be unregistered. Signed-off-by: Thierry Reding <[email protected]> Reviewed-by: Paulo Zanoni <[email protected]> Tested-by: Paulo Zanoni <[email protected]> Tested-by: Ben Widawsky <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-25Merge tag 'drm-intel-next-2013-10-18' of ↵Dave Airlie51-983/+2375
git://people.freedesktop.org/~danvet/drm-intel into drm-next - CRC support from Damien and He Shuang. Long term this should allow us to test an awful lot modesetting corner cases automatically. So for me as the maintainer this is really big. - HDMI audio fix from Jani. - VLV dpll computation code refactoring from Ville. - Fixups for the gpu booster from last time around (Chris). - Some cleanups in the context code from Ben. - More watermark work from Ville (we'll be getting there ...). - vblank timestamp improvements from Ville. - CONFIG_FB=n support, including drm core changes to make the fbdev helpers optional. - DP link training improvements (Jani). - mmio vtable from Ben, prep work for future hw. * tag 'drm-intel-next-2013-10-18' of git://people.freedesktop.org/~danvet/drm-intel: (132 commits) drm/i915/dp: don't mention eDP bpp clamping if it doesn't affect bpp drm/i915: remove dead code in ironlake_crtc_mode_set drm/i915: crc support for hsw drm/i915: fix CRC debugfs setup drm/i915: wait one vblank when disabling CRCs drm/i915: use ->get_vblank_counter for the crc frame counter drm/i915: wire up CRC interrupt for ilk/snb drm/i915: add CRC #defines for ilk/snb drm/i915: extract display_pipe_crc_update drm/i915: don't Oops in debugfs for I915_FBDEV=n drm/i915: set HDMI pixel clock in audio configuration drm/i915: pass mode to ELD write vfuncs cpufreq: Add dummy cpufreq_cpu_get/put for CONFIG_CPU_FREQ=n drm/i915: check gem bo size when creating framebuffers drm/i915: Use unsigned long for obj->user_pin_count drm/i915: prevent tiling changes on framebuffer backing storage drm/i915: grab dev->struct_mutex around framebuffer_init drm/i915: vlv: fix VGA hotplug after modeset drm: add support for additional stereo 3D modes drm/i915: preserve dispaly init order on ByT ...
2013-10-23drm/qxl: fix disabling extra monitors from clientMarc-André Lureau1-1/+4
To disable a monitor, a Spice client sends a monitor config with the monitor resolution to 0x0. However, before qxl_crtc_disable() is reached after the hotplug event, it can happen that another monitor is reconfigured, and qxl_send_monitors_config() is called with the old config, which will re-enable the monitor on the client. Reset config if monitor is found disconnected, during drm_helper_hpd_irq_event(). Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm/qxl: remove unnecessary checkMarc-André Lureau1-3/+0
All hard-coded resolutions are passing this check. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm/qxl: prefer the monitor config resolutionMarc-André Lureau1-5/+13
By default, 1024x768 is the preferred resolution. However, when a monitor config is given, it should be the only preferred resolution. Note that the monitor config resolution is passed to qxl_add_common_modes() to avoid adding a duplicate mode without the preferred resolution. That would discard the previous monitor config preferred bit. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm: copy mode type in drm_mode_connector_list_update()Marc-André Lureau1-1/+1
In commit 38d5487db7f289be1d56ac7df704ee49ed3213b9, Keith explained: This patch simply merges the two mode type bits together; that seems reasonable to me, but perhaps only a subset of the bits should be used? None of these can be user defined as they all come from looking at just the hardware. However, merging the bits means that a flag becomes sticky. It is not possible, for example to update the mode type to remove the DRM_MODE_TYPE_PREFERRED bit. After a brief discussion with Dave Airlie on irc, it was agreed to propose that change, instead of introducing another function to remove a bit from exisiting modes type. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm/qxl: notify that the monitor config changedMarc-André Lureau1-1/+6
drm_helper_hpd_irq_event() only notifies when the connector status changed. However, Spice monitor config can change while the connector is connected, to support arbitrary resolution. Do an hotplug event if it wasn't done by drm_helper_hpd_irq_event(). Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm: return if changed in drm_helper_hpd_irq_event()Marc-André Lureau2-3/+5
The caller may want to know whether the configuration was changed, and if an hotplug event was sent. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23drm: fix a small spellingMarc-André Lureau1-1/+1
Fix a little spelling of drm_crtc_convert_umode() comment. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2013-10-23Merge branch 'drm-tda998x-3.12-fixes' of ↵Dave Airlie1-1/+1
git://ftp.arm.linux.org.uk/~rmk/linux-cubox into drm-next Fix build on non-ARM * 'drm-tda998x-3.12-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox: DRM: Armada: depend on ARM
2013-10-22DRM: Armada: depend on ARMRussell King1-1/+1
Armada DRM uses relaxed accessors which are not available on other platforms. Limit it to just ARM. Acked-by: Rob Clark <[email protected]> Signed-off-by: Russell King <[email protected]>
2013-10-22Merge branch 'drm-tda998x-3.12' of ↵Dave Airlie25-0/+4318
git://ftp.arm.linux.org.uk/~rmk/linux-cubox into drm-next This adds support for the Armada 510 display subsystem found on the Marvell Dove devices. This IP is re-used across several different Marvell SoCs with various tweaks, and this driver has been structured to allow the other IPs to re-use the bulk of this code; further work in this area is expected from interested parties. This has been extensively tested on the SolidRun Cubox platform and appears to work well there. [airlied: update for api changes merged previous to this]
2013-10-22drm/sysfs: sort out minor and connector device object lifetimes.Dave Airlie11-87/+61
So drm was abusing device lifetimes, by having embedded device structures in the minor and connector it meant that the lifetime of the internal drm objects (drm_minor and drm_connector) were tied to the lifetime of the device files in sysfs, so if something kept those files opened the current code would kfree the objects and things would go downhill from there. Now in reality there is no need for these lifetimes to be so intertwined, especailly with hotplugging of devices where we wish to remove the sysfs and userspace facing pieces before we can unwind the internal objects due to open userspace files or mmaps, so split the objects out so the struct device is no longer embedded and do what fbdev does and just allocate and remove the sysfs inodes separately. Signed-off-by: Dave Airlie <[email protected]>
2013-10-18DRM: Armada: add support for drm tda19988 driverRussell King2-0/+51
Add support for TDA998x output via the slave driver in the kernel. Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Russell King <[email protected]>
2013-10-18Merge branches 'drm-3.12' and 'tda998x-3.12' into drm-tda998x-3.12Russell King1-0/+3
2013-10-18drm/i2c: tda998x: set VIF for full range, underscanned displayRussell King1-0/+3
Tested-by: Sebastian Hesselbarth <[email protected]> Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Russell King <[email protected]>
2013-10-18DRM: Armada: Add support for ARGB 32x64 or 64x32 hardware cursorsRussell King5-6/+256
This patch adds ARGB hardware cursor support to the DRM driver for the Marvell Armada SoCs. ARGB cursors are supported at either 32x64 or 64x32 resolutions. Tested-by: Sebastian Hesselbarth <[email protected]> Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Russell King <[email protected]>
2013-10-18drm/i915/dp: don't mention eDP bpp clamping if it doesn't affect bppJani Nikula1-2/+3
This is useful with the follow-up patch that frobs dev_priv->vbt.edp_bpp, and the value no longer comes directly from VBT. Signed-off-by: Jani Nikula <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-10-18drm/i915: remove dead code in ironlake_crtc_mode_setDaniel Vetter1-5/+0
In Author: Daniel Vetter <[email protected]> Date: Wed Jun 5 13:34:23 2013 +0200 drm/i915: consolidate pch pll enable sequence I've removed all the code from this if block, but somehow forgotten to kill the block itself. Reviewed-by: Ville Syrjälä <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-10-18drm/i915: crc support for hswDaniel Vetter3-20/+27
hw designers decided to change the CRC registers and coalesce them all into one. Otherwise nothing changed. I've opted for a new hsw_ version to grab the crc sample since hsw+1 will have the same crc registers, but different interrupt source registers. So this little helper function will come handy there. Also refactor the display error handler with a neat pipe loop. v2: Use for_each_pipe. Reviewed-by: Damien Lespiau <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-10-18drm/i915: fix CRC debugfs setupDaniel Vetter1-2/+1
We've set up all files, but removed only those for which we have a pipe. Which leaves the one for pipe C on machines with less than 2 pipes, breaking module reload. v2: We can't get at the drm device this early (wtf), so just register all the files and also remove them all again. Reviewed-by: Damien Lespiau <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>
2013-10-18drm/i915: wait one vblank when disabling CRCsDaniel Vetter1-0/+2
This avoids a spurious spurious interrupt warning. Reviewed-by: Damien Lespiau <[email protected]> Signed-off-by: Daniel Vetter <[email protected]>