hrev55719 adds 1 changeset to branch 'master'
old head: 3084929f8179665a0af5c68ab3c3d072ea2a35c6
new head: 662912945f3de35d7f13d8e548f3bc7736594132
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=662912945f3d+%5E3084929f8179
----------------------------------------------------------------------------
662912945f3d: radeon_hd/pll: Guard bpc on non-HDMI under table 1.5,1.6
* Cut extra calls to display_get_encoder_mode
* Correct incorrect ucMiscInfo on table 1.6 via atombios
comments
Change-Id: Ib6d7938269b8421d3711c1344eab0b9842336932
[ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev55719
Commit: 662912945f3de35d7f13d8e548f3bc7736594132
URL: https://git.haiku-os.org/haiku/commit/?id=662912945f3d
Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date: Sat Dec 11 16:29:16 2021 UTC
----------------------------------------------------------------------------
1 file changed, 35 insertions(+), 32 deletions(-)
src/add-ons/accelerants/radeon_hd/pll.cpp | 67 ++++++++++++++-------------
----------------------------------------------------------------------------
diff --git a/src/add-ons/accelerants/radeon_hd/pll.cpp
b/src/add-ons/accelerants/radeon_hd/pll.cpp
index 5e1025db25..c7b6dd854f 100644
--- a/src/add-ons/accelerants/radeon_hd/pll.cpp
+++ b/src/add-ons/accelerants/radeon_hd/pll.cpp
@@ -865,7 +865,7 @@ pll_set(display_mode* mode, uint8 crtcID)
}
args.v3.ucTransmitterId
= gConnector[connectorIndex]->encoder.objectID;
- args.v3.ucEncoderMode =
display_get_encoder_mode(connectorIndex);
+ args.v3.ucEncoderMode = encoderMode;
break;
case 5:
args.v5.ucCRTC = crtcID;
@@ -881,24 +881,25 @@ pll_set(display_mode* mode, uint8 crtcID)
&& (pll->ssType & ATOM_EXTERNAL_SS_MASK) != 0) {
args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_REF_DIV_SRC;
}
- switch (bitsPerColor) {
- case 8:
- default:
- args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
- break;
- case 10:
- // AMD notes the atombios define is
incorrect here
- args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_32BPP;
- break;
- case 12:
- // AMD notes the atombios define is
incorrect here
- args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
- break;
+ if (encoderMode == ATOM_ENCODER_MODE_HDMI) {
+ switch (bitsPerColor) {
+ case 8:
+ default:
+ args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
+ break;
+ case 10:
+ // AMD notes the atombios
define is incorrect here
+ args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_32BPP;
+ break;
+ case 12:
+ // AMD notes the atombios
define is incorrect here
+ args.v5.ucMiscInfo |=
PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
+ break;
+ }
}
args.v5.ucTransmitterID
= gConnector[connectorIndex]->encoder.objectID;
- args.v5.ucEncoderMode
- = display_get_encoder_mode(connectorIndex);
+ args.v5.ucEncoderMode = encoderMode;
args.v5.ucPpll = pll->id;
break;
case 6:
@@ -914,24 +915,26 @@ pll_set(display_mode* mode, uint8 crtcID)
&& (pll->ssType & ATOM_EXTERNAL_SS_MASK) != 0) {
args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_REF_DIV_SRC;
}
- switch (bitsPerColor) {
- case 8:
- default:
- args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
- break;
- case 10:
- args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_30BPP;
- break;
- case 12:
- args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_36BPP;
- break;
- case 16:
- args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
- break;
+ if (encoderMode == ATOM_ENCODER_MODE_HDMI) {
+ switch (bitsPerColor) {
+ case 8:
+ default:
+ args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
+ break;
+ case 10:
+ args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_30BPP_V6;
+ break;
+ case 12:
+ args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_36BPP_V6;
+ break;
+ case 16:
+ args.v6.ucMiscInfo |=
PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
+ break;
+ }
}
args.v6.ucTransmitterID
= gConnector[connectorIndex]->encoder.objectID;
- args.v6.ucEncoderMode =
display_get_encoder_mode(connectorIndex);
+ args.v6.ucEncoderMode = encoderMode;
args.v6.ucPpll = pll->id;
break;
case 7:
@@ -966,7 +969,7 @@ pll_set(display_mode* mode, uint8 crtcID)
}
args.v7.ucTransmitterID
= gConnector[connectorIndex]->encoder.objectID;
- args.v7.ucEncoderMode =
display_get_encoder_mode(connectorIndex);
+ args.v7.ucEncoderMode = encoderMode;
args.v7.ucPpll = pll->id;
break;
default: