Compare commits
190 Commits
2023-03-22
...
system76-4
Author | SHA1 | Date | |
---|---|---|---|
|
6392a92690 | ||
|
f7222726d6 | ||
|
de3ee05f93 | ||
|
2477843e74 | ||
|
82dec294f6 | ||
|
49d376482b | ||
|
e86eb250cf | ||
|
1cb13106c9 | ||
|
254e7dca82 | ||
|
f989ae22c9 | ||
|
58be66945f | ||
|
f450af3321 | ||
|
e92ae5d705 | ||
|
9b115ee72c | ||
|
8c9e6ad983 | ||
|
38a0553447 | ||
|
05584923bf | ||
|
0bbcbd18fc | ||
|
27ea93d87b | ||
|
08d2a35246 | ||
|
e50d173e67 | ||
|
d0c95178d7 | ||
|
6e1a07ca56 | ||
|
2cb78b9a76 | ||
|
04e48d4932 | ||
|
a7d1fea33b | ||
|
ac6accebf9 | ||
|
165f8361e0 | ||
|
6d71d60d68 | ||
|
4e601aec74 | ||
|
17978f5d37 | ||
|
e4590df96e | ||
|
686218b85c | ||
|
090a4c5cd4 | ||
|
56280b2f2b | ||
|
a01838681e | ||
|
a524d587e6 | ||
|
e6f70bdcb5 | ||
|
12803935da | ||
|
ac8331d5c2 | ||
|
116fcc0f1d | ||
|
6ea47e322a | ||
|
89494f23ca | ||
|
1c666cb8b9 | ||
|
d773694493 | ||
|
35bed98ceb | ||
|
6348127502 | ||
|
202e918a3c | ||
|
b90e4da793 | ||
|
4a387e587c | ||
|
b5433a5d55 | ||
|
648056ab36 | ||
|
08999f64a1 | ||
|
2bdc9f573a | ||
|
9b3d0ba0fc | ||
|
6b46dfabe5 | ||
|
37f7c05076 | ||
|
170299cf92 | ||
|
2a84457da0 | ||
|
f5ac4c08d3 | ||
|
a739c5311c | ||
|
e34fa2b2b9 | ||
|
a9410dbcc6 | ||
|
9c5b6e1a01 | ||
|
1688827dbf | ||
|
80c466d828 | ||
|
8bddaf1afb | ||
|
eb635f145d | ||
|
6a2b69e6fa | ||
|
a7aac6310d | ||
|
47092b8fff | ||
|
b9d556ed0f | ||
|
3fd0dd003f | ||
|
ca6cdc0d23 | ||
|
6b3721d4e6 | ||
|
68e0ae8ae4 | ||
|
ad4c8c6c63 | ||
|
8e9bf68aee | ||
|
52ba1328c2 | ||
|
af3aefab96 | ||
|
6dc4503f94 | ||
|
91b92f9ef6 | ||
|
edafbf2da6 | ||
|
4d4829b759 | ||
|
50d3283fbe | ||
|
ea967a4944 | ||
|
44c6ff2d3e | ||
|
63de4a519b | ||
|
5721233d56 | ||
|
d44b774d3a | ||
|
56058eb6ab | ||
|
b950bd1cd8 | ||
|
26918833dd | ||
|
f853b2b0d3 | ||
|
7b2129b58d | ||
|
a78fda0ef5 | ||
|
9632ad33b1 | ||
|
ea1d258dfe | ||
|
dc65d07793 | ||
|
cd7b93eaa0 | ||
|
94a948d7e4 | ||
|
8641479e72 | ||
|
d86cc5725c | ||
|
936eb85a0f | ||
|
fbf870ac4c | ||
|
2e38258030 | ||
|
075c7df95b | ||
|
f44c1868b0 | ||
|
f0eee8ddeb | ||
|
4d368e6724 | ||
|
fea9dacff2 | ||
|
d9ff1e3406 | ||
|
78bfb3931a | ||
|
1cda83efee | ||
|
24389aeccf | ||
|
f279e865e6 | ||
|
6145a2667f | ||
|
ac80c65b64 | ||
|
539e3d045c | ||
|
10b360c0d9 | ||
|
f8b75214c2 | ||
|
b127e8815a | ||
|
24793d7b14 | ||
|
5c4af52d79 | ||
|
cdcb9e08b1 | ||
|
87e8e82397 | ||
|
42d7d81a17 | ||
|
db22c8cbaf | ||
|
8d06ec5681 | ||
|
fc165748a0 | ||
|
9f0029c407 | ||
|
06047ff944 | ||
|
e9d578e29d | ||
|
3f92171818 | ||
|
dcbd17c70e | ||
|
ab39a8a55e | ||
|
7613b5d3de | ||
|
172951e8a4 | ||
|
41b92819f3 | ||
|
3fbec1478d | ||
|
b9c6e6ead0 | ||
|
2197637753 | ||
|
6da9bca331 | ||
|
2f970a0853 | ||
|
27e1e8ba90 | ||
|
fde1fd6c2b | ||
|
7c8815e9fd | ||
|
616b452a5f | ||
|
d239bd703f | ||
|
12cc34eef3 | ||
|
c0d1ef8ed7 | ||
|
6846f84bc5 | ||
|
0b4256765e | ||
|
7f4a637d96 | ||
|
1e97c67c46 | ||
|
ff7cd52733 | ||
|
3d910c5de2 | ||
|
026ab102d0 | ||
|
de47b0d2e8 | ||
|
ea9b80eeb9 | ||
|
4c05c04c7c | ||
|
c554d246ad | ||
|
5b893196a9 | ||
|
7ab6edb20e | ||
|
7c0aa8288c | ||
|
c93982f2f9 | ||
|
ed8eddec45 | ||
|
4ecff1ad73 | ||
|
33b295ba95 | ||
|
790a3edf50 | ||
|
7a43532db8 | ||
|
64ceb34f0c | ||
|
626b3c47bf | ||
|
4a9e7c2bd0 | ||
|
c23b008e1b | ||
|
ff43b58bb3 | ||
|
d73fa8d711 | ||
|
60019f9bc1 | ||
|
5e2d0c44b7 | ||
|
946cf8a924 | ||
|
16012dd753 | ||
|
d5da5eb140 | ||
|
7916559d78 | ||
|
d55060d2b0 | ||
|
6d61eca2fa | ||
|
af2c4bc3eb | ||
|
21b5e715ce | ||
|
16189781cb | ||
|
fbccafec55 | ||
|
3df3af93e2 |
2
3rdparty/intel-microcode
vendored
2
3rdparty/intel-microcode
vendored
Submodule 3rdparty/intel-microcode updated: 262f0c97f2...2be47edc99
@@ -8,3 +8,31 @@ config DRIVERS_GFX_NVIDIA_BRIDGE
|
||||
hex "PCI bridge for the GPU device"
|
||||
default 0x01
|
||||
depends on DRIVERS_GFX_NVIDIA
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
depends on DRIVERS_GFX_NVIDIA
|
||||
bool
|
||||
default n
|
||||
help
|
||||
Support for NVIDIA Dynamic Boost
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_TPP
|
||||
int "Total processor power offset from default TGP in watts"
|
||||
default 45
|
||||
depends on DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
help
|
||||
This identifies the available power for the CPU or GPU boost
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MIN
|
||||
int "Minimum TGP offset from default TGP in watts"
|
||||
default 0
|
||||
depends on DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
help
|
||||
This is used to transfer power from the GPU to the CPU
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MAX
|
||||
int "Maximum TGP offset from default TGP in watts"
|
||||
default 0
|
||||
depends on DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
help
|
||||
This is used to transfer power from the CPU to the GPU
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define NV_ERROR_UNSPECIFIED 0x80000001
|
||||
#define NV_ERROR_UNSUPPORTED 0x80000002
|
||||
|
||||
#include "gps.asl"
|
||||
#include "nvjt.asl"
|
||||
|
||||
Method (_DSM, 4, Serialized) {
|
||||
@@ -15,6 +16,13 @@ Method (_DSM, 4, Serialized) {
|
||||
Printf(" Unsupported JT revision: %o", SFST(Arg1))
|
||||
Return (NV_ERROR_UNSUPPORTED)
|
||||
}
|
||||
} ElseIf (Arg0 == ToUUID (GPS_DSM_GUID)) {
|
||||
If (ToInteger(Arg1) == GPS_REVISION_ID) {
|
||||
Return (GPS(Arg2, Arg3))
|
||||
} Else {
|
||||
Printf(" Unsupported GPS revision: %o", SFST(Arg1))
|
||||
Return (NV_ERROR_UNSUPPORTED)
|
||||
}
|
||||
} Else {
|
||||
Printf(" Unsupported GUID: %o", IDST(Arg0))
|
||||
Return (NV_ERROR_UNSPECIFIED)
|
||||
|
66
src/drivers/gfx/nvidia/acpi/common/gps.asl
Normal file
66
src/drivers/gfx/nvidia/acpi/common/gps.asl
Normal file
@@ -0,0 +1,66 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#define GPS_DSM_GUID "A3132D01-8CDA-49BA-A52E-BC9D46DF6B81"
|
||||
#define GPS_REVISION_ID 0x00000200
|
||||
#define GPS_FUNC_SUPPORT 0x00000000
|
||||
#define GPS_FUNC_PSHARESTATUS 0x00000020
|
||||
#define GPS_FUNC_PSHAREPARAMS 0x0000002A
|
||||
|
||||
Method(GPS, 2, Serialized) {
|
||||
Printf(" GPU GPS")
|
||||
Switch(ToInteger(Arg0)) {
|
||||
Case(GPS_FUNC_SUPPORT) {
|
||||
Printf(" Supported Functions")
|
||||
Return(ITOB(
|
||||
(1 << GPS_FUNC_SUPPORT) |
|
||||
(1 << GPS_FUNC_PSHARESTATUS) |
|
||||
(1 << GPS_FUNC_PSHAREPARAMS)
|
||||
))
|
||||
}
|
||||
Case(GPS_FUNC_PSHARESTATUS) {
|
||||
Printf(" Power Share Status")
|
||||
Return(ITOB(0))
|
||||
}
|
||||
Case(GPS_FUNC_PSHAREPARAMS) {
|
||||
Printf(" Power Share Parameters")
|
||||
|
||||
CreateField(Arg1, 0, 4, QTYP) // Query type
|
||||
|
||||
Name(GPSP, Buffer(36) { 0x00 })
|
||||
CreateDWordField(GPSP, 0, RSTS) // Response status
|
||||
CreateDWordField(GPSP, 4, VERS) // Version
|
||||
|
||||
// Set query type of response
|
||||
RSTS = QTYP
|
||||
// Set version of response
|
||||
VERS = 0x00010000
|
||||
|
||||
Switch(ToInteger(QTYP)) {
|
||||
Case(0) {
|
||||
Printf(" Request Current Information")
|
||||
// No required information
|
||||
Return(GPSP)
|
||||
}
|
||||
Case(1) {
|
||||
Printf(" Request Supported Fields")
|
||||
// Support GPU temperature field
|
||||
RSTS |= (1 << 8)
|
||||
Return(GPSP)
|
||||
}
|
||||
Case(2) {
|
||||
Printf(" Request Current Limits")
|
||||
// No required limits
|
||||
Return(GPSP)
|
||||
}
|
||||
Default {
|
||||
Printf(" Unknown Query: %o", SFST(QTYP))
|
||||
Return(NV_ERROR_UNSUPPORTED)
|
||||
}
|
||||
}
|
||||
}
|
||||
Default {
|
||||
Printf(" Unsupported function: %o", SFST(Arg0))
|
||||
Return(NV_ERROR_UNSUPPORTED)
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,3 +7,12 @@ Device (DEV0) {
|
||||
#include "dsm.asl"
|
||||
#include "power.asl"
|
||||
}
|
||||
|
||||
#if CONFIG(DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST)
|
||||
Scope (\_SB) {
|
||||
Device(NPCF) {
|
||||
#include "utility.asl"
|
||||
#include "nvpcf.asl"
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
111
src/drivers/gfx/nvidia/acpi/common/nvpcf.asl
Normal file
111
src/drivers/gfx/nvidia/acpi/common/nvpcf.asl
Normal file
@@ -0,0 +1,111 @@
|
||||
#define NVPCF_DSM_GUID "36b49710-2483-11e7-9598-0800200c9a66"
|
||||
#define NVPCF_REVISION_ID 0x00000200
|
||||
#define NVPCF_ERROR_SUCCESS 0x0
|
||||
#define NVPCF_ERROR_GENERIC 0x80000001
|
||||
#define NVPCF_ERROR_UNSUPPORTED 0x80000002
|
||||
#define NVPCF_FUNC_GET_SUPPORTED 0x00000000
|
||||
#define NVPCF_FUNC_GET_STATIC_CONFIG_TABLES 0x00000001
|
||||
#define NVPCF_FUNC_UPDATE_DYNAMIC_PARAMS 0x00000002
|
||||
|
||||
Name(_HID, "NVDA0820")
|
||||
|
||||
Name(_UID, "NPCF")
|
||||
|
||||
Method(_DSM, 4, Serialized) {
|
||||
Printf("NVPCF _DSM")
|
||||
If (Arg0 == ToUUID(NVPCF_DSM_GUID)) {
|
||||
If (ToInteger(Arg1) == NVPCF_REVISION_ID) {
|
||||
Return(NPCF(Arg2, Arg3))
|
||||
} Else {
|
||||
Printf(" Unsupported NVPCF revision: %o", SFST(Arg1))
|
||||
Return(NVPCF_ERROR_GENERIC)
|
||||
}
|
||||
} Else {
|
||||
Printf(" Unsupported GUID: %o", IDST(Arg0))
|
||||
Return(NVPCF_ERROR_GENERIC)
|
||||
}
|
||||
}
|
||||
|
||||
Method(NPCF, 2, Serialized) {
|
||||
Printf(" NVPCF NPCF")
|
||||
Switch(ToInteger(Arg0)) {
|
||||
Case(NVPCF_FUNC_GET_SUPPORTED) {
|
||||
Printf(" Supported Functions")
|
||||
Return(ITOB(
|
||||
(1 << NVPCF_FUNC_GET_SUPPORTED) |
|
||||
(1 << NVPCF_FUNC_GET_STATIC_CONFIG_TABLES) |
|
||||
(1 << NVPCF_FUNC_UPDATE_DYNAMIC_PARAMS)
|
||||
))
|
||||
}
|
||||
Case(NVPCF_FUNC_GET_STATIC_CONFIG_TABLES) {
|
||||
Printf(" Get Static Config")
|
||||
Return(Buffer(14) {
|
||||
// Device table header
|
||||
0x20, 0x03, 0x01,
|
||||
// Intel + NVIDIA
|
||||
0x00,
|
||||
// Controller table header
|
||||
0x23, 0x04, 0x05, 0x01,
|
||||
// Dynamic boost controller
|
||||
0x01,
|
||||
// Supports DC
|
||||
0x01,
|
||||
// Reserved
|
||||
0x00, 0x00, 0x00,
|
||||
// Checksum
|
||||
0xAD
|
||||
})
|
||||
}
|
||||
Case(NVPCF_FUNC_UPDATE_DYNAMIC_PARAMS) {
|
||||
Printf(" Update Dynamic Boost")
|
||||
|
||||
CreateField(Arg1, 0x28, 2, ICMD) // Input command
|
||||
|
||||
Name(PCFP, Buffer(49) {
|
||||
// Table version
|
||||
0x23,
|
||||
// Table header size
|
||||
0x05,
|
||||
// Size of common status in bytes
|
||||
0x10,
|
||||
// Size of controller entry in bytes
|
||||
0x1C,
|
||||
// Other fields filled in later
|
||||
})
|
||||
CreateByteField(PCFP, 0x04, CCNT) // Controller count
|
||||
CreateWordField(PCFP, 0x19, ATPP) // AC TPP offset
|
||||
CreateWordField(PCFP, 0x1D, AMXP) // AC maximum TGP offset
|
||||
CreateWordField(PCFP, 0x21, AMNP) // AC minimum TGP offset
|
||||
|
||||
Switch(ToInteger(ICMD)) {
|
||||
Case(0) {
|
||||
Printf(" Get Controller Params")
|
||||
// Number of controllers
|
||||
CCNT = 1
|
||||
// AC total processor power offset from default TGP in 1/8 watt units
|
||||
ATPP = (CONFIG_DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_TPP << 3)
|
||||
// AC maximum TGP offset from default TGP in 1/8 watt units
|
||||
AMXP = (CONFIG_DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MAX << 3)
|
||||
// AC minimum TGP offset from default TGP in 1/8 watt units
|
||||
AMNP = (CONFIG_DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MIN << 3)
|
||||
Printf("PCFP: %o", SFST(PCFP))
|
||||
Return(PCFP)
|
||||
}
|
||||
Case(1) {
|
||||
Printf(" Set Controller Status")
|
||||
//TODO
|
||||
Printf("PCFP: %o", SFST(PCFP))
|
||||
Return(PCFP)
|
||||
}
|
||||
Default {
|
||||
Printf(" Unknown Input Command: %o", SFST(ICMD))
|
||||
Return(NV_ERROR_UNSUPPORTED)
|
||||
}
|
||||
}
|
||||
}
|
||||
Default {
|
||||
Printf(" Unsupported function: %o", SFST(Arg0))
|
||||
Return(NVPCF_ERROR_UNSUPPORTED)
|
||||
}
|
||||
}
|
||||
}
|
@@ -19,15 +19,15 @@ void nvidia_set_power(const struct nvidia_gpu_config *config)
|
||||
printk(BIOS_DEBUG, "%s: GPU_RST# = %d\n", __func__, config->reset_gpio);
|
||||
|
||||
gpio_set(config->reset_gpio, 0);
|
||||
mdelay(4);
|
||||
mdelay(10);
|
||||
|
||||
if (config->enable) {
|
||||
gpio_set(config->power_gpio, 1);
|
||||
mdelay(4);
|
||||
mdelay(25);
|
||||
gpio_set(config->reset_gpio, 1);
|
||||
} else {
|
||||
gpio_set(config->power_gpio, 0);
|
||||
}
|
||||
|
||||
mdelay(4);
|
||||
mdelay(10);
|
||||
}
|
||||
|
5
src/drivers/intel/dtbt/Kconfig
Normal file
5
src/drivers/intel/dtbt/Kconfig
Normal file
@@ -0,0 +1,5 @@
|
||||
config DRIVERS_INTEL_DTBT
|
||||
bool
|
||||
default n
|
||||
help
|
||||
Support for discrete Thunderbolt controllers
|
3
src/drivers/intel/dtbt/Makefile.inc
Normal file
3
src/drivers/intel/dtbt/Makefile.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
ramstage-$(CONFIG_DRIVERS_INTEL_DTBT) += dtbt.c
|
8
src/drivers/intel/dtbt/chip.h
Normal file
8
src/drivers/intel/dtbt/chip.h
Normal file
@@ -0,0 +1,8 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifndef _DRIVERS_INTEL_DTBT_CHIP_H_
|
||||
#define _DRIVERS_INTEL_DTBT_CHIP_H_
|
||||
|
||||
struct drivers_intel_dtbt_config {};
|
||||
|
||||
#endif /* _DRIVERS_INTEL_DTBT_CHIP_H_ */
|
212
src/drivers/intel/dtbt/dtbt.c
Normal file
212
src/drivers/intel/dtbt/dtbt.c
Normal file
@@ -0,0 +1,212 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include "chip.h"
|
||||
#include <acpi/acpigen.h>
|
||||
#include <console/console.h>
|
||||
#include <delay.h>
|
||||
#include <device/device.h>
|
||||
#include <device/pci.h>
|
||||
#include <device/pciexp.h>
|
||||
#include <device/pci_ids.h>
|
||||
|
||||
#define PCIE2TBT 0x54C
|
||||
#define PCIE2TBT_GO2SX ((0x02 << 1) | 1)
|
||||
#define PCIE2TBT_GO2SX_NO_WAKE ((0x03 << 1) | 1)
|
||||
#define PCIE2TBT_SX_EXIT_TBT_CONNECTED ((0x04 << 1) | 1)
|
||||
#define PCIE2TBT_SX_EXIT_NO_TBT_CONNECTED ((0x05 << 1) | 1)
|
||||
#define PCIE2TBT_SET_SECURITY_LEVEL ((0x08 << 1) | 1)
|
||||
#define PCIE2TBT_GET_SECURITY_LEVEL ((0x09 << 1) | 1)
|
||||
#define PCIE2TBT_BOOT_ON ((0x18 << 1) | 1)
|
||||
#define TBT2PCIE 0x548
|
||||
|
||||
static void dtbt_cmd(struct device *dev, u32 command) {
|
||||
printk(BIOS_INFO, "DTBT send command %08x\n", command);
|
||||
|
||||
pci_write_config32(dev, PCIE2TBT, command);
|
||||
|
||||
u32 timeout;
|
||||
u32 status;
|
||||
for (timeout = 1000000; timeout > 0; timeout--) {
|
||||
status = pci_read_config32(dev, TBT2PCIE);
|
||||
if (status & 1) {
|
||||
break;
|
||||
}
|
||||
udelay(1);
|
||||
}
|
||||
if (timeout == 0) {
|
||||
printk(BIOS_ERR, "DTBT command %08x timeout on status %08x\n", command, status);
|
||||
}
|
||||
|
||||
printk(BIOS_INFO, "DTBT command %08x status %08x\n", command, status);
|
||||
|
||||
pci_write_config32(dev, PCIE2TBT, 0);
|
||||
|
||||
u32 status_clear;
|
||||
for (timeout = 1000000; timeout > 0; timeout--) {
|
||||
status_clear = pci_read_config32(dev, TBT2PCIE);
|
||||
if (!(status_clear & 1)) {
|
||||
break;
|
||||
}
|
||||
udelay(1);
|
||||
}
|
||||
if (timeout == 0) {
|
||||
printk(BIOS_ERR, "DTBT command %08x timeout on status clear %08x\n", command, status_clear);
|
||||
}
|
||||
}
|
||||
|
||||
static void dtbt_fill_ssdt(const struct device *dev) {
|
||||
printk(BIOS_INFO, "DTBT fill SSDT\n");
|
||||
|
||||
if (!dev) {
|
||||
printk(BIOS_ERR, "DTBT device invalid\n");
|
||||
}
|
||||
printk(BIOS_INFO, " Dev %s\n", dev_path(dev));
|
||||
|
||||
struct bus *bus = dev->bus;
|
||||
if (!bus) {
|
||||
printk(BIOS_ERR, "DTBT bus invalid\n");
|
||||
}
|
||||
printk(BIOS_INFO, " Bus %s\n", bus_path(bus));
|
||||
|
||||
struct device *parent = bus->dev;
|
||||
if (!parent || parent->path.type != DEVICE_PATH_PCI) {
|
||||
printk(BIOS_ERR, "DTBT parent invalid\n");
|
||||
return;
|
||||
}
|
||||
printk(BIOS_INFO, " Parent %s\n", dev_path(parent));
|
||||
|
||||
const char *parent_scope = acpi_device_path(parent);
|
||||
if (!parent_scope) {
|
||||
printk(BIOS_ERR, "DTBT parent scope not valid\n");
|
||||
return;
|
||||
}
|
||||
|
||||
{ /* Scope */
|
||||
printk(BIOS_INFO, " Scope %s\n", parent_scope);
|
||||
acpigen_write_scope(parent_scope);
|
||||
|
||||
struct acpi_dp *dsd = acpi_dp_new_table("_DSD");
|
||||
|
||||
/* Indicate that device supports hotplug in D3. */
|
||||
acpi_device_add_hotplug_support_in_d3(dsd);
|
||||
|
||||
/* Indicate that port is external. */
|
||||
acpi_device_add_external_facing_port(dsd);
|
||||
|
||||
acpi_dp_write(dsd);
|
||||
|
||||
{ /* Device */
|
||||
const char *dev_name = acpi_device_name(dev);
|
||||
printk(BIOS_INFO, " Device %s\n", dev_name);
|
||||
acpigen_write_device(dev_name);
|
||||
|
||||
acpigen_write_name_integer("_ADR", 0);
|
||||
|
||||
uintptr_t mmconf_base = (uintptr_t)CONFIG_ECAM_MMCONF_BASE_ADDRESS
|
||||
+ (((uintptr_t)(bus->secondary)) << 20);
|
||||
printk(BIOS_INFO, " MMCONF base %08lx\n", mmconf_base);
|
||||
const struct opregion opregion = OPREGION("PXCS", SYSTEMMEMORY, mmconf_base, 0x1000);
|
||||
const struct fieldlist fieldlist[] = {
|
||||
FIELDLIST_OFFSET(TBT2PCIE),
|
||||
FIELDLIST_NAMESTR("TB2P", 32),
|
||||
FIELDLIST_OFFSET(PCIE2TBT),
|
||||
FIELDLIST_NAMESTR("P2TB", 32),
|
||||
};
|
||||
acpigen_write_opregion(&opregion);
|
||||
acpigen_write_field("PXCS", fieldlist, ARRAY_SIZE(fieldlist),
|
||||
FIELD_DWORDACC | FIELD_NOLOCK | FIELD_PRESERVE);
|
||||
|
||||
{ /* Method */
|
||||
acpigen_write_method_serialized("PTS", 0);
|
||||
|
||||
acpigen_write_debug_string("DTBT prepare to sleep");
|
||||
|
||||
acpigen_write_store_int_to_namestr(PCIE2TBT_GO2SX_NO_WAKE, "P2TB");
|
||||
acpigen_write_delay_until_namestr_int(600, "TB2P", PCIE2TBT_GO2SX_NO_WAKE);
|
||||
|
||||
acpigen_write_debug_namestr("TB2P");
|
||||
|
||||
acpigen_write_store_int_to_namestr(0, "P2TB");
|
||||
acpigen_write_delay_until_namestr_int(600, "TB2P", 0);
|
||||
|
||||
acpigen_write_debug_namestr("TB2P");
|
||||
|
||||
acpigen_write_method_end();
|
||||
}
|
||||
|
||||
acpigen_write_device_end();
|
||||
}
|
||||
|
||||
acpigen_write_scope_end();
|
||||
}
|
||||
|
||||
{ /* Scope */
|
||||
acpigen_write_scope("\\");
|
||||
|
||||
{ /* Method */
|
||||
acpigen_write_method("TBTS", 0);
|
||||
|
||||
acpigen_emit_namestring(acpi_device_path_join(dev, "PTS"));
|
||||
|
||||
acpigen_write_method_end();
|
||||
}
|
||||
|
||||
acpigen_write_scope_end();
|
||||
}
|
||||
}
|
||||
|
||||
static const char *dtbt_acpi_name(const struct device *dev) {
|
||||
return "DTBT";
|
||||
}
|
||||
|
||||
static struct pci_operations dtbt_device_ops_pci = {
|
||||
.set_subsystem = 0,
|
||||
};
|
||||
|
||||
static struct device_operations dtbt_device_ops = {
|
||||
.read_resources = pci_bus_read_resources,
|
||||
.set_resources = pci_dev_set_resources,
|
||||
.enable_resources = pci_bus_enable_resources,
|
||||
.acpi_fill_ssdt = dtbt_fill_ssdt,
|
||||
.acpi_name = dtbt_acpi_name,
|
||||
.scan_bus = pciexp_scan_bridge,
|
||||
.reset_bus = pci_bus_reset,
|
||||
.ops_pci = &dtbt_device_ops_pci,
|
||||
};
|
||||
|
||||
static void dtbt_enable(struct device *dev)
|
||||
{
|
||||
if (!is_dev_enabled(dev) || dev->path.type != DEVICE_PATH_PCI)
|
||||
return;
|
||||
|
||||
if (pci_read_config16(dev, PCI_VENDOR_ID) != PCI_VID_INTEL)
|
||||
return;
|
||||
|
||||
//TODO: check device ID
|
||||
|
||||
dev->ops = &dtbt_device_ops;
|
||||
|
||||
printk(BIOS_INFO, "DTBT controller found at %s\n", dev_path(dev));
|
||||
|
||||
printk(BIOS_INFO, "DTBT get security level\n");
|
||||
dtbt_cmd(dev, PCIE2TBT_GET_SECURITY_LEVEL);
|
||||
|
||||
printk(BIOS_INFO, "DTBT set security level SL0\n");
|
||||
dtbt_cmd(dev, PCIE2TBT_SET_SECURITY_LEVEL);
|
||||
|
||||
printk(BIOS_INFO, "DTBT get security level\n");
|
||||
dtbt_cmd(dev, PCIE2TBT_GET_SECURITY_LEVEL);
|
||||
|
||||
if (acpi_is_wakeup_s3()) {
|
||||
printk(BIOS_INFO, "DTBT SX exit\n");
|
||||
dtbt_cmd(dev, PCIE2TBT_SX_EXIT_TBT_CONNECTED);
|
||||
} else {
|
||||
printk(BIOS_INFO, "DTBT boot on\n");
|
||||
dtbt_cmd(dev, PCIE2TBT_BOOT_ON);
|
||||
}
|
||||
}
|
||||
|
||||
struct chip_operations drivers_intel_dtbt_ops = {
|
||||
CHIP_NAME("Intel Discrete Thunderbolt Device")
|
||||
.enable_dev = dtbt_enable
|
||||
};
|
@@ -114,6 +114,7 @@ static const struct device_name infineon_devices[] = {
|
||||
#if CONFIG(TPM2)
|
||||
{0x001a, "SLB9665 TT 2.0"},
|
||||
{0x001b, "SLB9670 TT 2.0"},
|
||||
{0x001d, "SLB9672 TT 2.0"},
|
||||
#else
|
||||
{0x001a, "SLB9660 TT 1.2"},
|
||||
{0x001b, "SLB9670 TT 1.2"},
|
||||
|
@@ -57,18 +57,22 @@ static void init_store(void *unused)
|
||||
|
||||
printk(BIOS_INFO, "SMMSTORE: Setting up SMI handler\n");
|
||||
|
||||
/* Issue SMI using APM to update the com buffer and to lock the SMMSTORE */
|
||||
__asm__ __volatile__ (
|
||||
"outb %%al, %%dx"
|
||||
: "=a" (eax)
|
||||
: "a" ((SMMSTORE_CMD_INIT << 8) | APM_CNT_SMMSTORE),
|
||||
"b" (ebx),
|
||||
"d" (APM_CNT)
|
||||
: "memory");
|
||||
for (int retries = 0; retries < 3; retries++) {
|
||||
/* Issue SMI using APM to update the com buffer and to lock the SMMSTORE */
|
||||
__asm__ __volatile__ (
|
||||
"outb %%al, %%dx"
|
||||
: "=a" (eax)
|
||||
: "a" ((SMMSTORE_CMD_INIT << 8) | APM_CNT_SMMSTORE),
|
||||
"b" (ebx),
|
||||
"d" (APM_CNT)
|
||||
: "memory");
|
||||
|
||||
if (eax != SMMSTORE_RET_SUCCESS) {
|
||||
printk(BIOS_ERR, "SMMSTORE: Failed to install com buffer\n");
|
||||
return;
|
||||
if (eax == SMMSTORE_RET_SUCCESS) {
|
||||
printk(BIOS_INFO, "SMMSTORE: Installed com buffer\n");
|
||||
break;
|
||||
}
|
||||
|
||||
printk(BIOS_ERR, "SMMSTORE: Failed to install com buffer: 0x%x\n", eax);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -8,12 +8,12 @@ config EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
bool
|
||||
default y
|
||||
|
||||
config EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
config EC_SYSTEM76_EC_DGPU
|
||||
depends on EC_SYSTEM76_EC
|
||||
bool
|
||||
default n
|
||||
|
||||
config EC_SYSTEM76_EC_DGPU
|
||||
config EC_SYSTEM76_EC_LOCKDOWN
|
||||
depends on EC_SYSTEM76_EC
|
||||
bool
|
||||
default n
|
||||
|
@@ -2,6 +2,7 @@
|
||||
ifeq ($(CONFIG_EC_SYSTEM76_EC),y)
|
||||
|
||||
all-y += system76_ec.c
|
||||
ramstage-$(CONFIG_EC_SYSTEM76_EC_LOCKDOWN) += lockdown.c
|
||||
smm-$(CONFIG_DEBUG_SMI) += system76_ec.c
|
||||
|
||||
endif
|
||||
|
@@ -90,9 +90,6 @@ Device (\_SB.PCI0.LPCB.EC0)
|
||||
// Notify of changes
|
||||
Notify(^^^^AC, 0)
|
||||
Notify(^^^^BAT0, 0)
|
||||
|
||||
// Reset System76 Device
|
||||
^^^^S76D.RSET()
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -16,10 +16,8 @@ Device (S76D) {
|
||||
Method (RSET, 0, Serialized) {
|
||||
Printf ("S76D: RSET")
|
||||
SAPL(0)
|
||||
SKBL(0)
|
||||
#if CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||
SKBC(0xFFFFFF)
|
||||
#endif // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||
SKBB(0)
|
||||
SKBC(0xFFFFFF)
|
||||
}
|
||||
|
||||
Method (INIT, 0, Serialized) {
|
||||
@@ -67,53 +65,63 @@ Device (S76D) {
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||
// Set KB LED Brightness
|
||||
Method (SKBL, 1, Serialized) {
|
||||
// Get Keyboard Backlight Kind
|
||||
// 0 - No backlight
|
||||
// 1 - White backlight
|
||||
// 2 - RGB backlight
|
||||
Method (GKBK, 0, Serialized) {
|
||||
Local0 = 0
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 6
|
||||
^^PCI0.LPCB.EC0.FBUF = Arg0
|
||||
^^PCI0.LPCB.EC0.FBF1 = 0
|
||||
^^PCI0.LPCB.EC0.FBF2 = Arg0
|
||||
^^PCI0.LPCB.EC0.FDAT = 2
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
Local0 = ^^PCI0.LPCB.EC0.FBUF
|
||||
}
|
||||
Return (Local0)
|
||||
}
|
||||
|
||||
// Set Keyboard Color
|
||||
Method (SKBC, 1, Serialized) {
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 0x3
|
||||
^^PCI0.LPCB.EC0.FBUF = (Arg0 & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FBF1 = ((Arg0 >> 16) & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FBF2 = ((Arg0 >> 8) & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
Return (Arg0)
|
||||
} Else {
|
||||
Return (0)
|
||||
}
|
||||
}
|
||||
#else // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||
// Get KB LED
|
||||
Method (GKBL, 0, Serialized) {
|
||||
// Get Keyboard Brightness
|
||||
Method (GKBB, 0, Serialized) {
|
||||
Local0 = 0
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 1
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
Local0 = ^^PCI0.LPCB.EC0.FBUF
|
||||
^^PCI0.LPCB.EC0.FCMD = 0
|
||||
}
|
||||
Return (Local0)
|
||||
}
|
||||
|
||||
// Set KB Led
|
||||
Method (SKBL, 1, Serialized) {
|
||||
// Set Keyboard Brightness
|
||||
Method (SKBB, 1, Serialized) {
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 0
|
||||
^^PCI0.LPCB.EC0.FBUF = Arg0
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
}
|
||||
}
|
||||
#endif // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||
|
||||
// Get Keyboard Color
|
||||
Method (GKBC, 0, Serialized) {
|
||||
Local0 = 0
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 4
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
Local0 = ^^PCI0.LPCB.EC0.FBUF
|
||||
Local0 |= (^^PCI0.LPCB.EC0.FBF1) << 16
|
||||
Local0 |= (^^PCI0.LPCB.EC0.FBF2) << 8
|
||||
}
|
||||
Return (Local0)
|
||||
}
|
||||
|
||||
// Set Keyboard Color
|
||||
Method (SKBC, 1, Serialized) {
|
||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||
^^PCI0.LPCB.EC0.FDAT = 3
|
||||
^^PCI0.LPCB.EC0.FBUF = (Arg0 & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FBF1 = ((Arg0 >> 16) & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FBF2 = ((Arg0 >> 8) & 0xFF)
|
||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||
}
|
||||
}
|
||||
|
||||
// Fan names
|
||||
Method (NFAN, 0, Serialized) {
|
||||
|
61
src/ec/system76/ec/lockdown.c
Normal file
61
src/ec/system76/ec/lockdown.c
Normal file
@@ -0,0 +1,61 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <bootstate.h>
|
||||
#include <commonlib/region.h>
|
||||
#include <fmap.h>
|
||||
#include <spi_flash.h>
|
||||
|
||||
#include "system76_ec.h"
|
||||
|
||||
static int protect_region_by_name(const char *name)
|
||||
{
|
||||
int res;
|
||||
struct region region;
|
||||
|
||||
res = fmap_locate_area(name, ®ion);
|
||||
if (res < 0) {
|
||||
printk(BIOS_ERR, "fmap_locate_area '%s' failed: %d\n", name, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
res = spi_flash_ctrlr_protect_region(
|
||||
boot_device_spi_flash(),
|
||||
®ion,
|
||||
WRITE_PROTECT
|
||||
);
|
||||
if (res < 0) {
|
||||
printk(BIOS_ERR, "spi_flash_ctrlr_protect_region '%s' failed: %d\n", name, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
printk(BIOS_INFO, "protected '%s'\n", name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void lock(void *unused)
|
||||
{
|
||||
uint8_t state = SYSTEM76_EC_SECURITY_STATE_UNLOCK;
|
||||
if (system76_ec_security_get(&state) < 0) {
|
||||
printk(BIOS_INFO, "failed to get security state, assuming unlocked\n");
|
||||
state = SYSTEM76_EC_SECURITY_STATE_UNLOCK;
|
||||
}
|
||||
|
||||
printk(BIOS_INFO, "security state: %d\n", state);
|
||||
if (state != SYSTEM76_EC_SECURITY_STATE_UNLOCK) {
|
||||
// Protect WP_RO region, which should contain FMAP and COREBOOT
|
||||
protect_region_by_name("WP_RO");
|
||||
// Protect RW_MRC_CACHE region, this must be done after it is written
|
||||
protect_region_by_name("RW_MRC_CACHE");
|
||||
//TODO: protect entire flash except when in SMM?
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Keep in sync with mrc_cache.c
|
||||
*/
|
||||
|
||||
#if CONFIG(MRC_WRITE_NV_LATE)
|
||||
BOOT_STATE_INIT_ENTRY(BS_OS_RESUME_CHECK, BS_ON_EXIT, lock, NULL);
|
||||
#else
|
||||
BOOT_STATE_INIT_ENTRY(BS_DEV_RESOURCES, BS_ON_ENTRY, lock, NULL);
|
||||
#endif
|
@@ -3,6 +3,7 @@
|
||||
#include <arch/io.h>
|
||||
#include <console/system76_ec.h>
|
||||
#include <timer.h>
|
||||
#include "system76_ec.h"
|
||||
|
||||
// This is the command region for System76 EC firmware. It must be
|
||||
// enabled for LPC in the mainboard.
|
||||
@@ -11,15 +12,22 @@
|
||||
|
||||
#define REG_CMD 0
|
||||
#define REG_RESULT 1
|
||||
#define REG_DATA 2
|
||||
|
||||
// When command register is 0, command is complete
|
||||
#define CMD_FINISHED 0
|
||||
|
||||
// Print command. Registers are unique for each command
|
||||
#define CMD_PRINT 4
|
||||
#define CMD_PRINT_REG_FLAGS 2
|
||||
#define CMD_PRINT_REG_LEN 3
|
||||
#define CMD_PRINT_REG_DATA 4
|
||||
#define CMD_PRINT_REG_FLAGS REG_DATA
|
||||
#define CMD_PRINT_REG_LEN (REG_DATA + 1)
|
||||
#define CMD_PRINT_REG_DATA (REG_DATA + 2)
|
||||
|
||||
// Get security state command
|
||||
#define CMD_SECURITY_GET 20
|
||||
|
||||
// OK result, any other values are errors
|
||||
#define RESULT_OK 0
|
||||
|
||||
static inline uint8_t system76_ec_read(uint8_t addr)
|
||||
{
|
||||
@@ -59,3 +67,81 @@ void system76_ec_print(uint8_t byte)
|
||||
if (byte == '\n' || len >= (SYSTEM76_EC_SIZE - CMD_PRINT_REG_DATA))
|
||||
system76_ec_flush();
|
||||
}
|
||||
|
||||
// Issue a command not checking if the console needs to be flushed
|
||||
// Do not print from this command to avoid EC protocol issues
|
||||
static int system76_ec_unsafe(uint8_t cmd, uint8_t * data, int length) {
|
||||
// Error if length is too long
|
||||
if (length > (SYSTEM76_EC_SIZE - REG_DATA)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Error if command is in progress
|
||||
if (system76_ec_read(REG_CMD) != CMD_FINISHED) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Write command data
|
||||
for (int i = 0; i < length; i++) {
|
||||
system76_ec_write(REG_DATA + i, data[i]);
|
||||
}
|
||||
|
||||
// Start command
|
||||
system76_ec_write(REG_CMD, cmd);
|
||||
|
||||
// Wait for command completion, for up to 10 milliseconds, with a
|
||||
// test period of 1 microsecond
|
||||
wait_us(10000, system76_ec_read(REG_CMD) == CMD_FINISHED);
|
||||
|
||||
// Error if command did not complete
|
||||
if (system76_ec_read(REG_CMD) != CMD_FINISHED) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Read command data
|
||||
for (int i = 0; i < length; i++) {
|
||||
data[i] = system76_ec_read(REG_DATA + i);
|
||||
}
|
||||
|
||||
// Check result
|
||||
if (system76_ec_read(REG_RESULT) != RESULT_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Wrapper to allow issuing commands while console is being used
|
||||
// Do not print from this command to avoid EC protocol issues
|
||||
static int system76_ec_command(uint8_t cmd, uint8_t * data, int length) {
|
||||
// Error if command is in progress
|
||||
if (system76_ec_read(REG_CMD) != CMD_FINISHED) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Flush print buffer if it has data
|
||||
// Checked for completion by system76_ec_unsafe
|
||||
if (system76_ec_read(CMD_PRINT_REG_LEN) > 0) {
|
||||
system76_ec_flush();
|
||||
}
|
||||
|
||||
// Run command now that print buffer is flushed
|
||||
int res = system76_ec_unsafe(cmd, data, length);
|
||||
if (res < 0) {
|
||||
return res;
|
||||
}
|
||||
|
||||
// Clear command data (for future prints)
|
||||
// Length is checked by system76_ec_unsafe
|
||||
for (int i = 0; i < length; i++) {
|
||||
system76_ec_write(REG_DATA + i, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Get security state
|
||||
int system76_ec_security_get(uint8_t * state) {
|
||||
*state = 0;
|
||||
return system76_ec_command(CMD_SECURITY_GET, state, sizeof(uint8_t));
|
||||
}
|
||||
|
16
src/ec/system76/ec/system76_ec.h
Normal file
16
src/ec/system76/ec/system76_ec.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef EC_SYSTEM76_EC_H
|
||||
#define EC_SYSTEM76_EC_H
|
||||
|
||||
// Default value, flashing is prevented, cannot be set with CMD_SECURITY_SET
|
||||
#define SYSTEM76_EC_SECURITY_STATE_LOCK 0
|
||||
// Flashing is allowed, cannot be set with CMD_SECURITY_SET
|
||||
#define SYSTEM76_EC_SECURITY_STATE_UNLOCK 1
|
||||
// Flashing will be prevented on the next reboot
|
||||
#define SYSTEM76_EC_SECURITY_STATE_PREPARE_LOCK 2
|
||||
// Flashing will be allowed on the next reboot
|
||||
#define SYSTEM76_EC_SECURITY_STATE_PREPARE_UNLOCK 3
|
||||
|
||||
// Get security state
|
||||
int system76_ec_security_get(uint8_t * state);
|
||||
|
||||
#endif /* EC_SYSTEM76_EC_H */
|
@@ -62,7 +62,11 @@
|
||||
#define CPUID_ALDERLAKE_N_A0 0xb06e0
|
||||
#define CPUID_METEORLAKE_A0_1 0xa06a0
|
||||
#define CPUID_METEORLAKE_A0_2 0xa06a1
|
||||
#define CPUID_RAPTORLAKE_P_J0 0xb06a2
|
||||
#define CPUID_RAPTORLAKE_P_Q0 0xb06a3
|
||||
#define CPUID_RAPTORLAKE_E_S_HX_B0 0xb0671
|
||||
#define CPUID_RAPTORLAKE_HX_S_8_8_C0 0xb06f2
|
||||
#define CPUID_RAPTORLAKE_H_P_J0 0xb06a2
|
||||
#define CPUID_RAPTORLAKE_S_6_0_C0 0xb06f5
|
||||
#define CPUID_RAPTORLAKE_S_A0 0xb0670
|
||||
#define CPUID_RAPTORLAKE_U_Q0 0xb06a3
|
||||
|
||||
#endif /* CPU_INTEL_CPU_IDS_H */
|
||||
|
@@ -3462,6 +3462,35 @@
|
||||
#define PCI_DID_INTEL_RPL_P_PCIE_RP2 0xa70d
|
||||
#define PCI_DID_INTEL_RPL_P_PCIE_RP3 0xa72d
|
||||
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP1 0x7a38
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP2 0x7a39
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP3 0x7a3a
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP4 0x7a3b
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP5 0x7a3c
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP6 0x7a3d
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP7 0x7a3e
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP8 0x7a3f
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP9 0x7a30
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP10 0x7a31
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP11 0x7a32
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP12 0x7a33
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP13 0x7a34
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP14 0x7a35
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP15 0x7a36
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP16 0x7a37
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP17 0x7a40
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP18 0x7a41
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP19 0x7a42
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP20 0x7a43
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP21 0x7a44
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP22 0x7a45
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP23 0x7a46
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP24 0x7a47
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP25 0x7a48
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP26 0x7a49
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP27 0x7a4a
|
||||
#define PCI_DID_INTEL_RPP_S_PCIE_RP28 0x7a4b
|
||||
|
||||
/* Intel SATA device Ids */
|
||||
#define PCI_DID_INTEL_LPT_H_DESKTOP_SATA_IDE 0x8c00
|
||||
#define PCI_DID_INTEL_LPT_H_DESKTOP_SATA_AHCI 0x8c02
|
||||
@@ -3536,6 +3565,7 @@
|
||||
#define PCI_DID_INTEL_MTL_SATA 0x7e63
|
||||
#define PCI_DID_INTEL_RPP_P_SATA_1 0x51d3
|
||||
#define PCI_DID_INTEL_RPP_P_SATA_2 0x51d7
|
||||
#define PCI_DID_INTEL_RPP_S_SATA 0x7a62
|
||||
|
||||
/* Intel PMC device Ids */
|
||||
#define PCI_DID_INTEL_SPT_LP_PMC 0x9d21
|
||||
@@ -3671,6 +3701,13 @@
|
||||
#define PCI_DID_INTEL_ADP_M_N_I2C4 0x54c5
|
||||
#define PCI_DID_INTEL_ADP_M_N_I2C5 0x54c6
|
||||
|
||||
#define PCI_DID_INTEL_RPP_S_I2C0 0x7a4c
|
||||
#define PCI_DID_INTEL_RPP_S_I2C1 0x7a4d
|
||||
#define PCI_DID_INTEL_RPP_S_I2C2 0x7a4e
|
||||
#define PCI_DID_INTEL_RPP_S_I2C3 0x7a4f
|
||||
#define PCI_DID_INTEL_RPP_S_I2C4 0x7a7c
|
||||
#define PCI_DID_INTEL_RPP_S_I2C5 0x7a7d
|
||||
|
||||
#define PCI_DID_INTEL_MTL_I2C0 0x7e78
|
||||
#define PCI_DID_INTEL_MTL_I2C1 0x7e79
|
||||
#define PCI_DID_INTEL_MTL_I2C2 0x7e7a
|
||||
@@ -3748,6 +3785,11 @@
|
||||
#define PCI_DID_INTEL_ADP_M_N_UART2 0x54c7
|
||||
#define PCI_DID_INTEL_ADP_M_N_UART3 0x54da
|
||||
|
||||
#define PCI_DID_INTEL_RPP_S_UART0 0x7a28
|
||||
#define PCI_DID_INTEL_RPP_S_UART1 0x7a29
|
||||
#define PCI_DID_INTEL_RPP_S_UART2 0x7a7e
|
||||
#define PCI_DID_INTEL_RPP_S_UART3 0x7a5c
|
||||
|
||||
#define PCI_DID_INTEL_MTL_UART0 0x7e25
|
||||
#define PCI_DID_INTEL_MTL_UART1 0x7e26
|
||||
#define PCI_DID_INTEL_MTL_UART2 0x7e52
|
||||
@@ -3833,6 +3875,12 @@
|
||||
#define PCI_DID_INTEL_ADP_M_N_SPI1 0x54ab
|
||||
#define PCI_DID_INTEL_ADP_M_SPI2 0x54fb
|
||||
|
||||
#define PCI_DID_INTEL_RPP_S_HWSEQ_SPI 0x7a24
|
||||
#define PCI_DID_INTEL_RPP_S_SPI0 0x7a2a
|
||||
#define PCI_DID_INTEL_RPP_S_SPI1 0x7a2b
|
||||
#define PCI_DID_INTEL_RPP_S_SPI2 0x7a7b
|
||||
#define PCI_DID_INTEL_RPP_S_SPI3 0x7a79
|
||||
|
||||
#define PCI_DID_INTEL_SPR_HWSEQ_SPI 0x1bca
|
||||
|
||||
#define PCI_DID_INTEL_MTL_HWSEQ_SPI 0x7e23
|
||||
@@ -3983,6 +4031,10 @@
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_2 0x7d50
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_3 0x7d55
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_4 0x7d60
|
||||
#define PCI_DID_INTEL_RPL_HX_GT1 0xa788
|
||||
#define PCI_DID_INTEL_RPL_HX_GT2 0xa78b
|
||||
#define PCI_DID_INTEL_RPL_HX_GT3 0x4688
|
||||
#define PCI_DID_INTEL_RPL_HX_GT4 0x468b
|
||||
#define PCI_DID_INTEL_RPL_P_GT1 0xa720
|
||||
#define PCI_DID_INTEL_RPL_P_GT2 0xa7a8
|
||||
#define PCI_DID_INTEL_RPL_P_GT3 0xa7a0
|
||||
@@ -4106,6 +4158,14 @@
|
||||
#define PCI_DID_INTEL_MTL_P_ID_2 0x7D02
|
||||
#define PCI_DID_INTEL_MTL_P_ID_3 0x7d14
|
||||
#define PCI_DID_INTEL_MTL_P_ID_4 0x7d15
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_1 0xa702
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_2 0xa729
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_3 0xa728
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_4 0xa72a
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_5 0xa719
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_6 0x4637
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_7 0x463b
|
||||
#define PCI_DID_INTEL_RPL_HX_ID_8 0x4647
|
||||
#define PCI_DID_INTEL_RPL_P_ID_1 0xa706
|
||||
#define PCI_DID_INTEL_RPL_P_ID_2 0xa707
|
||||
#define PCI_DID_INTEL_RPL_P_ID_3 0xa708
|
||||
@@ -4136,6 +4196,7 @@
|
||||
#define PCI_DID_INTEL_ADP_M_N_SMBUS 0x54a3
|
||||
#define PCI_DID_INTEL_MTL_SMBUS 0x7e22
|
||||
#define PCI_DID_INTEL_RPP_P_SMBUS 0x51a3
|
||||
#define PCI_DID_INTEL_RPP_S_SMBUS 0x7a23
|
||||
|
||||
/* Intel EHCI device IDs */
|
||||
#define PCI_DID_INTEL_LPT_H_EHCI_1 0x8c26
|
||||
@@ -4172,6 +4233,7 @@
|
||||
#define PCI_DID_INTEL_MTL_M_TCSS_XHCI 0x7eb0
|
||||
#define PCI_DID_INTEL_MTL_P_TCSS_XHCI 0x7ec0
|
||||
#define PCI_DID_INTEL_RPP_P_TCSS_XHCI 0xa71e
|
||||
#define PCI_DID_INTEL_RPP_S_XHCI 0x7a60
|
||||
|
||||
/* Intel P2SB device Ids */
|
||||
#define PCI_DID_INTEL_APL_P2SB 0x5a92
|
||||
@@ -4240,6 +4302,14 @@
|
||||
#define PCI_DID_INTEL_ADP_S_AUDIO_8 0x7ad7
|
||||
#define PCI_DID_INTEL_ADP_P_AUDIO 0x51c8
|
||||
#define PCI_DID_INTEL_RPP_P_AUDIO 0x51ca
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_1 0x7a50
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_2 0x7a51
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_3 0x7a52
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_4 0x7a53
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_5 0x7a54
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_6 0x7a55
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_7 0x7a56
|
||||
#define PCI_DID_INTEL_RPP_S_AUDIO_8 0x7a57
|
||||
|
||||
#define PCI_DID_INTEL_ADP_M_N_AUDIO_1 0x54c8
|
||||
#define PCI_DID_INTEL_ADP_M_N_AUDIO_2 0x54c9
|
||||
@@ -4296,6 +4366,10 @@
|
||||
#define PCI_DID_INTEL_ADP_M_CSE1 0x54e1
|
||||
#define PCI_DID_INTEL_ADP_M_CSE2 0x54e4
|
||||
#define PCI_DID_INTEL_ADP_M_CSE3 0x54e5
|
||||
#define PCI_DID_INTEL_RPP_S_CSE0 0x7a68
|
||||
#define PCI_DID_INTEL_RPP_S_CSE1 0x7a69
|
||||
#define PCI_DID_INTEL_RPP_S_CSE2 0x7a6c
|
||||
#define PCI_DID_INTEL_RPP_S_CSE3 0x7a6d
|
||||
#define PCI_DID_INTEL_MTL_CSE0 0x7e70
|
||||
|
||||
/* Intel XDCI device Ids */
|
||||
@@ -4319,6 +4393,7 @@
|
||||
#define PCI_DID_INTEL_MTL_XDCI 0x7e7e
|
||||
#define PCI_DID_INTEL_MTL_M_TCSS_XDCI 0x7eb1
|
||||
#define PCI_DID_INTEL_MTL_P_TCSS_XDCI 0x7ec1
|
||||
#define PCI_DID_INTEL_RPP_S_XDCI 0x7a61
|
||||
|
||||
/* Intel SD device Ids */
|
||||
#define PCI_DID_INTEL_LPT_LP_SD 0x9c35
|
||||
@@ -4459,6 +4534,10 @@
|
||||
#define PCI_DID_INTEL_MTL_CNVI_WIFI_1 0x7e41
|
||||
#define PCI_DID_INTEL_MTL_CNVI_WIFI_2 0x7e42
|
||||
#define PCI_DID_INTEL_MTL_CNVI_WIFI_3 0x7e43
|
||||
#define PCI_DID_INTEL_RPL_S_CNVI_WIFI_0 0x7a70
|
||||
#define PCI_DID_INTEL_RPL_S_CNVI_WIFI_1 0x7a71
|
||||
#define PCI_DID_INTEL_RPL_S_CNVI_WIFI_2 0x7a72
|
||||
#define PCI_DID_INTEL_RPL_S_CNVI_WIFI_3 0x7a73
|
||||
|
||||
/* Intel Crashlog */
|
||||
#define PCI_DID_INTEL_TGL_CPU_CRASHLOG_SRAM 0x9a0d
|
||||
@@ -4469,6 +4548,7 @@
|
||||
#define PCI_DID_INTEL_TGP_PMC_CRASHLOG_SRAM 0xa0ef
|
||||
#define PCI_DID_INTEL_MTL_CRASHLOG_SRAM 0x7d0d
|
||||
#define PCI_DID_INTEL_RPL_CPU_CRASHLOG_SRAM 0xa77d
|
||||
#define PCI_DID_INTEL_RPP_S_PMC_CRASHLOG_SRAM 0x7a27
|
||||
|
||||
/* Intel Ethernet Controller device Ids */
|
||||
#define PCI_DID_INTEL_EHL_GBE_HOST 0x4B32
|
||||
|
@@ -35,6 +35,18 @@
|
||||
#define DDR4_SPD_PART_OFF 329
|
||||
#define DDR4_SPD_PART_LEN 20
|
||||
#define DDR4_SPD_SN_OFF 325
|
||||
#define MAX_SPD_PAGE_SIZE_SPD5 128
|
||||
#define MAX_SPD_SIZE (SPD_PAGE_LEN * SPD_SN_LEN)
|
||||
#define SPD_HUB_MEMREG(addr) ((u8)(0x80 | (addr)))
|
||||
#define SPD5_MR11 0x0B
|
||||
#define SPD5_MR0 0x00
|
||||
#define SPD5_MEMREG_REG(addr) ((u8)((~0x80) & (addr)))
|
||||
#define SPD5_MR0_SPD5_HUB_DEV 0x51
|
||||
|
||||
struct spd_offset_table {
|
||||
u16 start; /* Offset 0 */
|
||||
u16 end; /* Offset 2 */
|
||||
};
|
||||
|
||||
struct spd_block {
|
||||
u8 addr_map[CONFIG_DIMM_MAX]; /* 7 bit I2C addresses */
|
||||
|
@@ -209,7 +209,7 @@ enum cb_err spd_fill_from_cache(uint8_t *spd_cache, struct spd_block *blk)
|
||||
|
||||
dram_type = *(spd_cache + SC_SPD_OFFSET(i) + SPD_DRAM_TYPE);
|
||||
|
||||
if (dram_type == SPD_DRAM_DDR4)
|
||||
if (dram_type == SPD_DRAM_DDR4 || dram_type == SPD_DRAM_DDR5)
|
||||
blk->len = SPD_PAGE_LEN_DDR4;
|
||||
else
|
||||
blk->len = SPD_PAGE_LEN;
|
||||
|
@@ -3,11 +3,12 @@ if BOARD_SYSTEM76_ADDW1 || BOARD_SYSTEM76_ADDW2
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GENERIC_CBFS_SERIAL
|
||||
select DRIVERS_GENERIC_CBFS_UUID
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select EC_SYSTEM76_EC_OLED
|
||||
select HAVE_ACPI_RESUME
|
||||
|
@@ -1,88 +0,0 @@
|
||||
if BOARD_SYSTEM76_DARP8 || BOARD_SYSTEM76_GALP6 || BOARD_SYSTEM76_LEMP11 || BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_32768
|
||||
select DRIVERS_GFX_NVIDIA if BOARD_SYSTEM76_ORYP9
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_INTEL_PMC
|
||||
select DRIVERS_INTEL_USB4_RETIMER
|
||||
select DRIVERS_I2C_TAS5825M if BOARD_SYSTEM76_ORYP9
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD if BOARD_SYSTEM76_DARP8 || BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
select EC_SYSTEM76_EC_DGPU if BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
select HAVE_OPTION_TABLE
|
||||
select HAVE_SPD_IN_CBFS if BOARD_SYSTEM76_LEMP11
|
||||
select INTEL_GMA_HAVE_VBT
|
||||
select INTEL_LPSS_UART_FOR_CONSOLE
|
||||
select MAINBOARD_HAS_TPM2
|
||||
select MEMORY_MAPPED_TPM
|
||||
select NO_UART_ON_SUPERIO
|
||||
select SOC_INTEL_ALDERLAKE_PCH_P
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SOC_INTEL_CRASHLOG
|
||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/adl-p"
|
||||
|
||||
config VARIANT_DIR
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config OVERRIDE_DEVICETREE
|
||||
default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"
|
||||
|
||||
config MAINBOARD_PART_NUMBER
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config MAINBOARD_SMBIOS_PRODUCT_NAME
|
||||
default "Darter Pro" if BOARD_SYSTEM76_DARP8
|
||||
default "Galago Pro" if BOARD_SYSTEM76_GALP6
|
||||
default "Lemur Pro" if BOARD_SYSTEM76_LEMP11
|
||||
default "Oryx Pro" if BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config MAINBOARD_VERSION
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config CBFS_SIZE
|
||||
default 0xA00000
|
||||
|
||||
config CONSOLE_POST
|
||||
default y
|
||||
|
||||
config DIMM_SPD_SIZE
|
||||
default 512
|
||||
|
||||
config ONBOARD_VGA_IS_PRIMARY
|
||||
default y
|
||||
|
||||
config POST_DEVICE
|
||||
default n
|
||||
|
||||
config TPM_MEASURED_BOOT
|
||||
default y
|
||||
|
||||
config UART_FOR_CONSOLE
|
||||
default 0
|
||||
|
||||
# PM Timer Disabled, saves power
|
||||
config USE_PM_ACPI_TIMER
|
||||
default n
|
||||
|
||||
endif
|
146
src/mainboard/system76/adl/Kconfig
Normal file
146
src/mainboard/system76/adl/Kconfig
Normal file
@@ -0,0 +1,146 @@
|
||||
config BOARD_SYSTEM76_ADL_COMMON
|
||||
def_bool n
|
||||
select BOARD_ROMSIZE_KB_32768
|
||||
select DRIVERS_GENERIC_BAYHUB_LV2
|
||||
select DRIVERS_GENERIC_CBFS_SERIAL
|
||||
select DRIVERS_GENERIC_CBFS_UUID
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_INTEL_PMC
|
||||
select DRIVERS_INTEL_USB4_RETIMER
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_LOCKDOWN
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
select HAVE_OPTION_TABLE
|
||||
select INTEL_GMA_HAVE_VBT
|
||||
select INTEL_LPSS_UART_FOR_CONSOLE
|
||||
select MAINBOARD_HAS_TPM2
|
||||
select MEMORY_MAPPED_TPM
|
||||
select NO_UART_ON_SUPERIO
|
||||
select SOC_INTEL_ALDERLAKE_PCH_P
|
||||
select SOC_INTEL_ALDERLAKE_S3
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SOC_INTEL_CRASHLOG
|
||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
|
||||
config BOARD_SYSTEM76_DARP8
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
|
||||
config BOARD_SYSTEM76_GALP6
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
|
||||
config BOARD_SYSTEM76_GAZE17_3050
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select PCIEXP_HOTPLUG
|
||||
select PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config BOARD_SYSTEM76_GAZE17_3060_B
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select MAINBOARD_USES_IFD_GBE_REGION
|
||||
select PCIEXP_HOTPLUG
|
||||
select PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config BOARD_SYSTEM76_LEMP11
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
select HAVE_SPD_IN_CBFS
|
||||
|
||||
config BOARD_SYSTEM76_ORYP9
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
|
||||
config BOARD_SYSTEM76_ORYP10
|
||||
select BOARD_SYSTEM76_ADL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
|
||||
if BOARD_SYSTEM76_ADL_COMMON
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/adl"
|
||||
|
||||
config VARIANT_DIR
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "gaze17-3050" if BOARD_SYSTEM76_GAZE17_3050
|
||||
default "gaze17-3060-b" if BOARD_SYSTEM76_GAZE17_3060_B
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config OVERRIDE_DEVICETREE
|
||||
default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"
|
||||
|
||||
config MAINBOARD_PART_NUMBER
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "gaze17-3050" if BOARD_SYSTEM76_GAZE17_3050
|
||||
default "gaze17-3060-b" if BOARD_SYSTEM76_GAZE17_3060_B
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config MAINBOARD_SMBIOS_PRODUCT_NAME
|
||||
default "Darter Pro" if BOARD_SYSTEM76_DARP8
|
||||
default "Galago Pro" if BOARD_SYSTEM76_GALP6
|
||||
default "Gazelle" if BOARD_SYSTEM76_GAZE17_3050 || BOARD_SYSTEM76_GAZE17_3060_B
|
||||
default "Lemur Pro" if BOARD_SYSTEM76_LEMP11
|
||||
default "Oryx Pro" if BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config MAINBOARD_VERSION
|
||||
default "darp8" if BOARD_SYSTEM76_DARP8
|
||||
default "galp6" if BOARD_SYSTEM76_GALP6
|
||||
default "gaze17-3050" if BOARD_SYSTEM76_GAZE17_3050
|
||||
default "gaze17-3060-b" if BOARD_SYSTEM76_GAZE17_3060_B
|
||||
default "lemp11" if BOARD_SYSTEM76_LEMP11
|
||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config CMOS_DEFAULT_FILE
|
||||
default "src/mainboard/\$(MAINBOARDDIR)/cmos-csme.default" if BOARD_SYSTEM76_DARP8
|
||||
default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
|
||||
|
||||
config CONSOLE_POST
|
||||
default y
|
||||
|
||||
config DIMM_SPD_SIZE
|
||||
default 512
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_TPP
|
||||
default 45 if BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MAX
|
||||
default 25 if BOARD_SYSTEM76_ORYP9 || BOARD_SYSTEM76_ORYP10
|
||||
|
||||
config FMDFILE
|
||||
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/board.fmd"
|
||||
|
||||
config ONBOARD_VGA_IS_PRIMARY
|
||||
default y
|
||||
|
||||
config POST_DEVICE
|
||||
default n
|
||||
|
||||
config TPM_MEASURED_BOOT
|
||||
default y
|
||||
|
||||
config UART_FOR_CONSOLE
|
||||
default 0
|
||||
|
||||
# PM Timer Disabled, saves power
|
||||
config USE_PM_ACPI_TIMER
|
||||
default n
|
||||
|
||||
endif
|
@@ -4,6 +4,12 @@ config BOARD_SYSTEM76_DARP8
|
||||
config BOARD_SYSTEM76_GALP6
|
||||
bool "galp6"
|
||||
|
||||
config BOARD_SYSTEM76_GAZE17_3050
|
||||
bool "gaze17 3050"
|
||||
|
||||
config BOARD_SYSTEM76_GAZE17_3060_B
|
||||
bool "gaze17 3060-b"
|
||||
|
||||
config BOARD_SYSTEM76_LEMP11
|
||||
bool "lemp11"
|
||||
|
@@ -1,3 +1,5 @@
|
||||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
|
||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
|
||||
|
15
src/mainboard/system76/adl/board.fmd
Normal file
15
src/mainboard/system76/adl/board.fmd
Normal file
@@ -0,0 +1,15 @@
|
||||
FLASH 32M {
|
||||
SI_DESC 4K
|
||||
#if CONFIG_MAINBOARD_USES_IFD_GBE_REGION
|
||||
SI_GBE 8K
|
||||
#endif
|
||||
SI_ME 4824K
|
||||
SI_BIOS@16M 16M {
|
||||
RW_MRC_CACHE 64K
|
||||
SMMSTORE(PRESERVE) 256K
|
||||
WP_RO {
|
||||
FMAP 4K
|
||||
COREBOOT(CBFS)
|
||||
}
|
||||
}
|
||||
}
|
3
src/mainboard/system76/adl/cmos.default
Normal file
3
src/mainboard/system76/adl/cmos.default
Normal file
@@ -0,0 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
@@ -11,8 +11,6 @@ chip soc/intel/alderlake
|
||||
# Enable Enhanced Intel SpeedStep
|
||||
register "eist_enable" = "1"
|
||||
|
||||
register "s0ix_enable" = "1"
|
||||
|
||||
# Enable C6 DRAM
|
||||
register "enable_c6dram" = "1"
|
||||
|
||||
@@ -72,9 +70,8 @@ chip soc/intel/alderlake
|
||||
device ref heci1 on end
|
||||
device ref sata on
|
||||
register "sata_salp_support" = "1"
|
||||
register "sata_ports_enable[1]" = "1" # SSD1
|
||||
# FIXME: DevSlp breaks S0ix
|
||||
#register "sata_ports_dev_slp[1]" = "1" # GPP_H12 (SATA1_DEVSLP1)
|
||||
register "sata_ports_enable[1]" = "1"
|
||||
register "sata_ports_dev_slp[1]" = "1"
|
||||
end
|
||||
device ref pch_espi on
|
||||
register "gen1_dec" = "0x00040069" # EC PM channel
|
@@ -23,6 +23,9 @@ void mainboard_silicon_init_params(FSP_S_CONFIG *params)
|
||||
params->SataPortDevSlpPinMux[1] = 0x5967400d; // GPP_H13
|
||||
|
||||
params->SataPortsSolidStateDrive[1] = 1;
|
||||
|
||||
// Enable reporting CPU C10 state over eSPI
|
||||
params->PchEspiHostC10ReportEnable = 1;
|
||||
}
|
||||
|
||||
static void mainboard_init(void *chip_info)
|
@@ -1,10 +1,9 @@
|
||||
chip soc/intel/alderlake
|
||||
# HACK: Limit PL4 to PL2 to prevent power-off when system is booted on
|
||||
# battery power. This seems to only happen with the i7 units.
|
||||
register "s0ix_enable" = "1"
|
||||
|
||||
register "power_limits_config[ADL_P_282_482_28W_CORE]" = "{
|
||||
.tdp_pl1_override = 20,
|
||||
.tdp_pl2_override = 56,
|
||||
.tdp_pl4 = 56, // FIXME: Set to 65
|
||||
}"
|
||||
|
||||
# GPE configuration
|
||||
@@ -154,12 +153,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 4,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D16)" # SSD1_PWR_EN
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B16)" # M2_SSD1_RST#
|
||||
register "srcclk_pin" = "4" # SSD1_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pmc hidden
|
||||
chip drivers/intel/pmc_mux
|
@@ -2,7 +2,6 @@ chip soc/intel/alderlake
|
||||
register "power_limits_config[ADL_P_282_482_28W_CORE]" = "{
|
||||
.tdp_pl1_override = 28,
|
||||
.tdp_pl2_override = 60,
|
||||
.tdp_pl4 = 90,
|
||||
}"
|
||||
|
||||
# GPE configuration
|
@@ -0,0 +1,2 @@
|
||||
Board name: gaze17-3050
|
||||
Release year: 2022
|
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/gpio.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
static const struct pad_config gpio_table[] = {
|
||||
/* ------- GPIO Group GPD ------- */
|
||||
@@ -221,7 +221,7 @@ static const struct pad_config gpio_table[] = {
|
||||
PAD_NC(GPP_T3, NONE),
|
||||
};
|
||||
|
||||
void variant_configure_gpios(void)
|
||||
void mainboard_configure_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <variant/gpio.h>
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/gpio.h>
|
||||
|
||||
static const struct pad_config early_gpio_table[] = {
|
||||
@@ -10,7 +10,7 @@ static const struct pad_config early_gpio_table[] = {
|
||||
PAD_CFG_NF(GPP_H11, NONE, DEEP, NF1), // UART0_TX
|
||||
};
|
||||
|
||||
void variant_configure_early_gpios(void)
|
||||
void mainboard_configure_early_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table));
|
||||
}
|
@@ -6,8 +6,9 @@ const u32 cim_verb_data[] = {
|
||||
/* Realtek, ALC256 */
|
||||
0x10ec0256, /* Vendor ID */
|
||||
0x1558866d, /* Subsystem ID */
|
||||
11, /* Number of entries */
|
||||
12, /* Number of entries */
|
||||
AZALIA_SUBVENDOR(0, 0x1558866d),
|
||||
AZALIA_RESET(1),
|
||||
AZALIA_PIN_CFG(0, 0x12, 0x90a60130),
|
||||
AZALIA_PIN_CFG(0, 0x13, 0x40000000),
|
||||
AZALIA_PIN_CFG(0, 0x14, 0x90170110),
|
@@ -10,9 +10,4 @@
|
||||
#define DGPU_GC6 GPP_F13
|
||||
#define DGPU_SSID 0x866d1558
|
||||
|
||||
#ifndef __ACPI__
|
||||
void variant_configure_early_gpios(void);
|
||||
void variant_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -1,24 +1,4 @@
|
||||
chip soc/intel/alderlake
|
||||
register "common_soc_config" = "{
|
||||
// Touchpad I2C bus
|
||||
.i2c[0] = {
|
||||
.speed = I2C_SPEED_FAST,
|
||||
.rise_time_ns = 80,
|
||||
.fall_time_ns = 110,
|
||||
},
|
||||
}"
|
||||
|
||||
# ACPI (soc/intel/alderlake/acpi.c)
|
||||
# Enable Enhanced Intel SpeedStep
|
||||
register "eist_enable" = "1"
|
||||
|
||||
register "s0ix_enable" = "1"
|
||||
|
||||
# FSP Memory (soc/intel/alderlake/romstage/fsp_params.c)
|
||||
# Enable C6 DRAM
|
||||
register "enable_c6dram" = "1"
|
||||
|
||||
# FSP Silicon (soc/intel/alderlake/fsp_params.c)
|
||||
# FIVR configuration
|
||||
# Read EXT_RAIL_CONFIG to determine bitmaps
|
||||
# sudo devmem2 0xfe0011b8
|
||||
@@ -43,23 +23,14 @@ chip soc/intel/alderlake
|
||||
# Thermal
|
||||
register "tcc_offset" = "10"
|
||||
|
||||
# Enable CNVi BT
|
||||
register "cnvi_bt_core" = "true"
|
||||
|
||||
# PM Util (soc/intel/alderlake/pmutil.c)
|
||||
# GPE configuration
|
||||
register "pmc_gpe0_dw0" = "PMC_GPP_R"
|
||||
register "pmc_gpe0_dw1" = "PMC_GPP_B"
|
||||
register "pmc_gpe0_dw2" = "PMC_GPP_D"
|
||||
|
||||
# Actual device tree
|
||||
device cpu_cluster 0 on
|
||||
device lapic 0 on end
|
||||
end
|
||||
|
||||
device domain 0 on
|
||||
#From CPU EDS(TODO)
|
||||
device ref system_agent on end
|
||||
subsystemid 0x1558 0x866d inherit
|
||||
|
||||
device ref pcie5_0 on
|
||||
# PCIe PEG2 x8, Clock 3 (DGPU)
|
||||
register "cpu_pcie_rp[CPU_RP(2)]" = "{
|
||||
@@ -74,19 +45,13 @@ chip soc/intel/alderlake
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device ref tcss_xhci on
|
||||
register "tcss_ports[0]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
device ref tcss_root_hub on
|
||||
device ref tcss_usb3_port1 on end
|
||||
end
|
||||
end
|
||||
|
||||
device ref shared_sram on end
|
||||
device ref cnvi_wifi on
|
||||
chip drivers/wifi/generic
|
||||
register "wake" = "GPE0_PME_B0"
|
||||
device generic 0 on end
|
||||
end
|
||||
device ref pcie4_0 on
|
||||
# PCIe PEG0 x4, Clock 0 (SSD2)
|
||||
register "cpu_pcie_rp[CPU_RP(1)]" = "{
|
||||
.clk_src = 0,
|
||||
.clk_req = 0,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
end
|
||||
device ref i2c0 on
|
||||
# Touchpad I2C bus
|
||||
@@ -108,27 +73,60 @@ chip soc/intel/alderlake
|
||||
device i2c 38 on end
|
||||
end
|
||||
end
|
||||
device ref heci1 on end
|
||||
device ref sata on
|
||||
register "sata_ports_enable[1]" = "1" # SSD2 (SATA1A)
|
||||
register "sata_ports_dev_slp[1]" = "1" # GPP_H13 (DEVSLP1B)
|
||||
end
|
||||
device ref pch_espi on
|
||||
register "gen1_dec" = "0x00040069" # EC PM channel
|
||||
register "gen2_dec" = "0x00fc0E01" # AP/EC command
|
||||
register "gen3_dec" = "0x00fc0F01" # AP/EC debug
|
||||
chip drivers/pc80/tpm
|
||||
device pnp 0c31.0 on end
|
||||
device ref i2c1 off end
|
||||
device ref tbt_pcie_rp0 off end
|
||||
device ref tcss_xhci on
|
||||
register "tcss_ports[0]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
device ref tcss_root_hub on
|
||||
device ref tcss_usb3_port1 on end
|
||||
end
|
||||
end
|
||||
device ref p2sb on end
|
||||
device ref pmc hidden end
|
||||
device ref hda on
|
||||
register "pch_hda_idisp_codec_enable" = "1"
|
||||
register "pch_hda_idisp_link_frequency" = "HDA_LINKFREQ_96MHZ"
|
||||
register "pch_hda_idisp_link_tmode" = "HDA_TMODE_8T"
|
||||
device ref xhci on
|
||||
# USB2
|
||||
register "usb2_ports[2]" = "USB2_PORT_TYPE_C(OC_SKIP)" # J_TYPEC1
|
||||
register "usb2_ports[4]" = "USB2_PORT_MID(OC_SKIP)" # USB 3.2 Type-A audio board
|
||||
register "usb2_ports[5]" = "USB2_PORT_TYPE_C(OC_SKIP)" # J_TYPEC2
|
||||
register "usb2_ports[6]" = "USB2_PORT_MID(OC_SKIP)" # Fingerprint
|
||||
register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # Camera
|
||||
register "usb2_ports[8]" = "USB2_PORT_MID(OC_SKIP)" # USB 2.0 Type-A audio board
|
||||
register "usb2_ports[9]" = "USB2_PORT_MID(OC_SKIP)" # Bluetooth
|
||||
# USB3
|
||||
register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC_SKIP)" # USB 3.2 Type-A audio board
|
||||
register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)" # J_TYPEC2
|
||||
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # J_TYPEC1
|
||||
register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC_SKIP)" # J_TYPEC1
|
||||
end
|
||||
device ref pcie_rp5 on
|
||||
# PCIe RP#5 x4, Clock 1 (SSD)
|
||||
register "pch_pcie_rp[PCH_RP(5)]" = "{
|
||||
.clk_src = 1,
|
||||
.clk_req = 1,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp9 on
|
||||
# PCIe RP#9 x1, Clock 6 (GLAN)
|
||||
register "pch_pcie_rp[PCH_RP(9)]" = "{
|
||||
.clk_src = 6,
|
||||
.clk_req = 6,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp10 on
|
||||
# PCIe RP#10 x1, Clock 2 (WLAN)
|
||||
register "pch_pcie_rp[PCH_RP(10)]" = "{
|
||||
.clk_src = 2,
|
||||
.clk_req = 2,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp11 on
|
||||
# PCIe RP#11 x1, Clock 5 (CARD)
|
||||
register "pch_pcie_rp[PCH_RP(11)]" = "{
|
||||
.clk_src = 5,
|
||||
.clk_req = 5,
|
||||
.flags = PCIE_RP_HOTPLUG | PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref smbus on end
|
||||
device ref fast_spi on end
|
||||
end
|
||||
end
|
@@ -0,0 +1,2 @@
|
||||
Board name: gaze17-3060-b
|
||||
Release year: 2022
|
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/gpio.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
static const struct pad_config gpio_table[] = {
|
||||
/* ------- GPIO Group GPD ------- */
|
||||
@@ -137,8 +137,8 @@ static const struct pad_config gpio_table[] = {
|
||||
PAD_NC(GPP_E15, NONE),
|
||||
PAD_NC(GPP_E16, NONE),
|
||||
PAD_CFG_GPI(GPP_E17, NONE, DEEP), // BOARD_ID3
|
||||
PAD_NC(GPP_E18, NATIVE), // TBT_LSX0_TXD
|
||||
PAD_NC(GPP_E19, NATIVE), // TBT_LSX0_RXD
|
||||
// GPP_E18 (TBT_LSX0_TXD) configured by FSP
|
||||
// GPP_E19 (TBT_LSX0_RXD) configured by FSP
|
||||
PAD_NC(GPP_E20, NONE),
|
||||
PAD_CFG_GPO(GPP_E21, 0, DEEP), // Strap 14 of 24
|
||||
PAD_NC(GPP_E22, NONE),
|
||||
@@ -221,7 +221,7 @@ static const struct pad_config gpio_table[] = {
|
||||
PAD_NC(GPP_T3, NONE),
|
||||
};
|
||||
|
||||
void variant_configure_gpios(void)
|
||||
void mainboard_configure_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <variant/gpio.h>
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/gpio.h>
|
||||
|
||||
static const struct pad_config early_gpio_table[] = {
|
||||
@@ -8,7 +8,7 @@ static const struct pad_config early_gpio_table[] = {
|
||||
PAD_CFG_GPO(GPP_B2, 0, DEEP), // DGPU_RST#_PCH
|
||||
};
|
||||
|
||||
void variant_configure_early_gpios(void)
|
||||
void mainboard_configure_early_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table));
|
||||
}
|
@@ -6,8 +6,9 @@ const u32 cim_verb_data[] = {
|
||||
/* Realtek, ALC256 */
|
||||
0x10ec0256, /* Vendor ID */
|
||||
0x1558867c, /* Subsystem ID */
|
||||
11, /* Number of entries */
|
||||
12, /* Number of entries */
|
||||
AZALIA_SUBVENDOR(0, 0x1558867c),
|
||||
AZALIA_RESET(1),
|
||||
AZALIA_PIN_CFG(0, 0x12, 0x90a60130),
|
||||
AZALIA_PIN_CFG(0, 0x13, 0x40000000),
|
||||
AZALIA_PIN_CFG(0, 0x14, 0x90170110),
|
@@ -10,9 +10,4 @@
|
||||
#define DGPU_GC6 GPP_F13
|
||||
#define DGPU_SSID 0x867c1558
|
||||
|
||||
#ifndef __ACPI__
|
||||
void variant_configure_early_gpios(void);
|
||||
void variant_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -1,7 +1,50 @@
|
||||
chip soc/intel/alderlake
|
||||
# FIVR configuration
|
||||
# Read EXT_RAIL_CONFIG to determine bitmaps
|
||||
# sudo devmem2 0xfe0011b8
|
||||
# 0x0
|
||||
# Read EXT_V1P05_VR_CONFIG
|
||||
# sudo devmem2 0xfe0011c0
|
||||
# 0x1a42000
|
||||
# Read EXT_VNN_VR_CONFIG0
|
||||
# sudo devmem2 0xfe0011c4
|
||||
# 0x1a42000
|
||||
# TODO: v1p05 voltage and vnn icc max?
|
||||
register "ext_fivr_settings" = "{
|
||||
.configure_ext_fivr = 1,
|
||||
.v1p05_enable_bitmap = 0,
|
||||
.vnn_enable_bitmap = 0,
|
||||
.v1p05_supported_voltage_bitmap = 0,
|
||||
.vnn_supported_voltage_bitmap = 0,
|
||||
.v1p05_icc_max_ma = 500,
|
||||
.vnn_sx_voltage_mv = 1050,
|
||||
}"
|
||||
|
||||
# Thermal
|
||||
register "tcc_offset" = "10"
|
||||
|
||||
# GPE configuration
|
||||
register "pmc_gpe0_dw0" = "PMC_GPP_R"
|
||||
register "pmc_gpe0_dw1" = "PMC_GPP_B"
|
||||
register "pmc_gpe0_dw2" = "PMC_GPP_D"
|
||||
|
||||
device domain 0 on
|
||||
subsystemid 0x1558 0x867c inherit
|
||||
|
||||
device ref pcie5_0 on
|
||||
# PCIe PEG2 x8, Clock 3 (DGPU)
|
||||
register "cpu_pcie_rp[CPU_RP(2)]" = "{
|
||||
.clk_src = 3,
|
||||
.clk_req = 3,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device ref igpu on
|
||||
# DDIA is eDP
|
||||
register "ddi_portA_config" = "1"
|
||||
@@ -17,7 +60,33 @@ chip soc/intel/alderlake
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
end
|
||||
device ref tbt_pcie_rp0 on end
|
||||
device ref i2c0 on
|
||||
# Touchpad I2C bus
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C0]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""ELAN0412""
|
||||
register "generic.desc" = ""ELAN Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_A17)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 15 on end
|
||||
end
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""FTCS1000""
|
||||
register "generic.desc" = ""FocalTech Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_A17)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 38 on end
|
||||
end
|
||||
end
|
||||
device ref i2c1 off end
|
||||
device ref tcss_xhci on
|
||||
register "tcss_ports[0]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
device ref tcss_root_hub on
|
||||
device ref tcss_usb3_port1 on end
|
||||
end
|
||||
end
|
||||
device ref tcss_dma0 on end
|
||||
device ref xhci on
|
||||
# USB2
|
||||
@@ -40,12 +109,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 2,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E3)" # PCH_WLAN_EN
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "srcclk_pin" = "2" # WLAN_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pcie_rp6 on
|
||||
# PCIe root port #6 x1, Clock 5 (CARD)
|
||||
@@ -54,12 +117,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 5,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
# XXX: No enable_gpio = no D3cold?
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "srcclk_pin" = "5" # CARD_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pcie_rp7 on
|
||||
# PCIe root port #7 x1, Clock 6 (GLAN)
|
||||
@@ -78,14 +135,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 1,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
# XXX: Enable tied to 3.3VS?
|
||||
#register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C2)" # SATA_M2_PWR_EN1
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "disable_l23" = "true" # Fixes suspend on WD drives
|
||||
register "srcclk_pin" = "1" # SSD_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref gbe on end
|
||||
end
|
38
src/mainboard/system76/adl/variants/gaze17-3060-b/romstage.c
Normal file
38
src/mainboard/system76/adl/variants/gaze17-3060-b/romstage.c
Normal file
@@ -0,0 +1,38 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR4,
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_DIMM_MODULE,
|
||||
.smbus = {
|
||||
[0] = { .addr_dimm[0] = 0x50, },
|
||||
[1] = { .addr_dimm[0] = 0x52, },
|
||||
},
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
mupd->FspmConfig.PchHdaAudioLinkHdaEnable = 1;
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
@@ -2,7 +2,6 @@ chip soc/intel/alderlake
|
||||
register "power_limits_config[ADL_P_142_242_282_15W_CORE]" = "{
|
||||
.tdp_pl1_override = 15,
|
||||
.tdp_pl2_override = 46,
|
||||
.tdp_pl4 = 65,
|
||||
}"
|
||||
|
||||
# GPE configuration
|
||||
@@ -138,12 +137,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 1,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D16)" # SSD1_PWR_EN
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_H0)" # M2_SSD1_RST#
|
||||
register "srcclk_pin" = "1" # SSD1_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pmc hidden
|
||||
chip drivers/intel/pmc_mux
|
@@ -1,10 +1,8 @@
|
||||
chip soc/intel/alderlake
|
||||
# HACK: Limit PL4 to prevent power off on battery power.
|
||||
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
||||
.tdp_pl1_override = 45,
|
||||
.tdp_pl2_override = 115,
|
||||
.tdp_psyspl2 = 135,
|
||||
.tdp_pl4 = 72,
|
||||
}"
|
||||
|
||||
# Thermal
|
||||
@@ -18,13 +16,17 @@ chip soc/intel/alderlake
|
||||
device domain 0 on
|
||||
subsystemid 0x1558 0x65f5 inherit
|
||||
|
||||
device ref pcie5_0 off
|
||||
device ref pcie5_0 on
|
||||
# CPU PCIe RP#2 x8, Clock 3 (DGPU)
|
||||
register "cpu_pcie_rp[CPU_RP(2)]" = "{
|
||||
.clk_src = 3,
|
||||
.clk_req = 3,
|
||||
.flags = PCIE_RP_LTR,
|
||||
}"
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
end
|
||||
end
|
||||
device ref igpu on
|
||||
register "ddi_portA_config" = "1"
|
||||
@@ -148,12 +150,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 2,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E3)" # PCH_WLAN_EN
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "srcclk_pin" = "2" # WLAN_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pcie_rp6 on
|
||||
# PCIe RP#6 x1, Clock 6 (CARD)
|
||||
@@ -162,12 +158,6 @@ chip soc/intel/alderlake
|
||||
.clk_req = 6,
|
||||
.flags = PCIE_RP_HOTPLUG | PCIE_RP_AER,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
# XXX: Enable connected directly to 3.3VS?
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "srcclk_pin" = "6" # CARD_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
device ref pcie_rp8 on
|
||||
# PCIe RP#8 x1, Clock 5 (GLAN)
|
||||
@@ -176,15 +166,7 @@ chip soc/intel/alderlake
|
||||
.clk_req = 5,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
chip soc/intel/common/block/pcie/rtd3
|
||||
# XXX: Enable connected directly to VDD3?
|
||||
#register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D4)" # GPIO_LAN_EN
|
||||
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_B13)" # BUF_PLT_RST#
|
||||
register "srcclk_pin" = "5" # GLAN_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
end
|
||||
|
||||
device ref pmc hidden
|
||||
chip drivers/intel/pmc_mux
|
||||
device generic 0 on
|
41
src/mainboard/system76/adl/variants/oryp10/romstage.c
Normal file
41
src/mainboard/system76/adl/variants/oryp10/romstage.c
Normal file
@@ -0,0 +1,41 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR5,
|
||||
.rcomp = { .resistor = 100, },
|
||||
.ect = true,
|
||||
.LpDdrDqDqsReTraining = 1,
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_DIMM_MODULE,
|
||||
.smbus = {
|
||||
[0] = { .addr_dimm[0] = 0x50, },
|
||||
[1] = { .addr_dimm[0] = 0x52, },
|
||||
},
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
mupd->FspmConfig.PchHdaAudioLinkHdaEnable = 1;
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifndef VARIANT_GPIO_H
|
||||
#define VARIANT_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_B2
|
||||
#define DGPU_PWR_EN GPP_A14
|
||||
#define DGPU_GC6 GPP_A7
|
||||
#define DGPU_SSID 0x65f51558
|
||||
|
||||
#endif
|
@@ -1,10 +1,8 @@
|
||||
chip soc/intel/alderlake
|
||||
# HACK: Limit PL4 to prevent power off on battery power.
|
||||
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
||||
.tdp_pl1_override = 45,
|
||||
.tdp_pl2_override = 115,
|
||||
.tdp_psyspl2 = 135,
|
||||
.tdp_pl4 = 72,
|
||||
}"
|
||||
|
||||
# Thermal
|
38
src/mainboard/system76/adl/variants/oryp9/romstage.c
Normal file
38
src/mainboard/system76/adl/variants/oryp9/romstage.c
Normal file
@@ -0,0 +1,38 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR4,
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_DIMM_MODULE,
|
||||
.smbus = {
|
||||
[0] = { .addr_dimm[0] = 0x50, },
|
||||
[1] = { .addr_dimm[0] = 0x52, },
|
||||
},
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
mupd->FspmConfig.PchHdaAudioLinkHdaEnable = 1;
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
@@ -3,10 +3,11 @@ if BOARD_SYSTEM76_BONW14
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GENERIC_CBFS_SERIAL
|
||||
select DRIVERS_GENERIC_CBFS_UUID
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
|
@@ -3,9 +3,10 @@ if BOARD_SYSTEM76_DARP6 || BOARD_SYSTEM76_GALP4 || BOARD_SYSTEM76_LEMP9
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GENERIC_CBFS_SERIAL
|
||||
select DRIVERS_GENERIC_CBFS_UUID
|
||||
select DRIVERS_I2C_HID
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD if BOARD_SYSTEM76_DARP6
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
|
@@ -3,6 +3,8 @@ CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
|
||||
bootblock-y += bootblock.c
|
||||
bootblock-y += gpio_early.c
|
||||
|
||||
romstage-y += variants/$(VARIANT_DIR)/romstage.c
|
||||
|
||||
ramstage-y += ramstage.c
|
||||
ramstage-y += variants/$(VARIANT_DIR)/gpio.c
|
||||
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user