aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-08-10drm/nouveau/device: add method to retrieve some basic device infoBen Skeggs4-37/+171
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/core: import ioctl/event interfacesBen Skeggs13-4/+831
This forms the basis for the new APIs that will be exposed to userspace, giving it access to: - Object method calls, the immediately useful of which is performance counters and the abiity to manipulate the ZBC tables. - Information on the child classes an object supports, in order to avoid having to try all supported classes until successful. - Notifications, which will be used in the future to inform the client if its channel was killed due to a lockup, etc. This commit imports the interfaces, but are not currently used. The DRM portion of the driver will be ported to speak to the core using these interfaces as much as possible. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/core: add function to return list of supported childrenBen Skeggs2-0/+34
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/core: rework event interfaceBen Skeggs52-517/+875
This is a lot of prep-work for being able to send event notifications back to userspace. Events now contain data, rather than a "something just happened" signal. Handler data is now embedded into a containing structure, rather than being kmalloc()'d, and can optionally have the notify routine handled in a workqueue. Various races between suspend/unload with display HPD/DP IRQ handlers automagically solved as a result. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/core: move handle-based object apis to handle.cBen Skeggs4-120/+135
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/core: fail creation of zero-argument objects, when arguments are ↵Ben Skeggs1-30/+6
passed Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: store a pointer to vm in nouveau_cliBen Skeggs5-19/+24
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: store vblank event handler data in nv_crtcBen Skeggs3-29/+29
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nv50/kms: create ctxdma objects for framebuffers as requiredBen Skeggs4-163/+126
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nv50/kms: move framebuffer wrangling out of common codeBen Skeggs3-47/+81
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: Bump version from 1.1.1 to 1.1.2Mario Kleiner1-1/+3
Linux 3.16 fixed multiple bugs in kms pageflip completion events and timestamping, which were originally introduced in Linux 3.13. These fixes have been backported to all stable kernels since 3.13. However, the userspace nouveau-ddx needs to be aware if it is running on a kernel on which these bugs are fixed, or not. Bump the patchlevel of the drm driver version to signal this, so backporting this patch to stable 3.13+ kernels will give the ddx the required info. Signed-off-by: Mario Kleiner <[email protected]> Cc: <[email protected]> #v3.13+ Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nv50-/sw: use nv50_software_context_dtor....Ben Skeggs2-2/+2
You would not believe the troubles this caused me... Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nv50-/fb: use dma_mapping_error() to check dma_map_page() resultBen Skeggs2-3/+3
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: Dis/Enable vblank irqs during suspend/resume.Mario Kleiner1-0/+11
Vblank irqs don't get disabled during suspend or driver unload, which causes irq delivery after "suspend" or driver unload, at least until the gpu is powered off. This could race with drm_vblank_cleanup() in the case of nouveau and cause a use-after-free bug if the driver is unloaded. More annoyingly during everyday use, at least on nv50 display engine (likely also others), vblank irqs are off after a resume from suspend, but the drm doesn't know this, so all vblank related functionality is dead after a resume. E.g., all windowed OpenGL clients will hang at swapbuffers time, as well as many fullscreen clients in many cases. This makes suspend/resume useless if one wants to use any OpenGL apps after the resume. In Linux 3.16, drm_vblank_on() was added, complementing the older drm_vblank_off() to solve these problems elegantly, so use those calls in nouveaus suspend/resume code. For kernels 3.8 - 3.15, we need to cherry-pick the drm_vblank_on() patch to support this patch. Signed-off-by: Mario Kleiner <[email protected]> Cc: <[email protected]> #v3.16 Cc: <[email protected]> #v3.8+: f275228: drm: Add drm_vblank_on() Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: platform: update moved Tegra headerAlexandre Courbot1-1/+1
Header for tegra_powergate functions has moved to soc/tegra/pmc.h. Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/gk20a: reclocking supportAlexandre Courbot5-0/+669
Add support for reclocking on GK20A, using a statically-defined pstates table. The algorithms for calculating the coefficients and setting the clocks are directly taken from the ChromeOS kernel. Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/clk: support for non-BIOS pstatesAlexandre Courbot9-20/+30
Make nouveau_clock_create() take new two optional arguments: an array of pstates and its size. When these are specified, nouveau_clock_create() will use the provided pstates instead of probing them using the BIOS. This is useful for platforms which do not provide a BIOS, like Tegra. Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/clk: make therm and volt devices optionalAlexandre Courbot1-14/+22
Allow the clock subsystem to operate even if voltage and thermal devices are not set for the device (for people with watercooling! ;)) Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/perfmon: do not forget to destroy the engine contextSamuel Pitoiset1-0/+1
This fixes a crash when we reload Nouveau DRM. Signed-off-by: Samuel Pitoiset <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: map pages using DMA APIAlexandre Courbot5-41/+26
The DMA API is the recommended way to map pages no matter what the underlying bus is. Use the DMA functions for page mapping and remove currently existing wrappers. Signed-off-by: Alexandre Courbot <[email protected]> Acked-by: Daniel Vetter <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/pwr/macros: Stop playing Russian roulette on data memoryRoy Spliet5-663/+663
Signed-off-by: Roy Spliet <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nve4/graph: do not crash if no power device presentAlexandre Courbot1-1/+2
Detect and workaround the absence of a power device so chips that do not feature one (e.g. GK20A) can still use this driver. Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/gk20a: add BAR instanceAlexandre Courbot6-4/+66
GK20A's BAR is functionally identical to NVC0's, but do not support being ioremapped write-combined. Create a BAR instance for GK20A that reflect that state. Signed-off-by: Alexandre Courbot <[email protected]>
2014-08-10drm/nouveau/bar: add noncached ioremap propertyAlexandre Courbot2-5/+15
Some BARs (like GK20A's) do not support being ioremapped write-combined. Add a boolean property to the BAR structure and handle that case in the Nouveau BO implementation. Signed-off-by: Alexandre Courbot <[email protected]>
2014-08-10drm/nouveau: support for probing platform devicesAlexandre Courbot6-16/+291
Add a platform driver for Nouveau devices declared using the device tree or platform data. This driver currently supports GK20A on Tegra platforms and is only compiled for these platforms if Nouveau is enabled. Nouveau will probe the chip type itself using the BOOT0 register, so all this driver really needs to do is to make sure the module is powered and its clocks active before calling nouveau_drm_platform_probe(). Heavily based on work done by Thierry Reding. Signed-off-by: Thierry Reding <[email protected]> Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/kms: restore acceleration before fb_set_suspend() resumesBen Skeggs1-3/+3
This *should* be safe these days. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/kms: take more care when pulling down accelerated fbconBen Skeggs3-39/+61
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau: expose pstate selection per-power source in sysfsBen Skeggs3-18/+52
echo ac:id >> pstate # select mode when on mains power echo dc:id >> pstate # select mode when on battery echo id >> pstate # select mode for both Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/clk: allow selection of different power state for ac vs batteryBen Skeggs4-30/+96
v2: - s/init/fini/ typo, reported by Alex Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/clk: schedule pstate changes through a workqueueBen Skeggs2-11/+39
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/device: register for acpi eventsBen Skeggs5-2/+94
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/gk208-/gr: stop touching 0x260 inappropriatelyBen Skeggs15-45/+113
As a side note.. It's a bit hard to figure out how to name this commit.. GK20A is NVEA, which is before NV108 (GK208).. Confusing. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/gk110b/gr: initvals differ from gk110Ben Skeggs9-14/+244
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/gk104/gr: disable PGOB at init timeBen Skeggs2-25/+7
This removes the previous hack that worked on some boards. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/gk104/pwr: implement PGOB disable methodBen Skeggs6-3/+86
As documented at: ftp://download.nvidia.com/open-gpu-doc/gk104-disable-graphics-power-gating/1/gk104-disable-graphics-power-gating.txt NVIDIA were not able document the steps necessary to detect whether this is required or not at this time. However, they did confirm that this procedure is safe to perform unconditionally on GK104/6. GK107 does not have the power gating feature, and it was recommended that we do not perform these steps there as the effects were not verified. The disable path is from observing the binary driver, and not documented in the link above. Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/nouveau/pwr: tidyBen Skeggs12-193/+133
Signed-off-by: Ben Skeggs <[email protected]>
2014-08-10drm/ttm: expose CPU address of DMA-allocated pagesAlexandre Courbot3-5/+12
Pages allocated using the DMA API have a coherent memory mapping. Make this mapping visible to drivers so they can decide to use it instead of creating their own redundant one. Signed-off-by: Alexandre Courbot <[email protected]> Acked-by: David Airlie <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2014-08-08Revert "drm: drop redundant drm_file->is_master"Dave Airlie9-27/+20
This reverts commit 48ba813701eb14b3008edefef4a0789b328e278c. Thanks to Chris: "drm_file->is_master is not synomous with having drm_file->master == drm_file->minor->master. This is because drm_file->master is the same for all drm_files of the same generation and so when there is a master, every drm_file believes itself to be the master. Confusion ensues and things go pear shaped when one file is closed and there is no master anymore." Conflicts: drivers/gpu/drm/drm_drv.c drivers/gpu/drm/drm_stub.c
2014-08-07Merge tag 'drm/tegra/for-3.17-rc1' of ↵Dave Airlie16-67/+425
git://anongit.freedesktop.org/tegra/linux into drm-next drm/tegra: Changes for v3.17-rc1 Mostly some cleanup all over the place. Pitch alignment limitations of the display controller are now honored and job submission is 64-bit safe. The SOR output (used for eDP) properly configures sync signal polarities according to the display mode rather than hard-coding them to some value and the number of bits per color is now taken from the panel rather than hard-coded to properly support 24-bit vs. 18-bit panels. The DSI controller now properly supports non-continuous clock mode. GEM objects can now have their flags and tiling mode modified via IOCTLs to allow buffers imported from Nouveau to be properly displayed. Newer generations of the Tegra display controller can also detile block linear buffers at scan-out time. Finally the driver now properly exports MODULE_DEVICE_TABLEs to allow it to be automatically loaded when built as a module. * tag 'drm/tegra/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux: drm/tegra: add MODULE_DEVICE_TABLEs drm/tegra: dc - Reset controller on driver remove drm/tegra: Properly align stride for framebuffers drm/tegra: sor - Configure proper sync polarities drm/tegra: sor - Use bits-per-color from panel drm/tegra: Make job submission 64-bit safe drm/tegra: Allow non-authenticated processes to create buffer objects drm/tegra: Add SET/GET_FLAGS IOCTLs drm/tegra: Add SET/GET_TILING IOCTLs drm/tegra: Implement more tiling modes drm/tegra: dsi - Handle non-continuous clock flag drm/tegra: sor - missing unlock on error
2014-08-07Merge tag 'drm/panel/for-3.17-rc1' of ↵Dave Airlie17-73/+447
git://anongit.freedesktop.org/tegra/linux into drm-next drm/panel: Changes for v3.17-rc1 Panels can now be more finely controlled via .prepare() and .unprepare() callbacks in addition to .enable() and .disable(). New kerneldoc details what they are supposed to do and when they should be called. The simple panel driver gained support for a couple of new panels and it is now possible to specify additional delays during power up and power down sequences if panels require it. DSI devices can now advertise that they support non-continuous clock mode which will allow DSI host controllers to disable the high speed clock after transmissions to save power. * tag 'drm/panel/for-3.17-rc1' of git://anongit.freedesktop.org/tegra/linux: (30 commits) drm/panel: simple: Use devm_gpiod_get_optional() drm/dsi: Replace upcasting macro by function drm/panel: ld9040: Replace upcasting macro by function drm/exynos: dp: Modify driver to support drm_panel drm/exynos: Move DP setup into commit() drm/panel: simple: Add AUO B133HTN01 panel support drm/panel: simple: Support delays in panel functions drm/panel: simple: Add proper definition for prepare and unprepare drm/panel: s6e8aa0: Add proper definition for prepare and unprepare drm/panel: ld9040: Add proper definition for prepare and unprepare drm/tegra: Add support for panel prepare and unprepare routines drm/exynos: dsi: Add support for panel prepare and unprepare routines drm/exynos: dpi: Add support for panel prepare and unprepare routines drm/panel: simple: Add dummy prepare and unprepare routines drm/panel: s6e8aa0: Add dummy prepare and unprepare routines drm/panel: ld9040: Add dummy prepare and unprepare routines drm/panel: Provide convenience wrapper for .get_modes() drm/panel: add .prepare() and .unprepare() functions drm/panel: simple: Remove simple-panel compatible drm/panel: simple: Add Innolux N116BGE panel support ...
2014-08-07drm/panel: simple: Use devm_gpiod_get_optional()Alexandre Courbot1-7/+5
Use the new devm_gpiod_get_optional() to simplify the probe code. Signed-off-by: Alexandre Courbot <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/dsi: Replace upcasting macro by functionThierry Reding1-2/+9
Using a function instead of a macro provides proper type checking. Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: ld9040: Replace upcasting macro by functionThierry Reding1-1/+4
Using a function instead of a macro provides proper type checking. Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/exynos: dp: Modify driver to support drm_panelAjay Kumar3-21/+71
Add drm_panel controls to support powerup/down of the eDP panel, if one is present at the sink side. Signed-off-by: Ajay Kumar <[email protected]> Acked-by: Inki Dae <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/exynos: Move DP setup into commit()Ajay Kumar1-5/+19
Add commit callback for exynos_dp, and move the DP link training, video configuration code from the hotplug handler into commit(). Signed-off-by: Sean Paul <[email protected]> Signed-off-by: Ajay Kumar <[email protected]> Acked-by: Inki Dae <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: simple: Add AUO B133HTN01 panel supportAjay Kumar2-0/+37
The AUO B133HTN01 is a 13.6" FHD TFT LCD panel connecting to an eDP interface and with an integrated LED backlight unit. This panel is used on the Samsung Chromebook 2 (XE503C32). Signed-off-by: Ajay Kumar <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: simple: Support delays in panel functionsAjay Kumar1-0/+30
For most of the panels, we need to provide delays during various stages of panel power up and power down. Add a structure to hold those delay values and use them in corresponding functions. Signed-off-by: Ajay Kumar <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: simple: Add proper definition for prepare and unprepareAjay Kumar1-10/+27
Move out code from enable and disable routines to prepare and unprepare routines, so that functionality is properly distributed across all the panel functions. Signed-off-by: Ajay Kumar <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: s6e8aa0: Add proper definition for prepare and unprepareAjay Kumar1-11/+11
Move out code from enable and disable routines to prepare and unprepare routines, so that functionality is properly distributed across all the panel functions. Signed-off-by: Ajay Kumar <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
2014-08-06drm/panel: ld9040: Add proper definition for prepare and unprepareAjay Kumar1-11/+11
Move out code from enable and disable routines to prepare and unprepare routines, so that functionality is properly distributed across all the panel functions. Signed-off-by: Ajay Kumar <[email protected]> Signed-off-by: Thierry Reding <[email protected]>