[haiku-commits] haiku: hrev43725 - src/add-ons/accelerants/radeon_hd

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 8 Feb 2012 21:41:09 +0100 (CET)

hrev43725 adds 1 changeset to branch 'master'
old head: 7136439799c82e1478836cbe426044597f52b6cd
new head: 458166fb30ec5eede2675d3b194881b4c159e6be

----------------------------------------------------------------------------

458166f: radeon_hd: Improve Radeon HD APU support
  
  * Backport from linux radeon drm 3a47824d
  * Better logic for DCE version checking

                          [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev43725
Commit:      458166fb30ec5eede2675d3b194881b4c159e6be
URL:         http://cgit.haiku-os.org/haiku/commit/?id=458166f
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Wed Feb  8 20:45:04 2012 UTC

----------------------------------------------------------------------------

1 files changed, 21 insertions(+), 5 deletions(-)
src/add-ons/accelerants/radeon_hd/encoder.cpp |   26 +++++++++++++++++----

----------------------------------------------------------------------------

diff --git a/src/add-ons/accelerants/radeon_hd/encoder.cpp 
b/src/add-ons/accelerants/radeon_hd/encoder.cpp
index e24a58f..df218c4 100644
--- a/src/add-ons/accelerants/radeon_hd/encoder.cpp
+++ b/src/add-ons/accelerants/radeon_hd/encoder.cpp
@@ -282,7 +282,15 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
                case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
                case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
                case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
-                       if (info.dceMajor >= 4) {
+                       if ((info.chipsetFlags & CHIP_APU) != 0) {
+                               // aka DCE 4.1
+                               // Setup DIG encoder
+                               encoder_dig_setup(connectorIndex, pixelClock,
+                                       ATOM_ENCODER_CMD_SETUP);
+                               // Enable DIG transmitter
+                               transmitter_dig_setup(connectorIndex, 
pixelClock, 0, 0,
+                                       ATOM_TRANSMITTER_ACTION_ENABLE);
+                       } else if (info.dceMajor >= 4) {
                                // Disable DIG transmitter
                                transmitter_dig_setup(connectorIndex, 
pixelClock, 0, 0,
                                        ATOM_TRANSMITTER_ACTION_DISABLE);
@@ -316,7 +324,8 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
        }
 
        if (gConnector[connectorIndex]->encoder.isExternal == true) {
-               if (info.dceMajor >= 4 && info.dceMinor >= 1) {
+               if ((info.chipsetFlags & CHIP_APU) != 0) {
+                       // aka DCE 4.1
                        encoder_external_setup(connectorIndex, pixelClock,
                                EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP);
                } else {
@@ -1516,7 +1525,9 @@ encoder_dpms_set_dig(uint8 crtcID, int mode)
        switch (mode) {
                case B_DPMS_ON:
                        if (info.chipsetID == RADEON_RV710
-                               || info.chipsetID == RADEON_RV730) {
+                               || info.chipsetID == RADEON_RV730
+                               || (info.chipsetFlags & CHIP_APU) != 0
+                               || info.dceMajor >= 5) {
                                transmitter_dig_setup(connectorIndex, 
pll->pixelClock, 0, 0,
                                        ATOM_TRANSMITTER_ACTION_ENABLE);
                        } else {
@@ -1549,8 +1560,13 @@ encoder_dpms_set_dig(uint8 crtcID, int mode)
                case B_DPMS_STAND_BY:
                case B_DPMS_SUSPEND:
                case B_DPMS_OFF:
-                       transmitter_dig_setup(connectorIndex, pll->pixelClock, 
0, 0,
-                               ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT);
+                       if ((info.chipsetFlags & CHIP_APU) != 0 || 
info.dceMajor >= 5) {
+                               transmitter_dig_setup(connectorIndex, 
pll->pixelClock, 0, 0,
+                                       ATOM_TRANSMITTER_ACTION_DISABLE);
+                       } else {
+                               transmitter_dig_setup(connectorIndex, 
pll->pixelClock, 0, 0,
+                                       ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT);
+                       }
                        if (connector_is_dp(connectorIndex)) {
                                if (info.dceMajor >= 4) {
                                        encoder_dig_setup(connectorIndex, 
pll->pixelClock,


Other related posts:

  • » [haiku-commits] haiku: hrev43725 - src/add-ons/accelerants/radeon_hd - kallisti5