summaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAgeFilesLines
* drm/nouveau: Add another Zotac FX5200 TV-out quirk.Francisco Jerez2010-07-261-3/+4
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Don't pick an interlaced mode as the panel native mode.Francisco Jerez2010-07-261-1/+2
| | | | | | | | Rescaling interlaced modes isn't going to work correctly, and even if it did, come on, interlaced flat panels? are you pulling my leg? Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Fix a sparse warning.Francisco Jerez2010-07-261-6/+6
| | | | | | | It doesn't like variable length arrays. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: fix regression that break LVDS in some placesBen Skeggs2010-07-261-0/+1
| | | | | | | | A previous commit started additionally using the SOR link when trying to match the correct output script. However, we never fill in this field for LVDS so we can never match a script at all. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: support fetching LVDS EDID from ACPIBen Skeggs2010-07-265-1/+59
| | | | | | | Based on a patch from Matthew Garrett. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Acked-by: Matthew Garrett <mjg@redhat.com>
* drm/nouveau: remove quirk to fabricate DVI-A output on DCB 1.5 boardsBen Skeggs2010-07-261-7/+0Star
| | | | | | | | | | | | | | There's a report of this quirk breaking modesetting on at least one board. After discussion with Francisco Jerez, we've decided to remove it: <darktama> it's not worth limiting the quirk to just where we know it can work? i'm happy either way really :) <curro> hmm, don't think so, most if not all DCB15 cards have just one DAC <curro> and with that quirk there's no way to tell if the load comes from the VGA or DVI port Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Acked-by: Francisco Jerez <currojerez@riseup.net>
* drm/nv50: use correct PRAMIN flush register on original nv50Ben Skeggs2010-07-263-1/+13
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/i2c/ch7006: Fix up suspend/resume.Francisco Jerez2010-07-131-0/+18
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: reduce usage of fence spinlock to when absolutely necessaryBen Skeggs2010-07-134-31/+8Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: fix RAMHT sizeBen Skeggs2010-07-131-1/+3
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: fix pcirom vbios shadow breakage from acpi rom patchBen Skeggs2010-07-131-24/+9Star
| | | | | | | | | | | On nv50 it became impossible to attempt a PCI ROM shadow of the VBIOS, which will break some setups. This patch also removes the different ordering of shadow methods for pre-nv50 chipsets. The reason for the different ordering was paranoia, but it should hopefully be OK to try shadowing PRAMIN first. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04: Enable context switching on PFIFO init.Francisco Jerez2010-07-131-0/+1
| | | | | | | Fixes a lockup when coming back from suspend. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Disable PROM access on init.Francisco Jerez2010-07-131-0/+4
| | | | | | | | | On older cards (<nv17) scanout gets blocked when the ROM is being accessed. PROM access usually comes out enabled from suspend, switch it off. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Fix crashes during fbcon init on single head cards.Francisco Jerez2010-07-131-1/+2
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: initialise display before enabling interruptsBen Skeggs2010-07-131-13/+13
| | | | | | | | | | In some situations it's possible we can receive a spurious hotplug IRQ before we're ready to handle it, leading to an oops. Calling the display init before enabling interrupts should clear any pending IRQs on the GPU and prevent this from happening. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: move dp_set_tmds() function to happen in the last display irqBen Skeggs2010-07-131-32/+33
| | | | | | | It seems on some chipsets that doing this from the 0x20 handler causes the display engine to not ever signal the final 0x40 stage. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: fix mtrr cleanup pathBen Skeggs2010-07-131-1/+1
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: fix dp_set_tmds to work on the right ORBen Skeggs2010-07-131-1/+2
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv20-nv30: move context table object out of dev_privBen Skeggs2010-07-132-22/+18Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: cleanup nv50_fifo.cBen Skeggs2010-07-133-73/+45Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: remove unused fbdev_infoBen Skeggs2010-07-131-2/+0Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: allocate fixed amount of PRAMIN per channel on all chipsetsBen Skeggs2010-07-132-44/+50
| | | | | | | | Previously only done on nv50+ This commit also switches unknown NV2x/NV3x chipsets to noaccel mode. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: remove ability to use external firmwareBen Skeggs2010-07-136-244/+49Star
| | | | | | | This was always really a developer option, and if it's really necessary we can hack this in ourselves. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: move tlb flushing to a helper functionBen Skeggs2010-07-134-97/+23Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: add instmem flush() hookBen Skeggs2010-07-1315-152/+39Star
| | | | | | | | | | This removes the previous prepare_access() and finish_access() hooks, and replaces it with a much simpler flush() hook. All the chipset-specific code before nv50 has its use removed completely, as it's not required there at all. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: implement DAC disconnect fix missed in earlier commitBen Skeggs2010-07-131-0/+7
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: remove dev_priv->init_state and friendsBen Skeggs2010-07-137-74/+25Star
| | | | | | | Nouveau will no longer load at all if card initialisation fails, so all these checks are unnecessary. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: add scaler-only modes for eDP tooBen Skeggs2010-07-131-1/+2
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: set DP display power state during DPMSBen Skeggs2010-07-131-2/+16
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: move DP script invocation to nouveau_dp.cBen Skeggs2010-07-132-33/+23Star
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: rewrite display irq handlerBen Skeggs2010-07-132-143/+190
| | | | | | | | | The previous handler basically worked correctly for a full-blown mode change. However, it did nothing at all when a partial (encoder only) reconfiguation was necessary, leading to the display hanging on certain types of mode switch. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: send evo "update" command after each disconnectBen Skeggs2010-07-133-13/+12Star
| | | | | | | | | It turns out that the display engine signals an interrupt for disconnects too. In order to make it easier to process the display interrupts correctly, we want to ensure we only get one operation per interrupt sequence - this is what this commit achieves. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Workaround broken TV load detection on a "Zotac FX5200".Francisco Jerez2010-07-131-6/+27
| | | | | | | | The blob seems to have the same problem so it's probably a hardware issue (bug 28810). Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Move the fence wait before migration resource clean-up.Francisco Jerez2010-07-131-3/+3
| | | | | | | | Avoids an oops in the fence wait failure path (bug 26521). Signed-off-by: Francisco Jerez <currojerez@riseup.net> Tested-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40: Drop redundant logging.Francisco Jerez2010-07-131-4/+0Star
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: INIT_CONFIGURE_PREINIT/CLK/MEM on newer BIOSes is not an error.Francisco Jerez2010-07-131-3/+3
| | | | | | | | No need to spam the logs when they're found, they're equivalent to INIT_DONE. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Fix a couple of sparse warnings.Francisco Jerez2010-07-139-19/+20
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40: Disable connector polling when there're no spare CRTCs left.Francisco Jerez2010-07-133-12/+48
| | | | | | | | | Load detection needs the connector wired to a CRTC, when there are no inactive CRTCs left that means we need to cut some other head off for a while, causing intermittent flickering. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv04-nv40: Prevent invalid DAC/TVDAC combinations.Francisco Jerez2010-07-133-2/+26
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv17-nv40: Avoid using active CRTCs for load detection.Francisco Jerez2010-07-131-5/+4Star
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: when debugging on, log which crtc we connect an encoder toBen Skeggs2010-07-132-2/+4
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: supply encoder disable() hook for SOR outputsBen Skeggs2010-07-134-45/+41Star
| | | | | | | | | | Allows us to remove a driver hack that used to be necessary to disable encoders in certain situations before setting up a mode. The DRM has better knowledge of when this is needed than the driver does. This fixes a number of display switching issues. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: DCB quirk for Dell M6300Ben Skeggs2010-07-131-0/+28
| | | | | | | | Uncertain if this is a weirdo configuration, or a BIOS bug. If it's not a BIOS bug, we still don't know how to make it work anyway so ignore a "conflicting" DCB entry to prevent a display hang. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: fix DP->DVI if output has been programmed for native DP previouslyBen Skeggs2010-07-132-0/+32
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: downgrade severity of most init table parser errorsBen Skeggs2010-07-131-42/+70
| | | | | | | | As long as we know the length of the opcode, we're probably better off trying to parse the remainder of an init table rather than aborting in the middle of it. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: tidy connector/encoder creation a littleBen Skeggs2010-07-1313-83/+84
| | | | | | | | | | | | | | | Create connectors before encoders to avoid having to do another loop across encoder list whenever we create a new connector. This allows us to pass the connector to the encoder creation functions, and avoid using a create_resources() callback since we can now call it directly. This can also potentially modify the connector ordering on nv50. On cards where the DCB connector and encoder tables are in the same order, things will be unchanged. However, there's some cards where the ordering between the tables differ, and in one case, leads us to naming the connectors "wrongly". Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: set encoder for lvdsAlbert Damen2010-07-131-0/+1
| | | | | | | | fixes oops in nouveau_connector_get_modes with nv_encoder is NULL Signed-off-by: Albert Damen <albrt@gmx.net> Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Ignore broken legacy I2C entries.Francisco Jerez2010-07-131-4/+8
| | | | | | | | | | | The nv05 card in the bug report [1] doesn't have usable I2C port register offsets (they're all filled with zeros). Ignore them and use the defaults. [1] http://bugs.launchpad.net/bugs/569505 Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Don't clear AGPCMD completely on INIT_RESET.Francisco Jerez2010-07-131-1/+2
| | | | | | | | | | | | | We just need to clear the SBA and ENABLE bits to reset the AGP controller: If the AGP bridge was configured to use "fast writes", clearing the FW bit would break the subsequent MMIO writes and eventually end with a lockup. Note that all the BIOSes I've seen do the same as we did (it works for them because they don't use MMIO), OTOH the blob leaves FW untouched. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Put the dithering check back in nouveau_connector_create.Francisco Jerez2010-07-131-4/+22
| | | | | | | | a7b9f9e5adef dropped it by accident. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Tested-by: Thibaut Girka <thib@sitedethib.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>