The main change is to send SDVO commands using data passed into the send
command function, and receive responses into memory passed into the read
response function, rather than stuff things in/out through dev_priv->sdvo_regs.
This lets us use structures to represent some arguments, which results in a
nice cleanup (and 100% fewer arguments named magicN as a side effect).
Also, the mode set path is changed to not do any preferred input timing
work. We weren't doing anything legitimate with the results, since we didn't
modify the CRTC timing appropriately, so now we just stuff the CRTC timing into
both and hope for the best. This should probably be revisited later.
All the SDVO code should now be in lower case rather than StudlyCaps.
This also adjusts the I2C setup to create a bus per SDVO output we set up.
The previous setup with shared buses was failing in some circumstances, which
is probably due to the lack of refcounting in xf86i2c.c.
This is the TV connector on board for the 915GM and 945GM.
It is currently not hooked up to output initialization as it's entirely
untested. However, I think this is a reasonable starting point for getting
TV-out actually working.
This is currently disconnected, but will be used in more overhaul work.
This should be where any output limitations, such as clocks, resolution,
scaling limits, or other options, are validated. Other limitations, such as
chipset resolution limits, CRTC clock limits, etc. should be elsewhere.
This is not a very clean interface, as a number of outputs require tweaks to
the DPLL registers. When possible, the DPLLs are just adjusted in the
per-output post_set_mode, which happens just after the DPLL is enabled.
However, this seems better than the previous method of having all outputs
programmed in the same function.
I was unable to find the native LVDS panel physical size in the BDB
information. I would prefer to report accurate information through RandR if
possible though.
As Clone mode is now something that can change after server startup, always
enable the XV_PORT attribute as we cannot change the list of reported
attributes.
This reverts most of the mergedfb code. This will instead be done in device-
independent RandR code.
Conflicts:
src/Makefile.am
src/i810_driver.c
src/i810_reg.h
src/i830.h
src/i830_cursor.c
src/i830_driver.c
src/i830_modes.c
src/i830_video.c
Previously, we watched for the BIOS to have changed the layout, and repaired
the resulting configuration. Now, we request that the BIOS make no changes,
but leave a note in a register for when the key has been pressed. When we
notice this, we reprobe monitors and turn on/off the things we find.
This is a temporary solution until we can get the hotkey hooked up as an
input key to external applications to control the change using RandR 1.2. It
is also untested as neither of my laptops do anything with the hotkey.
However, this code does result in many fewer BIOS calls.
When detecting a monitor that doesn't support DDC, construct a default
monitor with "sensible" values instead of using whatever the builtin LCD
screen uses. Clearly we need a way to set the monitor parameters when we
cannot detect them.
Lots of names included BIOS for no apparent reason; as we try to eliminate
BIOS calls from the driver, these only serve to confuse us.
(cherry picked from 8e5d280d94ad3d3ba3c75871c17abec9da62ed34 commit)
Mixing random cursors and pipes didn't work very well. I'm left wondering
whether the palette stuff will work on pre-9xx series hardware though; it is
special cased everwhere else.
This is not entirely what I'd like to see, but it's at least functional.
Limitations:
Can't disable/enable crtcs
Can't move outputs on/off crtcs
But, it does handle monitor hot-plug, detecting changes in VGA and SDVO
status on-the fly. Which makes for good demo material.
For the Aopen Mini-PC, ignore the claimed attached 800x600 LVDS panel.
Likewise for the Apple Mac Mini, but done slightly differently since it
shares PCI IDs with the Macbook Pro.