summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c
Commit message (Collapse)AuthorAgeFilesLines
* drm/nouveau/disp/gv100: initial supportBen Skeggs2018-05-181-1/+8
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: simplify definiton of core channelsBen Skeggs2018-05-181-0/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: initialise from the engine, rather than the user objectBen Skeggs2018-05-181-2/+105
| | | | | | | Engines are initialised on an as-needed basis, so this results in the same behaviour, whilst allowing us to simplify things a bit. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fetch mask of available piors during oneinitBen Skeggs2018-05-181-5/+10
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fetch mask of available sors during oneinitBen Skeggs2018-05-181-2/+5
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fetch mask of available dacs during oneinitBen Skeggs2018-05-181-5/+10
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fetch mask of available heads during oneinitBen Skeggs2018-05-181-5/+8
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: delay subunit construction until oneinitBen Skeggs2018-05-181-26/+40
| | | | | | | We should be reading registers to determine which subunits are really present on a given board, and this needs to be done after DEVINIT. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: implement a common supervisor 3.0Ben Skeggs2017-06-161-154/+14
| | | | | | | | This makes use of all the additional routing and state added in previous commits, making it possible to deal with GM20x macro link routing, while also sharing code between the NV50 and GF119 implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: implement a common supervisor 2.2Ben Skeggs2017-06-161-117/+134
| | | | | | | | This makes use of all the additional routing and state added in previous commits, making it possible to deal with GM20x macro link routing, while also sharing code between the NV50 and GF119 implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: implement a common supervisor 2.1Ben Skeggs2017-06-161-8/+8
| | | | | | | | This makes use of all the additional routing and state added in previous commits, making it possible to deal with GM20x macro link routing, while also sharing code between the NV50 and GF119 implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: implement a common supervisor 2.0Ben Skeggs2017-06-161-90/+20
| | | | | | | | This makes use of all the additional routing and state added in previous commits, making it possible to deal with GM20x macro link routing, while also sharing code between the NV50 and GF119 implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: implement a common supervisor 1.0Ben Skeggs2017-06-161-4/+67
| | | | | | | | This makes use of all the additional routing and state added in previous commits, making it possible to deal with GM20x macro link routing, while also sharing code between the NV50 and GF119 implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-gt21x: remove workaround for dp->tmds hotplug issuesBen Skeggs2017-06-161-27/+0
| | | | | | | | | This shouldn't have been needed ever since we started executing the DisableLT script when shutting down heads. Testing of the board this was originally written for seems to agree. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: introduce acquire/release display path methodsBen Skeggs2017-06-161-0/+1
| | | | | | | | | | | | | | | | | | These exist to give NVKM information on the set of display paths that the DD needs to be active at any given time. Previously, the supervisor attempted to determine this solely from OR state, but there's a few configurations where this information on its own isn't enough to determine the specific display paths in question: - ANX9805, where the PIOR protocol for both DP and TMDS is TMDS. - On a device using DCB Switched Outputs. - On GM20x and newer, with a crossbar between the SOR and macro links. After this commit, the DD tells NVKM *exactly* which display path it's attempting a modeset on. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: remove hw-specific customisation of output pathsBen Skeggs2017-06-161-68/+0
| | | | | | | All of the necessary hw-specific logic is now handled at the output resource level, so all of this can go away. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: port OR manual sink detection to nvkm_iorBen Skeggs2017-06-161-3/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: port OR power state control to nvkm_iorBen Skeggs2017-06-161-7/+2
| | | | | | | Also removes the user-facing methods to these controls, as they're not currently utilised by the DD anyway. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fetch head/OR state at beginning of supervisorBen Skeggs2017-06-161-0/+18
| | | | | | | This data will be used by essentially every part of the supervisor handling process. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: execute supervisor on its own workqueueBen Skeggs2017-06-161-2/+8
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/dp: only check for re-train when the link is activeBen Skeggs2017-06-161-2/+1
| | | | | | | | | | An upcoming commit will limit link training to only when the sink is meant to be displaying an image. We still need IRQs enabled even when the link isn't trained (for MST messages), but don't want to train the link unnecessarily. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: introduce input/output resource abstractionBen Skeggs2017-06-161-0/+22
| | | | | | | | | | In order to properly support the SOR -> SOR + pad macro separation that occurred with GM20x GPUs, we need to separate OR handling out of the output path code. This will be used as the base to support ORs (DAC, SOR, PIOR). Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: common implementation of scanoutpos method in nvkm_headBen Skeggs2017-06-161-1/+0
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: move vblank_{get,put} methods into nvkm_headBen Skeggs2017-06-161-32/+0
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: introduce object to track per-head functions/stateBen Skeggs2017-06-161-19/+27
| | | | | | | Primarily intended as a way to pass per-head state around during supervisor handling, and share logic between NV50/GF119. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: shuffle functions aroundBen Skeggs2017-06-161-246/+120
| | | | | | | | | | Upcoming changes to split OR from output path drastically change the placement of various operations. In order to make the real changes clearer, do the moving around part ahead of time. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/mcp7x: disable dptmds workaroundBen Skeggs2017-01-311-2/+0
| | | | | | | | The workaround appears to cause regressions on these boards, and from inspection of RM traces, NVIDIA don't appear to do it on them either. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Tested-by: Roy Spliet <nouveau@spliet.org>
* drm/nouveau/disp/g94-: stop listening for dp (sst) retrain irq when ↵Ben Skeggs2016-11-071-0/+1
| | | | | | disabling link Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/dp: remove workqueue for link trainingBen Skeggs2016-11-071-1/+1
| | | | | | | There haven't been any callers from an atomic context for a while now, so let's remove the extra complexity. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/g94: implement workaround for dvi issue on fx380Ben Skeggs2016-07-141-0/+133
| | | | | | | | Fixes the second DVI output on Quadro FX380. Thanks to NVIDIA for providing the details on the full workaround. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/nv50-: fix lookup of udisp table under certain circumstancesBen Skeggs2016-07-141-2/+1
| | | | | | | | Some VBIOS have separate tables for each link of a given output path, which means we have to specify the specific link we're using instead of all possible links. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios/disp: fix handling of "match any protocol" entriesBen Skeggs2016-06-021-8/+4
| | | | | | | As it turns out, a value of 0xff means "any protocol" and not "VGA". Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Cc: stable@vger.kernel.org
* drm/nouveau/disp: activate dual link TMDS links only when possibleHauke Mehrtens2016-01-111-1/+1
| | | | | | | | | | | | | Without this patch a pixel clock rate above 165 MHz on a TMDS link is assumed to be dual link. This is true for DVI, but not for HDMI. HDMI supports no dual link, but it supports pixel clock rates above 165 MHz. Only activate Dual Link mode when it is actually possible and requested. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> [imirkin: check for hdmi monitor for computing proto, use sor ctrl to enable extra config bit] Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: convert to new-style nvkm_engineBen Skeggs2015-08-281-85/+177
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/devinit: convert to new-style nvkm_subdevBen Skeggs2015-08-281-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios: convert to new-style nvkm_subdevBen Skeggs2015-08-281-2/+3
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: convert user classes to new-style nvkm_objectBen Skeggs2015-08-281-74/+10
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: split user classes out from engine implementationsBen Skeggs2015-08-281-1257/+4
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/dma: convert user classes to new-style nvkm_objectBen Skeggs2015-08-281-19/+12
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/dma: split user classes out from engine implementationsBen Skeggs2015-08-281-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/device: convert user class to new-style nvkm_objectBen Skeggs2015-08-281-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/ramht: remove dependence on namedbBen Skeggs2015-08-281-5/+6
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/nvif: replace path-based object identificationBen Skeggs2015-08-281-12/+15
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/device: decouple from engine machineryBen Skeggs2015-08-281-14/+14
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: transition outp/conn away from being based on nvkm_objectBen Skeggs2015-08-281-12/+9
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: remove last printksBen Skeggs2015-08-281-34/+35
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: switch to subdev printk macrosBen Skeggs2015-08-281-42/+51
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: switch to new-style timer macrosBen Skeggs2015-08-281-10/+33
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: switch to device pri macrosBen Skeggs2015-08-281-114/+138
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp: cosmetic changesBen Skeggs2015-08-281-269/+266
| | | | | | | This is purely preparation for upcoming commits, there should be no code changes here. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
OpenPOWER on IntegriCloud