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

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 12 Sep 2017 05:24:51 +0200 (CEST)

hrev51414 adds 2 changesets to branch 'master'
old head: 00171c6f43029ddd3c5278e950f92d05a8a5e378
new head: ce1ac42908b1839b486f7866c637d14b7cabf199
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=ce1ac42908b1+%5E00171c6f4302

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

e5f5c3c4cebc: radeon_hd: Cosmetic cleanups. No functional change

ce1ac42908b1: radeon_hd: Fix logic bug in transmitter init.
  
  * Don't use any functions requiring knowledge of
    attached displays before they are probed.
  * ucDigMode un-needed on INIT action.

                          [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]

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

2 files changed, 41 insertions(+), 23 deletions(-)
src/add-ons/accelerants/radeon_hd/display.cpp | 13 +++---
src/add-ons/accelerants/radeon_hd/encoder.cpp | 51 +++++++++++++++--------

############################################################################

Commit:      e5f5c3c4cebcacaaaa66d8fc7aed384f61a688ec
URL:         http://cgit.haiku-os.org/haiku/commit/?id=e5f5c3c4cebc
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Tue Sep 12 03:20:48 2017 UTC

radeon_hd: Cosmetic cleanups. No functional change

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

diff --git a/src/add-ons/accelerants/radeon_hd/display.cpp 
b/src/add-ons/accelerants/radeon_hd/display.cpp
index 5555756..7dcfc29 100644
--- a/src/add-ons/accelerants/radeon_hd/display.cpp
+++ b/src/add-ons/accelerants/radeon_hd/display.cpp
@@ -449,19 +449,20 @@ display_get_encoder_mode(uint32 connectorIndex)
                        return ATOM_ENCODER_MODE_DVO;
        }
 
-       // Find crtc for connector so we can identify source of edid data
-       int32 crtc = -1;
+       // Find display for connector so we can identify source of edid data
+       int32 crtcID = -1;
        for (int32 id = 0; id < MAX_DISPLAY; id++) {
                if (gDisplay[id]->connectorIndex == connectorIndex) {
-                       crtc = id;
+                       crtcID = id;
                        break;
                }
        }
        bool edidDigital = false;
-       if (crtc == -1) {
-               ERROR("%s: BUG: executed on connector without crtc!\n", 
__func__);
+       if (crtcID == -1) {
+               ERROR("%s: BUG: executed on connector without assigned 
display!\n",
+                       __func__);
        } else {
-               edid1_info* edid = &gDisplay[crtc]->edidData;
+               edid1_info* edid = &gDisplay[crtcID]->edidData;
                edidDigital = edid->display.input_type ? true : false;
        }
 

############################################################################

Revision:    hrev51414
Commit:      ce1ac42908b1839b486f7866c637d14b7cabf199
URL:         http://cgit.haiku-os.org/haiku/commit/?id=ce1ac42908b1
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Tue Sep 12 03:23:40 2017 UTC

radeon_hd: Fix logic bug in transmitter init.

* Don't use any functions requiring knowledge of
  attached displays before they are probed.
* ucDigMode un-needed on INIT action.

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

diff --git a/src/add-ons/accelerants/radeon_hd/encoder.cpp 
b/src/add-ons/accelerants/radeon_hd/encoder.cpp
index 1cc11c3..61981f8 100644
--- a/src/add-ons/accelerants/radeon_hd/encoder.cpp
+++ b/src/add-ons/accelerants/radeon_hd/encoder.cpp
@@ -223,7 +223,7 @@ encoder_assign_crtc(uint8 crtcID)
 uint32
 encoder_pick_dig(uint32 connectorIndex)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 "\n", __func__, connectorIndex);
        radeon_shared_info &info = *gInfo->shared_info;
        uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
 
@@ -274,7 +274,7 @@ encoder_pick_dig(uint32 connectorIndex)
 void
 encoder_apply_quirks(uint8 crtcID)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: display %" B_PRIu8 "\n", __func__, crtcID);
        radeon_shared_info &info = *gInfo->shared_info;
        register_info* regs = gDisplay[crtcID]->regs;
        uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
@@ -293,7 +293,7 @@ encoder_apply_quirks(uint8 crtcID)
 void
 encoder_mode_set(uint8 crtcID)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: display %" B_PRIu8 "\n", __func__, crtcID);
        radeon_shared_info &info = *gInfo->shared_info;
        uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
        uint16 connectorFlags = gConnector[connectorIndex]->flags;
@@ -386,6 +386,9 @@ encoder_mode_set(uint8 crtcID)
 status_t
 encoder_tv_setup(uint32 connectorIndex, uint32 pixelClock, int command)
 {
+       TRACE("%s: connector %" B_PRIu32 ", pixelClock: %" B_PRIu32 "\n", 
__func__,
+               connectorIndex, pixelClock);
+
        uint16 connectorFlags = gConnector[connectorIndex]->flags;
 
        TV_ENCODER_CONTROL_PS_ALLOCATION args;
@@ -411,7 +414,8 @@ encoder_tv_setup(uint32 connectorIndex, uint32 pixelClock, 
int command)
 status_t
 encoder_digital_setup(uint32 connectorIndex, uint32 pixelClock, int command)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 ", pixelClock: %" B_PRIu32 "\n", 
__func__,
+               connectorIndex, pixelClock);
 
        int index = 0;
        uint16 connectorFlags = gConnector[connectorIndex]->flags;
@@ -573,6 +577,8 @@ encoder_get_bpc()
 status_t
 encoder_dig_setup(uint32 connectorIndex, uint32 pixelClock, int command)
 {
+       TRACE("%s\n", __func__);
+
        radeon_shared_info &info = *gInfo->shared_info;
        connector_info* connector = gConnector[connectorIndex];
 
@@ -834,7 +840,7 @@ encoder_dig_setup(uint32 connectorIndex, uint32 pixelClock, 
int command)
 status_t
 encoder_external_setup(uint32 connectorIndex, int command)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 "\n", __func__, connectorIndex);
 
        encoder_info* encoder
                = &gConnector[connectorIndex]->encoder;
@@ -1004,7 +1010,8 @@ encoder_external_setup(uint32 connectorIndex, int command)
 status_t
 encoder_analog_setup(uint32 connectorIndex, uint32 pixelClock, int command)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 ", pixelClock: %" B_PRIu32 "\n", 
__func__,
+               connectorIndex, pixelClock);
 
        uint32 connectorFlags = gConnector[connectorIndex]->flags;
 
@@ -1049,7 +1056,7 @@ encoder_analog_setup(uint32 connectorIndex, uint32 
pixelClock, int command)
 bool
 encoder_analog_load_detect(uint32 connectorIndex)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 "\n", __func__, connectorIndex);
 
        if (gConnector[connectorIndex]->encoderExternal.valid == true)
                return encoder_dig_load_detect(connectorIndex);
@@ -1061,7 +1068,7 @@ encoder_analog_load_detect(uint32 connectorIndex)
 bool
 encoder_dac_load_detect(uint32 connectorIndex)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 "\n", __func__, connectorIndex);
 
        uint32 connectorFlags = gConnector[connectorIndex]->flags;
        uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
@@ -1156,7 +1163,7 @@ encoder_dac_load_detect(uint32 connectorIndex)
 bool
 encoder_dig_load_detect(uint32 connectorIndex)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 "\n", __func__, connectorIndex);
        radeon_shared_info &info = *gInfo->shared_info;
 
        if (info.dceMajor < 4) {
@@ -1197,7 +1204,8 @@ status_t
 transmitter_dig_setup(uint32 connectorIndex, uint32 pixelClock,
        uint8 laneNumber, uint8 laneSet, int command)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: connector %" B_PRIu32 ", pixelClock: %" B_PRIu32 "\n", 
__func__,
+               connectorIndex, pixelClock);
 
        uint16 encoderID = gConnector[connectorIndex]->encoder.objectID;
        int index;
@@ -1579,8 +1587,13 @@ transmitter_dig_setup(uint32 connectorIndex, uint32 
pixelClock,
                                        }
 
                                        args.v5.ucConnObjId = connectorObjectID;
-                                       args.v5.ucDigMode
-                                               = 
display_get_encoder_mode(connectorIndex);
+
+                                       if (command != 
ATOM_TRANSMITTER_ACTION_INIT) {
+                                               // not used on INIT and 
display_get_encoder_mode
+                                               // unavailable until displays 
are probed.
+                                               args.v5.ucDigMode
+                                                       = 
display_get_encoder_mode(connectorIndex);
+                                       }
 
                                        if (isDP && gInfo->dpExternalClock) {
                                                args.v5.asConfig.ucPhyClkSrcId
@@ -1647,7 +1660,9 @@ transmitter_dig_setup(uint32 connectorIndex, uint32 
pixelClock,
 
                                        if (command == 
ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH)
                                                args.v6.ucDPLaneSet = laneSet;
-                                       else {
+                                       else if (command != 
ATOM_TRANSMITTER_ACTION_INIT) {
+                                               // not used on INIT and 
display_get_encoder_mode
+                                               // unavailable until displays 
are probed.
                                                args.v6.ucDigMode
                                                        = 
display_get_encoder_mode(connectorIndex);
                                        }
@@ -1671,7 +1686,7 @@ transmitter_dig_setup(uint32 connectorIndex, uint32 
pixelClock,
 void
 encoder_crtc_scratch(uint8 crtcID)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: display %" B_PRIu8 "\n", __func__, crtcID);
 
        uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
        uint32 connectorFlags = gConnector[connectorIndex]->flags;
@@ -1720,7 +1735,7 @@ encoder_crtc_scratch(uint8 crtcID)
 void
 encoder_dpms_scratch(uint8 crtcID, bool power)
 {
-       TRACE("%s\n", __func__);
+       TRACE("%s: display %" B_PRIu8 "\n", __func__, crtcID);
 
        uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
        uint32 connectorFlags = gConnector[connectorIndex]->flags;
@@ -1795,7 +1810,8 @@ encoder_dpms_scratch(uint8 crtcID, bool power)
 void
 encoder_dpms_set(uint8 crtcID, int mode)
 {
-       TRACE("%s: power: %s\n", __func__, mode == B_DPMS_ON ? "true" : 
"false");
+       TRACE("%s: display %" B_PRIu8 ", power: %s\n", __func__, crtcID,
+               mode == B_DPMS_ON ? "true" : "false");
 
        int index = -1;
        radeon_shared_info &info = *gInfo->shared_info;
@@ -1890,7 +1906,8 @@ encoder_dpms_set(uint8 crtcID, int mode)
 void
 encoder_dpms_set_dig(uint8 crtcID, int mode)
 {
-       TRACE("%s: power: %s\n", __func__, mode == B_DPMS_ON ? "true" : 
"false");
+       TRACE("%s: display %" B_PRIu8 ", power: %s\n", __func__, crtcID,
+               mode == B_DPMS_ON ? "true" : "false");
 
        radeon_shared_info &info = *gInfo->shared_info;
        uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;


Other related posts:

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