Commit Graph

65 Commits

Author SHA1 Message Date
Ben Skeggs
f589be88ca drm/nouveau/pageflip: kick flip handling out of engsw and into fence
This is all very much a policy thing, and hence will not belong in SW
after the rework.

engsw now only handles receiving the event to say "can flip now" and makes
a callback to perform the actual work.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-10-03 13:12:55 +10:00
Ben Skeggs
3863c9bc88 drm/nouveau/instmem: completely new implementation, as a subdev module
v2 (Ben Skeggs):
- some fixes for 64KiB PAGE_SIZE
- fix porting issues in (currently unused) nv41/nv44 pciegart code

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-10-03 13:12:52 +10:00
Ben Skeggs
861d21074b drm/nouveau/fb: merge fb/vram and port to subdev interfaces
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-10-03 13:12:49 +10:00
Ben Skeggs
cb75d97e9c drm/nouveau: implement devinit subdev, and new init table parser
v2:
- make sure not to execute display scripts unless resuming

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-10-03 13:12:47 +10:00
Ben Skeggs
a348cd5fd8 drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs
I have a very limited number of traces available for DP on NVD9+, but,
these values produce the same as the binary driver on a confirmed 18-bit
eDP panel and a confirmed 24-bit eDP panel (Retina MBP).

It's interesting that the bitfield values also match the MODE_CTRL values
that control the same thing on nv50:nvd9.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-08-31 10:49:38 +10:00
Christoph Bumiller
af5e7d84b0 drm/nvd0/disp: mask off high 16 bit of negative cursor x-coordinate
Signed-off-by: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org
2012-08-14 09:36:24 +10:00
Laurent Pinchart
e811f5ae19 drm: Make the .mode_fixup() operations mode argument a const pointer
The passed mode must not be modified by the operation, make it const.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-07-19 21:52:38 -04:00
Ben Skeggs
35bcf5d555 drm/nouveau: move flip-related channel setup to software engine
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-05-24 16:55:43 +10:00
Ben Skeggs
2cda7f4c5e drm/nvd0/disp: remove unnecessary sync from flip_next
This shouldn't be necessary, I believe this is just a bit of missed debug
code that got left over somehow.

Causes flips to be always synced to vblank, regardless of swap interval,
which we don't want..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-05-24 16:32:03 +10:00
Ben Skeggs
6d59702775 drm/nouveau: use the same packet header macros as userspace
Cosmetic cleanup only.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-05-24 16:31:49 +10:00
Dave Airlie
22b33e8ed0 nouveau: add PRIME support
This adds prime->fd and fd->prime support to nouveau,
it passes the SG object to TTM, and then populates the
GART entries using it.

v2: add stubbed kmap + use new function to fill out pages array
for faulting + add reimport test.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-23 10:46:55 +01:00
Ben Skeggs
6544599249 drm/nouveau/dp: support version 4.0 of DP table
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-23 00:21:18 +10:00
Ben Skeggs
e592c73b91 drm/nve0/disp: nvidia randomly decided to move the dithering method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-23 00:21:14 +10:00
Ben Skeggs
dd62608bcc drm/nvd0/disp: ignore clock set if no pclk
This happens somehow during init on a machine I have, and leads to a
divide-by-zero.

Lets avoid that...

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-22 17:18:00 +10:00
Ben Skeggs
b5b2e5988b drm/nouveau: remove subchannel names from places where it doesn't matter
These are FIFO methods, it doesn't matter what subchannel is being used.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-22 17:17:30 +10:00
Ben Skeggs
4cbb0f8d2b drm/nvd0/disp: disconnect encoders before reprogramming them
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-13 17:15:07 +10:00
Ben Skeggs
3488c57b98 drm/nvd0/disp: move syncs/magic setup to or mode_set
NVIDIA appear to do these around the same place they do the MODE_CTRL
methods, and for DP at least we need to bash some extra bits in "syncs"
to keep EVO happy.

It's a bit of a guess as to the 6/8bpc, but i have no better idea yet.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-13 17:15:06 +10:00
Ben Skeggs
c674844bab drm/nvd0/disp: fix dcb sor link matching in supervisor handler
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-13 17:15:05 +10:00
Ben Skeggs
6e83fda2c0 drm/nvd0/disp: initial implementation of displayport
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-13 17:15:04 +10:00
Ben Skeggs
7c5f6a87b2 drm/nvd0/disp: attempt to handle more than 2 crtcs if possible
Theoretically handles CRTC2/CRTC3, should any GF119 out there actually
have them enabled.  The room is there for the regs etc, so why not :)

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2012-03-13 17:15:00 +10:00
Ben Skeggs
befb51e9c9 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>
2011-12-21 19:01:41 +10:00
Ben Skeggs
816af2f2d6 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>
2011-12-21 19:01:38 +10:00
Ben Skeggs
a63a97eb66 drm/nvd0/disp: rename sync channel to flip channel
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:38 +10:00
Ben Skeggs
84e052e626 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>
2011-12-21 19:01:37 +10:00
Ben Skeggs
8a46438a6a drm/nvd0/disp: initialise overlay channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:37 +10:00
Ben Skeggs
3376ee374d drm/nvd0/disp: add support for page flipping
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:37 +10:00
Ben Skeggs
4acd429398 drm/nvd0/disp: make it clearer that the cursor regs are pio evo channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:36 +10:00
Ben Skeggs
2eac77b793 drm/nvd0/disp: have evo names now, use them
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:36 +10:00
Ben Skeggs
bdb8c212be drm/nvd0/disp: init display sync channels
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:36 +10:00
Ben Skeggs
9285462273 drm/nvd0/disp: scaler updates, overscan compensation etc
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:35 +10:00
Ben Skeggs
2d1d898b46 drm/nvd0/disp: update crtc timing calculations for interlace/doublescan
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:35 +10:00
Ben Skeggs
2a44e4997c drm/nouveau/disp: introduce proper init/fini, separate from create/destroy
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:33 +10:00
Ben Skeggs
091e40cd95 drm/nvd0/disp: enable hdmi audio
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:32 +10:00
Ben Skeggs
27517ddbdc drm/nvd0/disp: hook evo up to debugging
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:32 +10:00
Ben Skeggs
64d9cc04ec drm/nvd0/disp: enable hdmi on sor if hdmi monitor present
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:32 +10:00
Ben Skeggs
78951d2226 drm/nvd0/disp: send eld to the audio codec
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:31 +10:00
Ben Skeggs
de69185573 drm/nouveau: improve dithering properties, and implement proper auto mode
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:21 +10:00
Ben Skeggs
488ff207f9 drm/nouveau: no need to pass parameters into set_scale/dither
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-12-21 19:01:20 +10:00
Ben Skeggs
26cfa81357 drm/nvd0/disp: fix sor dpms typo, preventing dpms on in some situations
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-11-30 23:40:30 +10:00
Ben Skeggs
84e2ad8b7b drm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:12:11 +10:00
Ben Skeggs
c20ab3e1cb drm/nvd9/disp: stub some more api hooks so we don't oops on resume
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:12:08 +10:00
Ben Skeggs
37b034a64b drm/nvd0/disp: tidy up what we have so far
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:49 +10:00
Ben Skeggs
ee41779e76 drm/nvd0/disp: rewrite irq handler, should be somewhat sturdier now
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:46 +10:00
Ben Skeggs
f20ce9629f drm/nvd0/disp: do modeset irq handling from tasklet
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:42 +10:00
Ben Skeggs
3b6d83d1b9 drm/nvd0/disp: untested LVDS support
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:36 +10:00
Ben Skeggs
c6f2f71dae drm/nvd0/disp: track down fb positioning method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:32 +10:00
Ben Skeggs
ff8ff50342 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>
2011-09-20 16:07:29 +10:00
Ben Skeggs
b681993f7a 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>
2011-09-20 16:07:22 +10:00
Ben Skeggs
629c1b9207 drm/nvd0/disp: handle sync polarity, kill off some unknown
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:18 +10:00
Ben Skeggs
f3fdc52dd7 drm/nvd0/disp: scaling
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-09-20 16:07:15 +10:00