History log of /haiku/src/add-ons/accelerants/radeon_hd/atombios/atom.cpp
Revision Date Author Comments
# 25ef6f0b 08-Sep-2017 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Implement AtomBIOS debug op


# f8df3953 08-Apr-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Fix build. Port missed macros in AtomBIOS parser


# 190b33c4 04-Mar-2016 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Add updated / missing atombios opcodes

* Newer cards introduce two new opcodes mul32 and div32
* Add completely missing processds opcode


# 1e6dd3fe 24-Apr-2015 Murai Takashi <tmurai01@gmail.com>

Fix GCC 5 maybe-uninitialized warnings.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>

Fixes #12020


# 97fb429c 09-Nov-2014 Julian Harnath <julian.harnath@rwth-aachen.de>

radeon_hd: fix typecast in atombios table header parser

* The pointer mdt should point to the start of the contents of the
master data table. As defined in struct ATOM_MASTER_DATA_TABLE,
the content begins 4 bytes after the beginning of the table
(which in turn is ctx->data_table bytes from the start of the
AtomBIOS). The wrong parantheses in the cast moved the pointer
somewhere else completely.

* That this apparently worked on many cards is because the mdt
pointer in this function is used just to make sure that the
following dereference is not a NULL-pointer access.
The actual dereference is then done using the CU16() and CU8()
macros which do the casts correctly. However, it only worked when
the wrong pointer plus index lead to some byte which was, by
chance, not zero. For many chips, this was the case.

* For the AtomBIOS of a Radeon HD7850M (Heathrow Pro) it didn't work
out though and the driver couldn't parse tables. With this fix, it
now works on such chips as well.

* Also, fix the same problem in code for master command table.


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

radeon_hd: Upgrade AtomBIOS parser

* Bring inline to current Linux version
* Apply upstream bug fixes to AtomBIOS
* Update atombios headers to latest version


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

radeon_hd: AtomBIOS loop failure detection now time based

* If the same call is made for 5 seconds straight, fail.
* Resolves random AtomBIOS failures.
* AtomBIOS failures now represent *real* bugs :)


# 89e7764d 12-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Tune AtomBIOS failure threshold

* Fixes edge cases of AtomBIOS parser failing
before there really was a problem.
* Hopefully resolves the rest of the random
failures and #5722
* If this doesn't work, I'll rewrite the parser
to use jiffies (snooze)
* Thanks for all the testing Disreali!


# a5e3ee78 22-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: AtomBIOS, correct logic. No functional change


# 24dfcdc1 22-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: AtomBIOS parser improvements

* "DANGER" is a little strong of a warning
* Provide better tracing when things go wrong
* Give raw table / operation values in addition
to AtomBIOS pointers


# 24d19f4d 19-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix silly unsigned vs signed bug in gcc2


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


# 9b4aacc2 19-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport linux AtomBIOS parser bugfix...
Fixes memory corruption on some boards.


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


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

* make atombios lockup checking adjustments more robust


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


# d06251a9 11-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* make ERROR define to always show AtomBIOS parsing errors


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


# c3ec7fed 09-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* bug fix in AtomBIOS data table parser, incorrect int size causing issues


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42729 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


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

* remove tracing on AtomBIOS parser
* fix a few compile issues when tracing is disabled


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


# 7a2bb2b0 11-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport a missed endian change
* clean up some tabs and spaces


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


# 5cdfd17b 11-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport some additional linux atom parser fixes
* backport fixes to ATOM_IIO_MOVE_ register offsets
* small bit of style correction


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


# 0cd93754 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* init scratch before card post
* B_OK != 1!, so don't if (status_t)


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


# 77e8ac07 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add allocation of atombios fb scratch
* add free of allocated fb scratch


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


# 7a2d0c5e 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* lets not make AtomBIOS calls until our
semaphore is created :)
* delete semaphore on AtomBIOS destroy


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


# ee5d8bd0 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* tab fix
* add atom_parse_cmd|table_header functions to evaluate
data structure versions
* convert asic function to status_t and reflect
execute_table result
* cleanup logic in destroy atombios parser function


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


# 81e071b7 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* more style cleanup
* backport additional bugfixes from drm version
* add logic to detect infinite execution loops
* add a semephore to prevent multiple executions on
non-thread safe code ( this needs testing )


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


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

* style cleanup
* add some missing functions from drm version


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42583 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


# 88932cfb 04-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* repair time by slowing it down


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


# e7f40406 04-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* improve debugging in AtomBIOS atom.c parser


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


# 32e7d18a 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Quick style cleanup
* Check for failed malloc in atom_parse


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


# 22582a29 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Map AtomBIOS specified by PCI rom into virtual memory
* Point AtomBIOS to PCI rom mapped in memory
* Things no longer crash, but we get an Invalid BIOS Magic error
in the logs.


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


# 51360674 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Initial work on bios_init for setting up AtomBIOS parser
* Refactor AtomBIOS parser to use non-linux-kernel calls
(normally I would keep it as-is and do wrappers, but the
AtomBIOS parser has been rewritten from scratch twice
by its creator in the last 5 years.. so eh.
* Refactor AtomBIOS parser to be more haiku-like stylewise


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


# 97fb429c556740c2968b9c48605d8fb4f7fa5007 09-Nov-2014 Julian Harnath <julian.harnath@rwth-aachen.de>

radeon_hd: fix typecast in atombios table header parser

* The pointer mdt should point to the start of the contents of the
master data table. As defined in struct ATOM_MASTER_DATA_TABLE,
the content begins 4 bytes after the beginning of the table
(which in turn is ctx->data_table bytes from the start of the
AtomBIOS). The wrong parantheses in the cast moved the pointer
somewhere else completely.

* That this apparently worked on many cards is because the mdt
pointer in this function is used just to make sure that the
following dereference is not a NULL-pointer access.
The actual dereference is then done using the CU16() and CU8()
macros which do the casts correctly. However, it only worked when
the wrong pointer plus index lead to some byte which was, by
chance, not zero. For many chips, this was the case.

* For the AtomBIOS of a Radeon HD7850M (Heathrow Pro) it didn't work
out though and the driver couldn't parse tables. With this fix, it
now works on such chips as well.

* Also, fix the same problem in code for master command table.


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

radeon_hd: Upgrade AtomBIOS parser

* Bring inline to current Linux version
* Apply upstream bug fixes to AtomBIOS
* Update atombios headers to latest version


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

radeon_hd: AtomBIOS loop failure detection now time based

* If the same call is made for 5 seconds straight, fail.
* Resolves random AtomBIOS failures.
* AtomBIOS failures now represent *real* bugs :)


# 89e7764d9892c90a6a0110c00e70ae9efe18f0e3 12-Mar-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: Tune AtomBIOS failure threshold

* Fixes edge cases of AtomBIOS parser failing
before there really was a problem.
* Hopefully resolves the rest of the random
failures and #5722
* If this doesn't work, I'll rewrite the parser
to use jiffies (snooze)
* Thanks for all the testing Disreali!


# a5e3ee78eeb19141af775feddfeb200a328d92df 22-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: AtomBIOS, correct logic. No functional change


# 24dfcdc1950fac5f74340ebe11a05a06b433a6a5 22-Feb-2012 Alexander von Gluck IV <kallisti5@unixzen.com>

radeon_hd: AtomBIOS parser improvements

* "DANGER" is a little strong of a warning
* Provide better tracing when things go wrong
* Give raw table / operation values in addition
to AtomBIOS pointers


# 24d19f4dab07a1cf7f15ecc3c5ba6d66615725d0 19-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* fix silly unsigned vs signed bug in gcc2


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


# 9b4aacc2100bce4e5a885c77db32db6703f05192 19-Oct-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport linux AtomBIOS parser bugfix...
Fixes memory corruption on some boards.


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


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

* make atombios lockup checking adjustments more robust


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


# d06251a95a7c8448eb2807ef96a3791d4a414249 11-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* make ERROR define to always show AtomBIOS parsing errors


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


# c3ec7fedec4784b343767adcb37c4722924b18dc 09-Sep-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* bug fix in AtomBIOS data table parser, incorrect int size causing issues


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42729 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


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

* remove tracing on AtomBIOS parser
* fix a few compile issues when tracing is disabled


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


# 7a2bb2b04c6c0bc7d5c1d93095e443185dd53524 11-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport a missed endian change
* clean up some tabs and spaces


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


# 5cdfd17b4b661a52301f2b480169f711c539e99a 11-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* backport some additional linux atom parser fixes
* backport fixes to ATOM_IIO_MOVE_ register offsets
* small bit of style correction


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


# 0cd93754a4038ed73c61ce34dd398c14b3ec6dee 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* init scratch before card post
* B_OK != 1!, so don't if (status_t)


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


# 77e8ac07c6bcbc944a7c631f91bbaf64ab99634c 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* add allocation of atombios fb scratch
* add free of allocated fb scratch


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


# 7a2d0c5e92cc77ee5a59c924a2d083e0f711a89a 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* lets not make AtomBIOS calls until our
semaphore is created :)
* delete semaphore on AtomBIOS destroy


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


# ee5d8bd0a8788c9017841a35a2a00a5ac481e6ca 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* tab fix
* add atom_parse_cmd|table_header functions to evaluate
data structure versions
* convert asic function to status_t and reflect
execute_table result
* cleanup logic in destroy atombios parser function


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


# 81e071b76e191a140fe6a79f12d344aed8ba636e 06-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* more style cleanup
* backport additional bugfixes from drm version
* add logic to detect infinite execution loops
* add a semephore to prevent multiple executions on
non-thread safe code ( this needs testing )


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


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

* style cleanup
* add some missing functions from drm version


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42583 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


# 88932cfb416cf14f99ea48f18611a5828537102c 04-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* repair time by slowing it down


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


# e7f4040697702e0a799bae50fd0387486f3ee842 04-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* improve debugging in AtomBIOS atom.c parser


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


# 32e7d18a75c4cc95a78858bb3b82a199a8e494b7 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Quick style cleanup
* Check for failed malloc in atom_parse


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


# 22582a297c7e74465243aad35a040ff3822cd9ce 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Map AtomBIOS specified by PCI rom into virtual memory
* Point AtomBIOS to PCI rom mapped in memory
* Things no longer crash, but we get an Invalid BIOS Magic error
in the logs.


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


# 5136067474e5350ce28b33e809580dd8118166c1 02-Aug-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

* Initial work on bios_init for setting up AtomBIOS parser
* Refactor AtomBIOS parser to use non-linux-kernel calls
(normally I would keep it as-is and do wrappers, but the
AtomBIOS parser has been rewritten from scratch twice
by its creator in the last 5 years.. so eh.
* Refactor AtomBIOS parser to be more haiku-like stylewise


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