Got brightness control working here too! Great!
Still no luck with:
- Turning the screen off.
- Using HDMI output.
(lucky you with the touchpad! mine still won’t work
(is one of those that uses I2C).
Here’s my diff:
diff --git a/headers/private/graphics/intel_extreme/intel_extreme.h b/headers/private/graphics/intel_extreme/intel_extreme.h
index 41e0439e1..27a527bc6 100644
--- a/headers/private/graphics/intel_extreme/intel_extreme.h
+++ b/headers/private/graphics/intel_extreme/intel_extreme.h
@@ -89,6 +90,8 @@
#define INTEL_MODEL_SKYS (INTEL_GROUP_SKY | INTEL_TYPE_SERVER)
#define INTEL_MODEL_KBY (INTEL_GROUP_KBY)
#define INTEL_MODEL_KBYM (INTEL_GROUP_KBY | INTEL_TYPE_MOBILE)
+#define INTEL_MODEL_GML (INTEL_GROUP_KBY) // No Desktop/Mobile diff on GeminiLake device IDs.
+#define INTEL_MODEL_GMLM (INTEL_GROUP_KBY | INTEL_TYPE_MOBILE)
#define INTEL_MODEL_CFL (INTEL_GROUP_CFL)
#define INTEL_MODEL_CFLM (INTEL_GROUP_CFL | INTEL_TYPE_MOBILE)
#define INTEL_MODEL_CML (INTEL_GROUP_CML)
@@ -108,6 +111,7 @@
#define INTEL_PCH_SPT_DEVICE_ID 0xa100
#define INTEL_PCH_SPT_LP_DEVICE_ID 0x9d00
#define INTEL_PCH_KBP_DEVICE_ID 0xa280
+#define INTEL_PCH_GMP_DEVICE_ID 0x3180
#define INTEL_PCH_CNP_DEVICE_ID 0xa300
#define INTEL_PCH_CNP_LP_DEVICE_ID 0x9d80
#define INTEL_PCH_CMP_DEVICE_ID 0x0280
diff --git a/src/add-ons/kernel/busses/agp_gart/intel_gart.cpp b/src/add-ons/kernel/busses/agp_gart/intel_gart.cpp
index c1f546604..dc1cdae1f 100644
--- a/src/add-ons/kernel/busses/agp_gart/intel_gart.cpp
+++ b/src/add-ons/kernel/busses/agp_gart/intel_gart.cpp
@@ -176,6 +176,9 @@ const struct supported_device {
{0x5904, 0x5926, INTEL_MODEL_KBY, "Kabylake ULT GT3"},
{0x5904, 0x5927, INTEL_MODEL_KBY, "Kabylake ULT GT3"},
+// {0x31f0, 0x3184, INTEL_MODEL_GML, "GeminiLake GT1.5"},
+ {0x31f0, 0x3185, INTEL_MODEL_GML, "GeminiLake GT1"},
+
{0x3e0f, 0x3e90, INTEL_MODEL_CFL, "CoffeeLake GT1"},
{0x3e0f, 0x3e93, INTEL_MODEL_CFL, "CoffeeLake GT1"},
{0x3e1f, 0x3e91, INTEL_MODEL_CFL, "CoffeeLake GT2"},
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 f1981e735..8a237e0aa 100644
--- a/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp
+++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.cpp
@@ -161,6 +161,9 @@ const struct supported_device {
{0x5926, INTEL_MODEL_KBY, "Kabylake ULT GT3"},
{0x5927, INTEL_MODEL_KBY, "Kabylake ULT GT3"},
+ {0x3184, INTEL_MODEL_GMLM, "GeminiLake GT1.5"},
+ {0x3185, INTEL_MODEL_GMLM, "GeminiLake GT1"},
+
{0x3e90, INTEL_MODEL_CFL, "CoffeeLake GT1"},
{0x3e93, INTEL_MODEL_CFL, "CoffeeLake GT1"},
{0x3e91, INTEL_MODEL_CFL, "CoffeeLake GT2"},
@@ -275,6 +278,9 @@ detect_intel_pch()
case INTEL_PCH_KBP_DEVICE_ID:
ERROR("%s: Found Kaby Lake PCH\n", __func__);
return INTEL_PCH_SPT;
+ case INTEL_PCH_GMP_DEVICE_ID:
+ ERROR("%s: Found Gemini Lake PCH\n", __func__);
+ return INTEL_PCH_CNP;
case INTEL_PCH_CNP_DEVICE_ID:
case INTEL_PCH_CNP_LP_DEVICE_ID:
ERROR("%s: Found Cannon Lake PCH\n", __func__);
And here the notes I took while trying different things:
GeminiLake/GeminiLake Refresh.
- Intel Gen9 Graphics with Kaby Lake improvements.
- No Desktop/Mobile IDs distinction for the graphics
(but we need to set INTEL_TYPE_MOBILE for brighness control)
Product IDs:
- 0x3185 - UHD Graphics 600 (GeminiLake GT1), 12 EU
Celeron J4105, J4005, N4100, N4000
Celeron J4125, J4025, N4120, N4020
- 0x3184 - UHD Graphics 605 (GeminiLake GT1.5), 18 EU
Pentium Silver J5005, N5000
Pentium Silver J5040, N5030
Relevant “defines”, in relation to Haiku’s intel_extreme driver/accelerant:
INTEL_FAMILY_xxx
As long as it is INTEL_FAMILY_LAKE
, we’re good.
INTEL_GROUP_xxx
DigitalDisplayInterface::_PortRegister()
: (INTEL_PORT_F) returns DDI_BUF_CTL_F
if != INTEL_GROUP_SKY
.
(driver): info.shared_info->pll_info
differs if INTEL_GROUP_SKY
So… INTEL_GROUP_KBY
/INTEL_GROUP_CFL
should be good enough.
INTEL_MODEL_xxx
Not relevant for GeminiLake (so far).
INTEL_PCH_xxx pch_info enum (returned detect_intel_pch()
)
Only matters that its value is:
-
!= to INTEL_PCH_NONE, INTEL_PCH_IBX, INTEL_PCH_CPT, or INTEL_PCH_LPT.
-
for Port::_DDCPin() mapping of INTEL_I2C_IO_x differes for:
>= INTEL_PCH_ICP,
>= INTEL_PCH_CNP,
rest of Gen 9 graphics.
-
(driver): gen8_handle_interrupts()
has extra stuff for >= INTEL_PCH_ICP
(IceLake’s SHOTPLUG_CTL_DDI
/SHOTPLUG_CTL_TC
)
-
For brightness control to work:
Needs >= INTEL_PCH_CNP
, and INTEL_TYPE_MOBILE
-
(driver): intel_extreme_init()
just an empty if block instead of reading “hraw_clock” if >= INTEL_PCH_CNP
So… just return INTEL_PCH_CNP
from detect_intel_pch()
.