summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/core/subdev
Commit message (Collapse)AuthorAgeFilesLines
* drm/nouveau/ltc: fix tag base address getting truncated if above 4GiBBen Skeggs2014-08-151-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nvc0-/fb/ram: fix use of non-existant ram if partitions aren't uniformBen Skeggs2014-08-151-2/+2
| | | | | | Likely a large part of the GK106 woes.. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bar: behave better if ioremap failedBen Skeggs2014-08-151-3/+11
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ltc: add zbc driversBen Skeggs2014-08-105-1/+101
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ltc: s/ltcg/ltc/ + cleanupBen Skeggs2014-08-109-171/+309
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: rework event interfaceBen Skeggs2014-08-103-36/+77
| | | | | | | | | | | | | | | 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 <bskeggs@redhat.com>
* drm/nv50-/fb: use dma_mapping_error() to check dma_map_page() resultBen Skeggs2014-08-102-3/+3
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gk20a: reclocking supportAlexandre Courbot2014-08-101-0/+665
| | | | | | | | | 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 <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clk: support for non-BIOS pstatesAlexandre Courbot2014-08-108-17/+25
| | | | | | | | | | | | 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 <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clk: make therm and volt devices optionalAlexandre Courbot2014-08-101-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 <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: map pages using DMA APIAlexandre Courbot2014-08-102-4/+10
| | | | | | | | | | 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 <acourbot@nvidia.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/pwr/macros: Stop playing Russian roulette on data memoryRoy Spliet2014-08-105-663/+663
| | | | | Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk20a: add BAR instanceAlexandre Courbot2014-08-103-3/+63
| | | | | | | | 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 <acourbot@nvidia.com>
* drm/nouveau/clk: allow selection of different power state for ac vs batteryBen Skeggs2014-08-101-22/+79
| | | | | | | v2: - s/init/fini/ typo, reported by Alex Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clk: schedule pstate changes through a workqueueBen Skeggs2014-08-101-11/+35
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk208-/gr: stop touching 0x260 inappropriatelyBen Skeggs2014-08-106-2/+96
| | | | | | | 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 <bskeggs@redhat.com>
* drm/gk104/pwr: implement PGOB disable methodBen Skeggs2014-08-103-0/+80
| | | | | | | | | | | | | | | | | 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 <bskeggs@redhat.com>
* drm/nouveau/pwr: tidyBen Skeggs2014-08-107-139/+110
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/therm: fix a potential deadlock in the therm monitoring codeMartin Peres2014-07-151-3/+3
| | | | | | Signed-off-by: Martin Peres <martin.peres@free.fr> Tested-by: Stefan Ringel <mail@stefanringel.de> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ram: fix test for gpio presenceBen Skeggs2014-07-081-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fb: Prevent inlining of ramfuc_regStéphane Marchesin2014-07-081-1/+1
| | | | | | | | | | | | | | When gcc 4.8 inlines this function, it eats up 16 bytes on the stack every time. Eventually we hit warnings because our stack grew too much: ramnve0.c:1383:1: error: the frame size of 1496 bytes is larger than 1024 bytes We fix this by preventing inlining for this function. Signed-off-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk104/ram: bash mpll bit 31 onBen Skeggs2014-07-081-0/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gf117/i2c: no aux channels on this chipsetBen Skeggs2014-06-181-0/+39
| | | | | Reported-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/pwr: fix typo in fifo wrap handlingBen Skeggs2014-06-175-5/+5
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk104/fb/ram: fixups from an earlier search+replaceBen Skeggs2014-06-171-38/+38
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk104/ibus: increase various random timeoutsBen Skeggs2014-06-171-1/+18
| | | | | | | | Fixes (at least) PTHERM accesses timing out at higher clock speeds. Values and registers taken from what the binary driver does. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk104/clk: only touch divider for mode we'll be usingBen Skeggs2014-06-171-3/+5
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios/dp: parse lane postcursor dataBen Skeggs2014-06-111-11/+12
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios: extend connector table parsingBen Skeggs2014-06-113-14/+59
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c/anx9805: add debugging to aux transactionsBen Skeggs2014-06-112-5/+34
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: introduce locking at a per-port levelBen Skeggs2014-06-1112-31/+372
| | | | | | | | | | There's also provisions to allow a pad to be locked with a specific routing, for an indefinite period of time. This will be used in future patches. The G94+ pad driver will now also power-down pads when not required. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: balance port acquire/releaseBen Skeggs2014-06-113-14/+54
| | | | | | | | | | | This was a half-finished hack before, just enough to handle the shared aux/i2c pad thing on G94 and up. We got lucky with locking etc up until now, as this was (generally) all protected by the DRM mode_config lock. It's about to become a lot more likely to hit the races. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/gk104/i2c: add aux channel interrupt driverBen Skeggs2014-06-113-1/+72
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/g94/i2c: add aux channel interrupt driverBen Skeggs2014-06-113-0/+39
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: add interfaces to support handling aux channel interruptsBen Skeggs2014-06-113-0/+81
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: start hiding subdev-internal interfacesBen Skeggs2014-06-1111-119/+124
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: remove unnecessary i2c_set_adapdata()Ben Skeggs2014-06-111-2/+0
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/i2c: properly hand aux reply back to caller, and only retry on deferBen Skeggs2014-06-113-13/+19
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50-/mc: also pass PMGR interrupts onto I2C subdevBen Skeggs2014-06-113-3/+6
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: send separate event types for high/low transitionsBen Skeggs2014-06-112-13/+10
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: use base constructor for all implementationsBen Skeggs2014-06-117-114/+47
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: move on-reset intr disable-and-ack to common codeBen Skeggs2014-06-117-138/+80
| | | | | | | Re-uses the implementation's accessor functions rather than requiring and init/fini implementation for each chipset. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: split "toggled" interrupt into "went high" / "went low"Ben Skeggs2014-06-117-114/+156
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: split g92 class from nv50Ben Skeggs2014-06-117-26/+90
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gpio: use indirect pointer to base class definitionBen Skeggs2014-06-114-8/+8
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: allow event source to handle multiple event types per indexBen Skeggs2014-06-114-4/+4
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50-/mc: fix kms pageflip events by reordering irq handling order.Mario Kleiner2014-06-103-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Whenever a single nouveau_mc_intr() main gpu irq-handler invocation was responsible for calling both, the vblank-irq handler (display engine irq) and kms-pageflip completion handler (from fifo irq), the order of invocation was wrong. nouveau_finish_flip() was called before drm_handle_vblank() for the vblank of pageflip completion, so the emitted pageflip event contained stale vblank count and timestamp from previous vblank. This caused failure in userspace to timestamp properly. Reorder order of invocation of engine irq handlers: Put NVDEV_ENGINE_DISP always on top, and thereby before NVDEV_ENGINE_FIFO, so that drm_handle_vblank() gets called to update vblank timestamps and count before potential pageflip events make use of that information. This works on nv-50 and later, where kms-pageflip completion triggers an irq either after a separate vblank irq, or both pageflip and vblank trigger one common irq invocation, but never before vblank irqs. v2 (Ben): - removed mods for nv04-nv40, it doesn't help there anyway - this is considered a hack, and a better solution should be found Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Cc: <stable@vger.kernel.org> # 3.13+
* drm/gk104/gpio: fix incorrect interrupt register usageBen Skeggs2014-06-101-5/+5
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/clk: allow end-user reclocking for nv40, nvaa, and nve0 clock typesIlia Mirkin2014-06-108-9/+18
| | | | | | | Use with caution. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fb: default NvMemExec to on, turning it off is used for ↵Ilia Mirkin2014-06-104-4/+4
| | | | | | | debugging only Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
OpenPOWER on IntegriCloud