Commit Graph

717 Commits

Author SHA1 Message Date
Eric Anholt 47d07b1073 More LVDS fixed mode fixing: use the EDID DTD's blank length. 2006-12-06 10:56:38 -08:00
Eric Anholt 727bf1cbf7 Add missing newlines to new debug output. 2006-12-06 10:12:49 -08:00
Eric Anholt 236c53be5d Fix LVDS fixed mode code after generic-mode-set. 2006-12-06 10:10:27 -08:00
Eric Anholt 1d94ec7de3 Fix ordering of PIPE[AB]SRC debug output to be (x, y). 2006-12-05 18:22:59 -08:00
Eric Anholt eee23fdd0d Fix copy'n'paste-o of the ordering of h/v fields in DSP[AB]SIZE. 2006-12-05 18:19:49 -08:00
Eric Anholt 58c247c6de Merge branch 'modesetting-origin' into modesetting
Conflicts:

	src/i830_display.c
2006-12-05 15:28:21 -08:00
Eric Anholt 0b4c3e7bff Add a bunch of per-register debug code to i830DumpRegs(). 2006-12-05 15:03:48 -08:00
Eric Anholt 7844e576e7 Move reg dump from i830PipeSetMode to after we set up the modes with RandR. 2006-12-05 14:39:24 -08:00
Eric Anholt e777d38ce9 WIP code to move mode set sequencing to XFree86 handlers.
It compiles.  It definitely doesn't run.
2006-12-05 12:15:34 -08:00
Keith Packard 2e8c927f93 Re-create RandR Crtc/output structures on server regen.
RandR structures must be re-created when the server reinitializes,
but the driver PreInit function is not re-invoked. Recreate them
manually in this case during ScreenInit.
2006-12-04 14:02:30 -08:00
Keith Packard 8fcf9a8117 DOUBLE_WIDE mode for high pixel clock 8xx. Rewrite PLL search.
High pixel clock modes on pipe A of an 8xx chip require
DOUBLE_WIDE mode. It's supposed to be modes > 180MHz or so,
but the board I have requires DOUBLE_WIDE mode for clocks > 108MHz
or so. The limit is related to the core clock speed of the chip, which
can be found indirectly through PCI config space. None of the possible
values explain why this board needs this mode for these relatively low
clock rates though.

Also, create tables of data for the PLL computation and use them
instead of code. I think it's cleaner looking. It is also untested on
9xx. It'll work. Really.
2006-12-02 22:58:31 -08:00
Eric Anholt 81dde11d41 Fix copy'n'paste-o from restructure-outputs that resulted in crashes.
Our driver private is stored in the bus that we set up, not the DDC device
that xf86 code does.
2006-12-01 13:29:08 -08:00
Eric Anholt a504e31f0f Don't try to write the read-only PP_STATUS register.
Also, don't bother reading the PP_CONTROL register to try to get LVDS status --
that's what PP_STATUS is for.
2006-12-01 12:50:09 -08:00
Eric Anholt f21230d3e1 Add the [ax]4r4g4b4 source picture formats. 2006-12-01 12:50:09 -08:00
Keith Packard e603cd0c73 Leave detected TV status alone when no free CRTC is available.
Yes, this means not detecting TV hotplug when two outputs are
already running. An alternative would be to turn off one of the other
outputs temporarily, but that would cause flashing. Something to consider.
2006-12-01 10:08:36 -08:00
Keith Packard ec30356d95 Do output detection before any crtc allocation.
Some output detection requires a crtc for load detection, perform all of the
output detection before allocating any crtcs so that there will be a free
crtc for any load detection. Avoids losing TV detection when two monitors
are connected.
2006-12-01 10:06:29 -08:00
Keith Packard 7642da8278 When CRTC is disable through RandR, the mode is NULL. Don't dereference it.
Correctly interpret mode == NULL as CRTC disable, make sure the CRTC is
disabled in this case.
2006-11-30 23:21:39 -08:00
Eric Anholt de50ca9ed9 Tristate the clock/data pins during GPIO when released while getting values.
While the register is laid out suggesting that you can read a low value while
driving the output high, and the I2C spec seems to indicate that you should be
able to as well, and on some hardware this works successfully, on the i865 and
perhaps some other chips it doesn't.  So, if we're not holding the clock or
data pin low during GetBits, tristate the pin so that we can successfully read.

This fixes i865 analog (VGA) DDC so it successfully sees slave acks.

Also, improve the I2C bit-banging debugging.
2006-11-30 17:57:28 -08:00
Eric Anholt 8c44556408 Preserve some GPIO bits that the docs tell us to. 2006-11-30 15:57:02 -08:00
Eric Anholt 28401b25cc Add debug code for the bit-banging I2C implementation. 2006-11-30 15:45:13 -08:00
Keith Packard ff64bc7397 Merge branch 'restructure-outputs' into modesetting.
Outputs and Crtcs now have a driver-independent representation which should
permit generic code to control RandR 1.2 and startup configuration.
2006-11-30 14:09:31 -08:00
Keith Packard 16e01b117b Oops. Don't try to use xf86RandR names, use xf86RandR12 instead.
Attempts to override functions in core server fail, so use
new names instead.
2006-11-30 11:55:29 -08:00
Keith Packard bcf206ff17 Merge branch 'restructure-outputs-origin' into restructure-outputs 2006-11-30 11:39:56 -08:00
Keith Packard 27ca1c17aa Rename I830 randr functions to xf86 as they are becoming generic.
Change function names, create separate i830_randr.h header file
to contain definitions.
2006-11-30 11:39:37 -08:00
Eric Anholt b94b7c4bcf Merge branch 'exa' of ../xf86-video-intel into modesetting
Conflicts:

	man/i810.man
	src/Makefile.am
	src/i830.h
	src/i830_driver.c
	src/i830_rotate.c
	src/i830_video.c
2006-11-30 09:15:30 -08:00
Eric Anholt b6fc8df9a5 Properly detect the GTT size on the G965.
In the past, the GTT has always been sized just large enough to map the whole
graphics aperture.  However, apparently on the G965 that isn't the case, and
it is actually 512KB on hardware with a 256MB aperture.  This resulted in X
not bothering to allocate memory for 256KB that it thought was already mapped
into stolen memory, and thus garbage rendering (particularly visible in large
video modes that displayed this unallocated memory).  The kernel happens to
get the right answer by hardwiring a 512KB GTT size already, but that may not
be true on future hardware.

Instead, we use a convenient field in PGETBL_CTL that's specifically for the
GTT size rather than the aperture size, which gets us the answer we want.
2006-11-29 15:06:32 -08:00
Eric Anholt 359dc81c07 Revert "Don't allocate stuff in the first 256K of video memory (GATT?)"
This reverts commit 997e8c9bb4.

The GTT is definitely located at the end of stolen memory.  This commit
apparently worked around mis-estimation of the GTT size.
2006-11-29 15:02:45 -08:00
Eric Anholt 9e4e7d4fa2 Conditionally compile old-server compatibility code in.
This also replaces calls to compat code with the real names of the functions,
and slips #defines to an i830-namespaced version in when doing compat.
The current server version (7.1.99.2) is still left as requiring compat code,
since the version hasn't been bumped yet.

This also fixes some failures to call the compat code, and some failures to
actually compile the compat code.  Oops.
2006-11-28 16:37:46 -08:00
Eric Anholt 8d9ba2405d sparse cleanups (use NULL instead of 0 for pointers) 2006-11-28 15:44:06 -08:00
Eric Anholt dbb8135e10 Remove printing of the XFree86 screen mode list, and some other detritus. 2006-11-28 13:21:31 -08:00
Eric Anholt e8fb40ab10 Replace custom DDC mode list code with a copy of the X Server's.
The X Server now has most of the mode helper functions we want, and we can
start removing compilation of our copies when the server is new enough.
2006-11-28 11:17:21 -08:00
Keith Packard 2c8c310bd8 Driver-independent code tracks num_crtc itself, don't do it in driver.
Now that driver-independent code manages array of crtcs, let it track
the count and just have the driver compute how many there are in
a separate variable.
2006-11-27 22:18:59 -08:00
Keith Packard c421724d81 Move #include "randrstr.h" from i830.h to i830_xf86Crtc.h
As part of the separation of driver-dependent from driver-independent code,
the interactions with RandR are moving entirely out of the driver, which
means the driver shouldn't even know about RandR, while the
driver-independent code does.
2006-11-27 22:15:40 -08:00
Keith Packard e8d1db3263 Move crtc/output config to sub-structure.
Place crtc/output in separate structure at head
of driver private structure. Use this from the config code
to make it driver-independent. Still lots of effectively driver
independent code that continues to use driver dependent stuff,
but that will change.
2006-11-27 12:01:47 -08:00
Eric Anholt 72692ba2e0 Postpone SDVO DDC bus creation until we've detected the SDVO device.
This reduces log noise for those of us with no SDVO devices.
2006-11-27 11:23:55 -08:00
Eric Anholt 5f38bc3e2a Reduce the severity of many informational log messages. 2006-11-27 11:06:50 -08:00
Eric Anholt 85f404bc67 Re-indent ch7xxx driver. 2006-11-27 09:38:38 -08:00
Keith Packard a0518f5a44 Remove mode setting from load detect CRTC allocation.
To share load-detect CRTC allocation with TV driver,
move it to the output driver
2006-11-26 19:44:38 -08:00
Keith Packard a47c549df0 Clean up reworked data structure code so the server actually starts.
Use i830GeLoadDetectPipe again (instead of missing xf86AllocCrtc).  Actually
create new Crtc structures. Fix a few other NULL pointer dereferences.
2006-11-26 18:26:26 -08:00
Keith Packard 2529863a1a Start output/crtc restructuring work. It compiles.
Outputs and Crtcs are now split between 'generic'
and 'driver specific' pieces in the hope that more code
will be able to migrate to the xf86-generic layer.

Right now, the code remains tangled together, significant
work remains to tease the pieces apart. First the code
needs to be made to actually work as-is though.
2006-11-26 16:44:17 -08:00
Keith Packard 9aca4e2074 Remove custom configuration code (which was #ifdef'd out).
Multi-screen configuration is moving to generic code.
2006-11-22 15:52:32 -08:00
Keith Packard 850e3652f4 Note which pipe has failed to be configured for VBlank interrupt 2006-11-22 15:36:43 -08:00
Keith Packard 659e3db925 Set up maximum screen size for clone instead of panorama.
This avoids heading past the 8Kbyte stride limit of DRI so
that 3D will be available by default.
2006-11-22 15:35:59 -08:00
Keith Packard 03c12f8665 Limit DRI use to cases when pitch < 8Kbytes, not 4096 pixels.
3D rendering pipeline is limited to pitch of 8Kbytes and not 4096
pixels, which rather makes a difference at 32bpp.
2006-11-22 15:34:03 -08:00
Keith Packard a0a9d1ea2a Set configured values for screen virtual size and initial frame.
Computation for virtual size and initial frame origin is quite
broken in xf86 common code.
2006-11-20 17:25:00 -08:00
Keith Packard d6a0f917e6 Enable second SDVO channel.
Rework SDVO support so that it can deal with two channels correctly,
also save/restore all connected output timings.
2006-11-20 15:17:32 -08:00
Keith Packard b945a650e9 Fix TV color key.
Subcarrier defines were incorrect in header file leaving one of the
DDA phases disabled.
2006-11-19 00:54:30 -08:00
Keith Packard 28224af3d9 Preliminary 945 TV output. Color key is broken. Fixed mode.
TV output is generating video with this patch, but the color burst
signal is incorrect somehow.
2006-11-19 00:40:46 -08:00
Eric Anholt 816fc1a76a Merge branch 'modesetting-origin' into modesetting 2006-11-17 00:05:53 -08:00
Keith Packard 7a7bb331e1 Don't dereference null DisplayModePtr on disabled output.
During initial configuration, outputs which are disabled have null
modes.
2006-11-16 21:19:20 -08:00