diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.cpp b/src/add-ons/accelerants/radeon_hd/accelerant.cpp
index 727a3ca38a..8f429f8f44 100644
--- a/src/add-ons/accelerants/radeon_hd/accelerant.cpp
+++ b/src/add-ons/accelerants/radeon_hd/accelerant.cpp
@@ -280,9 +280,6 @@ radeon_init_accelerant(int device)
 	// print found connectors
 	debug_connectors();
 
-	// setup encoders on each connector if needed
-	encoder_init();
-
 	// program external pll clock
 	pll_external_init();
 
@@ -297,6 +294,9 @@ radeon_init_accelerant(int device)
 	// print found displays
 	debug_displays();
 
+	// setup encoders on each connector if needed
+	encoder_init();
+
 	// create initial list of video modes
 	status = create_mode_list();
 	//if (status != B_OK) {
diff --git a/src/add-ons/accelerants/radeon_hd/display.cpp b/src/add-ons/accelerants/radeon_hd/display.cpp
index 55557568a3..7dcfc29ce5 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;
 	}
 
diff --git a/src/add-ons/accelerants/radeon_hd/encoder.cpp b/src/add-ons/accelerants/radeon_hd/encoder.cpp
index 1cc11c383c..c6c560d4ac 100644
--- a/src/add-ons/accelerants/radeon_hd/encoder.cpp
+++ b/src/add-ons/accelerants/radeon_hd/encoder.cpp
@@ -41,16 +41,25 @@ encoder_init()
 	TRACE("%s: called\n", __func__);
 	radeon_shared_info &info = *gInfo->shared_info;
 
-	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
-		if (gConnector[id]->valid == false)
+	// For each attached display...
+	uint32 crtcID;
+	uint32 initCount = 0;
+	for (crtcID = 0; crtcID < MAX_DISPLAY; crtcID++) {
+		if (gDisplay[crtcID]->attached != true)
 			continue;
+		uint16 connectorID = gDisplay[crtcID]->connectorIndex;
+
+		if (gConnector[connectorID]->valid == false)
+			continue;
+
+		initCount++;
 
-		switch (gConnector[id]->encoder.objectID) {
+		switch (gConnector[connectorID]->encoder.objectID) {
 			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
 			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
 			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
 			case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
-				transmitter_dig_setup(id, 0, 0, 0,
+				transmitter_dig_setup(connectorID, 0, 0, 0,
 					ATOM_TRANSMITTER_ACTION_INIT);
 				break;
 			default:
@@ -58,19 +67,23 @@ encoder_init()
 		}
 
 		if ((info.chipsetFlags & CHIP_APU) != 0) {
-			if (gConnector[id]->encoderExternal.valid == true) {
-				encoder_external_setup(id,
+			if (gConnector[connectorID]->encoderExternal.valid == true) {
+				encoder_external_setup(connectorID,
 					EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT);
 			}
 		}
 	}
+	if (initCount == 0) {
+		ERROR("%s: WARNING: Didn't find any attached displays to init!",
+			__func__);
+	}
 }
 
 
 void
 encoder_assign_crtc(uint8 crtcID)
 {
-	TRACE("%s\n", __func__);
+	TRACE("%s: display %" B_PRIu8 "\n", __func__, crtcID);
 
 	int index = GetIndexIntoMasterTable(COMMAND, SelectCRTC_Source);
 
@@ -223,7 +236,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 +287,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 +306,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 +399,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 +427,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 +590,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 +853,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 +1023,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 +1069,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 +1081,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 +1176,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 +1217,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;
@@ -1671,7 +1692,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 +1741,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 +1816,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 +1912,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;
