History log of /haiku/src/add-ons/accelerants/radeon_hd/display.cpp
Revision Date Author Comments
# c34b7168 28-Jul-2022 Jérôme Duval <jerome.duval@gmail.com>

radeon_hd: auxPin zero is valid, check also on eDP type

EDID is correctly read. It can then be passed to the app_server.
At least the app_server tries to set the native resolution.

It doesn't really help to get further, because the ATOMBios code can't handle newer
table versions (for instance 3.2).

Change-Id: If68828bcfda447ecf7d4432ae2872bbdbc0704d5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5508
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# 62298adc 09-Jul-2022 Alexander von Gluck IV <kallisti5@unixzen.com>

accelerant/radeon_hd: Add missing newline to error message

Change-Id: Ic145f75ae8a05f901e6202fbb552260f7f74efe0


# 65462c8c 08-Jul-2022 Alexander von Gluck IV <kallisti5@unixzen.com>

accelerant/radeon_hd: Allow failure to init card

* Previously, any accelerants failing would cause an
app_server crash.. so we would do everything in our
power to get "something"
* After hrev56252, the app_server properly handles
accelerant failures and vesa / framebuffer accelerants
should will be used.
* Thus, if no monitors were detected (due to none being
plugged-in, or some other fault), bail and return B_ERROR
so vesa fallback can give it a try.

Change-Id: Ib9695dd7cf1914e50547ca8661c55b80152a66a4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5442
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# e5f5c3c4 11-Sep-2017 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Cosmetic cleanups. No functional change


# 9cfe6f90 08-Jul-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix missing TRACE connector id


# a46669aa 15-Nov-2014 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Improve pitch width alignment


# e938ebda 26-May-2014 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Rework PLL picking code

* Rewrote to be more efficient and more accurate.
* Fix a DP bug where we didn't choose the correct
external PLL.


# 224b875b 30-Dec-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: clean up clock units

* Ensure we store all clock units as khz or
n * 10 off from AtomBIOS unit expected
* Perform DDC setup of external encoder


# 1665250f 18-Dec-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: crtc_memreq only on DCE 3 - 5

* Prevent some atombios missing table errors
on DCE 6 and later


# 48ea3fca 28-Sep-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Style fix, no functional change


# e1d4323c 25-Sep-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Style cleanup of display.cpp

* These errors slipped in from an external patch
* No functional change


# 53f26450 05-Jul-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

RadeonHD: Bit-bang LVDS for edid

* Older cards have to use the LVDS_Info table,
newer cards also have an ddc pin for EDID.
* Some buggy sbios don't inject the EDID into
the vbios as they should
* This corrects hrev45812 as we need to still
call connector_read_mode_lvds to obtain the
spread spectrum data for the lvds.
* Call connector_read_mode_lvds, bit-bang the
connector, choose the best outcome.


# db5af29c 01-Jul-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

RadeonHD: Prefer edid over LVDS_Info

* Some oem sbios implementations are buggy
and don't overwrite the LVDS panel info over
LVDS_Info in vbios as they should.
* Bit-bang EDID info from LVDS connector before
falling back to the LVDS_Info table.
* Partially fixes #8457


# 59dc9ee9 23-Feb-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix DVI-I detection once and for all

* Reduced the logic down and only use it where
possible.
* Remove the duplicate gpio pin check. While this
is a determining factor... i'd rather get it
right while detecting displays vs relying on
connector order in the ASIC. This gpio pin check
was also severely bugged (missing {}'s)
* Should fix #8913 and maybe others


# 00bc40ad 28-Jan-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix DisplayPort link training

* Original changes by Bill Randle
* Includes a large number of modifications
and cleanups.
* Add a "currentMode" to the gDisplay to
enable easier checking of intended changes.
(we pass the display_mode around quite a
bit, adding a "currentMode" allows code
to know the intended display mode being set
without passing the mode pointer around as
much)


# 04234432 06-Jan-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Improve displayport support

* Modified patch submitted by Bill Randle.
* DisplayPort aux communications now working.
* DP Link Training still not functioning properly.
* The DP edid data isn't used yet as we still use
the vesa edid during the mode setting.


# a5ccd036 14-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Become Spread Spectrum aware

* Enable Spread Spectrum when requested
* Tested working across several cards, does
have regression potential though.


# 14943b5b 13-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: cleanup some logic; no functional change


# d96e6876 07-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: re-rework some pll code

* Grab pseudo pll SS info for early
Spread Spectrum access
* display_crtc_ss now takes a pll vs
a display for easy pll access


# 817c114d 07-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: rework some pll code

* Force fractional feedback divider on APU's
* Spread Spectrum is now probed more correctly
across multiple encoders and cards
* SS still disabled however.


# 93aac98d 30-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: r5xx to Avivo define cleanup

* Reorganize and clean up card defines
* Fix define spaces
* Unify card naming
* No (real) functional change


# 8ef0a0d2 30-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Card define cleanup

* Trying to do cleanup on the layout of these headers


# e2339980 15-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Skip 9DIN connector.

* Since we really don't support multiple
heads well, skip 9DIN for the moment as
it is a luxury.


# 60504124 09-May-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Build fix

* Misplaced '"', sorry for spam


# e62d1ff3 09-May-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Better handle and detect load on DVI-I connectors

* A tricky situation as DVI-I digital + analog paths show
up as two display connectors sharing one EDID data source.


# f4647825 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: display_info struct style cleanup

* No functional change


# c3630191 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Make crtc lookup fault less catastrophic


# e47f8619 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix digital output

* Resolves blocker #8322.
* Should resolve #8151, #8163, #8282, #8457
* Digital output on DVII was getting hard set
in the encoder to analog / CRT mode.
* We now check the edid "type" flag
* Flag gets set to 1 if edid data from digital
transmitter, 0 if analog transmitter.


# 6aaadd60 29-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix bytes per row passed to app_server

* Video modes with widths that are not multiples of
32 were failing to set
* Should solve analog "skewed display"
* Add debugging on adjusted framebuffer pitch
* Thanks go out to AMD open source developers for
the help tracking this one down!


# 7e9cb027 29-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Correct framebuffer pixel pitch alignment


# 151b4996 22-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Add spread spectrum control functions

* Store SS information with PLL
* Probe SS information for PLL
* Disable SS more correctly
* May resolve mode setting issues on newer cards


# 4eabb648 16-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: DisplayPort encoder fixes.

* Handle external encoder case properly when
pulling encoder mode.
* Return DisplayPort encoder if DisplayPort
connector.
* Handle DVO properly when pulling encoder mode


# 6728eddf 15-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix bugs in external DP bridge code

* non-external encoder will never be a DP bridge.
* use external encoder in places where needed.
* ensure we look at proper encoder for isDPBridge.


# 6da8db27 15-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

Revert "radeon_hd: Convert encoders to pointers"

This reverts commit 5a1f9f0f16b2a4bef89b61b4e3e24bf0b53917da.

* Thinking on this a bit more, this is really a silly change as
I know the upper limit for number of valid encoders.
* Resolves a app_server crash introduced as well due to not
allocating encoder pointer.


# 5a1f9f0f 14-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Convert encoders to pointers

* Preparation for multiple encoders per connector


# 6f7c0aad 13-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Whitespace cleanup, no functional change


# 2399d174 25-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Begin improvement on crtc state control

* Try to not blank the crtc when it is alreay disabled
* Clean up wording, active now present on display info
* Don't lock crtc when doing normal dpms calls, crtc
should only be locked during mode set / change


# 4bd6c200 21-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Implement preferred mode

* Add preferredMode display mode to each display.
* If LVDS is detected, set preferredMode based on AtomBIOS
* Fixes blocker #8329 ?


# 09aaa658 15-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

DisplayPort call organization and cleanup

* Add color space to BPP function
* Pass display_mode to DP lane count function
* Get BPP in DP lane count
* Move some DPInfo population out of DP link training
as other things need them sooner.
* Fill out DP code in external encoder setup


# 83cd8616 13-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve debugging

* Provide more information on connectors
* Provide more information on detected attributes
* Remove some no longer needed debug output
* Provide connector ID on display debug output


# 802ac635 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Style cleanup, space after switch as it is not a function


# 0cd5024d 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Pointer style cleanup; Variable consolidation


# 61cf7133 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Include file style cleanup, no functional change


# 104c404c 08-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Move connector code into new connector source file.

* clean up some comments
* most of this movement is prep for AUX display transactions


# 4540f5e9 08-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Create connector source file, move connector bus calls into it

* this will help break apart some of the sources
* display bus communications really don't belong with GPU operations
* rename functions to better describe their actions


# bdd19893 02-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Add lookup of encoder id -> name for debugging


# dad34be3 02-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve pll calculations dealing with DisplayPort devices

* rename encoder_isexternal to encoder_is_external
* add encoder_is_dp_bridge call for special DP cases
* add initial get_dp_link_clock, hard code a guess for now
* take external DP encoders into consideration when making
pixel clock adjustments


# 5a2c3572 13-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve legacy card support and cleanup

* break apart encoder type lookup to share with legacy
connector probe
* add function to check for external encoders
* reduce chip requirement to Avivo+ from R600 for register population


# 91affb2d 12-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Add legacy card connectior detection using table method
* attempt AtomBIOS table probe first, then fallback to legacy method if
no connectors found (or table version is too old)
* add function to look up object info on older cards
* dcc still needs some work on old cards
* my X1200 IGP gets video now


# 359b926f 08-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style cleanup of shared storage names
* return better data on card
* display chipset flags in screen preflet


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


# 76a3e009 08-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add lots of missing evergreen defines
* evergreen headers are split due to different
header copyrights
* detect and set up evergreen memory controler
* change the way we manage radeon chipsets to
more closely match drm driver as the chipset
model numbers aren't in order and change from
numbers to names.
* check for evergreen when populating frame buffer
information.
* style cleanup


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


# e9e9c194 07-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* change the way we store GPU MC state information
on halt / resume as it doesn't need to persist.
* rename mc_info -> fb_info to better communicate
it's contents
* add some gart (gtt) storage and prep AGP VM code


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


# 025d4eed 27-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* reorganize register definitions
There were a large number if incorrect, duplicated, misplaced
registers that were leading to bugs in the code. This is my first
shot at cleaning them up. Luckly as we are using AtomBIOS the number
of registers we need to know about is shrinking.
* remove registers left over from register banging days
* r770 is less then r710, r720 in the drm sources. Fix in code.
* enable newer radeons for testing


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


# 46af8165 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* redesign pretty much everything frame buffer related
* don't resize the frame buffer after mapping it.. doesn't make sense
* add memory controller code and program the memory controller for r600
* remove unneeded frame_buffer_int
* don't malloc mc_info, waste of time
* fix scaler setting
* vramStart in mc should be 0... get vertical colored lines however when this
this is set properly (everything in mc_info is the MC view of FB BAR)
When vramStart is the FB physical address... i get proper video on some cards
... thoughts?


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


# 6c80b06b 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* same blanking value, correct define.
* set blanking color to full red for debugging
to know when blanking is enabled.


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


# 07a90a63 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add better tracing
* add encoder quirks


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


# bbf37742 21-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* start using DCE versions in framebuffer code as it
gives us finer control


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


# f3cb4623 21-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* take note of external encoders


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


# afbd52f1 17-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* improve framebuffer programming on newer cards
* correct? color mode setting bug
* fix var naming to match style guidelines
* add a few missing register defines


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


# a4f66979 17-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix minimum pll out units
* sort files in Jamfile
* add TV and compontent video support in encoder code
* fix missing var in display detection code


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


# f66a1a8d 16-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix TODO style due to ML
* rename bpc to bitsPerChannel
* remove un-needed / unused PCI BAR reference
* no functional change


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


# cf1d1fb4 14-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add function to probe pll timing limits from AtomBIOS
* rename *_* pll vars to match style guidelines
* refactor PLL calculation to be easier to read with
more central 10kHz unit conversions
* limited mode switching has been seen working including
a perfect 1280x1024@75


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


# 53aac744 13-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* there is only one DDC channel on DVI-I connectors. as such
we get valid EDID data for two physical connectors (one analog, one digital)
Check for load on the analog or assume digital and keep rolling as normal
* style fix, rename bios_*_scratch to biosScratch*


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


# e774cb4b 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes
move quite a bit of code away from var_var format
* #if 0 some not-yet-ready r500 code
* no real functional change


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


# 6b49ba89 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes, no functional change...
frev / crev to tableMajor / tableMinor
size to tableSize
offset to tableOffset


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


# 6b0b621b 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes, no functional change...
automatic crtc_id -> crtcID
automatic pll_id -> pllID
automatic encoder_id -> encoderID
automatic connector_index -> connectorIndex
automatic encoder_flags -> encoderFlags


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


# dc223cc5 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fix
ensure bitwise ands are compared to 0 or non 0 as per Axel


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


# 1fca5eaf 10-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* detect hdmi and tv and set as such
* set encoder flags the same as connector flags
* add curly comments to make troubleshooting clearer
* program encoder dpms scratch registers


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


# 936aec74 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remove some legacy code
* don't init asic unless needed
* do dpms by hand on mode set
* detect tv and skip during detection for now


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


# d0509b7e 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* move encoder info into own struct
* rename some connector / encoder struct members
* improve debugging in connector / encoder
AtomBIOS walking


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


# 17b66d82 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add digital encoder setup code
* make encoder setup functions return status_t
* really need a struct to hold encoder info


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


# b54c8119 04-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add encoder code to handle setting up and adjusting encoders
* reorganize mode set code to match layout of linux DRM driver
* add initial DPMS code
* add lots of TODOs


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


# 7c91a33c 02-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* RIP Radeon register banging
Remove old non-atombios code
* add encoder.c and encoder.h to handle
encoder management
* fix pll code to use encoder object id
vs crtcid


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


# f35af704 02-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* use bit-banged edid for monitor ranges
* add function to set encoder to crtc
* clean up some comments


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


# ae347a6c 30-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* squash a *silly* bug
don't set up a pointer and not malloc it.
* small cleanups to radeon_hd i2c bit-banging code
* i2c bit banging is now functioning


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


# dd295058 27-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remap GPIO pin storage to global struct as they really aren't tied to
a connector. (thus allowing for future non-ddc gpio devices like fan speed)
* map all i2c gpio pins on accelerant init
* use a smaller sub function to attach gpio info to connector i2c info


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


# e40c0068 21-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* correct some naming after deeper investigation of
linux drm driver. Seems radeon_hd isn't limited to the
standard 0xa0 i2c slave address.


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


# 6fca1a84 19-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix header function define
* while doing our last-resort fallback, skip
TV DAC encoders as it is likely that is not
what the user wants. This may need to change
as the driver matures. (ex: only a tv is
connected, no edid)


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


# 117e1357 18-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* ddc still giving 128 bytes of 0's
* add code to check if 0 valid displays were found
* if 0 edid's were found, we inject the first connector
as a last resort... SimNow seems to be ok with this and
I get a valid screen mode set :)


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


# 54c0390b 14-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remove un-needed i2c_bus on each connector... we simply set this up each time
it's needed using the gpio information
* rename gpio information struct to be cleaner and shorter
* add function to debug found connectors
* set gpio mask to 1 vs the defined mask... this seems to get us closer
to working ddc / edid per connector
* change gpio_info u16's to u32's to ensure we aren't overflowing anything
* fix bug always setting hw_capable true
* change TRACE to ERROR to always show debug data when called


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


# a8b357c7 08-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* run edid check on all connectors regardless of encoder
* correction to output check (B_OK != true)
* check for invalid gpio (prevents seg violation)
* tab cleanup


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


# b5fc0237 06-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add i2c/ddc info storage to connector
* add edid info storage to display
* pass i2c/ddc information to common i2c code
* add code to read/write i2c/ddc
* i2c/ddc read/write code works 'in theory', needs tested
* detect monitors based on presence of edid on connector


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


# 440381c6 06-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* rename video_electronics to video_configuration as per Axel
* rename decode_* to get_*
* clean up get_* text when unknown connector/encoder


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


# cfda569d 02-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add function to set up i2c bus for connector
* few tab fixes
* add Axel as author as the base i2c stuff is from intel_extreme


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


# a88394e5 02-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* find GPIO pin connector i2c is on for DDC / EDID
* add i2c_bus to connector information


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


# e53d6375 01-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* reformulate display and connector storage to match AtomBIOS requirements
* each active gDisplay references a gConnector index
* add atombios DAC sense.. this really won't be the main call used...
AtomBIOS expects you to attempt an EDID read to detect connected displays
* remove old manual DACSense
* next we attempt to add ddc / edid


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


# b81f42ec 24-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* complete encoder detection
* need to break out connector and encoder addition into seperate functions as
the linux kernel did... that function is getting pretty large and deep.
* my card seems to map everything as TV DAC or TMDS... weird.


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


# 2c062f84 23-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* as we are doing a lot of math on bios in gAtomContext, lets make it a
uint8 vs a void pointer.
* guys at AMD confirmed that the method looking directly at the object table
should be the only method used on modern cards (r600 or later)


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


# aee8efc2 21-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add gConnector for card connector storage
* add detect_connectors to detect card connectors
* add infinitely compex detect_connectors_manual
(used when detect_connectors fails)
* add missing AtomBIOS header


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


# d3e8b642 19-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* introduce mc control calls
* malloc storage for mc state info
* redo pll range struct
* change to ATOM_ENCODER_MODE for connector info
* redo pll calculations to match AtomBIOS requirements
* some structure changes
* no longer init already posted AtomBIOS as it
causes an infinite loop of AtomBIOS calls


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


# c9c7be9a 07-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add initial set of Northern Island cards
* add igp property to pciid map
* add disabled bios pull for r700 and ni cards
* refactor model numbering as >R700 AMD switched
to named card families


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


# 6da3f7d4 05-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* lots of changes
* add missing header for some radeon registers
* begin removing now un-needed direct register calls
* move and refactor crtc functions
* fix function naming to be clearer
* create more AtomBIOS style calls
* this will eat your cat at the moment, don't bother testing


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


# 6ab8261b 30-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Pass device name into shared info
* Refactor MCFBsetup to be a little simpler for now
* Implement radeon accelerant_device_info for screen preflet
* Re-add CRT Power calls to display code.
* Disable blanking setting for now... just can't figure out
what AMD wants for this.
* Remove some un-needed locking in the scaling code
* Be sure to disable VGA when set_display_mode is called
* Refactor mode setting code to loop over all possible displays
and set the provided mode on the attached ones.


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


# e1b9d6e6 28-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Add LVDS handling for TMDSB
* Fix crash situation if no monitors detected
* Assume TMDSB if no monitors sensed (temporary)


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


# 9e26987a 22-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Tab fix
* No functional change


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


# d17bf8d4 22-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Add fancy detected monitors debug function

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


# f09dc6d9 21-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Small bit of comment cleanup
* Rename crt_info display_info


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


# 95e1d7e8 21-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Large refactoring of display detection and storage
* Create new display.c/h for display management
* Rename global gCRT to gDisplay
* Add CRT connection type into gDisplay
* Add CRT connection index into gDisplay
* Refactor registers for each display into gDisplay via regs
* We now shouldn't freak out too badly on multi-monitors


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


# 9cfe6f909d41656a852a2ba358eae8fa6224d5c1 08-Jul-2015 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix missing TRACE connector id


# a46669aa1c77b639e47cd4422e70956fd473bd8e 15-Nov-2014 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Improve pitch width alignment


# e938ebdae0869ae7682fe8c9ed8e1178c52d0642 26-May-2014 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Rework PLL picking code

* Rewrote to be more efficient and more accurate.
* Fix a DP bug where we didn't choose the correct
external PLL.


# 224b875b3ad6ea9d7324377deb63d9087882092c 30-Dec-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: clean up clock units

* Ensure we store all clock units as khz or
n * 10 off from AtomBIOS unit expected
* Perform DDC setup of external encoder


# 1665250fa7176841286f57f7589b7a1710885498 18-Dec-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: crtc_memreq only on DCE 3 - 5

* Prevent some atombios missing table errors
on DCE 6 and later


# 48ea3fca49c8abfdf80bc242575a71a8518d9333 28-Sep-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Style fix, no functional change


# e1d4323c6c565fd36af08f5f2ee8ed8e2160bdf8 25-Sep-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Style cleanup of display.cpp

* These errors slipped in from an external patch
* No functional change


# 53f26450a35b19fa56bb1deadd33bb6beeee4178 05-Jul-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

RadeonHD: Bit-bang LVDS for edid

* Older cards have to use the LVDS_Info table,
newer cards also have an ddc pin for EDID.
* Some buggy sbios don't inject the EDID into
the vbios as they should
* This corrects hrev45812 as we need to still
call connector_read_mode_lvds to obtain the
spread spectrum data for the lvds.
* Call connector_read_mode_lvds, bit-bang the
connector, choose the best outcome.


# db5af29c82a1e7822d42b6430e5a1131c3d3c155 01-Jul-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

RadeonHD: Prefer edid over LVDS_Info

* Some oem sbios implementations are buggy
and don't overwrite the LVDS panel info over
LVDS_Info in vbios as they should.
* Bit-bang EDID info from LVDS connector before
falling back to the LVDS_Info table.
* Partially fixes #8457


# 59dc9ee9552e994240a535467e88d15ee279938b 23-Feb-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix DVI-I detection once and for all

* Reduced the logic down and only use it where
possible.
* Remove the duplicate gpio pin check. While this
is a determining factor... i'd rather get it
right while detecting displays vs relying on
connector order in the ASIC. This gpio pin check
was also severely bugged (missing {}'s)
* Should fix #8913 and maybe others


# 00bc40ad588f4bd59cd7574788b5dc111b62198a 28-Jan-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix DisplayPort link training

* Original changes by Bill Randle
* Includes a large number of modifications
and cleanups.
* Add a "currentMode" to the gDisplay to
enable easier checking of intended changes.
(we pass the display_mode around quite a
bit, adding a "currentMode" allows code
to know the intended display mode being set
without passing the mode pointer around as
much)


# 042344329e6368d53eaa40aed1cc22aac4ecf6b7 06-Jan-2013 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Improve displayport support

* Modified patch submitted by Bill Randle.
* DisplayPort aux communications now working.
* DP Link Training still not functioning properly.
* The DP edid data isn't used yet as we still use
the vesa edid during the mode setting.


# a5ccd036b4a540462abe4d1347381344695b7fcf 14-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Become Spread Spectrum aware

* Enable Spread Spectrum when requested
* Tested working across several cards, does
have regression potential though.


# 14943b5b8bd02664ed24734ffabefaa20cb65c7b 13-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: cleanup some logic; no functional change


# d96e68765247f837b3787879cfcde72d3311d4d2 07-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: re-rework some pll code

* Grab pseudo pll SS info for early
Spread Spectrum access
* display_crtc_ss now takes a pll vs
a display for easy pll access


# 817c114de7e2e71d98adccb66358e94244a1486a 07-Aug-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: rework some pll code

* Force fractional feedback divider on APU's
* Spread Spectrum is now probed more correctly
across multiple encoders and cards
* SS still disabled however.


# 93aac98d0a9b8ce27f94eb449cfc742446a50274 30-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: r5xx to Avivo define cleanup

* Reorganize and clean up card defines
* Fix define spaces
* Unify card naming
* No (real) functional change


# 8ef0a0d2a6c2dafb2f162c5ae2fbbd55a3ec8f32 30-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Card define cleanup

* Trying to do cleanup on the layout of these headers


# e2339980052673d16a2457483ff7b92e8c4fd179 15-Jul-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Skip 9DIN connector.

* Since we really don't support multiple
heads well, skip 9DIN for the moment as
it is a luxury.


# 605041242ab32c7e66388c0f34c25ec4750e60a1 09-May-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Build fix

* Misplaced '"', sorry for spam


# e62d1ff387f8e448dfecce63ba879ef982060f59 09-May-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Better handle and detect load on DVI-I connectors

* A tricky situation as DVI-I digital + analog paths show
up as two display connectors sharing one EDID data source.


# f4647825e79d9d619cff3eb26882fce1b5afea59 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: display_info struct style cleanup

* No functional change


# c363019152f3f0c6dbbf2f6dcd600b676646c067 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Make crtc lookup fault less catastrophic


# e47f861975f7999a0f28807e8664e4c8fcb0e631 18-Apr-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix digital output

* Resolves blocker #8322.
* Should resolve #8151, #8163, #8282, #8457
* Digital output on DVII was getting hard set
in the encoder to analog / CRT mode.
* We now check the edid "type" flag
* Flag gets set to 1 if edid data from digital
transmitter, 0 if analog transmitter.


# 6aaadd60dd52c001bf402a6361ff11aa5834cb97 29-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix bytes per row passed to app_server

* Video modes with widths that are not multiples of
32 were failing to set
* Should solve analog "skewed display"
* Add debugging on adjusted framebuffer pitch
* Thanks go out to AMD open source developers for
the help tracking this one down!


# 7e9cb0275587be51109118f9ffcf6b6f385a070e 29-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Correct framebuffer pixel pitch alignment


# 151b4996221d7bc9db571d71efeb2929431bf936 22-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Add spread spectrum control functions

* Store SS information with PLL
* Probe SS information for PLL
* Disable SS more correctly
* May resolve mode setting issues on newer cards


# 4eabb6487d142caf3d8a9e8e8cfbfa7f7e2aee6d 16-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: DisplayPort encoder fixes.

* Handle external encoder case properly when
pulling encoder mode.
* Return DisplayPort encoder if DisplayPort
connector.
* Handle DVO properly when pulling encoder mode


# 6728eddfa4faac6725c5f6ed99fddb342c0393ea 15-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix bugs in external DP bridge code

* non-external encoder will never be a DP bridge.
* use external encoder in places where needed.
* ensure we look at proper encoder for isDPBridge.


# 6da8db278635c0b56a151bc59151a4e9a02bce50 15-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

Revert "radeon_hd: Convert encoders to pointers"

This reverts commit 5a1f9f0f16b2a4bef89b61b4e3e24bf0b53917da.

* Thinking on this a bit more, this is really a silly change as
I know the upper limit for number of valid encoders.
* Resolves a app_server crash introduced as well due to not
allocating encoder pointer.


# 5a1f9f0f16b2a4bef89b61b4e3e24bf0b53917da 14-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Convert encoders to pointers

* Preparation for multiple encoders per connector


# 6f7c0aadbe2aa26986c4f8ea701caa36ce7d421c 13-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Whitespace cleanup, no functional change


# 2399d174dc90c63e800c9a7218422a8533d85cae 25-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Begin improvement on crtc state control

* Try to not blank the crtc when it is alreay disabled
* Clean up wording, active now present on display info
* Don't lock crtc when doing normal dpms calls, crtc
should only be locked during mode set / change


# 4bd6c200c1a30b78827a0f2852b8ab0995027d1a 21-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Implement preferred mode

* Add preferredMode display mode to each display.
* If LVDS is detected, set preferredMode based on AtomBIOS
* Fixes blocker #8329 ?


# 09aaa658b0fa53eff3ad4cd5a44cf488bdfc1e3c 15-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

DisplayPort call organization and cleanup

* Add color space to BPP function
* Pass display_mode to DP lane count function
* Get BPP in DP lane count
* Move some DPInfo population out of DP link training
as other things need them sooner.
* Fill out DP code in external encoder setup


# 83cd8616480cac34f27ea0d3454c9c4a96c57563 13-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve debugging

* Provide more information on connectors
* Provide more information on detected attributes
* Remove some no longer needed debug output
* Provide connector ID on display debug output


# 802ac6355d9d2300ad64f798e6431d7b87de5656 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Style cleanup, space after switch as it is not a function


# 0cd5024dbb8c0b979798d10528cb8140470f129d 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Pointer style cleanup; Variable consolidation


# 61cf713381b5ef727d0b1d78306dacde4887b8f5 09-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Include file style cleanup, no functional change


# 104c404c7edb585d7d4d6f88ad99d6525e6f1022 08-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Move connector code into new connector source file.

* clean up some comments
* most of this movement is prep for AUX display transactions


# 4540f5e929448b82266a16ad5c2ea9d5f6ed5ed3 08-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Create connector source file, move connector bus calls into it

* this will help break apart some of the sources
* display bus communications really don't belong with GPU operations
* rename functions to better describe their actions


# bdd1989348b06678f7a6198f1d1abd7863654bf5 02-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Add lookup of encoder id -> name for debugging


# dad34be3e1198fd37f4d2e7a0d42a20d3887847b 02-Dec-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve pll calculations dealing with DisplayPort devices

* rename encoder_isexternal to encoder_is_external
* add encoder_is_dp_bridge call for special DP cases
* add initial get_dp_link_clock, hard code a guess for now
* take external DP encoders into consideration when making
pixel clock adjustments


# 5a2c35728db67844504cd3d5cb5a334b7232c2c1 13-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Improve legacy card support and cleanup

* break apart encoder type lookup to share with legacy
connector probe
* add function to check for external encoders
* reduce chip requirement to Avivo+ from R600 for register population


# 91affb2da4f93bb3ac3012e59da2bf94520e2a43 12-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Add legacy card connectior detection using table method
* attempt AtomBIOS table probe first, then fallback to legacy method if
no connectors found (or table version is too old)
* add function to look up object info on older cards
* dcc still needs some work on old cards
* my X1200 IGP gets video now


# 359b926f79d7e7ac697d6aaf28f704b5d5f1283f 08-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style cleanup of shared storage names
* return better data on card
* display chipset flags in screen preflet


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


# 76a3e009ddb1b0c649bca1f84376ec2eb6c096c9 08-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add lots of missing evergreen defines
* evergreen headers are split due to different
header copyrights
* detect and set up evergreen memory controler
* change the way we manage radeon chipsets to
more closely match drm driver as the chipset
model numbers aren't in order and change from
numbers to names.
* check for evergreen when populating frame buffer
information.
* style cleanup


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


# e9e9c194f9ca6cf30f8baeb15a89278541d5123d 07-Nov-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* change the way we store GPU MC state information
on halt / resume as it doesn't need to persist.
* rename mc_info -> fb_info to better communicate
it's contents
* add some gart (gtt) storage and prep AGP VM code


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


# 025d4eed52f31e0047268227cde722164e52e2d8 27-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* reorganize register definitions
There were a large number if incorrect, duplicated, misplaced
registers that were leading to bugs in the code. This is my first
shot at cleaning them up. Luckly as we are using AtomBIOS the number
of registers we need to know about is shrinking.
* remove registers left over from register banging days
* r770 is less then r710, r720 in the drm sources. Fix in code.
* enable newer radeons for testing


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


# 46af81655d98616bb2c30a2b76563a3d440ded16 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* redesign pretty much everything frame buffer related
* don't resize the frame buffer after mapping it.. doesn't make sense
* add memory controller code and program the memory controller for r600
* remove unneeded frame_buffer_int
* don't malloc mc_info, waste of time
* fix scaler setting
* vramStart in mc should be 0... get vertical colored lines however when this
this is set properly (everything in mc_info is the MC view of FB BAR)
When vramStart is the FB physical address... i get proper video on some cards
... thoughts?


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


# 6c80b06bb879fb12a09423f4e3d12189a97575a4 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* same blanking value, correct define.
* set blanking color to full red for debugging
to know when blanking is enabled.


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


# 07a90a634dcc4f68fed1a426d566b78bdd0a736b 25-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add better tracing
* add encoder quirks


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


# bbf37742d360c6c696fa0c235d86e65572f401b1 21-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* start using DCE versions in framebuffer code as it
gives us finer control


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


# f3cb4623c8f4d77d12916cc6bee9cfc61e7c197d 21-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* take note of external encoders


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


# afbd52f16acc635e8ba1a0a32e1b4d02b8724ce6 17-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* improve framebuffer programming on newer cards
* correct? color mode setting bug
* fix var naming to match style guidelines
* add a few missing register defines


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


# a4f66979fe6b62e658496d993a65c95e0c9a138e 17-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix minimum pll out units
* sort files in Jamfile
* add TV and compontent video support in encoder code
* fix missing var in display detection code


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


# f66a1a8d71e68f2c725fa556af7b9983a85e057e 16-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix TODO style due to ML
* rename bpc to bitsPerChannel
* remove un-needed / unused PCI BAR reference
* no functional change


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


# cf1d1fb4ffb2cc4323b92a6d2f3c9a2cd1389a80 14-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add function to probe pll timing limits from AtomBIOS
* rename *_* pll vars to match style guidelines
* refactor PLL calculation to be easier to read with
more central 10kHz unit conversions
* limited mode switching has been seen working including
a perfect 1280x1024@75


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


# 53aac74407d7640cbc6cea89f3b1c916a58e411e 13-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* there is only one DDC channel on DVI-I connectors. as such
we get valid EDID data for two physical connectors (one analog, one digital)
Check for load on the analog or assume digital and keep rolling as normal
* style fix, rename bios_*_scratch to biosScratch*


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


# e774cb4b0aea6ec99b8b9d8878c5ffbe79516ded 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes
move quite a bit of code away from var_var format
* #if 0 some not-yet-ready r500 code
* no real functional change


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


# 6b49ba893183ec7d0c9a1231080e2c60fe33722e 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes, no functional change...
frev / crev to tableMajor / tableMinor
size to tableSize
offset to tableOffset


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


# 6b0b621be9113080a339054cb3847201e5ed55dd 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fixes, no functional change...
automatic crtc_id -> crtcID
automatic pll_id -> pllID
automatic encoder_id -> encoderID
automatic connector_index -> connectorIndex
automatic encoder_flags -> encoderFlags


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


# dc223cc5a011d517dd70e3997021ba39fc3d1097 12-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* style fix
ensure bitwise ands are compared to 0 or non 0 as per Axel


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


# 1fca5eaf116609013ea078eac249e20fe8a87098 10-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* detect hdmi and tv and set as such
* set encoder flags the same as connector flags
* add curly comments to make troubleshooting clearer
* program encoder dpms scratch registers


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


# 936aec7461bdc3312c60b4dc86a2d31ed57c8e2b 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remove some legacy code
* don't init asic unless needed
* do dpms by hand on mode set
* detect tv and skip during detection for now


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


# d0509b7eb93e3cb67b23fa5ccdd2fb789333370b 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* move encoder info into own struct
* rename some connector / encoder struct members
* improve debugging in connector / encoder
AtomBIOS walking


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


# 17b66d82509ea6b07516b08115cc5765b8a7cb90 09-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add digital encoder setup code
* make encoder setup functions return status_t
* really need a struct to hold encoder info


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


# b54c811990b00b53158247e1daa019a6bda9c278 04-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add encoder code to handle setting up and adjusting encoders
* reorganize mode set code to match layout of linux DRM driver
* add initial DPMS code
* add lots of TODOs


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


# 7c91a33c84935f6697e246a985730400ec976d61 02-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* RIP Radeon register banging
Remove old non-atombios code
* add encoder.c and encoder.h to handle
encoder management
* fix pll code to use encoder object id
vs crtcid


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


# f35af704c84cbdabe7106e6c5b422cb4d6dfa7ba 02-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* use bit-banged edid for monitor ranges
* add function to set encoder to crtc
* clean up some comments


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


# ae347a6ce03d5b6b6fab6b955a847db5ec4a6d53 30-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* squash a *silly* bug
don't set up a pointer and not malloc it.
* small cleanups to radeon_hd i2c bit-banging code
* i2c bit banging is now functioning


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


# dd295058932cfb721aff7b714256dd9e5c334952 27-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remap GPIO pin storage to global struct as they really aren't tied to
a connector. (thus allowing for future non-ddc gpio devices like fan speed)
* map all i2c gpio pins on accelerant init
* use a smaller sub function to attach gpio info to connector i2c info


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


# e40c00685cbbfc348064e71f4c38c551232f8f40 21-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* correct some naming after deeper investigation of
linux drm driver. Seems radeon_hd isn't limited to the
standard 0xa0 i2c slave address.


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


# 6fca1a84fcc67f1fcc59e8d466c3638adde01d5c 19-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix header function define
* while doing our last-resort fallback, skip
TV DAC encoders as it is likely that is not
what the user wants. This may need to change
as the driver matures. (ex: only a tv is
connected, no edid)


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


# 117e135799a2b95c0bce51e440821fe2fc8a323e 18-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* ddc still giving 128 bytes of 0's
* add code to check if 0 valid displays were found
* if 0 edid's were found, we inject the first connector
as a last resort... SimNow seems to be ok with this and
I get a valid screen mode set :)


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


# 54c0390b901eb0606bc6c0b46fb0e0c6530f4eda 14-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* remove un-needed i2c_bus on each connector... we simply set this up each time
it's needed using the gpio information
* rename gpio information struct to be cleaner and shorter
* add function to debug found connectors
* set gpio mask to 1 vs the defined mask... this seems to get us closer
to working ddc / edid per connector
* change gpio_info u16's to u32's to ensure we aren't overflowing anything
* fix bug always setting hw_capable true
* change TRACE to ERROR to always show debug data when called


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


# a8b357c7477d541c2c6d39fcba245b64cd9107a4 08-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* run edid check on all connectors regardless of encoder
* correction to output check (B_OK != true)
* check for invalid gpio (prevents seg violation)
* tab cleanup


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


# b5fc0237e14b93deac33523f327c7e36f1bca57f 06-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add i2c/ddc info storage to connector
* add edid info storage to display
* pass i2c/ddc information to common i2c code
* add code to read/write i2c/ddc
* i2c/ddc read/write code works 'in theory', needs tested
* detect monitors based on presence of edid on connector


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


# 440381c60f930ef5b27f44a33b674bbee313628b 06-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* rename video_electronics to video_configuration as per Axel
* rename decode_* to get_*
* clean up get_* text when unknown connector/encoder


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


# cfda569d7f1b3c08a0f74240666341d5b147f66e 02-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add function to set up i2c bus for connector
* few tab fixes
* add Axel as author as the base i2c stuff is from intel_extreme


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


# a88394e56e36fd5f66dbb1f13f65ece4f75551b3 02-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* find GPIO pin connector i2c is on for DDC / EDID
* add i2c_bus to connector information


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


# e53d637520ce91031ff9ac5ea4a5044156136a27 01-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* reformulate display and connector storage to match AtomBIOS requirements
* each active gDisplay references a gConnector index
* add atombios DAC sense.. this really won't be the main call used...
AtomBIOS expects you to attempt an EDID read to detect connected displays
* remove old manual DACSense
* next we attempt to add ddc / edid


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


# b81f42ecbc0b4bd7db38f7f5239fe25d7cfa5ba7 24-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* complete encoder detection
* need to break out connector and encoder addition into seperate functions as
the linux kernel did... that function is getting pretty large and deep.
* my card seems to map everything as TV DAC or TMDS... weird.


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


# 2c062f84e5ff05c782c321d9ceceffb05b909738 23-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* as we are doing a lot of math on bios in gAtomContext, lets make it a
uint8 vs a void pointer.
* guys at AMD confirmed that the method looking directly at the object table
should be the only method used on modern cards (r600 or later)


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


# aee8efc2449441c243e759cd0ca41ee024894481 21-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add gConnector for card connector storage
* add detect_connectors to detect card connectors
* add infinitely compex detect_connectors_manual
(used when detect_connectors fails)
* add missing AtomBIOS header


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


# d3e8b64208159ab71ca24f58ec7e56f1aa4bb5e6 19-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* introduce mc control calls
* malloc storage for mc state info
* redo pll range struct
* change to ATOM_ENCODER_MODE for connector info
* redo pll calculations to match AtomBIOS requirements
* some structure changes
* no longer init already posted AtomBIOS as it
causes an infinite loop of AtomBIOS calls


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


# c9c7be9a542ef73705afae1119f5ad0b1b219628 07-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add initial set of Northern Island cards
* add igp property to pciid map
* add disabled bios pull for r700 and ni cards
* refactor model numbering as >R700 AMD switched
to named card families


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


# 6da3f7d4c1de302697f5d948057a68dd428277f6 05-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* lots of changes
* add missing header for some radeon registers
* begin removing now un-needed direct register calls
* move and refactor crtc functions
* fix function naming to be clearer
* create more AtomBIOS style calls
* this will eat your cat at the moment, don't bother testing


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


# 6ab8261b98f59b9751c7178a4df66bf1ae0fa66e 30-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Pass device name into shared info
* Refactor MCFBsetup to be a little simpler for now
* Implement radeon accelerant_device_info for screen preflet
* Re-add CRT Power calls to display code.
* Disable blanking setting for now... just can't figure out
what AMD wants for this.
* Remove some un-needed locking in the scaling code
* Be sure to disable VGA when set_display_mode is called
* Refactor mode setting code to loop over all possible displays
and set the provided mode on the attached ones.


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


# e1b9d6e6743b027ba89a78d381ea398d79ec7822 28-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Add LVDS handling for TMDSB
* Fix crash situation if no monitors detected
* Assume TMDSB if no monitors sensed (temporary)


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


# 9e26987aff50b46ca9ed2881e1604df3fc914439 22-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Tab fix
* No functional change


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


# d17bf8d4fb5081fe32f158c8d5241966fdc5f072 22-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Add fancy detected monitors debug function

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


# f09dc6d9754acb87367a324f36acd634d58f999a 21-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Small bit of comment cleanup
* Rename crt_info display_info


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


# 95e1d7e8288c9eb390705b0fa6e735ff091a0e65 21-Jul-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Large refactoring of display detection and storage
* Create new display.c/h for display management
* Rename global gCRT to gDisplay
* Add CRT connection type into gDisplay
* Add CRT connection index into gDisplay
* Refactor registers for each display into gDisplay via regs
* We now shouldn't freak out too badly on multi-monitors


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