History log of /haiku/src/add-ons/accelerants/intel_extreme/mode.cpp
Revision Date Author Comments
# 46bbf334 01-May-2022 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme: parse VBT device configs, use this to skip unused ports

* BDB version from 111
* for DDI from Gen9
* for HDMI and DisplayPort from Gen6
* use the first port to create the mode list
* also probe DDI Port A
* the aux channel helps to select the correct dp aux registers.

Change-Id: I80549a6ec0477bed768cc5f388959b606d50c1b7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5286
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 6c024296 20-Apr-2022 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme: set/get brightness in legacy mode for gen2,i915GM,i945GM

untested, see #15448

Change-Id: Iaf0cdacd39ebadfc143b072bdd6f5435a1394f45
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5222
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# e5d9d907 09-Apr-2022 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme: adjust brightness level for Gen4

preserve bits before Gen4

Change-Id: Icf80ec469c3682223f0db1744a5c923fb06bd7fd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5190
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# d2713775 08-Apr-2022 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme: brightness setting support for Kaby Lake

Change-Id: Ie78a034077f3be8faaaf83ab80a0ae6c1c001bc0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5187
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# b24e59cc 07-Apr-2022 PulkoMandy <pulkomandy@pulkomandy.tk>

intel_extreme: fix backlight control on generations 9 and 10

I changed the way we decide which registers to use in a previous
patch review but I changed it in only one of two places. As a result
we were using the old code with the new registers, resulting in invalid
backlight settings.

Should fix #17692

Change-Id: I4e977d5700d3a002986beafff5ca511673c86540
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5185
Reviewed-by: Richard Zak <richard.j.zak@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 890aa411 28-Mar-2022 PulkoMandy <pulkomandy@pulkomandy.tk>

intel_extreme: improve brightness setting support

- Newer devices use a different layout for the backlight PWM registers
- Get the min brightness level from the BDB

Change-Id: I99745a022dd38733a4c2386f91c4c57016dd2acd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5162
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 41f6b790 31-Jan-2022 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: if no EDID found use boottime EDID if there


# befbf015 01-Dec-2021 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme: implement get_preferred_mode for vbt on mobile

this avoids searching in edid information in this case.

Change-Id: I330341f089f71cd5de657a6630b5414d02db771f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4749
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 4492fde7 27-Oct-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: reduce use of display_mode where display_timing is enough

In most cases we don't need to use the complete display_mode struct and
we just need the timings. This will avoid future confusion between the
virtual width/height and the actual display timings, if we implement
scrolling someday.

Change-Id: I6c4430b84130b956a47ea0a01afb0843f5a34fd2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4665
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 994794f2 23-Oct-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel extreme: skylake sets color, base and address, no resolution and refresh yet


# 3a9bb1e7 16-Oct-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: updated PLL restricts, updated set- and proposemode. Requested modes are now set more precise.


# 17cd86cd 14-Oct-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: retain requested refreshrate in proposemode.


# 1681f7f4 27-Sep-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel extreme: fixed virtualscreen panning glitches on pre-Haswell. Smooth now..


# fe8f9e23 27-Sep-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: set B_SCROLL, share current mode. Cloning and BWindowScreen now work OK.


# 96c8657d 17-Sep-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: fix haswell virt display scroll/pan, ticket #17261


# f2a79670 13-Sep-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

intel_extreme: Fixed virtualscreen setup, ticket #17261


# c7d83a17 29-May-2021 Rudolf Cornelissen <rudhaiku@gmail.com>

Intel_extreme: fixed DPLL pgming (Sandy+), prevent black display by not killing PIPE (Ivy+). Chkd GMA(Q33G/Q45) OK. Added defines.


# 135dff43 21-Jun-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Prevent turning the backlight completely of by setting the brightness.

Change-Id: Idb8658f97045f6c0491223bbe8bf52914ca98402
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2934
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# c253ef85 06-Sep-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: remove an useless trace

The get_edid_info function just does a memcpy of the info from the
driver. There is no need to trace to syslog everytime this happens
(which is a lot).

Also convert an error message from TRACE to ERROR so it remains visible
when tracing is disabled.


# dd0e8e49 09-Feb-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: filter out some video modes

Only in the specific case of:
- Generation 2 or 3 hardware (with a limited panel fitter)
- No EDID is found (so we have no idea about timing limits)
- A VBT is found (so we know the native resolution of the LCD panel)

Only in this case, restrict available resolutions to the ones not larger
than the VBT mode. Larger resolutions don't work and result in a black
screen.

In all other cases, we should normally figure out appropriate
resolutions from the EDID limits and our well-known modes list.

Change-Id: I3bba9f53b92c4c647e0d644fa0181f6fe96d1fc4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2235
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 22ec6455 13-Mar-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: some minor fixes

- Cleanup HEAD_MODE constants. These should be completely removed, now
that we have a proper notion of pipes and displays. But the DPMS code
still uses them, for now.
- Fix the ie_pipe command where width and height were swapped and
missing a +1 to show the actual videomode values


# ec4e9ea8 27-Jan-2020 Adrien Destugues <adrien.destugues@opensource.viveris.fr>

intel_extreme: remove unhandled generation defines

- 7xx (1st gen) has no driver in Haiku or is handled by the intel_810 driver
- PowerVR has no driver in Haiku

So there is no point in having those in the intel_extreme driver.

While I'm at it, fix the video timing/resolution constraints for
sanitize_video_mode.


# fadca4b1 25-Jan-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: disable pipe configuration

This code just sets nonsensical things in the pipe control register, so
disable it and add FIXMEs if someone wants to get it to work someday
(but it's not needed for modesetting an already up and running display).

Also remove some other places where we write to non-existing registers.

Fixes #15628 (for real, this time).


# 03c13e58 12-Jan-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: do configure the LVDS panel when we use native resolution

Should fix the remaining problem in #14066


# 2beddbfd 04-Jan-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: fix pipe and plane size registers

- The name for the registers were swapped
- The width and height were also swapped in one of them
- Remove some old #if 0 code that touched these registers but has been
disabled for a while.


# 478b9207 06-Oct-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: disable 15-bit support for modern devices

It is not supported for all newer generations, and why would one use it
when 16bit mode is available anyway?

Fixes #15395


# 0c5f4fb7 16-Jul-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

PVS V595: use before null-check

Change-Id: I1e74b376d77686c08778882b6f2c4c67a51b6eb3
Reviewed-on: https://review.haiku-os.org/c/1614
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# fe337577 04-Apr-2019 SuperPrower <dya.eshshmai@gmail.com>

intel_extreme.accelerant: create display modes list from VBT using create_display_modes()

For cases when EDID is not available but VBT information was retrieved,
previous code generated display mode list manually, potentially
incorrectly, causing the black screen during boot. This commit
fixes this by using a dedicated function, used for the
case where EDID is available (or VBT is not available).

Fixes #14280.

Change-Id: I95cfc5313260f0b9a01a98ba78e300b4383b6e32
Reviewed-on: https://review.haiku-os.org/c/1370
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 8ddec194 23-Nov-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

intel_extreme: backlight control on pre-PCH devices

Thanks to oco for letting me test this on his old laptop.


# 3a2b67b5 21-Nov-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

Support for configuring screen backlight

Accelerant interface:
Introduce new hooks B_SET_BRIGHTNESS and B_GET_BRIGHTNESS. Brightness is
a float in the 0..1 range.

App_server:
Forward brightness things between BScreen and the accelerant.

intel_extreme:
Implement the hooks. Note that this only works for laptop panels, but
the driver will pretend to support it in other cases as well.

Screen preferences:
If the accelerant supports the B_GET_BRIGHTNESS hook, allow to set
brightness with a slider. Otherwise, the slidere is hidden and these
changes aren't visible.


# 459188a4 08-Apr-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

Do not fail when the display mode is sanitized

The goal of sanitize_display_mode is to create a mode that the hardware
can use. The code was doing that, but if any change was required to the
initial mode, it threw the result away.

Now accept the sanitized mode, and log it for debugging purposes.

This should fix #12927


# 16e393a0 22-Oct-2016 Adrien Destugues <pulkomandy@gmail.com>

style fix.


# bfb2f7ff 22-Oct-2016 Adrien Destugues <pulkomandy@gmail.com>

intel_extreme: always set the base, surface and stride on both pipes

Our code to assign outputs to pipes isn't working at the moment. Outputs
stay assigned to whatever the BIOS has set up. I tried to fix this but
didn't find a way yet (only more black screens).

As a workaround, always set both pipes A and B to always point to the
same frame buffer. This gets the display running properly on my Haswell
machine again, however mode setting is still not possible (so you can
only use the mode set by the BIOS).


# 95e38537 09-May-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Tab cleanup; no functional change.

* It seems like the Atom editor has been injecting
spaces in strange spots.
* Clean up spaces. Should help gcc6 as well.
* Sorry for the mess! Atom is on probation.


# 23cd7065 23-Apr-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Disable register dumps

* Could cause instability in rare cases.


# 3d1bd895 11-Mar-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Properly use VBIOS panel mode

* Move current_mode into the accelerant as the
driver doesn't care.
* Record panel_mode in driver and present to accelerant
* eDP, if no EDID and mobile, leave edid incomplete.
Mode set should notice that and fall back to panel_mode


# 72dbe9d2 03-Jan-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Fix pull of current timing


# 3cfe2997 04-Dec-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Rework PLL and id PineView as PIN


# 77b8386d 26-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Tweak pll limits on 9xx


# 7217bb11 24-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Take a register dump for intel_reg


# 00e0982f 17-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: First work at programming FDI


# 32807945 17-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Some basic pipe cleanup


# be3f7a8f 10-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: tracing cleanup; no functional change


# 328d66d5 08-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Fix ordering of fb set. Uses current_mode


# 61fbdb06 08-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Set mode and pll via pipe-aware class functions


# 6e1ff82f 08-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Begin using new DisplayPipe class


# 37b903fb 08-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Add pipe selection for ports


# fb255821 04-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Correct generations based on some Intel help


# 84b7116d 01-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Rework card identification defines

* Be more verbose on flag type
* Add additional groups
* Add additional families
* Correctly assign later models


# b0f591a7 01-Nov-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Fix DPMS modesetting dance


# 9e631ada 25-Oct-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme accelerant: Cleanup VLV InGroup


# b3f14fb7 25-Oct-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Start doing mode-setting at port level

* I really hope we can kill head_mode some day
* Break pll code out from mode code
* The LVDS and Digital are smooshed together and
likely need broken apart.


# 50f0b3fe 17-Oct-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Rebase and refactor mmlr's work from 2013

* New port storage classes and cleaner logic


# 97aa078e 15-Oct-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Intial work for ValleyView support

* No impact to non-ValleyView chipsets
* Bump some register locations for VLV
* Only have HDMI port to test with on my ValleyView GPU
and our driver seems to be missing all HDMI and
sideband functionality.
* As ValleyView chipsets seem to be UEFI only, we don't
have VESA fallback, so this shouldn't cause regressions.
(unless we get UEFI framebuffer support)


# 13af65c4 19-Oct-2014 Adrien Destugues <pulkomandy@gmail.com>

intel_extreme: fix warnings on 64bit.


# cee64ce5 12-Sep-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

intel_extreme: probe all GPIO pins


# c1400fb6 03-Jun-2014 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: use VESA EDID info as fallback.

* Only in case retrieving EDID info failed on head A and C.
* Should help with detecting the native resolution for ticket #10878.


# 9e751dda 23-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Let the PLL lockup before using it.

* The PLL need some time to stabilize and generate a reliable pixel
clock
* Enabling the display pipe before that happens leads to some frames
with bad timing. This may confuse some VGA displays into entering
"unsupported mode" error.

Fixes #10271. Thanks for investigating this!


# 8efd9b8d 18-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Remove display_mode_hook hack.

We'd better find a cleaner way to implement this, if actually needed.


# a35f5682 17-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert part of previous patch

Checking only the visible resolution and colorspace isn't enough to call
two modes equal, otherwise it is not possible to change the refresh rate
anymore.


# ef726c68 16-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Intel_extreme: improve i855 support.

https://github.com/druga/haiku-stuff/tree/master/intel_extreme
Rebased against current sources.

* The BIOS video mode sometimes reports a scaled mode instead of the
physical panel dimensions. Get the data from the VBT table as well, and
use it if the reported resolution is bigger.
* On first boot, force the panel native mode so the user doesn't have to
set it manually.
* Only allow a single head at a time on i855gm, as the card can't drive
both heads at the same time.
* Detect when a new requested mode is the same as the current one, and
skip modesetting in that case. Avoids screen flickering when changing
workspaces.
* Fix some cases of misdetecting which pipes to enable


# 8f284ef3 16-Sep-2013 Jerome Duval <jerome.duval@gmail.com>

intel_extreme: don't expose overlay in accelerant when not allocated

... in the driver.


# e968e4b0 16-Sep-2013 Jerome Duval <jerome.duval@gmail.com>

intel_extreme: don't expose overlay in accelerant when not allocated

... in the driver.


# c162f52e 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme and radeon_hd: some 64 bit fixes


# 161400fb 18-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: sanitize EDID modes as well.

* Since we add those modes to our mode list, we should better accept them.
* This may help with bug #9145, and #7523 if they still occur.


# e43a7e3d 10-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: sanitize BIOS mode.

* For LVDS output, the sync parameters aren't really used which is why the mode
set from the BIOS might not be valid if the PLL hardware would actually be
used.
* Therefore, we sanitize this mode to make sure it's within allowed parameters
so that intel_set_mode() will accept it.
* This should fix at least #8132, and #8796.
* Sorry for looking into this so late! I obviously messed up testing this
before, as my EeePC 900 was actually affected by this, too.


# 087341fc 10-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: reordered functions.

* retrieve_current_mode() was not static, but should have been.
* static functions come now first, as usual.


# 881a823e 28-Dec-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Improve accelerant tracing and debug output

* Several messages to syslog weren't tagged with
intel_extreme making troubleshooting difficult
* Fix a few typesize printf issues with B_PRI macro


# d1043dfa 28-Dec-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Add IvyBridge fixups

* Add initial clock gating fix (may need tweaking)


# d41ac61f 04-Mar-2012 Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>

The display line length constraint is different on <= G35 cards.
* Decide which constraint to use depending on the card model.
* May fix #8001, only tested on my hardware which already worked...


# 7408b8cc 01-Feb-2012 czeidler <haiku@clemens-zeidler.de>

Add workaround for #8001.
* check known mode list first before sanitizing the target mode. However the optimal way is to fix the constraints in sanitize_display_mode.


# 86f4c50b 11-Nov-2011 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use timing constraints from the G35 programming manual (which are much more relaxed)
Should help with #8001.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43235 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c0cb09ba 16-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Add a couple more SandyBridge IDs. They might work, but I can't test them.
* Also add the definitions and some specifics for IronLake (ILK), but keep the
IDs disabled as at least the one version I can test with doesn't work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c788baed 16-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Style cleanups only, no functional change.
* Make the pointer style consistent accross all components, which should make it
easier when working all over the place.
* 80 char limits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42863 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f0468be3 15-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Rework how registers are accessed. Most registers are now grouped into
register blocks and we encode their block into the register definition. On
register access these blocks are then translated into the final address.
* Set up the register blocks for (G)MCH and PCH variants.
* Remove most SandyBridge code that was actually PCH specific and is now taken
care of automatically.
* This will temporarily break SandyBridge support again until the right
transcoders are actually programmed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42857 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bff57edf 14-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Add indexed color mode support for SandyBridge.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42851 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 832d09b5 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Apply r42844 to the analog case as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42845 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec38b900 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Use the actual (virtual) width and height instead of the display timing
values, as those might be slightly off (when coming from the GTF for example)
and cause needless display scaling.
* Tiny cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42844 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65ac8308 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Fix comparison.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42843 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e436a27e 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Add preliminary support for one SandyBridge mobile integrated graphics device
(the one in my new ThinkPad X1). The PLL is still off a bit so it has a few
blurry stripes, but EDID and mode setting basically works.
* Starting with IronLake the north/south bridge or (G)MCH/ICH setup was moved
into a platform control hub (PCH) which means that many registers previously
located in the GMCH are now in the PCH and have a new address.
* I'm committing this mostly because this way the additions are more easy to
follow. It is a bit messy and I'll clean it up more and possibly make it a
bit more generic. Also most of these changes actually apply to IronLake and up
and aren't SandyBridge specific, so a few of those additions will still get a
broader scope and new chips will be added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42839 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 654613b6 11-Sep-2011 Axel Dörfler <axeld@pinc-software.de>

* Implemented intel_propose_display_mode() using the new helper functions.
* In intel_set_display_mode(), we now use the sanitize_display_mode() method
directly in order to see if the mode is valid (it's valid when it doesn't
need to be altered anymore).
* This should be the final nail on ticket #7419.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42742 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ab7cbe31 31-Jul-2011 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Always set the palette registers even if the head is not connected. This will not do anything bad (if the display is disabled, it has no
effect), and since the test was a bit too constraining (I have an LVDS panel on head A), it would prevent setting colors for the CMAP modes.

This finally gets the \n demo working from the original binary from BeOS, without any change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42523 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f4d9fdb 29-Jan-2011 Brecht Machiels <brecht@mos6581.org>

* added support for the Atom IGD, based on the X driver sources (fixes #6202)
* fixes G4x PLL limits


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40319 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6389df93 23-Oct-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Bring back the fallback video mode selection in case both tries to read EDID info failed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39081 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f16be37f 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed strange/wrong indentation.
* Made sure the 80 character per line limit is honoured.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38370 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a8a33a98 26-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Intel_extreme now centers the screen when one select a resolution smaller than the ne of the LVDS panel.
Also clean up the style and add some more TODOs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38363 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 124a502a 25-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Always set the LVDS panel to its native mode, except for the 'display' part.
This allows to use lower resolution screen modes with black border.

Added a set of TODOs :
* The smaller scren is not centered, but aligned top-left
* The base resolution used is the one reported from edid 1.1, because I'm still not sure how to parse EDID 1.2. This resolution is too small on my laptop, but it works.

Also added two ways of setting 8-to-6 dithering for 18-bit LVDS panel. No visible result for me, unfortunately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38354 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d401ca7b 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38350 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0405fd3b 25-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Set the color depth for head B. This allows using 8,15, and 16-bit modes on lvds panels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38349 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0767bd3a 24-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use the EDID info from LVDS panels :
* Read the EDID info on both port A (analog VGA monitor) and C (LVDS panel)
* If an LVDS panel is detected, report the EDID resolutions instead of the BIOs settings

This fixes #6326, likely #5096, and possibly some others intel_extreme problems. Please test.
On the other hand, this make the screen preflet show the full list of more reported by the LVDS panel. As we don't support
scaling, some of these modes are unuseable and lead to a garbled screen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38329 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7e91d92 26-May-2010 Axel Dörfler <axeld@pinc-software.de>

* The DPMS code tried to enable the LVDS panel already if a digital display
was detected; however, it should only do so when there is an actual LVDS panel
detected.
* This should fix one part of ticket #3149 - looks like there are two different
issues. Thanks to Robert J. Gebis for providing me remote access to his
system.
* Minor debug output improvements.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfdfbd3e 23-Oct-2009 Brecht Machiels <brecht@mos6581.org>

* added support for GM45 (might work for other chips in the G4 series)
* added header for dealing with binary numbers and bitmasks (C++ templates)
these "macro's" might not work well for long words, though


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b198850a 22-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Messed up the commit, sorry.
* Adrien? :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c90fc59 22-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Disabled the LVDS post2 for i965 cards, maybe that helps Adrien, and don't
break the display for others. If that doesn't work out, there is probably a
bit more to it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33731 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d3ca457 19-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Restored forcing the post2 PLL divisor for display B. This should fix all
remaining problems introduced with r33633.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33669 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b5addd82 19-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

axeld:
Restore ignoring the BIOS provided width and height in case the timings
suggest a bigger dimension. Also re-add the corresponding comment. Should
fix #4810 and might affect #4807 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33652 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 795bd7a6 18-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* The save_lvds_mode() function did not correctly support the i965 chipset -
I've now removed that code, and factored out a retrieve_current_mode()
function that can work on head A and B.
* This fixes Adrien's flickering problem on his laptop - I can't find the
bug ticket, though. Hopefully it does not break other laptop chips. Testing
would be welcome, as I don't have any other machine here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33633 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c9ae946 17-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* The panel display_mode::flags field was not correctly set, preventing direct
windows from working, for example.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33620 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 23843356 14-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed the way the device type is tested/set. There shouldn't be any functional
changes.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32353 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 10f01c97 27-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Make sure that the bytes per scanline is always a multiple of 64. This fixes
1680x1050 with 16 bit on i865+ (still need to check the restrictions of
older chips).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31277 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 89a5132e 15-Jan-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7b746467 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

OK, how completely can one mess up a single change? Fixed the intel_extreme
accelerant I broke.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27499 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f464b19 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

Fix the build of the intel_extreme.accelerant, I obviously compiled the wrong
target when I checked it. Move the target display_mode declaration back above
the check but remove the dereferencing assignment. If proposing the display
mode succeeds it also initializes target. Thanks luroh for noticing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27492 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6b9d1413 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

CID 1039: Dereference mode only after checking it for NULL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27489 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d5f339d 16-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

Patch by Christopher Plymire, style-reworked by myself:
* first steps of supporting LVDS panels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25975 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c34b9b1 29-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

Work in progress (might not work for you yet):
* Now uses the AGP GART module for memory management. This greatly simplifies
the memory handling, and memory is now actually allocated on demand,
instead of a fixed size (stolen memory is not freed, though).
* The Intel GART module should now also work with older chipsets.
* No longer remove the GTT size from the stolen memory; this appears to have
been a mistake in the X driver. Not sure about the BIOS popup yet.
* The AGP module (in combination with the Intel GART module) is now mandatory
to use the Intel driver.
* Removed now superfluous settings (like memory size). Only enabling/disabling
the hardware cursor is still supported.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23781 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d75c8820 26-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Simplified usage of the INTEL_TYPE_xxx constants.
* Added some defines needed when playing with the bridge controller.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23753 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7825641a 10-Dec-2007 Axel Dörfler <axeld@pinc-software.de>

Now clears the frame buffer before setting the mode; at least when testing,
one sometimes could still see previous contents of the screen during boot up
for some time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23104 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61291964 31-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

The intel_extreme driver now finally works with the i965 chipset;
acceleration works fine, but overlay doesn't - that's next on my list.
Turns out the i965 differentiates between RGB-32 and RGB-32-alpha, and
didn't like trying to use the latter as display mode (the i865 didn't
care at all)... finding that took me *way* too long, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 53d781f4 13-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Now uses the new create_display_modes() function.
* Now supports the new B_GET_EDID_INFO hook under Haiku.
* Fixed build under BeOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22551 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a82d70c7 02-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed PLL clock for i8xx chips again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22415 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cbd40810 24-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* Fixed PLL timing computation for the i9xx chips - I mixed post2 min/max values, and did
not take the VCO limits into account; both could (and would during testing) create invalid
frequencies.
* Also reverted the order in which the PLL divisors are traversed to match the order of what
is used in the X driver to create comparable output (our error computation is based on float,
though, and should therefore create more accurate values).
* The i965 introduced a special register for the surface; the former display base register
is now only used for the view offset. Instead of setting the base manually here and there,
there is now a set_frame_buffer_base() function.
* The DPMS code will now also turn off/on the PLL clock generator.
* The code needs some more cleanup, and while the driver now produces the correct timing on
my i965 system, I'm now greeted by a black screen after startup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22289 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523a30f3 21-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

Implemented I2C support to get the DDC EDID info from the monitor - it's working as is, but
nothing is done with the data yet (besides dumping them to the serial output).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22272 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61dad86a 19-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* No longer switch between divisor register set 0 and 1; it doesn't really
make any sense.
* "pll" might have been set incorrectly on i8xx chips.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3bac9ea1 04-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* Work in progress to support the i965 chipset as well; still works on i865, but
doesn't work on i965 yet.
* B_GET_DISPLAY_MODE now returns the mode actually configured in the chip instead
of the last mode set; while this isn't really necessary, it allows to check what
mode was used during startup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21321 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d881c6ba 15-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* Replaced the 1400x900 modeline with the one from the nVidia driver - Stephan, does this
work for you, too? If not, just replace it with yours again.
* Added resolution 1680x1050 from nVidia driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca1a22a7 03-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* commented out span acceleration function, since it doesn't seem to work
* added mode for 1440x900, the numbers are just guessed, but work fine
with my monitor (after some fiddling), would be best to have some common
VGA communication code for all drivers to use and auto-detect the preferred
mode of the monitor
* messed around with the overlay brightness and contrast values to give
good looking video



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19192 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c05095c 14-Jul-2006 Ithamar R. Adema <ithamar.adema@team-embedded.nl>

Last set of minor fixes for GCC 4 build.
More will follow later, need to clean the fixes up a little :)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18154 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 178d3441 26-May-2006 Axel Dörfler <axeld@pinc-software.de>

wait_for_vblank() will now only wait 25ms at maximum (40Hz) - this is needed because
there is no VBlank interrupt when the display is turned off (and the code to turn it
on again actually calls wait_for_vblank()...).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17597 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5f5d834 23-May-2006 Axel Dörfler <axeld@pinc-software.de>

* B_MOVE_DISPLAY and B_SET_INDEXED_COLORS should now work for the digital
output as well.
* Obviously got the register for INTEL_DISPLAY_B_DIGITAL_PORT wrong - it's
not 0x61000 but 0x61140, maybe that can explain the fun we had at BeGeistert :)
* Renamed the analog display registers to better fit the digital ones, ie.
replaced DISPLAY with DISPLAY_A - although this might be not really correct
as it seems that the pipes can be selected arbitrarily.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17566 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0902420 23-May-2006 Axel Dörfler <axeld@pinc-software.de>

Some work to support output on the digital interface like laptop panels.
Need to clean this up, though. It even sort of worked on tic's IBM X40
on BeGeistert - if you weren't irritated by the fact some parts of the
screen were just black, that is :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17565 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 112db6b6 15-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Now disables the VGA display mode explicetly, which allows it to work
without having a VESA mode set first (thanks to Stephan for noticing
this).
* intel_set_display_mode() now calls intel_propose_display_mode() to make
sure the mode passed in is valid. Note, B_PROPOSE_DISPLAY_MODE is still
not working correctly (which will cause problems for BWindowScreen and
friends).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17460 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 973d499e 14-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Made the accelerant safer to use when cloned (though I didn't test cloning yet);
introduced a lock that is used in B_SET_DISPLAY_MODE etc.
* Correctly implemented B_ACQUIRE_ENGINE and B_RELEASE_ENGINE now (ie. they lock
the engine now).
* The lock of the ring buffers is now deleted when the (primary) accelerant is closed.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17453 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cccc4c83 14-May-2006 Axel Dörfler <axeld@pinc-software.de>

Now advertizes the capabilities of the screen modes correctly (ie. sets B_HARDWARE_CURSOR
and B_SUPPORTS_OVERLAYS).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17451 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8609aed 12-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Now allocates enough memory for virtual screens.
* Implemented untested B_MOVE_DISPLAY - note, the page_flip demo doesn't work
yet (didn't investigate yet, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17432 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ace35ed 10-May-2006 Axel Dörfler <axeld@pinc-software.de>

Started implementing screen-to-screen blits, not yet tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 94f8a931 05-May-2006 Axel Dörfler <axeld@pinc-software.de>

B_SET_INDEXED_COLORS is now working correctly for B_CMAP8, IOW you can now use
8 bit modes with this driver as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17339 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5da6291b 24-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* Now using Thomas memory manager to manage the graphics memory; allocation
of graphics memory is now possible.
* Changed driver name to start with "intel_extreme" to have a nicer device
name.
* Renamed frame_buffer* stuff to graphics_memory* as the frame buffer just
happens to be located somewhere in the graphics memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17224 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2fd8de24 26-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7a3806ce 25-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Now you can also select the refresh rate you like under R5. Looks like there is
room for improvements left in our screen preferences application, which ignores
the pixel clock values completely.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 943578b1 25-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Added some debug output - the driver is actually working under R5 as well, I just
didn't test it correctly last time...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16873 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e404297e 24-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Very basic driver for the "Intel Extreme Graphics 2" chips, only supports i865G for now.
Only mode switches do work, doesn't yet make sure the mode is valid, though.
At this point, this driver only works on Haiku, the R5 app_server is crashing for some
reason I need to investigate some day (maybe tomorrow :)).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16872 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 13af65c4027b414617a7ddd4902bac0a04372fd5 19-Oct-2014 Adrien Destugues <pulkomandy@gmail.com>

intel_extreme: fix warnings on 64bit.


# cee64ce5074d04f8517bc086dccb3759d1454d91 12-Sep-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

intel_extreme: probe all GPIO pins


# c1400fb61762f2c48cb541b3bb79ae011bc853e0 03-Jun-2014 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: use VESA EDID info as fallback.

* Only in case retrieving EDID info failed on head A and C.
* Should help with detecting the native resolution for ticket #10878.


# 9e751dda2e90cae1f5c96a89116ddd675d161d4b 23-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Let the PLL lockup before using it.

* The PLL need some time to stabilize and generate a reliable pixel
clock
* Enabling the display pipe before that happens leads to some frames
with bad timing. This may confuse some VGA displays into entering
"unsupported mode" error.

Fixes #10271. Thanks for investigating this!


# 8efd9b8d00411409dd8a2f2447a6f84fc727e5d9 18-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Remove display_mode_hook hack.

We'd better find a cleaner way to implement this, if actually needed.


# a35f5682739142f826cd9cdb526c263645edac9b 17-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Revert part of previous patch

Checking only the visible resolution and colorspace isn't enough to call
two modes equal, otherwise it is not possible to change the refresh rate
anymore.


# ef726c687a8cb1779a9a78d43a6b6fa8167a7ab4 16-Jan-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

Intel_extreme: improve i855 support.

https://github.com/druga/haiku-stuff/tree/master/intel_extreme
Rebased against current sources.

* The BIOS video mode sometimes reports a scaled mode instead of the
physical panel dimensions. Get the data from the VBT table as well, and
use it if the reported resolution is bigger.
* On first boot, force the panel native mode so the user doesn't have to
set it manually.
* Only allow a single head at a time on i855gm, as the card can't drive
both heads at the same time.
* Detect when a new requested mode is the same as the current one, and
skip modesetting in that case. Avoids screen flickering when changing
workspaces.
* Fix some cases of misdetecting which pipes to enable


# 8f284ef32d8597ac987aa0ba1c84c7b90c866961 16-Sep-2013 Jerome Duval <jerome.duval@gmail.com>

intel_extreme: don't expose overlay in accelerant when not allocated

... in the driver.


# e968e4b09049ceef142d18f18a71b687813e7d66 16-Sep-2013 Jerome Duval <jerome.duval@gmail.com>

intel_extreme: don't expose overlay in accelerant when not allocated

... in the driver.


# c162f52eaa83ca2cf01f61c4fb6353d76e10caa1 04-May-2013 Jérôme Duval <jerome.duval@gmail.com>

intel_extreme and radeon_hd: some 64 bit fixes


# 161400fbcccc3f8c5d1f5c1c132d262ae1e0a3da 18-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: sanitize EDID modes as well.

* Since we add those modes to our mode list, we should better accept them.
* This may help with bug #9145, and #7523 if they still occur.


# e43a7e3db6c24b6f3fe649a51c5e88379dd2f567 10-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: sanitize BIOS mode.

* For LVDS output, the sync parameters aren't really used which is why the mode
set from the BIOS might not be valid if the PLL hardware would actually be
used.
* Therefore, we sanitize this mode to make sure it's within allowed parameters
so that intel_set_mode() will accept it.
* This should fix at least #8132, and #8796.
* Sorry for looking into this so late! I obviously messed up testing this
before, as my EeePC 900 was actually affected by this, too.


# 087341fcfb283fb115f296c83c9e5486c0381089 10-Mar-2013 Axel Dörfler <axeld@pinc-software.de>

intel_extreme: reordered functions.

* retrieve_current_mode() was not static, but should have been.
* static functions come now first, as usual.


# 881a823e8a1af9b040fb880eae1b4fe85d6aba5d 28-Dec-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Improve accelerant tracing and debug output

* Several messages to syslog weren't tagged with
intel_extreme making troubleshooting difficult
* Fix a few typesize printf issues with B_PRI macro


# d1043dfa07c4bb078102f3a0cf4bab53166ee770 28-Dec-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

intel_extreme: Add IvyBridge fixups

* Add initial clock gating fix (may need tweaking)


# d41ac61f731647ec6a45d69396d0d7bb7f52ba5c 04-Mar-2012 Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>

The display line length constraint is different on <= G35 cards.
* Decide which constraint to use depending on the card model.
* May fix #8001, only tested on my hardware which already worked...


# 7408b8cc24c57230ef69243df6a0e38a1679f96e 01-Feb-2012 czeidler <haiku@clemens-zeidler.de>

Add workaround for #8001.
* check known mode list first before sanitizing the target mode. However the optimal way is to fix the constraints in sanitize_display_mode.


# 86f4c50bc6dbe8ef4a6991afba61db573cd25758 11-Nov-2011 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use timing constraints from the G35 programming manual (which are much more relaxed)
Should help with #8001.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43235 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c0cb09baee3bffd53702c25c6b7d3c990df1d8fd 16-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Add a couple more SandyBridge IDs. They might work, but I can't test them.
* Also add the definitions and some specifics for IronLake (ILK), but keep the
IDs disabled as at least the one version I can test with doesn't work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c788baed28e28960c17306fe9f5b40382b07cb1d 16-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Style cleanups only, no functional change.
* Make the pointer style consistent accross all components, which should make it
easier when working all over the place.
* 80 char limits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42863 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f0468be3845a6f7318a5a4f4dadcd62f7ed4ee22 15-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Rework how registers are accessed. Most registers are now grouped into
register blocks and we encode their block into the register definition. On
register access these blocks are then translated into the final address.
* Set up the register blocks for (G)MCH and PCH variants.
* Remove most SandyBridge code that was actually PCH specific and is now taken
care of automatically.
* This will temporarily break SandyBridge support again until the right
transcoders are actually programmed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42857 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bff57edf94aa70c5437710e75e0f62e7bc7a2516 14-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Add indexed color mode support for SandyBridge.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42851 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 832d09b54d60976654d7c61bef9f5025d66c1ca6 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Apply r42844 to the analog case as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42845 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ec38b9004636cdf58f725ad76e75de41ddae3779 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Use the actual (virtual) width and height instead of the display timing
values, as those might be slightly off (when coming from the GTF for example)
and cause needless display scaling.
* Tiny cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42844 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 65ac830822175445f818fb3a6b7f766224ae7876 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

Fix comparison.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42843 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e436a27e5f6df975a1e35c27f42e8f6ad27ebdca 13-Oct-2011 Michael Lotz <mmlr@mlotz.ch>

* Add preliminary support for one SandyBridge mobile integrated graphics device
(the one in my new ThinkPad X1). The PLL is still off a bit so it has a few
blurry stripes, but EDID and mode setting basically works.
* Starting with IronLake the north/south bridge or (G)MCH/ICH setup was moved
into a platform control hub (PCH) which means that many registers previously
located in the GMCH are now in the PCH and have a new address.
* I'm committing this mostly because this way the additions are more easy to
follow. It is a bit messy and I'll clean it up more and possibly make it a
bit more generic. Also most of these changes actually apply to IronLake and up
and aren't SandyBridge specific, so a few of those additions will still get a
broader scope and new chips will be added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42839 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 654613b66163404d50df58dfa7a1de19b1d6c22a 11-Sep-2011 Axel Dörfler <axeld@pinc-software.de>

* Implemented intel_propose_display_mode() using the new helper functions.
* In intel_set_display_mode(), we now use the sanitize_display_mode() method
directly in order to see if the mode is valid (it's valid when it doesn't
need to be altered anymore).
* This should be the final nail on ticket #7419.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42742 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ab7cbe31c2cae99a5a693de6405d5b27f626fce8 31-Jul-2011 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Always set the palette registers even if the head is not connected. This will not do anything bad (if the display is disabled, it has no
effect), and since the test was a bit too constraining (I have an LVDS panel on head A), it would prevent setting colors for the CMAP modes.

This finally gets the \n demo working from the original binary from BeOS, without any change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42523 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f4d9fdbab2d62559a66c7fd86535cca9d5b0c13 29-Jan-2011 Brecht Machiels <brecht@mos6581.org>

* added support for the Atom IGD, based on the X driver sources (fixes #6202)
* fixes G4x PLL limits


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40319 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6389df937b4ca82b123deaffe8b63c845973f11f 23-Oct-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Bring back the fallback video mode selection in case both tries to read EDID info failed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39081 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f16be37f879f5f8b4ae139cfae457c2142f35ba4 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Fixed strange/wrong indentation.
* Made sure the 80 character per line limit is honoured.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38370 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a8a33a98ffc840f467a015f88e84d1ae07e26bea 26-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Intel_extreme now centers the screen when one select a resolution smaller than the ne of the LVDS panel.
Also clean up the style and add some more TODOs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38363 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 124a502a7a9c6af4e8fb25dfe710ee69268f7397 25-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Always set the LVDS panel to its native mode, except for the 'display' part.
This allows to use lower resolution screen modes with black border.

Added a set of TODOs :
* The smaller scren is not centered, but aligned top-left
* The base resolution used is the one reported from edid 1.1, because I'm still not sure how to parse EDID 1.2. This resolution is too small on my laptop, but it works.

Also added two ways of setting 8-to-6 dithering for 18-bit LVDS panel. No visible result for me, unfortunately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38354 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d401ca7b987809172400ad8daa033cbe25ae4c36 25-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38350 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0405fd3b15499d853758ea93217938a41d0a92a1 25-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Set the color depth for head B. This allows using 8,15, and 16-bit modes on lvds panels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38349 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0767bd3a8be1401dd72a01f3fae0020d81952fbd 24-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use the EDID info from LVDS panels :
* Read the EDID info on both port A (analog VGA monitor) and C (LVDS panel)
* If an LVDS panel is detected, report the EDID resolutions instead of the BIOs settings

This fixes #6326, likely #5096, and possibly some others intel_extreme problems. Please test.
On the other hand, this make the screen preflet show the full list of more reported by the LVDS panel. As we don't support
scaling, some of these modes are unuseable and lead to a garbled screen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38329 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7e91d925348553db548b5632ca7ef00fa790d44 26-May-2010 Axel Dörfler <axeld@pinc-software.de>

* The DPMS code tried to enable the LVDS panel already if a digital display
was detected; however, it should only do so when there is an actual LVDS panel
detected.
* This should fix one part of ticket #3149 - looks like there are two different
issues. Thanks to Robert J. Gebis for providing me remote access to his
system.
* Minor debug output improvements.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36941 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfdfbd3eefeb8aff04b7e8e2d6ebb46a51fe24ad 23-Oct-2009 Brecht Machiels <brecht@mos6581.org>

* added support for GM45 (might work for other chips in the G4 series)
* added header for dealing with binary numbers and bitmasks (C++ templates)
these "macro's" might not work well for long words, though


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b198850a1b594a4038c2440b9f17c415a896205e 22-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Messed up the commit, sorry.
* Adrien? :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c90fc59d2f114dc8ee5b36b9dbbca7a1165c42f 22-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Disabled the LVDS post2 for i965 cards, maybe that helps Adrien, and don't
break the display for others. If that doesn't work out, there is probably a
bit more to it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33731 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d3ca457dca5141c457e1e0978d8a1f6caa33755 19-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* Restored forcing the post2 PLL divisor for display B. This should fix all
remaining problems introduced with r33633.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33669 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b5addd82d7715545cf354af234ece4666aa91301 19-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

axeld:
Restore ignoring the BIOS provided width and height in case the timings
suggest a bigger dimension. Also re-add the corresponding comment. Should
fix #4810 and might affect #4807 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33652 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 795bd7a697d6157c37af3c93edb0bbad9572476a 18-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* The save_lvds_mode() function did not correctly support the i965 chipset -
I've now removed that code, and factored out a retrieve_current_mode()
function that can work on head A and B.
* This fixes Adrien's flickering problem on his laptop - I can't find the
bug ticket, though. Hopefully it does not break other laptop chips. Testing
would be welcome, as I don't have any other machine here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33633 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c9ae946369a6ec6c8b49aaeee44eac57f9baedc 17-Oct-2009 Axel Dörfler <axeld@pinc-software.de>

* The panel display_mode::flags field was not correctly set, preventing direct
windows from working, for example.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33620 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 238433564972d525584b2dfbe1a2c0eb52ef49c1 14-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Changed the way the device type is tested/set. There shouldn't be any functional
changes.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32353 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 10f01c97ec883c267bfa447ec02f09b80cf1a8c0 27-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Make sure that the bytes per scanline is always a multiple of 64. This fixes
1680x1050 with 16 bit on i865+ (still need to check the restrictions of
older chips).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31277 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 89a5132e8dd3ed4833361fe777968ccb4b46f6c9 15-Jan-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7b7464670e13cd01d36d6e22c7a91b76c47a3358 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

OK, how completely can one mess up a single change? Fixed the intel_extreme
accelerant I broke.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27499 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f464b193f3953e26be0b08a6d4fd62527258a92 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

Fix the build of the intel_extreme.accelerant, I obviously compiled the wrong
target when I checked it. Move the target display_mode declaration back above
the check but remove the dereferencing assignment. If proposing the display
mode succeeds it also initializes target. Thanks luroh for noticing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27492 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6b9d141359ff75c2cf91e6f5985742ffee7fa8a5 13-Sep-2008 Michael Lotz <mmlr@mlotz.ch>

CID 1039: Dereference mode only after checking it for NULL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27489 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d5f339decd181abac7ea2dd74136aca4b1b6e92 16-Jun-2008 Axel Dörfler <axeld@pinc-software.de>

Patch by Christopher Plymire, style-reworked by myself:
* first steps of supporting LVDS panels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25975 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1c34b9b1f5e168501f89a270233457e04aa1b16b 29-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

Work in progress (might not work for you yet):
* Now uses the AGP GART module for memory management. This greatly simplifies
the memory handling, and memory is now actually allocated on demand,
instead of a fixed size (stolen memory is not freed, though).
* The Intel GART module should now also work with older chipsets.
* No longer remove the GTT size from the stolen memory; this appears to have
been a mistake in the X driver. Not sure about the BIOS popup yet.
* The AGP module (in combination with the Intel GART module) is now mandatory
to use the Intel driver.
* Removed now superfluous settings (like memory size). Only enabling/disabling
the hardware cursor is still supported.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23781 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d75c88206ebdc2e711a9edcf2f4ccf38ba1663e2 26-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Simplified usage of the INTEL_TYPE_xxx constants.
* Added some defines needed when playing with the bridge controller.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23753 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7825641a7bbfb585146151dd5f10bd56b57118b5 10-Dec-2007 Axel Dörfler <axeld@pinc-software.de>

Now clears the frame buffer before setting the mode; at least when testing,
one sometimes could still see previous contents of the screen during boot up
for some time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23104 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61291964c3e6cc275ece67168ea4b9631338f861 31-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

The intel_extreme driver now finally works with the i965 chipset;
acceleration works fine, but overlay doesn't - that's next on my list.
Turns out the i965 differentiates between RGB-32 and RGB-32-alpha, and
didn't like trying to use the latter as display mode (the i865 didn't
care at all)... finding that took me *way* too long, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 53d781f439bf208397a56d7041b6dc8b7b378764 13-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Now uses the new create_display_modes() function.
* Now supports the new B_GET_EDID_INFO hook under Haiku.
* Fixed build under BeOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22551 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a82d70c719127aa8511903f3036b24d60192bb67 02-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed PLL clock for i8xx chips again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22415 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cbd4081064f0aee215b62407ecfd0462cdc204ff 24-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* Fixed PLL timing computation for the i9xx chips - I mixed post2 min/max values, and did
not take the VCO limits into account; both could (and would during testing) create invalid
frequencies.
* Also reverted the order in which the PLL divisors are traversed to match the order of what
is used in the X driver to create comparable output (our error computation is based on float,
though, and should therefore create more accurate values).
* The i965 introduced a special register for the surface; the former display base register
is now only used for the view offset. Instead of setting the base manually here and there,
there is now a set_frame_buffer_base() function.
* The DPMS code will now also turn off/on the PLL clock generator.
* The code needs some more cleanup, and while the driver now produces the correct timing on
my i965 system, I'm now greeted by a black screen after startup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22289 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523a30f313255fbf177f1a29e3d5c74d1ce9e480 21-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

Implemented I2C support to get the DDC EDID info from the monitor - it's working as is, but
nothing is done with the data yet (besides dumping them to the serial output).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22272 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61dad86a023a8edbd32dee031099d372c9412ead 19-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* No longer switch between divisor register set 0 and 1; it doesn't really
make any sense.
* "pll" might have been set incorrectly on i8xx chips.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3bac9ea19a06864317ae4345f425f7f68956b118 04-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* Work in progress to support the i965 chipset as well; still works on i865, but
doesn't work on i965 yet.
* B_GET_DISPLAY_MODE now returns the mode actually configured in the chip instead
of the last mode set; while this isn't really necessary, it allows to check what
mode was used during startup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21321 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d881c6ba5c389e10aa32052661788a9b3427adce 15-Dec-2006 Axel Dörfler <axeld@pinc-software.de>

* Replaced the 1400x900 modeline with the one from the nVidia driver - Stephan, does this
work for you, too? If not, just replace it with yours again.
* Added resolution 1680x1050 from nVidia driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca1a22a7a8d3a0c16948d40172e8b2eaf676ce0a 03-Nov-2006 Stephan Aßmus <superstippi@gmx.de>

* commented out span acceleration function, since it doesn't seem to work
* added mode for 1440x900, the numbers are just guessed, but work fine
with my monitor (after some fiddling), would be best to have some common
VGA communication code for all drivers to use and auto-detect the preferred
mode of the monitor
* messed around with the overlay brightness and contrast values to give
good looking video



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19192 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c05095ca633fe9862c0dcf75cb499d4e15d65b6 14-Jul-2006 Ithamar R. Adema <ithamar.adema@team-embedded.nl>

Last set of minor fixes for GCC 4 build.
More will follow later, need to clean the fixes up a little :)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18154 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 178d3441ad7fc4c5daefb1aafc6facb3875ed586 26-May-2006 Axel Dörfler <axeld@pinc-software.de>

wait_for_vblank() will now only wait 25ms at maximum (40Hz) - this is needed because
there is no VBlank interrupt when the display is turned off (and the code to turn it
on again actually calls wait_for_vblank()...).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17597 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c5f5d8347ebabf50f635a1043e04b27359cd0df1 23-May-2006 Axel Dörfler <axeld@pinc-software.de>

* B_MOVE_DISPLAY and B_SET_INDEXED_COLORS should now work for the digital
output as well.
* Obviously got the register for INTEL_DISPLAY_B_DIGITAL_PORT wrong - it's
not 0x61000 but 0x61140, maybe that can explain the fun we had at BeGeistert :)
* Renamed the analog display registers to better fit the digital ones, ie.
replaced DISPLAY with DISPLAY_A - although this might be not really correct
as it seems that the pipes can be selected arbitrarily.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17566 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0902420ff3fc943e535a6686ebac46a26a2dbfd 23-May-2006 Axel Dörfler <axeld@pinc-software.de>

Some work to support output on the digital interface like laptop panels.
Need to clean this up, though. It even sort of worked on tic's IBM X40
on BeGeistert - if you weren't irritated by the fact some parts of the
screen were just black, that is :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17565 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 112db6b691a676e62af6422d74632d46742254f7 15-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Now disables the VGA display mode explicetly, which allows it to work
without having a VESA mode set first (thanks to Stephan for noticing
this).
* intel_set_display_mode() now calls intel_propose_display_mode() to make
sure the mode passed in is valid. Note, B_PROPOSE_DISPLAY_MODE is still
not working correctly (which will cause problems for BWindowScreen and
friends).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17460 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 973d499ee1ed8d233b5c8c03685dbcfb25c03816 14-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Made the accelerant safer to use when cloned (though I didn't test cloning yet);
introduced a lock that is used in B_SET_DISPLAY_MODE etc.
* Correctly implemented B_ACQUIRE_ENGINE and B_RELEASE_ENGINE now (ie. they lock
the engine now).
* The lock of the ring buffers is now deleted when the (primary) accelerant is closed.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17453 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cccc4c83838064b778dc6804c9ef5ef7edadbc17 14-May-2006 Axel Dörfler <axeld@pinc-software.de>

Now advertizes the capabilities of the screen modes correctly (ie. sets B_HARDWARE_CURSOR
and B_SUPPORTS_OVERLAYS).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17451 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c8609aed8c8a08efb64efe47f0c718b032c77dea 12-May-2006 Axel Dörfler <axeld@pinc-software.de>

* Now allocates enough memory for virtual screens.
* Implemented untested B_MOVE_DISPLAY - note, the page_flip demo doesn't work
yet (didn't investigate yet, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17432 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ace35ed2238f5d94294e3e30c869e8725862705 10-May-2006 Axel Dörfler <axeld@pinc-software.de>

Started implementing screen-to-screen blits, not yet tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 94f8a931c8946a6063445dd244e39404fe52a89d 05-May-2006 Axel Dörfler <axeld@pinc-software.de>

B_SET_INDEXED_COLORS is now working correctly for B_CMAP8, IOW you can now use
8 bit modes with this driver as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17339 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5da6291b99c3bd38505f6306dcb6398b9485783d 24-Apr-2006 Axel Dörfler <axeld@pinc-software.de>

* Now using Thomas memory manager to manage the graphics memory; allocation
of graphics memory is now possible.
* Changed driver name to start with "intel_extreme" to have a nicer device
name.
* Renamed frame_buffer* stuff to graphics_memory* as the frame buffer just
happens to be located somewhere in the graphics memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17224 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2fd8de24159a5f11abef562cda284b67d98a4a42 26-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16879 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7a3806ce873ee0cf43f14028b1593222b5d44adf 25-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Now you can also select the refresh rate you like under R5. Looks like there is
room for improvements left in our screen preferences application, which ignores
the pixel clock values completely.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16876 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 943578b15bede1f6862940b57a143a40d72d30cb 25-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Added some debug output - the driver is actually working under R5 as well, I just
didn't test it correctly last time...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16873 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e404297e56d4d54998a8f21b661def9d2da746d6 24-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Very basic driver for the "Intel Extreme Graphics 2" chips, only supports i865G for now.
Only mode switches do work, doesn't yet make sure the mode is valid, though.
At this point, this driver only works on Haiku, the R5 app_server is crashing for some
reason I need to investigate some day (maybe tomorrow :)).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16872 a95241bf-73f2-0310-859d-f6bbb57e9c96