diff --git a/src/ec/system76/ec/Kconfig b/src/ec/system76/ec/Kconfig index fea4743593..9f85235260 100644 --- a/src/ec/system76/ec/Kconfig +++ b/src/ec/system76/ec/Kconfig @@ -7,3 +7,8 @@ config EC_SYSTEM76_EC_COLOR_KEYBOARD depends on EC_SYSTEM76_EC bool default n + +config EC_SYSTEM76_EC_DGPU + depends on EC_SYSTEM76_EC + bool + default n diff --git a/src/ec/system76/ec/acpi/ec_ram.asl b/src/ec/system76/ec/acpi/ec_ram.asl index 6f41a8d1c7..65bd2af7da 100644 --- a/src/ec/system76/ec/acpi/ec_ram.asl +++ b/src/ec/system76/ec/acpi/ec_ram.asl @@ -8,6 +8,8 @@ Field (ERAM, ByteAcc, Lock, Preserve) , 1, LWKE, 1, // Lid wake , 5, + Offset (0x07), + TMP1, 8, // CPU temperature Offset (0x10), ADP, 1, // AC adapter connected , 1, @@ -28,17 +30,17 @@ Field (ERAM, ByteAcc, Lock, Preserve) BCL0, 32, Offset (0x68), ECOS, 8, // Detected OS, 0 = no ACPI, 1 = ACPI but no driver, 2 = ACPI with driver - Offset (0xC7), - VGAT, 8, // GPU temperature (not implemented) + Offset (0xC8), OEM1, 8, OEM2, 8, OEM3, 16, OEM4, 8, // Extra SCI data - Offset (0xCE), - DUT1, 8, // Fan 1 duty (not implemented) - DUT2, 8, // Fan 2 duty (not implemented) - RPM1, 16, // Fan 1 RPM (not implemented) - RPM2, 16, // Fan 2 RPM (not implemented) + Offset (0xCD), + TMP2, 8, // GPU temperature + DUT1, 8, // Fan 1 duty + DUT2, 8, // Fan 2 duty + RPM1, 16, // Fan 1 RPM + RPM2, 16, // Fan 2 RPM Offset (0xD9), AIRP, 8, // Airplane mode LED WINF, 8, // Enable ACPI brightness controls diff --git a/src/ec/system76/ec/acpi/s76.asl b/src/ec/system76/ec/acpi/s76.asl index 7beb50b813..fbcfd62cb3 100644 --- a/src/ec/system76/ec/acpi/s76.asl +++ b/src/ec/system76/ec/acpi/s76.asl @@ -111,4 +111,57 @@ Device (S76D) { } } #endif // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD) + + // Fan names + Method (NFAN, 0, Serialized) { + Return (Package (2) { + "CPU fan", +#if CONFIG(EC_SYSTEM76_EC_DGPU) + "GPU fan", +#endif // CONFIG(EC_SYSTEM76_EC_DGPU) + }) + } + + // Get fan duty and RPM as a single value + Method (GFAN, 1, Serialized) { + Local0 = 0 + Local1 = 0 + If (^^PCI0.LPCB.EC0.ECOK) { + If (Arg0 == 0) { + Local0 = ^^PCI0.LPCB.EC0.DUT1 + Local1 = ^^PCI0.LPCB.EC0.RPM1 + } ElseIf (Arg0 == 1) { + Local0 = ^^PCI0.LPCB.EC0.DUT2 + Local1 = ^^PCI0.LPCB.EC0.RPM2 + } + } + If (Local1 != 0) { + // 60 * (EC frequency / 120) / 2 + Local1 = 2156250 / Local1 + } + Return ((Local1 << 8) | Local0) + } + + // Temperature names + Method (NTMP, 0, Serialized) { + Return (Package (2) { + "CPU temp", +#if CONFIG(EC_SYSTEM76_EC_DGPU) + "GPU temp", +#endif // CONFIG(EC_SYSTEM76_EC_DGPU) + }) + } + + // Get temperature + Method (GTMP, 1, Serialized) { + Local0 = 0; + If (^^PCI0.LPCB.EC0.ECOK) { + If (Arg0 == 0) { + Local0 = ^^PCI0.LPCB.EC0.TMP1 + } ElseIf (Arg0 == 1) { + Local0 = ^^PCI0.LPCB.EC0.TMP2 + } + } + Return (Local0) + } } diff --git a/src/mainboard/system76/addw2/Kconfig b/src/mainboard/system76/addw2/Kconfig index 1196af0f5a..da32039211 100644 --- a/src/mainboard/system76/addw2/Kconfig +++ b/src/mainboard/system76/addw2/Kconfig @@ -8,6 +8,7 @@ config BOARD_SPECIFIC_OPTIONS select DRIVERS_SYSTEM76_DGPU select EC_SYSTEM76_EC select EC_SYSTEM76_EC_COLOR_KEYBOARD + select EC_SYSTEM76_EC_DGPU select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_SMI_HANDLER diff --git a/src/mainboard/system76/bonw14/Kconfig b/src/mainboard/system76/bonw14/Kconfig index 1012073e93..f45bb15a0f 100644 --- a/src/mainboard/system76/bonw14/Kconfig +++ b/src/mainboard/system76/bonw14/Kconfig @@ -8,6 +8,7 @@ config BOARD_SPECIFIC_OPTIONS select DRIVERS_SYSTEM76_DGPU select EC_SYSTEM76_EC select EC_SYSTEM76_EC_COLOR_KEYBOARD + select EC_SYSTEM76_EC_DGPU select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_SMI_HANDLER diff --git a/src/mainboard/system76/gaze14/Kconfig b/src/mainboard/system76/gaze14/Kconfig index fffde42f8a..8b3f1e08ed 100644 --- a/src/mainboard/system76/gaze14/Kconfig +++ b/src/mainboard/system76/gaze14/Kconfig @@ -7,6 +7,7 @@ config BOARD_SPECIFIC_OPTIONS select DRIVERS_SYSTEM76_DGPU select EC_SYSTEM76_EC select EC_SYSTEM76_EC_COLOR_KEYBOARD + select EC_SYSTEM76_EC_DGPU select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_SMI_HANDLER diff --git a/src/mainboard/system76/gaze15/Kconfig b/src/mainboard/system76/gaze15/Kconfig index 0714946b5a..a5b8a94a16 100644 --- a/src/mainboard/system76/gaze15/Kconfig +++ b/src/mainboard/system76/gaze15/Kconfig @@ -7,6 +7,7 @@ config BOARD_SPECIFIC_OPTIONS select DRIVERS_SYSTEM76_DGPU select EC_SYSTEM76_EC select EC_SYSTEM76_EC_COLOR_KEYBOARD + select EC_SYSTEM76_EC_DGPU select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_SMI_HANDLER diff --git a/src/mainboard/system76/oryp6/Kconfig b/src/mainboard/system76/oryp6/Kconfig index 27b12d27cf..40a1729d06 100644 --- a/src/mainboard/system76/oryp6/Kconfig +++ b/src/mainboard/system76/oryp6/Kconfig @@ -8,6 +8,7 @@ config BOARD_SPECIFIC_OPTIONS select DRIVERS_SYSTEM76_DGPU select EC_SYSTEM76_EC select EC_SYSTEM76_EC_COLOR_KEYBOARD + select EC_SYSTEM76_EC_DGPU select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_SMI_HANDLER