aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/core/subdev
AgeCommit message (Collapse)Author
2014-07-15drm/nouveau/therm: fix a potential deadlock in the therm monitoring codeMartin Peres
Signed-off-by: Martin Peres <martin.peres@free.fr> Tested-by: Stefan Ringel <mail@stefanringel.de> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-07-08drm/nouveau/ram: fix test for gpio presenceBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-07-08drm/nouveau/fb: Prevent inlining of ramfuc_regStéphane Marchesin
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>
2014-07-08drm/gk104/ram: bash mpll bit 31 onBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-18drm/gf117/i2c: no aux channels on this chipsetBen Skeggs
Reported-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-17drm/nouveau/pwr: fix typo in fifo wrap handlingBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-17drm/gk104/fb/ram: fixups from an earlier search+replaceBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-17drm/gk104/ibus: increase various random timeoutsBen Skeggs
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>
2014-06-17drm/gk104/clk: only touch divider for mode we'll be usingBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/bios/dp: parse lane postcursor dataBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/bios: extend connector table parsingBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c/anx9805: add debugging to aux transactionsBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c: introduce locking at a per-port levelBen Skeggs
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>
2014-06-11drm/nouveau/i2c: balance port acquire/releaseBen Skeggs
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>
2014-06-11drm/gk104/i2c: add aux channel interrupt driverBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/g94/i2c: add aux channel interrupt driverBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c: add interfaces to support handling aux channel interruptsBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c: start hiding subdev-internal interfacesBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c: remove unnecessary i2c_set_adapdata()Ben Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/i2c: properly hand aux reply back to caller, and only retry on deferBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nv50-/mc: also pass PMGR interrupts onto I2C subdevBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/gpio: send separate event types for high/low transitionsBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/gpio: use base constructor for all implementationsBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/gpio: move on-reset intr disable-and-ack to common codeBen Skeggs
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>
2014-06-11drm/nouveau/gpio: split "toggled" interrupt into "went high" / "went low"Ben Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/gpio: split g92 class from nv50Ben Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/gpio: use indirect pointer to base class definitionBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-11drm/nouveau/core: allow event source to handle multiple event types per indexBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nv50-/mc: fix kms pageflip events by reordering irq handling order.Mario Kleiner
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+
2014-06-10drm/gk104/gpio: fix incorrect interrupt register usageBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/clk: allow end-user reclocking for nv40, nvaa, and nve0 clock typesIlia Mirkin
Use with caution. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/fb: default NvMemExec to on, turning it off is used for ↵Ilia Mirkin
debugging only Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/bios: fix a potential NULL deref in the PROM shadowing functionMartin Peres
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Martin Peres <martin.peres@free.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/i2c: bump the i2c delay for the adt7473Martin Peres
Some adt7473 can't manage the 20µs delay we use for the bitbanging, bumping it to 40µs seem to do the trick. Signed-off-by: Martin Peres <martin.peres@free.fr> Tested-by: Marcel Dopita <mdop@seznam.cz>
2014-06-10drm/nouveau/therm/fan/tach: default to 2 pulses per revolutionMartin Peres
I spent some time this weekend trying to find in the vbios the number of pulses per revolutions in the vbios but couldn't find it. It would seem all my cards have 2 pulses per revolution so let's stick to that until further notice. Thermal table's id 0x48 may indicate this information but it would seem that changing the value results in the blob power or clock gating the RPM counter... We should ask NVIDIA about that, should be trivial-enough for them to answer. Signed-off-by: Martin Peres <martin.peres@free.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/fb: add GK20A supportAlexandre Courbot
Add a simple FB device for GK20A, as well as a RAM implementation suitable for chips that use system memory as video RAM. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/ibus: add GK20A supportAlexandre Courbot
Add support for initializing the priv ring of GK20A. This is done by the BIOS on desktop GPUs, but needs to be done by hand on Tegra. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nvc0/bar: support chips without BAR3Alexandre Courbot
Adapt the NVC0 BAR driver to make it able to support chips that do not expose a BAR3. When this happens, BAR1 is then used for USERD mapping and the BAR alloc() functions is disabled, making GPU objects unable to rely on BAR for data access and falling back to PRAMIN. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-06-10drm/nouveau/bar: only ioremap BAR3 if it existsAlexandre Courbot
Some chips that use system memory exclusively (e.g. GK20A) do not expose 2 BAR regions. For them only BAR1 exists, and it should be used for USERD mapping. Do not map BAR3 if its resource does not exist. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-05-22Merge branch 'drm-nouveau-next' of ↵Dave Airlie
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes fixes nasty panel bleeding bug. * 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: drm/gf119-/disp: fix nasty bug which can clobber SOR0's clock setup drm/nvd9/therm: handle another kind of PWM fan
2014-05-20drm/nvd9/therm: handle another kind of PWM fanMartin Peres
Signed-off-by: Martin Peres <martin.peres@free.fr> Tested-by: SaveTheRobots <john.rowley08@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-05-07Merge branch 'drm-nouveau-next' of ↵Dave Airlie
git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes nouveau fixes. * 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: drm/gm107/gr: bump attrib cb size quite a bit drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip drm/nouveau/bios: fix shadowing from PROM on big-endian systems drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi
2014-05-02drm/nouveau/bios: fix shadowing from PROM on big-endian systemsBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-04-18drm/nouveau/bios: fix a bit shift error introduced by 457e77bSergei Antonov
Commit 457e77b26428ab4a24998eecfb99f27fa4195397 added two checks applied to a value received from nv_rd32(bios, 0x619f04). But after this new piece of code is executed, the addr local variable does not hold the same value it used to hold before the commit. Here is what is was assigned in the original code: (u64)(nv_rd32(bios, 0x619f04) & 0xffffff00) << 8 in the committed code it ends up with this value: (u64)(nv_rd32(bios, 0x619f04) >> 8) << 8 These expressions are obviously not equivalent. My Nvidia video card does not show anything on the display when I boot a kernel containing this commit. The patch fixes the code so that the new checks are still done, but the side effect of an incorrect addr value is gone. Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Sergei Antonov <saproj@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-03-26drm/nouveau/bios: fetch the vbios from PROM using only aligned 32-bit accessesMartin Peres
Other kind of accesses are unreliable on Kepler cards. As advised by NVIDIA, let's only use 32-bit accesses to fetch the vbios from PROM. This fixes vbios fetching on my nve7 which failed in certain specific conditions. I suggest we Cc stable, for all kernels they still maintain after the big rewrite. Suggested-by: Christian Zander <czander@nvidia.com> Signed-off-by: Martin Peres <martin.peres@free.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-03-26drm/nouveau/therm: let the vbios decide on the automatic fan management modeMartin Peres
This should fix automatic fan management on fermi cards who do not have 0x46 entries in the thermal table. On my nve6, the blob sets the default linear range from 40°C to 100°C but my nvcf's default values are 40°C to 85°C. Let's keep 85 as a default for everyone. Signed-off-by: Martin Peres <martin.peres@labri.fr> Tested-by: Timothée Ravier <tim@siosm.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-03-26drm/nvd7/therm: handle another kind of PWM fansMartin Peres
This should fix fan management on many nvd7+ chipsets. Signed-off-by: Martin Peres <martin.peres@labri.fr> Tested-by: Timothée Ravier <tim@siosm.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-03-26drm/nouveau/pm/fan: drop the fan lock in fan_update() before reschedulingMartin Peres
This should fix a deadlock that has been reported to us where fan_update() would hold the fan lock and try to grab the alarm_program_lock to reschedule an update. On an other CPU, the alarm_program_lock would have been taken before calling fan_update(), leading to a deadlock. We should Cc: <stable@vger.kernel.org> # 3.9+ Reported-by: Marcin Slusarz <marcin.slusarz@gmail.com> Tested-by: Timothée Ravier <tim@siosm.fr> Tested-by: Boris Fersing (IRC nick fersingb, no public email address) Signed-off-by: Martin Peres <martin.peres@free.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-03-26drm/nouveau/therm: check for sensor presence with requested mode, not currentBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2014-03-26drm/nouveau/disp: limit dp capabilities as per dcbBen Skeggs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>