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;