summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-08-10 13:20:13 +1000
committerDave Airlie <airlied@redhat.com>2010-08-10 13:20:13 +1000
commit1cce55e8ba43e7958cb67147aeaeb068826ab99f (patch)
tree8e8656f9a7bc2153d0b039106656c5057bfbf3ee
parentbbffd67d3296344e8735b007cdee83146d38369c (diff)
evergreen: add support to parse firmware info for ext dp clk
-rw-r--r--src/atombios_output.c2
-rw-r--r--src/radeon.h2
-rw-r--r--src/radeon_atombios.c7
-rw-r--r--src/radeon_atombios.h1
4 files changed, 11 insertions, 1 deletions
diff --git a/src/atombios_output.c b/src/atombios_output.c
index 003b8f88..5ccf50d1 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -729,7 +729,7 @@ atombios_output_dig_transmitter_setup(xf86OutputPtr output, int action, uint8_t
}
// select the PLL for the UNIPHY
- if (radeon_output->MonType == MT_DP)
+ if (radeon_output->MonType == MT_DP && info->dp_extclk)
disp_data.v3.acConfig.ucRefClkSource = 2; /* ext clk */
else
disp_data.v3.acConfig.ucRefClkSource = radeon_output->pll_id;
diff --git a/src/radeon.h b/src/radeon.h
index d66cdd93..134a4cf2 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -872,6 +872,8 @@ typedef struct {
Bool ddc2;
RADEONPLLRec pll;
+ int default_dispclk;
+ int dp_extclk;
int RamWidth;
float sclk; /* in MHz */
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 996e6eee..61b5372b 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -2307,6 +2307,13 @@ RADEONGetATOMClockInfo(ScrnInfoPtr pScrn)
pll->pll_out_min = 64800;
}
+ if (IS_DCE4_VARIANT) {
+ info->default_dispclk =
+ le32_to_cpu(atomDataPtr->FirmwareInfo.FirmwareInfo_V_2_1->ulDefaultDispEngineClkFreq);
+ if (info->default_dispclk == 0)
+ info->default_dispclk = 60000;
+ info->dp_extclk = le16_to_cpu(atomDataPtr->FirmwareInfo.FirmwareInfo_V_2_1->usUniphyDPModeExtClkFreq);
+ }
return TRUE;
}
diff --git a/src/radeon_atombios.h b/src/radeon_atombios.h
index 1f21c466..67f65cac 100644
--- a/src/radeon_atombios.h
+++ b/src/radeon_atombios.h
@@ -194,6 +194,7 @@ typedef struct _atomDataTables
ATOM_FIRMWARE_INFO_V1_2 *FirmwareInfo_V_1_2;
ATOM_FIRMWARE_INFO_V1_3 *FirmwareInfo_V_1_3;
ATOM_FIRMWARE_INFO_V1_4 *FirmwareInfo_V_1_4;
+ ATOM_FIRMWARE_INFO_V2_1 *FirmwareInfo_V_2_1;
} FirmwareInfo;
ATOM_DAC_INFO *DAC_Info;
union {