Ben Skeggs [Thu, 22 Dec 2011 05:20:21 +0000 (15:20 +1000)]
drm/nouveau/ttm: fix crash as a result of a recent ttm change
"drm/ttm: callback move_notify any time bo placement change v4" failed to
avoid a NULL pointer dereference in nouveau caused by move_notify being
expected to handle that case now.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Francisco Jerez [Sat, 19 Nov 2011 16:22:37 +0000 (17:22 +0100)]
drm/nouveau: Fix notifier blocks over the 4GB mark.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Francisco Jerez [Sat, 19 Nov 2011 10:57:52 +0000 (11:57 +0100)]
drm/nouveau: Fix pushbufs over the 4GB mark.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Tested-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 28 Oct 2011 14:22:49 +0000 (00:22 +1000)]
drm/nvc0/pm: initial engine reclocking
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 24 Nov 2011 02:59:44 +0000 (12:59 +1000)]
drm/nouveau: move hpd enable/disable to common code
No idea why I didn't do this initially... NVD9 HPD is now enabled.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 22 Nov 2011 03:49:22 +0000 (13:49 +1000)]
drm/nv40/disp: implement support for hotplug irq
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 21 Nov 2011 06:41:48 +0000 (16:41 +1000)]
drm/nouveau/gpio: reimplement as nouveau_gpio.c, fixing a number of issues
- moves out of nouveau_bios.c and demagics the logical state definitions
- simplifies chipset-specific driver interface
- makes most of gpio irq handling common, will use for nv4x hpd later
- api extended to allow both direct gpio access, and access using the
logical function states
- api extended to allow for future use of gpio extender chips
- pre-nv50 was handled very badly, the main issue being that all GPIOs
were being treated as output-only.
- fixes nvd0 so gpio changes actually stick, magic reg needs bashing
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 21 Nov 2011 11:28:28 +0000 (21:28 +1000)]
drm/nouveau: just pass gpio line to pwm_*, not entire gpio struct
We don't need more than the line id to determine the PWM controller, and
the GPIO interfaces are about to change somewhat.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 10:22:25 +0000 (20:22 +1000)]
drm/nouveau/hwsq: remove some magic, give proper opcode names
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Mon, 7 Nov 2011 22:38:50 +0000 (23:38 +0100)]
drm/nv50/pm: introduce hwsq-based memory reclocking
More work needs to be done on supporting the different memory types.
v2 (Ben Skeggs):
- fixed up conflicts from not having pausing patch first
- restructured code somewhat to fit with how all the other code works
- fixed bug where incorrect mpll_ctrl could get set sometimes
- removed stuff that's cargo-culted from the binary driver
- merged nv92+ display disable into hwsq
- fixed incorrect opcode 0x5f magic at end of ucode
Signed-off-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 18 Nov 2011 01:55:43 +0000 (11:55 +1000)]
drm/nv04/disp: handle dual-link spwg panels without needing quirks
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 15 Nov 2011 04:31:13 +0000 (14:31 +1000)]
drm/nouveau/dp: remove broken display depth function, use the improved one
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 7 Nov 2011 06:16:24 +0000 (16:16 +1000)]
drm/nouveau/mxm: implement ROM shadow method
Untested, -ENOHW.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 7 Nov 2011 03:36:08 +0000 (13:36 +1000)]
drm/nouveau/mxm: implement _DSM shadow method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 7 Nov 2011 02:54:20 +0000 (12:54 +1000)]
drm/nouveau/mxm: implement wmi shadow method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 12 Oct 2011 06:36:42 +0000 (16:36 +1000)]
drm/nouveau/mxm: initial implementation of dcb sanitisation
The DCB table provided by the VBIOS on most MXM chips has a number of
entries which either need to be disabled, or modified according to the
MXM-SIS Output Device Descriptors.
The x86 vbios code usually takes care of this for us, however, with the
large number of laptops now with switchable graphics or optimus, a lot
of the time nouveau is responsible for POSTing the card instead - leaving
some fun situations like, plugging in a monitor and having nouveau decide
3 connectors actually just got plugged in..
No MXM-SIS fetching methods implemented yet.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 18 Nov 2011 00:23:59 +0000 (10:23 +1000)]
drm/nouveau/disp: parse connector info directly in nouveau_connector.c
Another case where we parsed vbios data to some structs, then again use
that info once to construct another set of data. Skip the intermediate
step.
This is also slightly improved in that we can now use DCB 3.x connector
table info, which will allow NV4x to gain hotplug support, and to make
quirks for SPWG LVDS panels unnecessary.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 21 Dec 2011 08:09:12 +0000 (18:09 +1000)]
drm/nouveau/i2c: handle bit-banging ourselves
i2c-algo-bit doesn't actually work very well on one card I have access to
(NVS 300), random single-bit errors occur most of the time - what we're
doing now is closer to what xf86i2c.c does.
The original plan was to figure out why i2c-algo-bit fails on the NVS 300,
and fix it. However, while investigating I discovered i2c-algo-bit calls
cond_resched(), which makes it a bad idea for us to be using as we execute
VBIOS scripts from a tasklet, and there may very well be i2c transfers as
a result.
So, since I already wrote this code in userspace to track down the NVS 300
bug, and it's not really much code - lets use it.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 22 Nov 2011 12:36:18 +0000 (22:36 +1000)]
drm/nouveau/i2c: fix debug message
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 17 Nov 2011 03:56:14 +0000 (13:56 +1000)]
drm/nouveau/i2c: tidy up bit-bang helpers, also fixing nv50 setsda bug
Was using nv_mask, which is bad. Reading the reg senses the current line
states, which aren't necessarily the states we're trying to drive the
lines to.
Fixed to store SCL driver state just as we already do for SDA.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 00:22:19 +0000 (10:22 +1000)]
drm/nouveau/i2c: do parsing of i2c-related vbios info in nouveau_i2c.c
Not much point parsing the vbios data into a struct which is only used once
to parse the data into another struct, go directly from vbios to
nouveau_i2c_chan.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 10 Nov 2011 05:42:55 +0000 (15:42 +1000)]
drm/nouveau/bios: start refactoring dcb routines
This primary reason for this was mostly to avoid duplication of some of
this stuff by the MXM-SIS parser. However, some other cleanups will also
follow this as a result.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 10 Nov 2011 04:49:19 +0000 (14:49 +1000)]
drm/nouveau/bios: fold fixup_legacy_i2c
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 12 Oct 2011 06:48:48 +0000 (16:48 +1000)]
drm/nouveau/bios: pass drm_device to ROMPTR, rather than nvbios
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 16 Nov 2011 05:48:48 +0000 (15:48 +1000)]
drm/nvd0/disp: use single, shared, sync bo for all evo channels
This simplifies some things, and hopefully won't come back to bite me.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 16 Nov 2011 05:22:34 +0000 (15:22 +1000)]
drm/nvd0/disp: rename sync channel to flip channel
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 12 Nov 2011 17:43:30 +0000 (03:43 +1000)]
drm/nvd0/disp: handle yet another interrupt
Spotted while messing with overlay channels (probably as a result of
sending a similar "disable" sequence as we do for the flip channels).
The value in 0x61008c was 0x20, which one would reasonably guess is
"bit 5 == something to report about evo channel 5" - but who knows.
Spotted the binary driver getting this too, and it appears to not do
anything exciting as a result. So, handle it the same way and avoid
an IRQ storm.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 12 Nov 2011 13:52:07 +0000 (23:52 +1000)]
drm/nvd0/disp: initialise overlay channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 12 Nov 2011 04:28:12 +0000 (14:28 +1000)]
drm/nvd0/disp: add support for page flipping
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 12 Nov 2011 02:57:54 +0000 (12:57 +1000)]
drm/nvd0/disp: make it clearer that the cursor regs are pio evo channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 12 Nov 2011 02:53:36 +0000 (12:53 +1000)]
drm/nvd0/disp: have evo names now, use them
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 15:30:24 +0000 (01:30 +1000)]
drm/nvd0/disp: init display sync channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 13:49:06 +0000 (23:49 +1000)]
drm/nvd0/disp: scaler updates, overscan compensation etc
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 13:39:22 +0000 (23:39 +1000)]
drm/nvd0/disp: update crtc timing calculations for interlace/doublescan
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 05:18:47 +0000 (15:18 +1000)]
drm/nouveau: shutdown display on suspend/hibernate
Known to fix some serious issues with hibernate on a couple of systems.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 05:52:43 +0000 (15:52 +1000)]
drm/nv50/disp: fix evo for create/init + destroy/fini split
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 04:31:16 +0000 (14:31 +1000)]
drm/nouveau: re-jig fbcon suspend/resume process a little
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 01:36:33 +0000 (11:36 +1000)]
drm/nouveau/disp: introduce proper init/fini, separate from create/destroy
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 10 Nov 2011 03:20:14 +0000 (13:20 +1000)]
drm/nouveau/pm: fix missing volt changes when boot voltage is undefined
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Tue, 1 Nov 2011 10:38:16 +0000 (11:38 +0100)]
drm/nv50/pm: fix a typo in clock calculation
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 10:46:00 +0000 (20:46 +1000)]
drm/nvd0/disp: enable hdmi audio
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 10:26:44 +0000 (20:26 +1000)]
drm/nvd0/disp: hook evo up to debugging
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 09:51:20 +0000 (19:51 +1000)]
drm/nvd0/disp: enable hdmi on sor if hdmi monitor present
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 11 Nov 2011 08:13:13 +0000 (18:13 +1000)]
drm/nvd0/disp: send eld to the audio codec
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 9 Nov 2011 00:03:01 +0000 (10:03 +1000)]
drm/nouveau/hdmi: enable audio for nva3:nvd0 chipsets
Pre-nva3 will likely require far more extensive setup, and nvd9 needs to
be checked to find its SOR_HDMI/SOR_AUDIO blocks.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Marcin Slusarz [Sun, 6 Nov 2011 19:32:06 +0000 (20:32 +0100)]
drm/nv50: fix page faulting for 128MB page table sizes
This seems to be a typo...
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Marcin Slusarz [Sun, 6 Nov 2011 19:32:03 +0000 (20:32 +0100)]
drm/nouveau: print correct engine number which failed to unload/idle
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 5 Nov 2011 02:08:05 +0000 (12:08 +1000)]
drm/nva3/copy: fix typo in fuc which caused host to not recieve exceptions
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 5 Nov 2011 01:55:39 +0000 (11:55 +1000)]
drm/nva3/copy: update fuc source for latest envytools
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 31 Oct 2011 02:14:10 +0000 (12:14 +1000)]
drm/nv50/pm: only touch 0x611200 on nv92-
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 31 Oct 2011 01:59:07 +0000 (11:59 +1000)]
drm/nv50/pm: stabilise transition to 100MHz mclk a bit
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 31 Oct 2011 00:52:33 +0000 (10:52 +1000)]
drm/nv50/pm: avoid touching dom6/vdec clocks if perflvl doesn't define it
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sun, 30 Oct 2011 13:10:55 +0000 (23:10 +1000)]
drm/nv50/pm: fix thinko which lead to clocks being slightly off sometimes
read_pll_ref() needs to take into account the refclk src bits in 0xc040 on
some chipsets, it wasn't doing this.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sun, 30 Oct 2011 13:04:31 +0000 (23:04 +1000)]
drm/nv50/pm: 0x84/0x86 can't use "1" for nvclk src, need 0x50 method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 11 Jul 2011 05:57:54 +0000 (15:57 +1000)]
drm/nvc0/gr: add initial support for nvd9, not quite there yet..
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 28 Oct 2011 02:06:42 +0000 (12:06 +1000)]
drm/nvc0/gr: update fuc source to assemble with latest envyas
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sat, 29 Oct 2011 01:31:29 +0000 (11:31 +1000)]
drm/nv50/disp: stricter check for evo being active on init
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Tested-by: Martin Peres <martin.peres@labri.fr>
Ben Skeggs [Fri, 28 Oct 2011 12:10:15 +0000 (22:10 +1000)]
drm/nv50/pm: free state struct after setting clocks
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 27 Oct 2011 02:02:12 +0000 (12:02 +1000)]
drm/nouveau/pm: change volt/fan before upclock, but after downclock
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 27 Oct 2011 00:28:17 +0000 (10:28 +1000)]
drm/nouveau/pm: remove the older interfaces completely
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 27 Oct 2011 00:24:12 +0000 (10:24 +1000)]
drm/nv04-nv30/pm: port to newer interfaces
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 25 Oct 2011 23:11:02 +0000 (09:11 +1000)]
drm/nv50/pm: rewrite clock management, and switch to the new pm hooks
This area is horrifically complicated on these chipsets, and it's likely we
will need at least a few more tweaks yet.
Oh yes, and it's completely disabled on IGPs for the moment. From traces,
things look potentially different there yet again. Sigh...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Thu, 6 Oct 2011 21:47:58 +0000 (23:47 +0200)]
drm/nv50/pm: s/PLL_UNK05/PLL_VDEC/
Following to "drm/nv50/pm: s/unk05/vdec/", let's rename the PLL to PLL_VDEC
PLL names are purely indicative and are based on the most important engine
it clocks.
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Sat, 9 Jul 2011 22:08:41 +0000 (00:08 +0200)]
drm/nouveau/pm: make clocks_set return an error code clocks_set can fail.
Reporting an error is better than silently refusing to reclock.
V2: Use the same logic on nv40
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Fri, 21 Oct 2011 23:40:40 +0000 (01:40 +0200)]
drm/nvd0: read temperature as we did on nv84+ boards
Signed-off-by: Martin Peres <martin.peres@labri.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 25 Oct 2011 06:29:13 +0000 (16:29 +1000)]
drm/nv50/disp: fix scaling of doublescan modes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 20 Oct 2011 05:00:22 +0000 (15:00 +1000)]
drm/nv50/disp: rewrite crtc timing calculation, with proper names and fixes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 20 Oct 2011 04:25:53 +0000 (14:25 +1000)]
drm/nouveau/disp: kill off nouveau_crtc.mode
This hasn't been necessary for a long time now..
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 19 Oct 2011 03:06:48 +0000 (13:06 +1000)]
drm/nv50/disp: allow interlaced and doublescan modes on digital outputs
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 14 Oct 2011 13:55:47 +0000 (23:55 +1000)]
drm/nouveau: don't pretend to support the DVI-I 'select subconnector' prop
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 17 Oct 2011 02:23:41 +0000 (12:23 +1000)]
drm/nouveau: improve dithering properties, and implement proper auto mode
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 17 Oct 2011 00:38:10 +0000 (10:38 +1000)]
drm/nouveau: no need to pass parameters into set_scale/dither
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 17 Oct 2011 00:24:49 +0000 (10:24 +1000)]
drm/nouveau: determine a value for display_info.bpc if edid doesn't
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Sun, 16 Oct 2011 22:56:09 +0000 (08:56 +1000)]
drm/nv50/disp: wait for encoder disconnect to complete before link training
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 14 Oct 2011 04:43:20 +0000 (14:43 +1000)]
drm/nv50/disp: disconnect encoders before reprogramming them
Fixes a case where we don't get separate supervisor interrupt sequences for
disconnect and modeset events.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 14 Oct 2011 06:19:42 +0000 (16:19 +1000)]
drm/nv50/disp: completely reset disp if master evo channel active at init
Should fix issues with kexec, and as a nice side bonus, the code to avoid
having PDISP disappear will also fix hibernate on those effected systems.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 14 Oct 2011 06:13:10 +0000 (16:13 +1000)]
drm/nv50/disp: synchronise display right after init
This has the effect of ensuring the encoders which were active before we
loaded get disconnected properly before we start reprogramming them.
Also removing a bit of cargo-cult from the initial evo pushbuf.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 14 Oct 2011 04:35:19 +0000 (14:35 +1000)]
drm/nv50/disp: move sync routine to where it can be used by other modules
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Maxim Levitsky [Sun, 9 Oct 2011 20:58:34 +0000 (22:58 +0200)]
drm/nouveau: restore cursors after restoring mode
PDISP doesn't like it when disabled CRTCs are poked.
Fixes external output not coming to life when it has cursor on.
https://bugs.freedesktop.org/show_bug.cgi?id=41608
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Maxim Levitsky [Sun, 9 Oct 2011 20:58:35 +0000 (22:58 +0200)]
drm/nouveau: restore performance mode a bit later.
Otherwice code that responsible for idling the card can't work.
BIOS init tables are supposed to init the clocks to correct values,
so that shouldn't cause any problems (we don't reclock by default anyway)
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Maxim Levitsky [Sun, 9 Oct 2011 20:58:33 +0000 (22:58 +0200)]
drm/nouveau: disable output polling through suspend.
Because doing polling while hardware is disabled is a bad idea...
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Maxim Levitsky [Sun, 9 Oct 2011 20:58:32 +0000 (22:58 +0200)]
drm/nv50: also report errors in MP1/MP2 when they happen.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 6 Oct 2011 03:29:05 +0000 (13:29 +1000)]
drm/nouveau: add overscan compensation connector properties
Exposes the same connector properties as the Radeon implementation, however
their behaviour isn't exactly the same. The primary difference being that
unless both hborder/vborder have been defined by the user, the driver will
keep the aspect ratio of the overscanned area the same as the mode the
display is programmed for.
Enabled for digital outputs on GeForce 8 and up, excluding GF119.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 6 Oct 2011 02:46:40 +0000 (12:46 +1000)]
drm/nouveau: move master modesetting init to nouveau_display
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 6 Oct 2011 01:51:45 +0000 (11:51 +1000)]
drm/nv50/crtc: disable flip overlay around scaling mode changes
Prevents EVO getting all angry at us.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 5 Oct 2011 04:59:14 +0000 (14:59 +1000)]
drm/nouveau/hdmi: enable sending of avi/audio infoframes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 5 Oct 2011 04:52:02 +0000 (14:52 +1000)]
drm/nouveau/hdmi: add hdmi register accessors to handle hdmi block move
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Wed, 5 Oct 2011 01:05:07 +0000 (11:05 +1000)]
drm/nouveau/hdmi: build ELD from EDID, notify audio driver of its presence
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Tue, 27 Sep 2011 00:31:36 +0000 (10:31 +1000)]
drm/nv50/pm: s/unk05/vdec/
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 16 Sep 2011 20:38:56 +0000 (06:38 +1000)]
drm/nouveau/pm: remove defunct fanspeed_set/get from pm table
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 16 Sep 2011 16:11:39 +0000 (02:11 +1000)]
drm/nv40/pm: convert to new pwm hooks, also fixing pwm type detection
A NV49 appeared a while back that was using the "nv41 style" pwm registers,
rather than the "nv40 style" ones my board is using. This disproves the
previous theory that the pwm controller choice is chipset-specific.
So, after looking at a bunch of vbios images it appears that the next viable
theory is that we should select the pwm controller to use based on the gpio
line the fan is tied to, just like we do on nv50.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 16 Sep 2011 16:01:24 +0000 (02:01 +1000)]
drm/nv50/pm: convert to new fanspeed pwm controller hooks
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Fri, 16 Sep 2011 15:42:12 +0000 (01:42 +1000)]
drm/nouveau/pm: introduce generic handler for on-chip fan controller
The handling of the internal pwm fan controller is similar enough between
current chipsets that it makes sense to share the logic, and bugfixes :)
No hw backends converted yet, will automatically fall-through to the
"old" per-chipset fanspeed hooks for now.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 12 Sep 2011 19:32:43 +0000 (05:32 +1000)]
drm/nouveau/gpio: remove invert flag, use state[] everywhere
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Mon, 15 Aug 2011 06:13:34 +0000 (16:13 +1000)]
drm/nv50/pm: mostly nailed down fan pwm frequency selection
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Martin Peres [Mon, 15 Aug 2011 01:10:30 +0000 (11:10 +1000)]
drm/nouveau/pm: manual pwm fanspeed management for nv40+ boards
Exposes the following sysfs entries:
- fan0_input: read the rotational speed of the fan (poll a bit during 250ms)
- pwm0: set the pwm duty cycle
- pwm0_min/max: set the minimum/maximum pwm value
v2 (Ben Skeggs):
- nv50 pwm controller code removed in favour of other more complete code
- FAN_RPM -> FAN_SENSE
- merged FAN_SENSE readout into common code, not at all nv50-specific
- protected fanspeed changes with perflvl_wr
- formatting tidying
- added some comments where things are shaky
v3 (Martin Peres)
- ensure duty min/max from thermal table are sane
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Martin Peres <martin.peres@ensi-bourges.fr>
Ben Skeggs [Sun, 14 Aug 2011 02:43:47 +0000 (12:43 +1000)]
drm/nv50/pm: add support for pwm fan control
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 11 Aug 2011 04:58:06 +0000 (14:58 +1000)]
drm/nouveau/vdec: implement stub modules for the known engines
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 28 Jul 2011 01:01:21 +0000 (11:01 +1000)]
drm/nouveau/pm: hook up fanspeed get/set if they're present
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs [Thu, 28 Jul 2011 00:52:13 +0000 (10:52 +1000)]
drm/nv41/pm: implement a second type of fanspeed pwm
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>