radeon_hd: Fix invalid encoder state
* This was a *big* oops on my part. * We were missing initial setup call for Kaleidoscope and DP Bridge encoders. * If you were having radeon HD mode setting issues, try this change. * Potential fix for #5722, #7397, #8059, #8151, #8282, #8289, #8310, #8322, #8331
This commit is contained in:
parent
ccb23a1eee
commit
7dd182106a
@ -285,6 +285,9 @@ radeon_init_accelerant(int device)
|
||||
// print found connectors
|
||||
debug_connectors();
|
||||
|
||||
// setup encoders on each connector if needed
|
||||
encoder_init();
|
||||
|
||||
// setup link on any DisplayPort connectors
|
||||
dp_setup_connectors();
|
||||
|
||||
|
@ -34,6 +34,36 @@ extern "C" void _sPrintf(const char* format, ...);
|
||||
#define ERROR(x...) _sPrintf("radeon_hd: " x)
|
||||
|
||||
|
||||
void
|
||||
encoder_init()
|
||||
{
|
||||
radeon_shared_info &info = *gInfo->shared_info;
|
||||
|
||||
for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
|
||||
if (gConnector[id]->valid == false)
|
||||
continue;
|
||||
|
||||
switch (gConnector[id]->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,
|
||||
ATOM_TRANSMITTER_ACTION_INIT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((info.chipsetFlags & CHIP_APU) != 0
|
||||
&& gConnector[id]->encoder.isExternal) {
|
||||
encoder_external_setup(id, 0,
|
||||
EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
encoder_assign_crtc(uint8 crtcID)
|
||||
{
|
||||
@ -196,9 +226,6 @@ encoder_pick_dig(uint32 connectorIndex)
|
||||
break;
|
||||
}
|
||||
|
||||
TRACE("%s: Found crtc %" B_PRIu32 " for connector %" B_PRIu32 "\n",
|
||||
__func__, crtcID, connectorIndex);
|
||||
|
||||
bool linkB = gConnector[connectorIndex]->encoder.linkEnumeration
|
||||
== GRAPH_OBJECT_ENUM_ID2 ? true : false;
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
void encoder_init();
|
||||
|
||||
void encoder_assign_crtc(uint8 crtcID);
|
||||
uint32 encoder_pick_dig(uint32 connectorIndex);
|
||||
|
Loading…
Reference in New Issue
Block a user