GitHub/MotorolaMobilityLLC/kernel-slsi.git
13 years agodrm/nvc0/pm: initial engine reclocking
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>
13 years agodrm/nouveau: move hpd enable/disable to common code
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>
13 years agodrm/nv40/disp: implement support for hotplug irq
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>
13 years agodrm/nouveau/gpio: reimplement as nouveau_gpio.c, fixing a number of issues
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>
13 years agodrm/nouveau: just pass gpio line to pwm_*, not entire gpio struct
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>
13 years agodrm/nouveau/hwsq: remove some magic, give proper opcode names
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>
13 years agodrm/nv50/pm: introduce hwsq-based memory reclocking
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>
13 years agodrm/nv04/disp: handle dual-link spwg panels without needing quirks
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>
13 years agodrm/nouveau/dp: remove broken display depth function, use the improved one
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>
13 years agodrm/nouveau/mxm: implement ROM shadow method
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>
13 years agodrm/nouveau/mxm: implement _DSM shadow method
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>
13 years agodrm/nouveau/mxm: implement wmi shadow method
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>
13 years agodrm/nouveau/mxm: initial implementation of dcb sanitisation
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>
13 years agodrm/nouveau/disp: parse connector info directly in nouveau_connector.c
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>
13 years agodrm/nouveau/i2c: handle bit-banging ourselves
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>
13 years agodrm/nouveau/i2c: fix debug message
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>
13 years agodrm/nouveau/i2c: tidy up bit-bang helpers, also fixing nv50 setsda bug
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>
13 years agodrm/nouveau/i2c: do parsing of i2c-related vbios info in nouveau_i2c.c
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>
13 years agodrm/nouveau/bios: start refactoring dcb routines
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>
13 years agodrm/nouveau/bios: fold fixup_legacy_i2c
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>
13 years agodrm/nouveau/bios: pass drm_device to ROMPTR, rather than nvbios
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>
13 years agodrm/nvd0/disp: use single, shared, sync bo for all evo channels
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>
13 years agodrm/nvd0/disp: rename sync channel to flip channel
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>
13 years agodrm/nvd0/disp: handle yet another interrupt
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>
13 years agodrm/nvd0/disp: initialise overlay channels
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>
13 years agodrm/nvd0/disp: add support for page flipping
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>
13 years agodrm/nvd0/disp: make it clearer that the cursor regs are pio evo channels
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>
13 years agodrm/nvd0/disp: have evo names now, use them
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>
13 years agodrm/nvd0/disp: init display sync channels
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>
13 years agodrm/nvd0/disp: scaler updates, overscan compensation etc
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>
13 years agodrm/nvd0/disp: update crtc timing calculations for interlace/doublescan
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>
13 years agodrm/nouveau: shutdown display on suspend/hibernate
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>
13 years agodrm/nv50/disp: fix evo for create/init + destroy/fini split
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>
13 years agodrm/nouveau: re-jig fbcon suspend/resume process a little
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>
13 years agodrm/nouveau/disp: introduce proper init/fini, separate from create/destroy
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>
13 years agodrm/nouveau/pm: fix missing volt changes when boot voltage is undefined
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>
13 years agodrm/nv50/pm: fix a typo in clock calculation
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>
13 years agodrm/nvd0/disp: enable hdmi audio
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>
13 years agodrm/nvd0/disp: hook evo up to debugging
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>
13 years agodrm/nvd0/disp: enable hdmi on sor if hdmi monitor present
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>
13 years agodrm/nvd0/disp: send eld to the audio codec
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>
13 years agodrm/nouveau/hdmi: enable audio for nva3:nvd0 chipsets
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>
13 years agodrm/nv50: fix page faulting for 128MB page table sizes
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>
13 years agodrm/nouveau: print correct engine number which failed to unload/idle
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>
13 years agodrm/nva3/copy: fix typo in fuc which caused host to not recieve exceptions
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>
13 years agodrm/nva3/copy: update fuc source for latest envytools
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>
13 years agodrm/nv50/pm: only touch 0x611200 on nv92-
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>
13 years agodrm/nv50/pm: stabilise transition to 100MHz mclk a bit
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>
13 years agodrm/nv50/pm: avoid touching dom6/vdec clocks if perflvl doesn't define it
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>
13 years agodrm/nv50/pm: fix thinko which lead to clocks being slightly off sometimes
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>
13 years agodrm/nv50/pm: 0x84/0x86 can't use "1" for nvclk src, need 0x50 method
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>
13 years agodrm/nvc0/gr: add initial support for nvd9, not quite there yet..
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>
13 years agodrm/nvc0/gr: update fuc source to assemble with latest envyas
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>
13 years agodrm/nv50/disp: stricter check for evo being active on init
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>
13 years agodrm/nv50/pm: free state struct after setting clocks
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>
13 years agodrm/nouveau/pm: change volt/fan before upclock, but after downclock
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>
13 years agodrm/nouveau/pm: remove the older interfaces completely
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>
13 years agodrm/nv04-nv30/pm: port to newer interfaces
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>
13 years agodrm/nv50/pm: rewrite clock management, and switch to the new pm hooks
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>
13 years agodrm/nv50/pm: s/PLL_UNK05/PLL_VDEC/
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>
13 years agodrm/nouveau/pm: make clocks_set return an error code clocks_set can fail.
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>
13 years agodrm/nvd0: read temperature as we did on nv84+ boards
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>
13 years agodrm/nv50/disp: fix scaling of doublescan modes
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>
13 years agodrm/nv50/disp: rewrite crtc timing calculation, with proper names and fixes
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>
13 years agodrm/nouveau/disp: kill off nouveau_crtc.mode
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>
13 years agodrm/nv50/disp: allow interlaced and doublescan modes on digital outputs
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>
13 years agodrm/nouveau: don't pretend to support the DVI-I 'select subconnector' prop
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>
13 years agodrm/nouveau: improve dithering properties, and implement proper auto mode
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>
13 years agodrm/nouveau: no need to pass parameters into set_scale/dither
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>
13 years agodrm/nouveau: determine a value for display_info.bpc if edid doesn't
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>
13 years agodrm/nv50/disp: wait for encoder disconnect to complete before link training
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>
13 years agodrm/nv50/disp: disconnect encoders before reprogramming them
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>
13 years agodrm/nv50/disp: completely reset disp if master evo channel active at init
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>
13 years agodrm/nv50/disp: synchronise display right after init
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>
13 years agodrm/nv50/disp: move sync routine to where it can be used by other modules
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>
13 years agodrm/nouveau: restore cursors after restoring mode
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>
13 years agodrm/nouveau: restore performance mode a bit later.
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>
13 years agodrm/nouveau: disable output polling through suspend.
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>
13 years agodrm/nv50: also report errors in MP1/MP2 when they happen.
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>
13 years agodrm/nouveau: add overscan compensation connector properties
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>
13 years agodrm/nouveau: move master modesetting init to nouveau_display
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>
13 years agodrm/nv50/crtc: disable flip overlay around scaling mode changes
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>
13 years agodrm/nouveau/hdmi: enable sending of avi/audio infoframes
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>
13 years agodrm/nouveau/hdmi: add hdmi register accessors to handle hdmi block move
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>
13 years agodrm/nouveau/hdmi: build ELD from EDID, notify audio driver of its presence
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>
13 years agodrm/nv50/pm: s/unk05/vdec/
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>
13 years agodrm/nouveau/pm: remove defunct fanspeed_set/get from pm table
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>
13 years agodrm/nv40/pm: convert to new pwm hooks, also fixing pwm type detection
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>
13 years agodrm/nv50/pm: convert to new fanspeed pwm controller hooks
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>
13 years agodrm/nouveau/pm: introduce generic handler for on-chip fan controller
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>
13 years agodrm/nouveau/gpio: remove invert flag, use state[] everywhere
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>
13 years agodrm/nv50/pm: mostly nailed down fan pwm frequency selection
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>
13 years agodrm/nouveau/pm: manual pwm fanspeed management for nv40+ boards
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>
13 years agodrm/nv50/pm: add support for pwm fan control
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>
13 years agodrm/nouveau/vdec: implement stub modules for the known engines
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>
13 years agodrm/nouveau/pm: hook up fanspeed get/set if they're present
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>
13 years agodrm/nv41/pm: implement a second type of fanspeed pwm
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>
13 years agodrm/nv40/pm: implement first type of pwm fanspeed funcs
Ben Skeggs [Thu, 28 Jul 2011 00:40:48 +0000 (10:40 +1000)]
drm/nv40/pm: implement first type of pwm fanspeed funcs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv40/pm: parse fan pwm divisor from vbios tables
Ben Skeggs [Thu, 28 Jul 2011 00:17:40 +0000 (10:17 +1000)]
drm/nv40/pm: parse fan pwm divisor from vbios tables

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm: Add drm_format_num_planes() utility function
Ville Syrjälä [Mon, 19 Dec 2011 22:33:24 +0000 (00:33 +0200)]
drm: Add drm_format_num_planes() utility function

This function returns the number of planes used by a specific pixel
format.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>