GitHub/MotorolaMobilityLLC/kernel-slsi.git
13 years agodrm/i915: Dumb down the semaphore logic
Ben Widawsky [Thu, 15 Sep 2011 03:32:47 +0000 (20:32 -0700)]
drm/i915: Dumb down the semaphore logic

While I think the previous code is correct, it was hard to follow and
hard to debug. Since we already have a ring abstraction, might as well
use it to handle the semaphore updates and compares.

I don't expect this code to make semaphores better or worse, but you
never know...

v2:
Remove magic per Keith's suggestions.
Ran Daniel's gem_ring_sync_loop test on this.

v3:
Ignored one of Keith's suggestions.

v4:
Removed some bloat per Daniel's recommendation.

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Keith Packard <keithp@keithp.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
13 years agodrm/i915: pass ELD to HDMI/DP audio driver
Wu Fengguang [Mon, 5 Sep 2011 06:25:34 +0000 (14:25 +0800)]
drm/i915: pass ELD to HDMI/DP audio driver

Add ELD support for Intel Eaglelake, IbexPeak/Ironlake,
SandyBridge/CougarPoint and IvyBridge/PantherPoint chips.

ELD (EDID-Like Data) describes to the HDMI/DP audio driver the audio
capabilities of the plugged monitor. It's built and passed to audio
driver in 2 steps:

(1) at get_modes time, parse EDID and save ELD to drm_connector.eld[]

(2) at mode_set time, write drm_connector.eld[] to the Transcoder's hw
    ELD buffer and set the ELD_valid bit to inform HDMI/DP audio driver

This patch is tested OK on G45/HDMI, IbexPeak/HDMI and IvyBridge/HDMI+DP.
Test scheme: plug in the HDMI/DP monitor, and run

        cat /proc/asound/card0/eld*

to check if the monitor name, HDMI/DP type, etc. show up correctly.

Minor imperfection: the GEN5_AUD_CNTL_ST/DIP_Port_Select field always
reads 0 (reserved). Without knowing the port number, I worked it around
by setting the ELD_valid bit for ALL the three ports. It's tested to not
be a problem, because the audio driver will find invalid ELD data and
hence rightfully abort, even when it sees the ELD_valid indicator.

Thanks to Zhenyu and Pierre-Louis for a lot of valuable help and testing.

CC: Zhao Yakui <yakui.zhao@intel.com>
CC: Wang Zhenyu <zhenyu.z.wang@intel.com>
CC: Jeremy Bush <contractfrombelow@gmail.com>
CC: Christopher White <c.white@pulseforce.com>
CC: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
CC: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
13 years agodrm: support routines for HDMI/DP ELD
Wu Fengguang [Mon, 5 Sep 2011 06:23:20 +0000 (14:23 +0800)]
drm: support routines for HDMI/DP ELD

ELD (EDID-Like Data) describes to the HDMI/DP audio driver the audio
capabilities of the plugged monitor.

This adds drm_edid_to_eld() for converting EDID to ELD. The converted
ELD will be saved in a new drm_connector.eld[128] data field. This is
necessary because the graphics driver will need to fixup some of the
data fields (eg. HDMI/DP connection type, AV sync delay) before writing
to the hardware ELD buffer. drm_av_sync_delay() will help the graphics
drivers dynamically compute the AV sync delay for fixing-up the ELD.

ELD selection policy: it's possible for one encoder to be associated
with multiple connectors (ie. monitors), in which case the first found
ELD will be returned by drm_select_eld(). This policy may not be
suitable for all users, but let's start it simple first.

The impact of ELD selection policy: assume there are two monitors, one
supports stereo playback and the other has 8-channel output; cloned
display mode is used, so that the two monitors are associated with the
same internal encoder. If only the stereo playback capability is reported,
the user won't be able to start 8-channel playback; if the 8-channel ELD
is reported, then user space applications may send 8-channel samples
down, however the user may actually be listening to the 2-channel
monitor and not connecting speakers to the 8-channel monitor.

According to James, many TVs will either refuse the display anything or
pop-up an OSD warning whenever they receive hdmi audio which they cannot
handle. Eventually we will require configurability and/or per-monitor
audio control even when the video is cloned.

CC: Zhao Yakui <yakui.zhao@intel.com>
CC: Wang Zhenyu <zhenyu.z.wang@intel.com>
CC: Jeremy Bush <contractfrombelow@gmail.com>
CC: Christopher White <c.white@pulseforce.com>
CC: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
CC: Paul Menzel <paulepanter@users.sourceforge.net>
CC: James Cloos <cloos@jhcloos.com>
CC: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
13 years agodrm/i915: Enable dither whenever display bpc < frame buffer bpc
Keith Packard [Mon, 5 Sep 2011 18:53:21 +0000 (11:53 -0700)]
drm/i915: Enable dither whenever display bpc < frame buffer bpc

We want to enable dithering on any pipe where the frame buffer has
more color resolution than the output device.

The previous code was incorrectly clamping the frame buffer bpc to the
display bpc, effectively disabling dithering all of the time as the
computed frame buffer bpc would never be larger than the display bpc.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reported-by: Oliver Hartkopp <socketcan@hartkopp.net>
Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
13 years agoMerge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into...
Dave Airlie [Tue, 20 Sep 2011 08:36:22 +0000 (09:36 +0100)]
Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-next

* 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux:
  Drivers: i915: Fix all space related issues.

13 years agoMerge branch 'drm-nouveau-next' of git://git.freedesktop.org/git/nouveau/linux-2...
Dave Airlie [Tue, 20 Sep 2011 08:35:22 +0000 (09:35 +0100)]
Merge branch 'drm-nouveau-next' of git://git.freedesktop.org/git/nouveau/linux-2.6 into drm-next

* 'drm-nouveau-next' of git://git.freedesktop.org/git/nouveau/linux-2.6: (353 commits)
  drm/nouveau: remove allocations from gart populate() hook
  drm/nvc0/fb: slightly improve PMFB intr handling, move out of nvc0_graph.c
  drm/nvc0/fifo: avoid touching missing subfifos
  drm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc
  drm/nvd9/disp: stub some more api hooks so we don't oops on resume
  drm/nouveau: fix printk typo in ioremap failure path
  drm/nvc0/pm: minor clock readback fixes
  drm/nv40/pm: execute memory reset script from vbios
  drm/nv50/gr: refactor initialisation
  drm/nouveau: if requested, try harder at disabling sysmem pushbufs
  drm/nv50/gr: enable ctxprog xfer only when we need it to save power
  drm/nouveau/dp: add support for displayport table 0x30
  drm/nouveau/dp: return master dp table pointer too when looking up encoder
  drm/nouveau/bios: simplify U/d table hash matching func to just match
  drm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET
  drm/nvc0/gr: remove MODULE_FIRMWARE() lines
  drm/nouveau/dp: use alternate lane mask for nvaf
  drm/nouveau/dp: link rate scripts are selected with a comparison table
  drm/nv40/pm: write nv40-specific reclocking routines
  drm/nv40/pm: parse geometric delta clock from vbios
  ...

13 years agodrm/nouveau: remove allocations from gart populate() hook
Ben Skeggs [Tue, 30 Aug 2011 04:30:11 +0000 (14:30 +1000)]
drm/nouveau: remove allocations from gart populate() hook

Since some somewhat questionable changes a while back, TTM provides a
completely empty array of struct dma_address that stays around for the
entire lifetime of the TTM object.

Lets use this array, *always*, rather than wasting yet more memory on
another array who's purpose is identical, as well as yet another bool array
of the same size saying *which* of the previous two arrays to use...

This change will also solve the high order allocation failures seen by
some people while using nouveau.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/fb: slightly improve PMFB intr handling, move out of nvc0_graph.c
Ben Skeggs [Fri, 26 Aug 2011 03:05:23 +0000 (13:05 +1000)]
drm/nvc0/fb: slightly improve PMFB intr handling, move out of nvc0_graph.c

I'm still not certain how to determine the number of SUBPs are present on
a given board.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/fifo: avoid touching missing subfifos
Ben Skeggs [Thu, 25 Aug 2011 05:53:57 +0000 (15:53 +1000)]
drm/nvc0/fifo: avoid touching missing subfifos

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc
Ben Skeggs [Thu, 25 Aug 2011 23:40:39 +0000 (09:40 +1000)]
drm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd9/disp: stub some more api hooks so we don't oops on resume
Ben Skeggs [Thu, 25 Aug 2011 04:09:43 +0000 (14:09 +1000)]
drm/nvd9/disp: stub some more api hooks so we don't oops on resume

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: fix printk typo in ioremap failure path
Marcin Slusarz [Mon, 22 Aug 2011 21:28:56 +0000 (23:28 +0200)]
drm/nouveau: fix printk typo in ioremap failure path

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/pm: minor clock readback fixes
Ben Skeggs [Thu, 23 Jun 2011 06:37:00 +0000 (16:37 +1000)]
drm/nvc0/pm: minor clock readback fixes

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv40/pm: execute memory reset script from vbios
Ben Skeggs [Fri, 12 Aug 2011 00:05:43 +0000 (10:05 +1000)]
drm/nv40/pm: execute memory reset script from vbios

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv50/gr: refactor initialisation
Ben Skeggs [Thu, 11 Aug 2011 23:30:58 +0000 (09:30 +1000)]
drm/nv50/gr: refactor initialisation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: if requested, try harder at disabling sysmem pushbufs
Ben Skeggs [Thu, 11 Aug 2011 22:56:06 +0000 (08:56 +1000)]
drm/nouveau: if requested, try harder at disabling sysmem pushbufs

On >=nv50, userspace would still end up allocating pushbufs in GART.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv50/gr: enable ctxprog xfer only when we need it to save power
Martin Peres [Sat, 30 Jul 2011 21:08:45 +0000 (23:08 +0200)]
drm/nv50/gr: enable ctxprog xfer only when we need it to save power

This patch adds instructions to ctxprog and by doing, impacts context
switching performance.  My testcase showed a 1% performance cost using
glxgears that is a context-switch bound application.

Please test and report bugs/performance/power/other.

Many thanks to Maxim Levitsky for his dedicated work on lowering power
consumption with nouveau.

More patches are coming thanks to his work:

https://bugs.freedesktop.org/show_bug.cgi?id=37922

Signed-off-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: add support for displayport table 0x30
Ben Skeggs [Fri, 5 Aug 2011 04:47:28 +0000 (14:47 +1000)]
drm/nouveau/dp: add support for displayport table 0x30

Written from observations of my NVD9's vbios, completely untested due to
my NVD9 lacking actual DisplayPort connectors..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: return master dp table pointer too when looking up encoder
Ben Skeggs [Fri, 5 Aug 2011 04:07:04 +0000 (14:07 +1000)]
drm/nouveau/dp: return master dp table pointer too when looking up encoder

Will need to be able to distinguish 2.0/2.1 from 3.0 soon.  Also, move
the vbios parsing to nouveau_dp where it belongs.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/bios: simplify U/d table hash matching func to just match
Ben Skeggs [Fri, 5 Aug 2011 03:42:49 +0000 (13:42 +1000)]
drm/nouveau/bios: simplify U/d table hash matching func to just match

The caller is now responsible for parsing its own lists (or whatever) of
possible encoders.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET
Ben Skeggs [Fri, 5 Aug 2011 05:56:53 +0000 (15:56 +1000)]
drm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/gr: remove MODULE_FIRMWARE() lines
Ben Skeggs [Sun, 7 Aug 2011 22:57:55 +0000 (08:57 +1000)]
drm/nvc0/gr: remove MODULE_FIRMWARE() lines

We don't use these by default anymore, and there's been complaints from a
number of places thinking that the firmware blobs are required still.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: use alternate lane mask for nvaf
Ben Skeggs [Fri, 5 Aug 2011 01:09:21 +0000 (11:09 +1000)]
drm/nouveau/dp: use alternate lane mask for nvaf

Naturally...  Because Macs can't just be the same as everything else
now can they?

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: link rate scripts are selected with a comparison table
Ben Skeggs [Fri, 5 Aug 2011 00:28:52 +0000 (10:28 +1000)]
drm/nouveau/dp: link rate scripts are selected with a comparison table

Not hardcoded as originally thought.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv40/pm: write nv40-specific reclocking routines
Ben Skeggs [Mon, 18 Jul 2011 05:15:34 +0000 (15:15 +1000)]
drm/nv40/pm: write nv40-specific reclocking routines

Not 100% perfect yet, but a good start towards what it'll look like in the
end.

Actually seems stable on a NV44 I have here, as much as running around OA
for a fair amount of time constantly switching between performance levels
can prove..

My NV49 isn't quite so happy, and semaphores mess up somehow (sometimes) as
a result of the memory reclocking.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv40/pm: parse geometric delta clock from vbios
Ben Skeggs [Mon, 18 Jul 2011 06:02:37 +0000 (16:02 +1000)]
drm/nv40/pm: parse geometric delta clock from vbios

This changes the meaning of what we reported as "core" clock previously.

The shader/rop units are allegedly supposed to be run at the base clock
listed in the perf table, while the geometric clock can be bumped from
this value on some boards.

So that we can report both, we'll report the base clock as "shader" (since
the shaders *do* run at it), and the geometric clock as "core".

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: enable down-spread if vbios and sink support it
Ben Skeggs [Thu, 4 Aug 2011 04:31:28 +0000 (14:31 +1000)]
drm/nouveau/dp: enable down-spread if vbios and sink support it

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: execute some more vbios tables relating to link rate
Ben Skeggs [Thu, 4 Aug 2011 04:16:45 +0000 (14:16 +1000)]
drm/nouveau/dp: execute some more vbios tables relating to link rate

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: store unencoded link_bw everywhere
Ben Skeggs [Wed, 3 Aug 2011 23:55:44 +0000 (09:55 +1000)]
drm/nouveau/dp: store unencoded link_bw everywhere

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: restructure link training code
Ben Skeggs [Wed, 3 Aug 2011 23:26:44 +0000 (09:26 +1000)]
drm/nouveau/dp: restructure link training code

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: pass in required datarate to link training
Ben Skeggs [Thu, 4 Aug 2011 01:04:47 +0000 (11:04 +1000)]
drm/nouveau/dp: pass in required datarate to link training

Not used currently, but it will be used in preference to pre-determined
lane/bandwidth numbers at a later point.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/bios: check for null script pointers in parser
Ben Skeggs [Thu, 4 Aug 2011 03:57:33 +0000 (13:57 +1000)]
drm/nouveau/bios: check for null script pointers in parser

Allows us to be lazy elsewhere...

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nva3/backlight: add suppport for newer style backlight regs
Ben Skeggs [Tue, 2 Aug 2011 22:52:39 +0000 (08:52 +1000)]
drm/nva3/backlight: add suppport for newer style backlight regs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv50/backlight: express brightness level in percent
Ben Skeggs [Tue, 2 Aug 2011 10:45:35 +0000 (20:45 +1000)]
drm/nv50/backlight: express brightness level in percent

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv50/backlight: take the sor into account when bashing regs
Ben Skeggs [Tue, 2 Aug 2011 09:29:37 +0000 (19:29 +1000)]
drm/nv50/backlight: take the sor into account when bashing regs

I'm sure that out there somewhere, someone will need this.  We currently
haven't seen an example of LVDS being on a non-0 SOR so far though.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/backlight: make more consistent with rest of driver style
Ben Skeggs [Tue, 2 Aug 2011 08:54:43 +0000 (18:54 +1000)]
drm/nouveau/backlight: make more consistent with rest of driver style

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: tidy connector hotplug handler, punt messages to debug
Ben Skeggs [Tue, 2 Aug 2011 03:57:10 +0000 (13:57 +1000)]
drm/nouveau: tidy connector hotplug handler, punt messages to debug

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: remove reliance on vbios for native displayport
Ben Skeggs [Fri, 1 Jul 2011 05:51:49 +0000 (15:51 +1000)]
drm/nouveau/dp: remove reliance on vbios for native displayport

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/dp: rewrite auxch transaction routines
Ben Skeggs [Wed, 20 Jul 2011 05:50:14 +0000 (15:50 +1000)]
drm/nouveau/dp: rewrite auxch transaction routines

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: workaround semaphore hw bug causing unnecessary interrupts
Ben Skeggs [Mon, 25 Jul 2011 10:26:19 +0000 (20:26 +1000)]
drm/nouveau: workaround semaphore hw bug causing unnecessary interrupts

The HW will only accept the DMA_FROM_MEMORY class for DMA_SEMAPHORE without
asking the driver to intervene.

It appears that semaphores will work correctly even without DMA_IN_MEMORY,
so lets avoid the large amount of interrupts generated by x-chan sync.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/tmr: fix miscalculation of ratio on pre-nv4x chipsets
Ben Skeggs [Thu, 21 Jul 2011 06:12:58 +0000 (16:12 +1000)]
drm/nouveau/tmr: fix miscalculation of ratio on pre-nv4x chipsets

The clock_get() hook returns KHz, not Hz.

Also fixed to use crystal freq from dev_priv.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nva3/pm: fixup for NVAF special
Ben Skeggs [Thu, 21 Jul 2011 05:54:48 +0000 (15:54 +1000)]
drm/nva3/pm: fixup for NVAF special

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nva3/pm: use crystal freq where appropriate
Ben Skeggs [Thu, 21 Jul 2011 05:52:52 +0000 (15:52 +1000)]
drm/nva3/pm: use crystal freq where appropriate

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: determine timing crystal freq from straps
Ben Skeggs [Thu, 21 Jul 2011 05:39:06 +0000 (15:39 +1000)]
drm/nouveau: determine timing crystal freq from straps

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nva3/pm: pll disabled if bit 0 of ctrl not set
Ben Skeggs [Tue, 19 Jul 2011 23:59:05 +0000 (09:59 +1000)]
drm/nva3/pm: pll disabled if bit 0 of ctrl not set

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: magic to make auxch on new macbooks booted in EFI mode work
Ben Skeggs [Tue, 19 Jul 2011 05:59:39 +0000 (15:59 +1000)]
drm/nouveau: magic to make auxch on new macbooks booted in EFI mode work

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/pm: Document and expose CL and WR for 0x1002Cx
Roy Spliet [Thu, 14 Jul 2011 18:40:10 +0000 (20:40 +0200)]
drm/nouveau/pm: Document and expose CL and WR for 0x1002Cx

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
13 years agodrm/nouveau/pm: add initial NV3x/NVCx memtiming support, improve other cards
Roy Spliet [Sat, 9 Jul 2011 19:18:11 +0000 (21:18 +0200)]
drm/nouveau/pm: add initial NV3x/NVCx memtiming support, improve other cards

NV30: Create framework for memtm
NV50: Improve reg creation,
NV50: Use P.version instead of card codename/stepping,
NVC0: Initial memtiming code for Fermi,
Renamed regs for consistency,
Overall redesign to improve readability,
Avoid kfree on null-pointer

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
13 years agodrm/nouveau: remove special-casing of hotplug detection type
Ben Skeggs [Wed, 13 Jul 2011 06:15:57 +0000 (16:15 +1000)]
drm/nouveau: remove special-casing of hotplug detection type

If we support PGPIO interrupts, and know a hotplug GPIO tag for a
connector we use HPD, otherwise POLL_CONNECT.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0: no page flipping at the moment
Ben Skeggs [Tue, 12 Jul 2011 02:06:36 +0000 (12:06 +1000)]
drm/nvd0: no page flipping at the moment

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/gr: remove max tpc count info
Ben Skeggs [Mon, 11 Jul 2011 05:54:20 +0000 (15:54 +1000)]
drm/nvc0/gr: remove max tpc count info

Just assume a max of 16 everywhere, and hope it's okay.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0: lets not attempt to dereference a nv50_display pointer
Ben Skeggs [Mon, 11 Jul 2011 05:46:01 +0000 (15:46 +1000)]
drm/nvd0: lets not attempt to dereference a nv50_display pointer

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: enable hwmon support when both nouveau/hwmon are built as modules.
Ken Milmore [Sun, 3 Jul 2011 18:54:28 +0000 (19:54 +0100)]
drm/nouveau: enable hwmon support when both nouveau/hwmon are built as modules.

The nouveau hwmon temperature support currently only functions when hwmon is
compiled into the kernel. There's no reason why this shouldn't also work when
both hwmon and nouveau are modularised (as is the case with Slackware's stock
kernels).

Signed-off-by: Ken Milmore <ken.milmore@googlemail.com>
Reviewed-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: tidy up what we have so far
Ben Skeggs [Fri, 8 Jul 2011 04:43:19 +0000 (14:43 +1000)]
drm/nvd0/disp: tidy up what we have so far

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: rewrite irq handler, should be somewhat sturdier now
Ben Skeggs [Fri, 8 Jul 2011 04:34:45 +0000 (14:34 +1000)]
drm/nvd0/disp: rewrite irq handler, should be somewhat sturdier now

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: do modeset irq handling from tasklet
Ben Skeggs [Fri, 8 Jul 2011 03:17:01 +0000 (13:17 +1000)]
drm/nvd0/disp: do modeset irq handling from tasklet

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: untested LVDS support
Ben Skeggs [Fri, 8 Jul 2011 02:52:14 +0000 (12:52 +1000)]
drm/nvd0/disp: untested LVDS support

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: track down fb positioning method
Ben Skeggs [Fri, 8 Jul 2011 02:11:58 +0000 (12:11 +1000)]
drm/nvd0/disp: track down fb positioning method

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: determine U table config in or_mode_set()
Ben Skeggs [Fri, 8 Jul 2011 01:53:37 +0000 (11:53 +1000)]
drm/nvd0/disp: determine U table config in or_mode_set()

Takes a gamble and presumes that we can safely store something random in
OR_MODE_CTRL+4, the hw doesn't seem to mind...

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: dac load detect
Ben Skeggs [Fri, 8 Jul 2011 01:14:50 +0000 (11:14 +1000)]
drm/nvd0/disp: dac load detect

VBIOS does more than this, as does nv50/nvc0 driver in nouveau.  Traces
of the NVIDIA binary driver however, show pretty much just this being
done...  Seems to work for me, it'll be fine for the moment.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: handle sync polarity, kill off some unknown
Ben Skeggs [Thu, 7 Jul 2011 23:43:20 +0000 (09:43 +1000)]
drm/nvd0/disp: handle sync polarity, kill off some unknown

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: scaling
Ben Skeggs [Thu, 7 Jul 2011 06:01:57 +0000 (16:01 +1000)]
drm/nvd0/disp: scaling

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: push the update button in mode_set_base()
Ben Skeggs [Thu, 7 Jul 2011 05:23:48 +0000 (15:23 +1000)]
drm/nvd0/disp: push the update button in mode_set_base()

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: fixup clut so it actually works
Ben Skeggs [Thu, 7 Jul 2011 04:49:24 +0000 (14:49 +1000)]
drm/nvd0/disp: fixup clut so it actually works

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: initial attempt at modeset irq handling
Ben Skeggs [Thu, 7 Jul 2011 00:47:10 +0000 (10:47 +1000)]
drm/nvd0/disp: initial attempt at modeset irq handling

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: stub dac load detect, prevents oops
Ben Skeggs [Wed, 6 Jul 2011 23:51:29 +0000 (09:51 +1000)]
drm/nvd0/disp: stub dac load detect, prevents oops

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: dac encoder module
Ben Skeggs [Wed, 6 Jul 2011 05:25:47 +0000 (15:25 +1000)]
drm/nvd0/disp: dac encoder module

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: extend the init voodoo to cover crtcs
Ben Skeggs [Wed, 6 Jul 2011 04:39:23 +0000 (14:39 +1000)]
drm/nvd0/disp: extend the init voodoo to cover crtcs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: remove lp reordering from vram dmaobj, create fb dmaobjs
Ben Skeggs [Wed, 6 Jul 2011 01:40:45 +0000 (11:40 +1000)]
drm/nvd0/disp: remove lp reordering from vram dmaobj, create fb dmaobjs

Fixes CLUT being messed up.  Mostly.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: some magic to make evo happeir
Ben Skeggs [Wed, 6 Jul 2011 00:29:49 +0000 (10:29 +1000)]
drm/nvd0/disp: some magic to make evo happeir

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: they moved the linear flag..
Ben Skeggs [Tue, 5 Jul 2011 23:59:40 +0000 (09:59 +1000)]
drm/nvd0/disp: they moved the linear flag..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: initial crtc object implementation
Ben Skeggs [Tue, 5 Jul 2011 06:48:06 +0000 (16:48 +1000)]
drm/nvd0/disp: initial crtc object implementation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: skeletal handling of modeset interrupts
Ben Skeggs [Tue, 5 Jul 2011 04:16:05 +0000 (14:16 +1000)]
drm/nvd0/disp: skeletal handling of modeset interrupts

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: start on SOR encoder functions
Ben Skeggs [Tue, 5 Jul 2011 03:08:40 +0000 (13:08 +1000)]
drm/nvd0/disp: start on SOR encoder functions

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: setup a couple of dma objects we'll need
Ben Skeggs [Tue, 5 Jul 2011 01:58:58 +0000 (11:58 +1000)]
drm/nvd0/disp: setup a couple of dma objects we'll need

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: start on interrupt handling
Ben Skeggs [Tue, 5 Jul 2011 01:01:13 +0000 (11:01 +1000)]
drm/nvd0/disp: start on interrupt handling

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: whip up some basic dma handling for the evo channels
Ben Skeggs [Tue, 5 Jul 2011 00:33:08 +0000 (10:33 +1000)]
drm/nvd0/disp: whip up some basic dma handling for the evo channels

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/disp: very initial evo setup
Ben Skeggs [Mon, 4 Jul 2011 06:25:18 +0000 (16:25 +1000)]
drm/nvd0/disp: very initial evo setup

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/bios: allow passing in crtc to the init table parser
Ben Skeggs [Wed, 6 Jul 2011 11:21:42 +0000 (21:21 +1000)]
drm/nouveau/bios: allow passing in crtc to the init table parser

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/pm: enable clock/voltage hooks
Ben Skeggs [Mon, 4 Jul 2011 04:06:07 +0000 (14:06 +1000)]
drm/nvd0/pm: enable clock/voltage hooks

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/bios: fix INIT_GPIO for new chipsets
Ben Skeggs [Sun, 3 Jul 2011 03:40:01 +0000 (13:40 +1000)]
drm/nouveau/bios: fix INIT_GPIO for new chipsets

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/gpio: initial implementation
Ben Skeggs [Sat, 2 Jul 2011 16:57:35 +0000 (02:57 +1000)]
drm/nvd0/gpio: initial implementation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0/i2c: initial implementation
Ben Skeggs [Sat, 2 Jul 2011 10:43:42 +0000 (20:43 +1000)]
drm/nvd0/i2c: initial implementation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: initial chipset description for nvdX chipsets
Ben Skeggs [Mon, 4 Jul 2011 03:25:17 +0000 (13:25 +1000)]
drm/nouveau: initial chipset description for nvdX chipsets

All the non-stubbed functions should be okay for this chipset, the rest
will be added back as they're figured out.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: allow modeset module option to select 'headless mode'
Ben Skeggs [Mon, 4 Jul 2011 03:14:05 +0000 (13:14 +1000)]
drm/nouveau: allow modeset module option to select 'headless mode'

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: fixup init/fini sequence to deal with no CRTCs
Ben Skeggs [Mon, 4 Jul 2011 01:55:39 +0000 (11:55 +1000)]
drm/nouveau: fixup init/fini sequence to deal with no CRTCs

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: make general drm modesetting init common
Ben Skeggs [Mon, 4 Jul 2011 00:47:19 +0000 (10:47 +1000)]
drm/nouveau: make general drm modesetting init common

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvd0: add a card_type for 0xdX chipsets
Ben Skeggs [Sat, 2 Jul 2011 10:28:49 +0000 (20:28 +1000)]
drm/nvd0: add a card_type for 0xdX chipsets

These are different enough from 0xcX to justify it, half fermi, half
kepler(??)..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv04/pm: recalibrate timer on nvclk changes
Martin Peres [Sun, 3 Jul 2011 23:41:34 +0000 (09:41 +1000)]
drm/nv04/pm: recalibrate timer on nvclk changes

Signed-off-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau/tmr: calibrate for ns timestamps on init
Ben Skeggs [Sun, 3 Jul 2011 11:16:12 +0000 (21:16 +1000)]
drm/nouveau/tmr: calibrate for ns timestamps on init

We previously assumed (incorrectly a lot of the time) that PTIMER would
be programmed at a frequency which'd give its 64-bit timestamps in
nanoseconds.

By programming PTIMER ourselves, we avoid this problem.

Reviewed-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/gr: unblacklist nvcf acceleration
Ben Skeggs [Sat, 2 Jul 2011 04:37:36 +0000 (14:37 +1000)]
drm/nvc0/gr: unblacklist nvcf acceleration

Reported to be working.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: don't complain for disabled timingset entries
Ben Skeggs [Wed, 29 Jun 2011 00:45:07 +0000 (10:45 +1000)]
drm/nouveau: don't complain for disabled timingset entries

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/gr: copy GPC mpart config from PFFB
Ben Skeggs [Wed, 29 Jun 2011 00:42:14 +0000 (10:42 +1000)]
drm/nvc0/gr: copy GPC mpart config from PFFB

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/vram: support non-uniform memory size per controller
Ben Skeggs [Fri, 24 Jun 2011 02:47:46 +0000 (12:47 +1000)]
drm/nvc0/vram: support non-uniform memory size per controller

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/gr: add support for nvcf chipset
Ben Skeggs [Fri, 24 Jun 2011 01:14:00 +0000 (11:14 +1000)]
drm/nvc0/gr: add support for nvcf chipset

untested, written from a trace, accel disabled by default until it is

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: allow a nouveau_mm to be created with holes
Ben Skeggs [Fri, 24 Jun 2011 00:23:20 +0000 (10:23 +1000)]
drm/nouveau: allow a nouveau_mm to be created with holes

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: embed nouveau_mm
Ben Skeggs [Fri, 24 Jun 2011 00:14:07 +0000 (10:14 +1000)]
drm/nouveau: embed nouveau_mm

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nv31/mpeg: support for a single class3174 user
Ben Skeggs [Thu, 23 Jun 2011 06:44:05 +0000 (16:44 +1000)]
drm/nv31/mpeg: support for a single class3174 user

Uncertain if/how the hw does multiple PMPEG channels, supporting one is
better than none however.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nouveau: rename nv40_mpeg to nv31_mpeg
Ben Skeggs [Thu, 23 Jun 2011 06:21:21 +0000 (16:21 +1000)]
drm/nouveau: rename nv40_mpeg to nv31_mpeg

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
13 years agodrm/nvc0/pm: more complete parsing of clock domains
Ben Skeggs [Tue, 21 Jun 2011 05:12:26 +0000 (15:12 +1000)]
drm/nvc0/pm: more complete parsing of clock domains

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>