summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_bios.c
Commit message (Collapse)AuthorAgeFilesLines
...
* drm/nouveau: ensure we've parsed i2c table entry for INIT_*I2C* handlersBen Skeggs2010-05-191-77/+88
| | | | | | | | | | We may not have parsed the entry yet if the i2c_index is for an i2c bus that's not referenced by a DCB encoder. This could be done oh so much more nicely, except we have to care about prehistoric DCB tables too, and they make life painful. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: display error message for any failed init table opcodeBen Skeggs2010-05-191-16/+23
| | | | | | | Some handlers don't report specific errors, but we still *really* want to know if we failed to parse a complete init table. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: fix init table handlers to return proper error codesBen Skeggs2010-05-191-23/+28
| | | | | | | | | We really want to be able to distinguish between INIT_DONE and an actual error sometimes. This commit fixes up several lazy "return 0;" to be actual error codes, and explicitly reserves "0" as "success, but stop parsing this table". Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: store full dcb i2c entry from vbiosBen Skeggs2010-05-191-2/+6
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: dump pll limits entries when debugging is onBen Skeggs2010-05-191-25/+26
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: bios parser fixes for eDP boardsBen Skeggs2010-05-191-0/+124
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: implement gpio set/get routinesBen Skeggs2010-04-091-6/+5
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv50: parse/use some more de-magiced parts of gpio table entriesBen Skeggs2010-04-091-14/+9
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: store raw gpio table entry in bios gpio structsBen Skeggs2010-04-091-28/+20
| | | | | | And use our own version of the GPIO table for the INIT_GPIO opcode. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv40: add LVDS table quirk for Dell Latitude D620Ben Skeggs2010-04-091-0/+15
| | | | | | | | | | | Should fix: https://bugzilla.redhat.com/show_bug.cgi?id=505132 https://bugzilla.redhat.com/show_bug.cgi?id=543091 https://bugzilla.redhat.com/show_bug.cgi?id=530425 https://bugs.edge.launchpad.net/ubuntu/+source/xserver-xorg-video-nouveau/ +bug/539730 Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nv40: rework lvds table parsingBen Skeggs2010-04-091-27/+17
| | | | | | | | | | | All indications seem to be that the version 0x30 table should be handled the same way as 0x40 (as used on G80), at least for the parts that we currently try use. This commit cleans up the parsing to make it clearer about what we're actually trying to achieve, and unifies the 0x30/0x40 parsing. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* Merge branch 'v2.6.34-rc2' into drm-linusDave Airlie2010-03-311-1/+1
|\
| * Merge branch 'for-next' into for-linusJiri Kosina2010-03-081-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Documentation/filesystems/proc.txt arch/arm/mach-u300/include/mach/debug-macro.S drivers/net/qlge/qlge_ethtool.c drivers/net/qlge/qlge_main.c drivers/net/typhoon.c
| | * tree-wide: Assorted spelling fixesDaniel Mack2010-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, several occurances of funny versions of 'success', 'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address', 'beginning', 'desirable', 'separate' and 'necessary' are fixed. Signed-off-by: Daniel Mack <daniel@caiaq.de> Cc: Joe Perches <joe@perches.com> Cc: Junio C Hamano <gitster@pobox.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | | drm/nv50: fix connector table parsing for some cardsBen Skeggs2010-03-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The connector table index in the DCB entry for each output type is an index into the connector table, and does *not* necessarily match up with what was previously called "index" in the connector table entries themselves. Not real sure what that index is exactly, renamed to "index2" as we still use it to prevent creating multiple TV connectors. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | | drm/nouveau: Gigabyte NX85T connector table lies, it has DVI-I not HDMIBen Skeggs2010-03-101-0/+17
| | | | | | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | | drm/nouveau: add option to allow override of dcb connector table typesBen Skeggs2010-03-101-1/+7
|/ / | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: support version 0x20 displayport tablesBen Skeggs2010-02-251-1/+1
| | | | | | | | | | | | | | | | Not entirely identical to 0x21, the per-encoder table header lacks the third init table pointer. However, our current parsing of the table should work just fine. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: construct a connector table for cards that lack a real oneBen Skeggs2010-02-251-13/+16
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: check for known dcb connector typesBen Skeggs2010-02-251-0/+61
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: parse dcb gpio/connector tables after encodersBen Skeggs2010-02-251-4/+6
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: reorganise bios header, add dcb connector type enumsBen Skeggs2010-02-251-0/+2
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: merge nvbios and nouveau_bios_infoBen Skeggs2010-02-251-43/+39
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: merge parsed_dcb and bios_parsed_dcb into dcb_tableBen Skeggs2010-02-251-76/+72
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: rename parsed_dcb_gpio to dcb_gpio_tableBen Skeggs2010-02-251-1/+1
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: fix i2ctable bounds checkingMarcin Slusarz2010-02-251-3/+4
| | | | | | | | | | | | | | | | | | | | i2c_entries seems to be the number of i2c entries, so with index equal to this number, we could read invalid data from i2ctable. Fix it. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: fix pramdac_table range checkingMarcin Slusarz2010-02-251-1/+1
| | | | | | | | | | | | | | | | | | | | get_tmds_index_reg reads some value from stack when mlv happens to be equal to size of pramdac_table array. Fix it. Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nouveau: use mutex for vbios lockBen Skeggs2010-02-161-4/+3
| | | | | | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nv50: prevent multiple init tables being parsed at the same timeBen Skeggs2010-02-101-8/+9
| | | | | | | | | | | | | | | | With DVI and DP plugged, the DVI clock change interrupts being run can cause DP link training to fail. This adds a spinlock around init table parsing to prevent this. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* | drm/nv40: make INIT_COMPUTE_MEM a NOP, just like nv50Ben Skeggs2010-02-091-1/+1
|/ | | | | | | | | | It appears we aren't required to do memory sizing ourselves on nv40 either. NV40 init tables read a strap from PEXTDEV_BOOT_0 into a CRTC register, and then later use that value to select a memory configuration (written to PFB_CFG0, just like INIT_COMPUTE_MEM on earlier cards) with INIT_IO_RESTRICT_PROG. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Break some long lines.Francisco Jerez2010-01-151-10/+19
| | | | | Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: add NV18 device id to call_lvds_manufacturer_scriptAndrea Tacconi2010-01-151-1/+1
| | | | | | | | This fixes imac black screen (NV18 card) Signed-off-by: Andrea Tacconi <tacconet@libero.it> Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: less magic DCB 1.5 parsingBen Skeggs2010-01-141-39/+40
| | | | | | | | This in the very least matches the parsing of all the previously known entries, and hopefully (at least closer to) correct for any we haven't seen yet. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: assume no nv04 board has a DCB tableBen Skeggs2010-01-141-8/+12
| | | | | | | | There's a report of a TNT2 where the DCB table pointer is *not* NULL (it contains a part of a VBIOS data string), and we assume this means a DCB table is present, causing all kinds of hilarity. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: trust init table registers are safeBen Skeggs2010-01-141-50/+9
| | | | | | | | | | | | | | | Apparently the original reason for checking this was there were known register accesses that caused hangs on some chipsets. This was more than likely because of incorrect parsing of previous opcodes, and I hardly think aborting a script half way through is going to be any better (in fact, we have had bug reports where this has been the cause of s/r failures among other things). This patch (which has been in Fedora 12 for a long time now) removes all checking for known register ranges, and just leaves the check to ensure the access is within the mapped aperture to avoid an oops. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Kill global state in BIOS script interpreterMarcin Kościelnicki2009-12-161-287/+275
| | | | | | Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net> Signed-off-by: Maarten Maathuis <madman2003@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Kill global state in NvShadowBIOSMarcin Kościelnicki2009-12-161-26/+21
| | | | | | Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net> Signed-off-by: Maarten Maathuis <madman2003@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: use drm debug levelsMaarten Maathuis2009-12-161-6/+6
| | | | | | | | | | - Use driver level (0x2) for NV_DEBUG instead of all levels - Create a NV_DEBUG_KMS for KMS level (0x4) and use them in modesetting code - Remove a few odd NV_TRACE calls and replace some of them with NV_DEBUG_KMS or NV_INFO Signed-off-by: Maarten Maathuis <madman2003@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Add DRM driver for NVIDIA GPUsBen Skeggs2009-12-111-0/+6095
This adds a drm/kms staging non-API stable driver for GPUs from NVIDIA. This driver is a KMS-based driver and requires a compatible nouveau userspace libdrm and nouveau X.org driver. This driver requires firmware files not available in this kernel tree, interested parties can find them via the nouveau project git archive. This driver is reverse engineered, and is in no way supported by nVidia. Support for nearly the complete range of nvidia hw from nv04->g80 (nv50) is available, and the kms driver should support driving nearly all output types (displayport is under development still) along with supporting suspend/resume. This work is all from the upstream nouveau project found at nouveau.freedesktop.org. The original authors list from nouveau git tree is: Anssi Hannula <anssi.hannula@iki.fi> Ben Skeggs <bskeggs@redhat.com> Francisco Jerez <currojerez@riseup.net> Maarten Maathuis <madman2003@gmail.com> Marcin Kościelnicki <koriakin@0x04.net> Matthew Garrett <mjg@redhat.com> Matt Parnell <mparnell@gmail.com> Patrice Mandin <patmandin@gmail.com> Pekka Paalanen <pq@iki.fi> Xavier Chantry <shiningxc@gmail.com> along with project founder Stephane Marchesin <marchesin@icps.u-strasbg.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
OpenPOWER on IntegriCloud