[haiku-commits] haiku: hrev55689 - src/add-ons/accelerants/intel_extreme src/add-ons/kernel/drivers/graphics/intel_extreme headers/private/graphics/intel_extreme

  • From: Rudolf Cornelissen <rudhaiku@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 5 Dec 2021 10:47:23 +0000 (UTC)

hrev55689 adds 1 changeset to branch 'master'
old head: 77b2dd17df6741f1408b6dbdfd730c7f2698c686
new head: d60c7e010c1fb87b3050fd172afc6766cc9660ec
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=d60c7e010c1f+%5E77b2dd17df67

----------------------------------------------------------------------------

d60c7e010c1f: intel_extreme: for gen9.5 added new portF to DDI scan. add ID 
dump in kerneldriver.

                                 [ Rudolf Cornelissen <rudhaiku@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev55689
Commit:      d60c7e010c1fb87b3050fd172afc6766cc9660ec
URL:         https://git.haiku-os.org/haiku/commit/?id=d60c7e010c1f
Author:      Rudolf Cornelissen <rudhaiku@xxxxxxxxx>
Date:        Sun Dec  5 12:47:05 2021 UTC

----------------------------------------------------------------------------

4 files changed, 16 insertions(+), 4 deletions(-)
headers/private/graphics/intel_extreme/intel_extreme.h    |  5 ++++-
src/add-ons/accelerants/intel_extreme/Ports.cpp           | 11 +++++++++--
src/add-ons/accelerants/intel_extreme/accelerant.cpp      |  2 +-
.../kernel/drivers/graphics/intel_extreme/driver.cpp      |  2 ++

----------------------------------------------------------------------------

diff --git a/headers/private/graphics/intel_extreme/intel_extreme.h 
b/headers/private/graphics/intel_extreme/intel_extreme.h
index 8de668ca68..731b052a73 100644
--- a/headers/private/graphics/intel_extreme/intel_extreme.h
+++ b/headers/private/graphics/intel_extreme/intel_extreme.h
@@ -225,7 +225,8 @@ enum port_index {
        INTEL_PORT_B,
        INTEL_PORT_C,
        INTEL_PORT_D,
-       INTEL_PORT_E
+       INTEL_PORT_E,
+       INTEL_PORT_F
 };
 
 enum pch_info {
@@ -726,6 +727,7 @@ struct intel_free_graphics_memory {
 #define DDI_BUF_CTL_C                                  (0x4200 | 
REGS_NORTH_PIPE_AND_PORT)
 #define DDI_BUF_CTL_D                                  (0x4300 | 
REGS_NORTH_PIPE_AND_PORT)
 #define DDI_BUF_CTL_E                                  (0x4400 | 
REGS_NORTH_PIPE_AND_PORT)
+#define DDI_BUF_CTL_F                                  (0x4500 | 
REGS_NORTH_PIPE_AND_PORT)
 #define DDI_BUF_CTL_ENABLE                             (1 << 31)
 #define DDI_BUF_TRANS_SELECT(n)                        ((n) << 24)
 #define DDI_BUF_EMP_MASK                               (0xf << 24)
@@ -748,6 +750,7 @@ struct intel_free_graphics_memory {
 #define PIPE_DDI_PORT_C                                        2
 #define PIPE_DDI_PORT_D                                        3
 #define PIPE_DDI_PORT_E                                        4
+#define PIPE_DDI_PORT_F                                        5
 #define PIPE_DDI_MODESEL_SHIFT                 24
 #define PIPE_DDI_MODESEL_MODE(x)               ((x) << PIPE_DDI_MODESEL_SHIFT)
 #define PIPE_DDI_MODESEL_MASK                  (7 << PIPE_DDI_MODESEL_SHIFT)
diff --git a/src/add-ons/accelerants/intel_extreme/Ports.cpp 
b/src/add-ons/accelerants/intel_extreme/Ports.cpp
index aa3f034700..2863ff6706 100644
--- a/src/add-ons/accelerants/intel_extreme/Ports.cpp
+++ b/src/add-ons/accelerants/intel_extreme/Ports.cpp
@@ -1295,6 +1295,11 @@ DigitalDisplayInterface::_PortRegister()
                        return DDI_BUF_CTL_D;
                case INTEL_PORT_E:
                        return DDI_BUF_CTL_E;
+               case INTEL_PORT_F:
+                       if ((gInfo->shared_info->device_type.Generation() > 8) 
&&
+                               
!gInfo->shared_info->device_type.InGroup(INTEL_GROUP_SKY))
+                               return DDI_BUF_CTL_F;
+                       return 0;
                default:
                        return 0;
        }
@@ -1353,9 +1358,11 @@ DigitalDisplayInterface::IsConnected()
        TRACE("%s: %s PortRegister: 0x%" B_PRIxADDR "\n", __func__, PortName(),
                portRegister);
 
-       // Please note: Skylake and up (Desktop) use eDP for a seperate active 
VGA converter chip.
-       if ((portRegister == 0) && (PortIndex() != INTEL_PORT_E)) //DP protocol 
has no register
+       // Please note: Skylake and up (Desktop) might use eDP for a seperate 
active VGA converter chip.
+       if (portRegister == 0) {
+               TRACE("%s: Port not implemented\n", __func__);
                return false;
+       }
 
        // Probe a little port info.
        if ((read32(DDI_BUF_CTL_A) & DDI_A_4_LANES) != 0) {
diff --git a/src/add-ons/accelerants/intel_extreme/accelerant.cpp 
b/src/add-ons/accelerants/intel_extreme/accelerant.cpp
index ec10f2630c..967e185e40 100644
--- a/src/add-ons/accelerants/intel_extreme/accelerant.cpp
+++ b/src/add-ons/accelerants/intel_extreme/accelerant.cpp
@@ -289,7 +289,7 @@ probe_ports()
 
        // Digital Display Interface (for DP, HDMI, DVI and eDP)
        if (gInfo->shared_info->device_type.HasDDI()) {
-               for (int i = INTEL_PORT_B; i <= INTEL_PORT_E; i++) {
+               for (int i = INTEL_PORT_B; i <= INTEL_PORT_F; i++) {
                        TRACE("Probing DDI %d\n", i);
 
                        Port* ddiPort
diff --git a/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp 
b/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp
index 4bb745d887..8198e470bd 100644
--- a/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp
+++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp
@@ -190,6 +190,7 @@ get_next_intel_extreme(int32* _cookie, pci_info &info, 
uint32 &type)
                        if (info.device_id == kSupportedDevices[i].device_id) {
                                type = i;
                                *_cookie = index + 1;
+                               ERROR("%s: Intel gfx deviceID: 0x%04x\n", 
__func__, info.device_id);
                                return B_OK;
                        }
                }
@@ -215,6 +216,7 @@ detect_intel_pch()
 
                // check device
                unsigned short id = info.device_id & INTEL_PCH_DEVICE_ID_MASK;
+               ERROR("%s: Intel PCH deviceID: 0x%04x\n", __func__, 
info.device_id);
                switch(id) {
                        case INTEL_PCH_IBX_DEVICE_ID:
                                ERROR("%s: Found Ibex Peak PCH\n", __func__);


Other related posts:

  • » [haiku-commits] haiku: hrev55689 - src/add-ons/accelerants/intel_extreme src/add-ons/kernel/drivers/graphics/intel_extreme headers/private/graphics/intel_extreme - Rudolf Cornelissen