Compare commits
2 Commits
rebase-24.
...
upstream-8
Author | SHA1 | Date | |
---|---|---|---|
|
f816e0ec56 | ||
|
a2071101ae |
36
.gitmodules
vendored
36
.gitmodules
vendored
@@ -1,70 +1,70 @@
|
|||||||
[submodule "3rdparty/blobs"]
|
[submodule "3rdparty/blobs"]
|
||||||
path = 3rdparty/blobs
|
path = 3rdparty/blobs
|
||||||
url = https://review.coreboot.org/blobs.git
|
url = ../blobs.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "util/nvidia-cbootimage"]
|
[submodule "util/nvidia-cbootimage"]
|
||||||
path = util/nvidia/cbootimage
|
path = util/nvidia/cbootimage
|
||||||
url = https://review.coreboot.org/nvidia-cbootimage.git
|
url = ../nvidia-cbootimage.git
|
||||||
[submodule "vboot"]
|
[submodule "vboot"]
|
||||||
path = 3rdparty/vboot
|
path = 3rdparty/vboot
|
||||||
url = https://review.coreboot.org/vboot.git
|
url = ../vboot.git
|
||||||
branch = main
|
branch = main
|
||||||
[submodule "arm-trusted-firmware"]
|
[submodule "arm-trusted-firmware"]
|
||||||
path = 3rdparty/arm-trusted-firmware
|
path = 3rdparty/arm-trusted-firmware
|
||||||
url = https://review.coreboot.org/arm-trusted-firmware.git
|
url = ../arm-trusted-firmware.git
|
||||||
[submodule "3rdparty/chromeec"]
|
[submodule "3rdparty/chromeec"]
|
||||||
path = 3rdparty/chromeec
|
path = 3rdparty/chromeec
|
||||||
url = https://review.coreboot.org/chrome-ec.git
|
url = ../chrome-ec.git
|
||||||
[submodule "libhwbase"]
|
[submodule "libhwbase"]
|
||||||
path = 3rdparty/libhwbase
|
path = 3rdparty/libhwbase
|
||||||
url = https://review.coreboot.org/libhwbase.git
|
url = ../libhwbase.git
|
||||||
[submodule "libgfxinit"]
|
[submodule "libgfxinit"]
|
||||||
path = 3rdparty/libgfxinit
|
path = 3rdparty/libgfxinit
|
||||||
url = https://review.coreboot.org/libgfxinit.git
|
url = ../libgfxinit.git
|
||||||
[submodule "3rdparty/fsp"]
|
[submodule "3rdparty/fsp"]
|
||||||
path = 3rdparty/fsp
|
path = 3rdparty/fsp
|
||||||
url = https://review.coreboot.org/fsp.git
|
url = ../fsp.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "opensbi"]
|
[submodule "opensbi"]
|
||||||
path = 3rdparty/opensbi
|
path = 3rdparty/opensbi
|
||||||
url = https://review.coreboot.org/opensbi.git
|
url = ../opensbi.git
|
||||||
[submodule "intel-microcode"]
|
[submodule "intel-microcode"]
|
||||||
path = 3rdparty/intel-microcode
|
path = 3rdparty/intel-microcode
|
||||||
url = https://review.coreboot.org/intel-microcode.git
|
url = ../intel-microcode.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
branch = main
|
branch = main
|
||||||
[submodule "3rdparty/ffs"]
|
[submodule "3rdparty/ffs"]
|
||||||
path = 3rdparty/ffs
|
path = 3rdparty/ffs
|
||||||
url = https://review.coreboot.org/ffs.git
|
url = ../ffs.git
|
||||||
[submodule "3rdparty/amd_blobs"]
|
[submodule "3rdparty/amd_blobs"]
|
||||||
path = 3rdparty/amd_blobs
|
path = 3rdparty/amd_blobs
|
||||||
url = https://review.coreboot.org/amd_blobs
|
url = ../amd_blobs
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "3rdparty/cmocka"]
|
[submodule "3rdparty/cmocka"]
|
||||||
path = 3rdparty/cmocka
|
path = 3rdparty/cmocka
|
||||||
url = https://review.coreboot.org/cmocka.git
|
url = ../cmocka.git
|
||||||
update = none
|
update = none
|
||||||
branch = stable-1.1
|
branch = stable-1.1
|
||||||
[submodule "3rdparty/qc_blobs"]
|
[submodule "3rdparty/qc_blobs"]
|
||||||
path = 3rdparty/qc_blobs
|
path = 3rdparty/qc_blobs
|
||||||
url = https://review.coreboot.org/qc_blobs.git
|
url = ../qc_blobs.git
|
||||||
update = none
|
update = none
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "3rdparty/intel-sec-tools"]
|
[submodule "3rdparty/intel-sec-tools"]
|
||||||
path = 3rdparty/intel-sec-tools
|
path = 3rdparty/intel-sec-tools
|
||||||
url = https://review.coreboot.org/9esec-security-tooling.git
|
url = ../9esec-security-tooling.git
|
||||||
[submodule "3rdparty/stm"]
|
[submodule "3rdparty/stm"]
|
||||||
path = 3rdparty/stm
|
path = 3rdparty/stm
|
||||||
url = https://review.coreboot.org/STM
|
url = ../STM
|
||||||
branch = stmpe
|
branch = stmpe
|
||||||
[submodule "util/goswid"]
|
[submodule "util/goswid"]
|
||||||
path = util/goswid
|
path = util/goswid
|
||||||
url = https://review.coreboot.org/goswid.git
|
url = ../goswid
|
||||||
branch = trunk
|
branch = trunk
|
||||||
[submodule "src/vendorcode/amd/opensil/genoa_poc/opensil"]
|
[submodule "src/vendorcode/amd/opensil/genoa_poc/opensil"]
|
||||||
path = src/vendorcode/amd/opensil/genoa_poc/opensil
|
path = src/vendorcode/amd/opensil/genoa_poc/opensil
|
||||||
url = https://review.coreboot.org/opensil_genoa_poc.git
|
url = ../opensil_genoa_poc.git
|
||||||
|
@@ -501,7 +501,8 @@ CFLAGS_common += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
|
|||||||
CFLAGS_common += -fstrict-aliasing -ffunction-sections -fdata-sections -fno-pie
|
CFLAGS_common += -fstrict-aliasing -ffunction-sections -fdata-sections -fno-pie
|
||||||
CFLAGS_common += -Wstring-compare
|
CFLAGS_common += -Wstring-compare
|
||||||
ifeq ($(CONFIG_COMPILER_GCC),y)
|
ifeq ($(CONFIG_COMPILER_GCC),y)
|
||||||
CFLAGS_common += -Wold-style-declaration
|
CFLAGS_common += -Wold-style-declaration -Wflex-array-member-not-at-end
|
||||||
|
CFLAGS_common += -Wcalloc-transposed-args
|
||||||
# Don't add these GCC specific flags when running scan-build
|
# Don't add these GCC specific flags when running scan-build
|
||||||
ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
|
ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
|
||||||
CFLAGS_common += -Wno-packed-not-aligned
|
CFLAGS_common += -Wno-packed-not-aligned
|
||||||
|
@@ -66,8 +66,8 @@ int smbios_write_type4(unsigned long *current, int handle)
|
|||||||
smbios_processor_id(t->processor_id);
|
smbios_processor_id(t->processor_id);
|
||||||
t->processor_manufacturer = smbios_processor_manufacturer(t->eos);
|
t->processor_manufacturer = smbios_processor_manufacturer(t->eos);
|
||||||
t->processor_version = smbios_processor_name(t->eos);
|
t->processor_version = smbios_processor_name(t->eos);
|
||||||
t->processor_family = SMBIOS_PROCESSOR_FAMILY_FROM_FAMILY2;
|
t->processor_family = 0xfe; /* Use processor_family2 field */
|
||||||
t->processor_family2 = SMBIOS_PROCESSOR_FAMILY2_ARMV8;
|
t->processor_family2 = 0x101; /* ARMv8 */
|
||||||
t->processor_type = SMBIOS_PROCESSOR_TYPE_CENTRAL;
|
t->processor_type = SMBIOS_PROCESSOR_TYPE_CENTRAL;
|
||||||
|
|
||||||
smbios_cpu_get_core_counts(&t->core_count2, &t->thread_count2);
|
smbios_cpu_get_core_counts(&t->core_count2, &t->thread_count2);
|
||||||
|
@@ -68,7 +68,7 @@ static int get_socket_type(void)
|
|||||||
|
|
||||||
unsigned int __weak smbios_processor_family(struct cpuid_result res)
|
unsigned int __weak smbios_processor_family(struct cpuid_result res)
|
||||||
{
|
{
|
||||||
return (res.eax > 0) ? SMBIOS_PROCESSOR_FAMILY_PENTIUM_PRO : SMBIOS_PROCESSOR_FAMILY_INTEL486;
|
return (res.eax > 0) ? 0x0c : 0x6;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t get_number_of_caches(size_t max_logical_cpus_sharing_cache)
|
static size_t get_number_of_caches(size_t max_logical_cpus_sharing_cache)
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
config DRIVERS_INTEL_DTBT
|
|
||||||
def_bool n
|
|
||||||
help
|
|
||||||
Support for discrete Thunderbolt controllers
|
|
@@ -1,3 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
ramstage-$(CONFIG_DRIVERS_INTEL_DTBT) += dtbt.c
|
|
@@ -1,8 +0,0 @@
|
|||||||
/* 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_ */
|
|
@@ -1,199 +0,0 @@
|
|||||||
/* 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>
|
|
||||||
#include <timer.h>
|
|
||||||
|
|
||||||
#define PCIE2TBT 0x54C
|
|
||||||
#define PCIE2TBT_VALID BIT(0)
|
|
||||||
#define PCIE2TBT_GO2SX 2
|
|
||||||
#define PCIE2TBT_GO2SX_NO_WAKE 3
|
|
||||||
#define PCIE2TBT_SX_EXIT_TBT_CONNECTED 4
|
|
||||||
#define PCIE2TBT_OS_UP 6
|
|
||||||
#define PCIE2TBT_SET_SECURITY_LEVEL 8
|
|
||||||
#define PCIE2TBT_GET_SECURITY_LEVEL 9
|
|
||||||
#define PCIE2TBT_BOOT_ON 24
|
|
||||||
#define PCIE2TBT_USB_ON 25
|
|
||||||
#define PCIE2TBT_GET_ENUMERATION_METHOD 26
|
|
||||||
#define PCIE2TBT_SET_ENUMERATION_METHOD 27
|
|
||||||
#define PCIE2TBT_POWER_CYCLE 28
|
|
||||||
#define PCIE2TBT_SX_START 29
|
|
||||||
#define PCIE2TBT_ACL_BOOT 30
|
|
||||||
#define PCIE2TBT_CONNECT_TOPOLOGY 31
|
|
||||||
|
|
||||||
#define TBT2PCIE 0x548
|
|
||||||
#define TBT2PCIE_DONE BIT(0)
|
|
||||||
|
|
||||||
// Default timeout for mailbox commands unless otherwise specified.
|
|
||||||
#define TIMEOUT_MS 1000
|
|
||||||
// Default timeout for controller to ack GO2SX/GO2SX_NO_WAKE mailbox command.
|
|
||||||
#define GO2SX_TIMEOUT_MS 600
|
|
||||||
|
|
||||||
static void dtbt_cmd(struct device *dev, u32 command, u32 data, u32 timeout)
|
|
||||||
{
|
|
||||||
u32 reg = (data << 8) | (command << 1) | PCIE2TBT_VALID;
|
|
||||||
u32 status;
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "dTBT send command %08x\n", command);
|
|
||||||
pci_write_config32(dev, PCIE2TBT, reg);
|
|
||||||
|
|
||||||
if (!wait_ms(timeout, (status = pci_read_config32(dev, TBT2PCIE)) & TBT2PCIE_DONE)) {
|
|
||||||
printk(BIOS_ERR, "dTBT command %08x send timeout %08x\n", command, status);
|
|
||||||
}
|
|
||||||
|
|
||||||
pci_write_config32(dev, PCIE2TBT, 0);
|
|
||||||
if (!wait_ms(timeout, !(pci_read_config32(dev, TBT2PCIE) & TBT2PCIE_DONE))) {
|
|
||||||
printk(BIOS_ERR, "dTBT command %08x clear timeout\n", command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dtbt_write_dsd(void)
|
|
||||||
{
|
|
||||||
struct acpi_dp *dsd = acpi_dp_new_table("_DSD");
|
|
||||||
|
|
||||||
acpi_device_add_hotplug_support_in_d3(dsd);
|
|
||||||
acpi_device_add_external_facing_port(dsd);
|
|
||||||
acpi_dp_write(dsd);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dtbt_write_opregion(const struct bus *bus)
|
|
||||||
{
|
|
||||||
uintptr_t mmconf_base = (uintptr_t)CONFIG_ECAM_MMCONF_BASE_ADDRESS
|
|
||||||
+ (((uintptr_t)(bus->secondary)) << 20);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dtbt_fill_ssdt(const struct device *dev)
|
|
||||||
{
|
|
||||||
struct bus *bus;
|
|
||||||
struct device *parent;
|
|
||||||
const char *parent_scope;
|
|
||||||
const char *dev_name = acpi_device_name(dev);
|
|
||||||
|
|
||||||
bus = dev->upstream;
|
|
||||||
if (!bus) {
|
|
||||||
printk(BIOS_ERR, "dTBT bus invalid\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent = bus->dev;
|
|
||||||
if (!parent || parent->path.type != DEVICE_PATH_PCI) {
|
|
||||||
printk(BIOS_ERR, "dTBT parent invalid\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent_scope = acpi_device_path(parent);
|
|
||||||
if (!parent_scope) {
|
|
||||||
printk(BIOS_ERR, "dTBT parent scope not valid\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scope */
|
|
||||||
acpigen_write_scope(parent_scope);
|
|
||||||
dtbt_write_dsd();
|
|
||||||
|
|
||||||
/* Device */
|
|
||||||
acpigen_write_device(dev_name);
|
|
||||||
acpigen_write_name_integer("_ADR", 0);
|
|
||||||
dtbt_write_opregion(bus);
|
|
||||||
|
|
||||||
/* 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 << 1, "P2TB");
|
|
||||||
acpigen_write_delay_until_namestr_int(GO2SX_TIMEOUT_MS, "TB2P", PCIE2TBT_GO2SX_NO_WAKE << 1);
|
|
||||||
|
|
||||||
acpigen_write_debug_namestr("TB2P");
|
|
||||||
acpigen_write_store_int_to_namestr(0, "P2TB");
|
|
||||||
acpigen_write_delay_until_namestr_int(GO2SX_TIMEOUT_MS, "TB2P", 0);
|
|
||||||
acpigen_write_debug_namestr("TB2P");
|
|
||||||
|
|
||||||
acpigen_write_method_end();
|
|
||||||
acpigen_write_device_end();
|
|
||||||
acpigen_write_scope_end();
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "dTBT fill SSDT\n");
|
|
||||||
printk(BIOS_DEBUG, " Dev %s\n", dev_path(dev));
|
|
||||||
//printk(BIOS_DEBUG, " Bus %s\n", bus_path(bus));
|
|
||||||
printk(BIOS_DEBUG, " Parent %s\n", dev_path(parent));
|
|
||||||
printk(BIOS_DEBUG, " Scope %s\n", parent_scope);
|
|
||||||
printk(BIOS_DEBUG, " Device %s\n", dev_name);
|
|
||||||
|
|
||||||
// \.TBTS Method
|
|
||||||
acpigen_write_scope("\\");
|
|
||||||
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));
|
|
||||||
|
|
||||||
// XXX: Recommendation is to set SL1 ("User Authorization")
|
|
||||||
printk(BIOS_DEBUG, "dTBT set security level SL0\n");
|
|
||||||
dtbt_cmd(dev, PCIE2TBT_SET_SECURITY_LEVEL, 0, TIMEOUT_MS);
|
|
||||||
// XXX: Must verify change or rollback all controllers
|
|
||||||
|
|
||||||
if (acpi_is_wakeup_s3()) {
|
|
||||||
printk(BIOS_DEBUG, "dTBT SX exit\n");
|
|
||||||
dtbt_cmd(dev, PCIE2TBT_SX_EXIT_TBT_CONNECTED, 0, TIMEOUT_MS);
|
|
||||||
// TODO: "wait for fast link bring-up" loop (timeout: 5s)
|
|
||||||
} else {
|
|
||||||
printk(BIOS_DEBUG, "dTBT boot on\n");
|
|
||||||
dtbt_cmd(dev, PCIE2TBT_BOOT_ON, 0, TIMEOUT_MS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct chip_operations drivers_intel_dtbt_ops = {
|
|
||||||
.name = "Intel Discrete Thunderbolt",
|
|
||||||
.enable_dev = dtbt_enable,
|
|
||||||
};
|
|
@@ -1,21 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
config EC_DASHARO_EC
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
Dasharo EC
|
|
||||||
|
|
||||||
config EC_DASHARO_EC_BAT_THRESHOLDS
|
|
||||||
depends on EC_DASHARO_EC
|
|
||||||
bool
|
|
||||||
default y
|
|
||||||
|
|
||||||
config EC_DASHARO_EC_DGPU
|
|
||||||
depends on EC_DASHARO_EC
|
|
||||||
bool
|
|
||||||
default n
|
|
||||||
|
|
||||||
config EC_DASHARO_EC_OLED
|
|
||||||
depends on EC_DASHARO_EC
|
|
||||||
bool
|
|
||||||
default n
|
|
@@ -1,10 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
ifeq ($(CONFIG_EC_DASHARO_EC),y)
|
|
||||||
|
|
||||||
all-y += dasharo_ec.c
|
|
||||||
|
|
||||||
ramstage-y += smbios.c
|
|
||||||
|
|
||||||
smm-$(CONFIG_DEBUG_SMI) += dasharo_ec.c
|
|
||||||
|
|
||||||
endif
|
|
@@ -1,22 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Device (AC)
|
|
||||||
{
|
|
||||||
Name (_HID, "ACPI0003" /* Power Source Device */)
|
|
||||||
Name (_PCL, Package (0x01) // _PCL: Power Consumer List
|
|
||||||
{
|
|
||||||
_SB
|
|
||||||
})
|
|
||||||
|
|
||||||
Name (ACFG, 1)
|
|
||||||
|
|
||||||
Method (_PSR, 0, NotSerialized) // _PSR: Power Source
|
|
||||||
{
|
|
||||||
Return (ACFG)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_STA, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,248 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Device (BAT0)
|
|
||||||
{
|
|
||||||
Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)
|
|
||||||
Name (_UID, 0)
|
|
||||||
Name (_PCL, Package (0x01) // _PCL: Power Consumer List
|
|
||||||
{
|
|
||||||
_SB
|
|
||||||
})
|
|
||||||
Name (BFCC, 0)
|
|
||||||
Method (_STA, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.BAT0)
|
|
||||||
{
|
|
||||||
Return (0x1F)
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (0x0F)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Name (PBIF, Package (0x0D)
|
|
||||||
{
|
|
||||||
1, // 0 - Power Unit
|
|
||||||
0xFFFFFFFF, // 1 - Design Capacity
|
|
||||||
0xFFFFFFFF, // 2 - Last Full Charge Capacity
|
|
||||||
1, // 3 - Battery Technology
|
|
||||||
0xFFFFFFFF, // 4 - Design Voltage
|
|
||||||
0, // 5 - Design Capacity of Warning
|
|
||||||
0, // 6 - Design Capacity of Low
|
|
||||||
0x40, // 7 - Battery Capacity Granularity 1
|
|
||||||
0x40, // 8 - Battery Capacity Granularity 2
|
|
||||||
" ", // 9 - Model Number
|
|
||||||
" ", // 10 - Serial Number
|
|
||||||
" ", // 11 - Battery Type
|
|
||||||
" " // 12 - OEM Information
|
|
||||||
})
|
|
||||||
Method (IVBI, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
PBIF [1] = 0xFFFFFFFF
|
|
||||||
PBIF [2] = 0xFFFFFFFF
|
|
||||||
PBIF [4] = 0xFFFFFFFF
|
|
||||||
PBIF [9] = " "
|
|
||||||
PBIF [10] = " "
|
|
||||||
PBIF [11] = " "
|
|
||||||
PBIF [12] = " "
|
|
||||||
BFCC = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (UPBI, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.BAT0)
|
|
||||||
{
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BDC0 & 0xFFFF)
|
|
||||||
PBIF [1] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BFC0 & 0xFFFF)
|
|
||||||
PBIF [2] = Local0
|
|
||||||
BFCC = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BDV0 & 0xFFFF)
|
|
||||||
PBIF [4] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BCW0 & 0xFFFF)
|
|
||||||
PBIF [5] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BCL0 & 0xFFFF)
|
|
||||||
PBIF [6] = Local0
|
|
||||||
PBIF [9] = "BAT"
|
|
||||||
PBIF [10] = "0001"
|
|
||||||
PBIF [11] = "LION"
|
|
||||||
PBIF [12] = "Notebook"
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBI ()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_BIF, 0, NotSerialized) // _BIF: Battery Information
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK)
|
|
||||||
{
|
|
||||||
UPBI ()
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBI ()
|
|
||||||
}
|
|
||||||
|
|
||||||
Return (PBIF) /* \_SB_.BAT0.PBIF */
|
|
||||||
}
|
|
||||||
|
|
||||||
Name (PBIX, Package ()
|
|
||||||
{
|
|
||||||
0, // 0 - Revision
|
|
||||||
1, // 1 - Power Unit: mAh
|
|
||||||
0xFFFFFFFF, // 2 - Design Capacity
|
|
||||||
0xFFFFFFFF, // 3 - Last Full Charge Capacity
|
|
||||||
1, // 4 - Battery Technology: Rechargeable
|
|
||||||
0xFFFFFFFF, // 5 - Design Voltage
|
|
||||||
0, // 6 - Design Capacity of Warning
|
|
||||||
0, // 7 - Design Capacity of Low
|
|
||||||
0, // 8 - Cycle Count
|
|
||||||
98000, // 9 - Measurement Accuracy
|
|
||||||
0xFFFFFFFF, // 10 - Max Sampling Time
|
|
||||||
0xFFFFFFFF, // 11 - Min Sampling Time
|
|
||||||
0xFFFFFFFF, // 12 - Max Averaging Interval
|
|
||||||
0xFFFFFFFF, // 13 - Min Averaging Interval
|
|
||||||
0x40, // 14 - Battery Capacity Granularity 1
|
|
||||||
0x40, // 15 - Battery Capacity Granularity 2
|
|
||||||
" ", // 16 - Model Number
|
|
||||||
" ", // 17 - Serial Number
|
|
||||||
" ", // 18 - Battery Type
|
|
||||||
" " // 19 - OEM Information
|
|
||||||
})
|
|
||||||
|
|
||||||
Method (IVBX, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
PBIX [2] = 0xFFFFFFFF
|
|
||||||
PBIX [3] = 0xFFFFFFFF
|
|
||||||
PBIX [5] = 0xFFFFFFFF
|
|
||||||
PBIX [16] = " "
|
|
||||||
PBIX [17] = " "
|
|
||||||
PBIX [18] = " "
|
|
||||||
PBIX [19] = " "
|
|
||||||
BFCC = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (UPBX, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.BAT0)
|
|
||||||
{
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BDC0 & 0xFFFF)
|
|
||||||
PBIX [2] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BFC0 & 0xFFFF)
|
|
||||||
PBIX [3] = Local0
|
|
||||||
BFCC = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BDV0 & 0xFFFF)
|
|
||||||
PBIX [5] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BCW0 & 0xFFFF)
|
|
||||||
PBIX [6] = Local0
|
|
||||||
Local0 = (^^PCI0.LPCB.EC0.BCL0 & 0xFFFF)
|
|
||||||
PBIX [7] = Local0
|
|
||||||
LOCAL0 = ^^PCI0.LPCB.EC0.CYC0
|
|
||||||
PBIX [8] = LOCAL0
|
|
||||||
PBIX [16] = "BAT"
|
|
||||||
PBIX [17] = "0001"
|
|
||||||
PBIX [18] = "LION"
|
|
||||||
PBIX [19] = "Notebook"
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBX ()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// _BIX: Battery Information Extended
|
|
||||||
Method (_BIX, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK)
|
|
||||||
{
|
|
||||||
UPBX ()
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBX ()
|
|
||||||
}
|
|
||||||
Return (PBIX) /* \_SB_.BAT0.PBIX */
|
|
||||||
}
|
|
||||||
|
|
||||||
Name (PBST, Package (0x04)
|
|
||||||
{
|
|
||||||
0, // 0 - Battery state
|
|
||||||
0xFFFFFFFF, // 1 - Battery present rate
|
|
||||||
0xFFFFFFFF, // 2 - Battery remaining capacity
|
|
||||||
0xFFFFFFFF // 3 - Battery present voltage
|
|
||||||
})
|
|
||||||
Method (IVBS, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
PBST [0] = 0
|
|
||||||
PBST [1] = 0xFFFFFFFF
|
|
||||||
PBST [2] = 0xFFFFFFFF
|
|
||||||
PBST [3] = 0xFFFFFFFF
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (UPBS, 0, NotSerialized)
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.BAT0)
|
|
||||||
{
|
|
||||||
Local0 = 0
|
|
||||||
Local1 = 0
|
|
||||||
If (^^AC.ACFG)
|
|
||||||
{
|
|
||||||
If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02))
|
|
||||||
{
|
|
||||||
Local0 |= 0x02
|
|
||||||
Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Local0 |= 1
|
|
||||||
Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
|
|
||||||
}
|
|
||||||
|
|
||||||
Local7 = (Local1 & 0x8000)
|
|
||||||
If ((Local7 == 0x8000))
|
|
||||||
{
|
|
||||||
Local1 ^= 0xFFFF
|
|
||||||
}
|
|
||||||
|
|
||||||
Local2 = (^^PCI0.LPCB.EC0.BRC0 & 0xFFFF)
|
|
||||||
Local3 = (^^PCI0.LPCB.EC0.BPV0 & 0xFFFF)
|
|
||||||
PBST [0] = Local0
|
|
||||||
PBST [1] = Local1
|
|
||||||
PBST [2] = Local2
|
|
||||||
PBST [3] = Local3
|
|
||||||
If ((BFCC != ^^PCI0.LPCB.EC0.BFC0))
|
|
||||||
{
|
|
||||||
Notify (BAT0, 0x81) // Information Change
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBS ()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_BST, 0, NotSerialized) // _BST: Battery Status
|
|
||||||
{
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK)
|
|
||||||
{
|
|
||||||
UPBS ()
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
IVBS ()
|
|
||||||
}
|
|
||||||
|
|
||||||
Return (PBST) /* \_SB_.BAT0.PBST */
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Field (ERAM, ByteAcc, Lock, Preserve)
|
|
||||||
{
|
|
||||||
Offset (0xBC),
|
|
||||||
BTL0, 8, /* BAT0 charging start threshold */
|
|
||||||
BTH0, 8, /* BAT0 charging end threshold */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get battery charging threshold
|
|
||||||
*
|
|
||||||
* Arg0: 0: Start threshold
|
|
||||||
* 1: Stop threshold
|
|
||||||
*/
|
|
||||||
Method (GBCT, 1, NotSerialized)
|
|
||||||
{
|
|
||||||
If (Arg0 == 0) {
|
|
||||||
Return (BTL0)
|
|
||||||
}
|
|
||||||
|
|
||||||
If (Arg0 == 1) {
|
|
||||||
Return (BTH0)
|
|
||||||
}
|
|
||||||
|
|
||||||
Return (0xFF)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set battery charging threshold
|
|
||||||
*
|
|
||||||
* Arg0: 0: Start threshold
|
|
||||||
* 1: Stop threshold
|
|
||||||
* Arg1: Percentage
|
|
||||||
*/
|
|
||||||
Method (SBCT, 2, NotSerialized)
|
|
||||||
{
|
|
||||||
If (Arg1 <= 100) {
|
|
||||||
If (Arg0 == 0) {
|
|
||||||
BTL0 = Arg1
|
|
||||||
}
|
|
||||||
If (Arg0 == 1) {
|
|
||||||
BTH0 = Arg1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,13 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Device (PWRB)
|
|
||||||
{
|
|
||||||
Name (_HID, EisaId ("PNP0C0C"))
|
|
||||||
Name (_PRW, Package () { EC_GPE_SWI, 3 })
|
|
||||||
}
|
|
||||||
|
|
||||||
Device (SLPB)
|
|
||||||
{
|
|
||||||
Name (_HID, EisaId ("PNP0C0E"))
|
|
||||||
Name (_PRW, Package () { EC_GPE_SWI, 3 })
|
|
||||||
}
|
|
@@ -1,241 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Scope (\_SB) {
|
|
||||||
#include "ac.asl"
|
|
||||||
#include "battery.asl"
|
|
||||||
#include "buttons.asl"
|
|
||||||
#include "hid.asl"
|
|
||||||
#include "lid.asl"
|
|
||||||
#include "s76.asl"
|
|
||||||
}
|
|
||||||
|
|
||||||
Device (\_SB.PCI0.LPCB.EC0)
|
|
||||||
{
|
|
||||||
Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)
|
|
||||||
Name (_GPE, EC_GPE_SCI) // _GPE: General Purpose Events
|
|
||||||
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
|
|
||||||
{
|
|
||||||
IO (Decode16,
|
|
||||||
0x0062, // Range Minimum
|
|
||||||
0x0062, // Range Maximum
|
|
||||||
0x00, // Alignment
|
|
||||||
0x01, // Length
|
|
||||||
)
|
|
||||||
IO (Decode16,
|
|
||||||
0x0066, // Range Minimum
|
|
||||||
0x0066, // Range Maximum
|
|
||||||
0x00, // Alignment
|
|
||||||
0x01, // Length
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
#include "ec_ram.asl"
|
|
||||||
|
|
||||||
Name (ECOK, 0)
|
|
||||||
Method (_REG, 2, Serialized) // _REG: Region Availability
|
|
||||||
{
|
|
||||||
Printf ("EC: _REG %o %o", ToHexString(Arg0), ToHexString(Arg1))
|
|
||||||
If ((Arg0 == 0x03) && (Arg1 == 1)) {
|
|
||||||
// Enable hardware touchpad lock, airplane mode, and keyboard backlight keys
|
|
||||||
ECOS = 1
|
|
||||||
|
|
||||||
// Enable software display brightness keys
|
|
||||||
WINF = 1
|
|
||||||
|
|
||||||
// Set current AC state
|
|
||||||
^^^^AC.ACFG = ADP
|
|
||||||
// Update battery information and status
|
|
||||||
^^^^BAT0.UPBI()
|
|
||||||
^^^^BAT0.UPBS()
|
|
||||||
|
|
||||||
// Notify of changes
|
|
||||||
Notify(^^^^AC, 0)
|
|
||||||
Notify(^^^^BAT0, 0)
|
|
||||||
|
|
||||||
PNOT ()
|
|
||||||
|
|
||||||
// EC is now available
|
|
||||||
ECOK = Arg1
|
|
||||||
|
|
||||||
// Reset Dasharo Device
|
|
||||||
^^^^S76D.RSET()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Name (S3OS, 0)
|
|
||||||
Method (PTS, 1, Serialized) {
|
|
||||||
Printf ("EC: PTS: %o", ToHexString(Arg0))
|
|
||||||
If (ECOK) {
|
|
||||||
// Save ECOS during sleep
|
|
||||||
S3OS = ECOS
|
|
||||||
|
|
||||||
// Clear wake cause
|
|
||||||
WFNO = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (WAK, 1, Serialized) {
|
|
||||||
Printf ("EC: WAK: %o", ToHexString(Arg0))
|
|
||||||
If (ECOK) {
|
|
||||||
// Restore ECOS after sleep
|
|
||||||
ECOS = S3OS
|
|
||||||
|
|
||||||
// Set current AC state
|
|
||||||
^^^^AC.ACFG = ADP
|
|
||||||
|
|
||||||
// Update battery information and status
|
|
||||||
^^^^BAT0.UPBI()
|
|
||||||
^^^^BAT0.UPBS()
|
|
||||||
|
|
||||||
// Notify of changes
|
|
||||||
Notify(^^^^AC, 0)
|
|
||||||
Notify(^^^^BAT0, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0A, 0, NotSerialized) // Touchpad Toggle
|
|
||||||
{
|
|
||||||
Printf ("EC: Touchpad Toggle")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0B, 0, NotSerialized) // Screen Toggle
|
|
||||||
{
|
|
||||||
Printf ("EC: Screen Toggle")
|
|
||||||
#if CONFIG(EC_DASHARO_EC_OLED)
|
|
||||||
Notify (^^^^S76D, 0x85)
|
|
||||||
#endif // CONFIG(EC_DASHARO_EC_OLED)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0C, 0, NotSerialized) // Mute
|
|
||||||
{
|
|
||||||
Printf ("EC: Mute")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0D, 0, NotSerialized) // Keyboard Backlight
|
|
||||||
{
|
|
||||||
Printf ("EC: Keyboard Backlight")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0E, 0, NotSerialized) // Volume Down
|
|
||||||
{
|
|
||||||
Printf ("EC: Volume Down")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q0F, 0, NotSerialized) // Volume Up
|
|
||||||
{
|
|
||||||
Printf ("EC: Volume Up")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q10, 0, NotSerialized) // Switch Video Mode
|
|
||||||
{
|
|
||||||
Printf ("EC: Switch Video Mode")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q11, 0, NotSerialized) // Brightness Down
|
|
||||||
{
|
|
||||||
Printf ("EC: Brightness Down")
|
|
||||||
if (^^^^HIDD.HRDY) {
|
|
||||||
^^^^HIDD.HPEM (20)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q12, 0, NotSerialized) // Brightness Up
|
|
||||||
{
|
|
||||||
Printf ("EC: Brightness Up")
|
|
||||||
if (^^^^HIDD.HRDY) {
|
|
||||||
^^^^HIDD.HPEM (19)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q13, 0, NotSerialized) // Camera Toggle
|
|
||||||
{
|
|
||||||
Printf ("EC: Camera Toggle")
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q14, 0, NotSerialized) // Airplane Mode
|
|
||||||
{
|
|
||||||
Printf ("EC: Airplane Mode")
|
|
||||||
if (^^^^HIDD.HRDY) {
|
|
||||||
^^^^HIDD.HPEM (8)
|
|
||||||
}
|
|
||||||
// TODO: hardware airplane mode
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q15, 0, NotSerialized) // Suspend Button
|
|
||||||
{
|
|
||||||
Printf ("EC: Suspend Button")
|
|
||||||
Notify (SLPB, 0x80)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q16, 0, NotSerialized) // AC Detect
|
|
||||||
{
|
|
||||||
Printf ("EC: AC Detect")
|
|
||||||
^^^^AC.ACFG = ADP
|
|
||||||
Notify (AC, 0x80) // Status Change
|
|
||||||
If (BAT0)
|
|
||||||
{
|
|
||||||
Notify (^^^^BAT0, 0x81) // Information Change
|
|
||||||
Notify (^^^^BAT0, 0x80) // Status Change
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q17, 0, NotSerialized) // BAT0 Update
|
|
||||||
{
|
|
||||||
Printf ("EC: BAT0 Update (17)")
|
|
||||||
Notify (^^^^BAT0, 0x81) // Information Change
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q19, 0, NotSerialized) // BAT0 Update
|
|
||||||
{
|
|
||||||
Printf ("EC: BAT0 Update (19)")
|
|
||||||
Notify (^^^^BAT0, 0x81) // Information Change
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q1B, 0, NotSerialized) // Lid Close
|
|
||||||
{
|
|
||||||
Printf ("EC: Lid Close")
|
|
||||||
Notify (LID0, 0x80)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q1C, 0, NotSerialized) // Thermal Trip
|
|
||||||
{
|
|
||||||
Printf ("EC: Thermal Trip")
|
|
||||||
/* TODO
|
|
||||||
Notify (\_TZ.TZ0, 0x81) // Thermal Trip Point Change
|
|
||||||
Notify (\_TZ.TZ0, 0x80) // Thermal Status Change
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q1D, 0, NotSerialized) // Power Button
|
|
||||||
{
|
|
||||||
Printf ("EC: Power Button")
|
|
||||||
Notify (PWRB, 0x80)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_Q50, 0, NotSerialized) // Other Events
|
|
||||||
{
|
|
||||||
Local0 = OEM4
|
|
||||||
If (Local0 == 0x8A) {
|
|
||||||
Printf ("EC: White Keyboard Backlight")
|
|
||||||
Notify (^^^^S76D, 0x80)
|
|
||||||
} ElseIf (Local0 == 0x9F) {
|
|
||||||
Printf ("EC: Color Keyboard Toggle")
|
|
||||||
Notify (^^^^S76D, 0x81)
|
|
||||||
} ElseIf (Local0 == 0x81) {
|
|
||||||
Printf ("EC: Color Keyboard Down")
|
|
||||||
Notify (^^^^S76D, 0x82)
|
|
||||||
} ElseIf (Local0 == 0x82) {
|
|
||||||
Printf ("EC: Color Keyboard Up")
|
|
||||||
Notify (^^^^S76D, 0x83)
|
|
||||||
} ElseIf (Local0 == 0x80) {
|
|
||||||
Printf ("EC: Color Keyboard Color Change")
|
|
||||||
Notify (^^^^S76D, 0x84)
|
|
||||||
} Else {
|
|
||||||
Printf ("EC: Other: %o", ToHexString(Local0))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG(EC_DASHARO_EC_BAT_THRESHOLDS)
|
|
||||||
#include "battery_thresholds.asl"
|
|
||||||
#endif
|
|
||||||
}
|
|
@@ -1,55 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
OperationRegion (ERAM, EmbeddedControl, 0, 0xFF)
|
|
||||||
Field (ERAM, ByteAcc, Lock, Preserve)
|
|
||||||
{
|
|
||||||
Offset (0x03),
|
|
||||||
LSTE, 1, // Lid is open
|
|
||||||
, 1,
|
|
||||||
LWKE, 1, // Lid wake
|
|
||||||
, 5,
|
|
||||||
Offset (0x07),
|
|
||||||
TMP1, 8, // CPU temperature
|
|
||||||
Offset (0x10),
|
|
||||||
ADP, 1, // AC adapter connected
|
|
||||||
, 1,
|
|
||||||
BAT0, 1, // Battery connected
|
|
||||||
, 5,
|
|
||||||
WFNO, 8, // Wake cause (not implemented)
|
|
||||||
Offset (0x16),
|
|
||||||
BDC0, 32, // Battery design capacity
|
|
||||||
BFC0, 32, // Battery full capacity
|
|
||||||
Offset (0x22),
|
|
||||||
BDV0, 32, // Battery design voltage
|
|
||||||
BST0, 32, // Battery status
|
|
||||||
BPR0, 32, // Battery current
|
|
||||||
BRC0, 32, // Battery remaining capacity
|
|
||||||
BPV0, 32, // Battery voltage
|
|
||||||
Offset (0x3A),
|
|
||||||
BCW0, 32,
|
|
||||||
BCL0, 32,
|
|
||||||
CYC0, 16, // Battery cycle count
|
|
||||||
Offset (0x68),
|
|
||||||
ECOS, 8, // Detected OS, 0 = no ACPI, 1 = ACPI but no driver, 2 = ACPI with driver
|
|
||||||
Offset (0xC8),
|
|
||||||
OEM1, 8,
|
|
||||||
OEM2, 8,
|
|
||||||
OEM3, 16,
|
|
||||||
OEM4, 8, // Extra SCI data
|
|
||||||
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
|
|
||||||
Offset (0xF8),
|
|
||||||
FCMD, 8,
|
|
||||||
FDAT, 8,
|
|
||||||
FBUF, 8,
|
|
||||||
FBF1, 8,
|
|
||||||
FBF2, 8,
|
|
||||||
FBF3, 8,
|
|
||||||
}
|
|
@@ -1,50 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Device (HIDD)
|
|
||||||
{
|
|
||||||
Name (_HID, "INT33D5")
|
|
||||||
Name (HBSY, 0)
|
|
||||||
Name (HIDX, 0)
|
|
||||||
Name (HRDY, 0)
|
|
||||||
|
|
||||||
Method (HDEM, 0, Serialized)
|
|
||||||
{
|
|
||||||
HBSY = 0
|
|
||||||
Return (HIDX)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (HDMM, 0, Serialized)
|
|
||||||
{
|
|
||||||
Return (0)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (HDSM, 1, Serialized)
|
|
||||||
{
|
|
||||||
HRDY = Arg0
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (HPEM, 1, Serialized)
|
|
||||||
{
|
|
||||||
HBSY = 1
|
|
||||||
HIDX = Arg0
|
|
||||||
|
|
||||||
Notify (HIDD, 0xC0)
|
|
||||||
Local0 = 0
|
|
||||||
While ((Local0 < 0xFA) && HBSY)
|
|
||||||
{
|
|
||||||
Sleep (0x04)
|
|
||||||
Local0++
|
|
||||||
}
|
|
||||||
|
|
||||||
If (HBSY == 1)
|
|
||||||
{
|
|
||||||
HBSY = 0
|
|
||||||
HIDX = 0
|
|
||||||
Return (1)
|
|
||||||
}
|
|
||||||
Else
|
|
||||||
{
|
|
||||||
Return (0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,23 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
Device (LID0)
|
|
||||||
{
|
|
||||||
Name (_HID, EisaId ("PNP0C0D"))
|
|
||||||
Name (_PRW, Package () { EC_GPE_SWI, 3 })
|
|
||||||
|
|
||||||
Method (_LID, 0, NotSerialized) {
|
|
||||||
Printf ("LID: _LID")
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
Return (^^PCI0.LPCB.EC0.LSTE)
|
|
||||||
} Else {
|
|
||||||
Return (1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (_PSW, 1, NotSerialized) {
|
|
||||||
Printf ("LID: _PSW: %o", ToHexString(Arg0))
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
^^PCI0.LPCB.EC0.LWKE = Arg0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,178 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
// Notifications:
|
|
||||||
// 0x80 - hardware backlight toggle
|
|
||||||
// 0x81 - backlight toggle
|
|
||||||
// 0x82 - backlight down
|
|
||||||
// 0x83 - backlight up
|
|
||||||
// 0x84 - backlight color change
|
|
||||||
// 0x85 - OLED screen toggle
|
|
||||||
Device (S76D) {
|
|
||||||
Name (_HID, "17761776")
|
|
||||||
Name (_UID, 0)
|
|
||||||
// Hide the device so that Windows does not warn about a missing driver.
|
|
||||||
Name (_STA, 0xB)
|
|
||||||
|
|
||||||
Method (RSET, 0, Serialized) {
|
|
||||||
Printf ("S76D: RSET")
|
|
||||||
SAPL(0)
|
|
||||||
SKBB(0)
|
|
||||||
SKBC(0xFFFFFF)
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (INIT, 0, Serialized) {
|
|
||||||
Printf ("S76D: INIT")
|
|
||||||
RSET()
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
// Set flags to use software control
|
|
||||||
^^PCI0.LPCB.EC0.ECOS = 2
|
|
||||||
Return (0)
|
|
||||||
} Else {
|
|
||||||
Return (1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method (FINI, 0, Serialized) {
|
|
||||||
Printf ("S76D: FINI")
|
|
||||||
RSET()
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
// Set flags to use hardware control
|
|
||||||
^^PCI0.LPCB.EC0.ECOS = 1
|
|
||||||
Return (0)
|
|
||||||
} Else {
|
|
||||||
Return (1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get Airplane LED
|
|
||||||
Method (GAPL, 0, Serialized) {
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
If (^^PCI0.LPCB.EC0.AIRP & 0x40) {
|
|
||||||
Return (1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Return (0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set Airplane LED
|
|
||||||
Method (SAPL, 1, Serialized) {
|
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
|
||||||
If (Arg0) {
|
|
||||||
^^PCI0.LPCB.EC0.AIRP |= 0x40
|
|
||||||
} Else {
|
|
||||||
^^PCI0.LPCB.EC0.AIRP &= 0xBF
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 = 2
|
|
||||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
|
||||||
Local0 = ^^PCI0.LPCB.EC0.FBUF
|
|
||||||
}
|
|
||||||
Return (Local0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
Return (Local0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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) {
|
|
||||||
Return (Package() {
|
|
||||||
"CPU fan",
|
|
||||||
#if CONFIG(EC_DASHARO_EC_DGPU)
|
|
||||||
"GPU fan",
|
|
||||||
#endif
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get fan duty cycle 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() {
|
|
||||||
"CPU temp",
|
|
||||||
#if CONFIG(EC_DASHARO_EC_DGPU)
|
|
||||||
"GPU temp",
|
|
||||||
#endif
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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)
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,112 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include "dasharo_ec.h"
|
|
||||||
#include <arch/io.h>
|
|
||||||
#include <console/dasharo_ec.h>
|
|
||||||
#include <console/console.h>
|
|
||||||
#include <timer.h>
|
|
||||||
|
|
||||||
// This is the command region for Dasharo EC firmware. It must be
|
|
||||||
// enabled for LPC in the mainboard.
|
|
||||||
#define DASHARO_EC_BASE 0x0E00
|
|
||||||
#define DASHARO_EC_SIZE 256
|
|
||||||
|
|
||||||
#define REG_CMD 0
|
|
||||||
#define REG_RESULT 1
|
|
||||||
#define REG_DATA 2 // Start of command data
|
|
||||||
|
|
||||||
// When command register is 0, command is complete
|
|
||||||
#define CMD_FINISHED 0
|
|
||||||
|
|
||||||
#define RESULT_OK 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
|
|
||||||
|
|
||||||
static inline uint8_t dasharo_ec_read(uint8_t addr)
|
|
||||||
{
|
|
||||||
return inb(DASHARO_EC_BASE + (uint16_t)addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void dasharo_ec_write(uint8_t addr, uint8_t data)
|
|
||||||
{
|
|
||||||
outb(data, DASHARO_EC_BASE + (uint16_t)addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void dasharo_ec_init(void)
|
|
||||||
{
|
|
||||||
// Clear entire command region
|
|
||||||
for (int i = 0; i < DASHARO_EC_SIZE; i++)
|
|
||||||
dasharo_ec_write((uint8_t)i, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void dasharo_ec_flush(void)
|
|
||||||
{
|
|
||||||
dasharo_ec_write(REG_CMD, CMD_PRINT);
|
|
||||||
|
|
||||||
// Wait for command completion, for up to 10 milliseconds, with a
|
|
||||||
// test period of 1 microsecond
|
|
||||||
wait_us(10000, dasharo_ec_read(REG_CMD) == CMD_FINISHED);
|
|
||||||
|
|
||||||
dasharo_ec_write(CMD_PRINT_REG_LEN, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void dasharo_ec_print(uint8_t byte)
|
|
||||||
{
|
|
||||||
uint8_t len = dasharo_ec_read(CMD_PRINT_REG_LEN);
|
|
||||||
dasharo_ec_write(CMD_PRINT_REG_DATA + len, byte);
|
|
||||||
dasharo_ec_write(CMD_PRINT_REG_LEN, len + 1);
|
|
||||||
|
|
||||||
// If we hit the end of the buffer, or were given a newline, flush
|
|
||||||
if (byte == '\n' || len >= (DASHARO_EC_SIZE - CMD_PRINT_REG_DATA))
|
|
||||||
dasharo_ec_flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool dasharo_ec_cmd(uint8_t cmd, const uint8_t *request_data,
|
|
||||||
uint8_t request_size, uint8_t *reply_data, uint8_t reply_size)
|
|
||||||
{
|
|
||||||
if (request_size > DASHARO_EC_SIZE - REG_DATA ||
|
|
||||||
reply_size > DASHARO_EC_SIZE - REG_DATA) {
|
|
||||||
printk(BIOS_ERR, "EC command %d too long - request size %u, reply size %u\n",
|
|
||||||
cmd, request_size, reply_size);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If any data were buffered by dasharo_ec_print(), flush it first */
|
|
||||||
uint8_t buffered_len = dasharo_ec_read(CMD_PRINT_REG_LEN);
|
|
||||||
if (buffered_len > 0)
|
|
||||||
dasharo_ec_flush();
|
|
||||||
|
|
||||||
/* Write the data */
|
|
||||||
uint8_t i;
|
|
||||||
for (i = 0; i < request_size; ++i)
|
|
||||||
dasharo_ec_write(REG_DATA + i, request_data[i]);
|
|
||||||
|
|
||||||
/* Write the command */
|
|
||||||
dasharo_ec_write(REG_CMD, cmd);
|
|
||||||
|
|
||||||
/* Wait for the command to complete */
|
|
||||||
bool ret = true;
|
|
||||||
int elapsed = wait_ms(1000, dasharo_ec_read(REG_CMD) == CMD_FINISHED);
|
|
||||||
if (elapsed == 0) {
|
|
||||||
/* Timed out: fail the command, don't attempt to read a reply. */
|
|
||||||
printk(BIOS_WARNING, "EC command %d timed out - request size %d, reply size %d\n",
|
|
||||||
cmd, request_size, reply_size);
|
|
||||||
ret = false;
|
|
||||||
} else {
|
|
||||||
/* Read the reply */
|
|
||||||
for (i = 0; i < reply_size; ++i)
|
|
||||||
reply_data[i] = dasharo_ec_read(REG_DATA+i);
|
|
||||||
/* Check the reply status */
|
|
||||||
ret = (dasharo_ec_read(REG_RESULT) == RESULT_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reset the flags and length so we can buffer console prints again */
|
|
||||||
dasharo_ec_write(CMD_PRINT_REG_FLAGS, 0);
|
|
||||||
dasharo_ec_write(CMD_PRINT_REG_LEN, 0);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
@@ -1,17 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#ifndef DASHARO_EC_H
|
|
||||||
#define DASHARO_EC_H
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Send a command to the EC. request_data/request_size are the request payload,
|
|
||||||
* request_data can be NULL if request_size is 0. reply_data/reply_size are
|
|
||||||
* the reply payload, reply_data can be NULL if reply_size is 0.
|
|
||||||
*/
|
|
||||||
bool dasharo_ec_cmd(uint8_t cmd, const uint8_t *request_data,
|
|
||||||
uint8_t request_size, uint8_t *reply_data, uint8_t reply_size);
|
|
||||||
|
|
||||||
#endif
|
|
@@ -1,9 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <smbios.h>
|
|
||||||
|
|
||||||
smbios_wakeup_type smbios_system_wakeup_type(void)
|
|
||||||
{
|
|
||||||
// TODO: Read wake source from EC.
|
|
||||||
return SMBIOS_WAKEUP_TYPE_POWER_SWITCH;
|
|
||||||
}
|
|
@@ -15,11 +15,6 @@ config EC_SYSTEM76_EC_DGPU
|
|||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config EC_SYSTEM76_EC_LOCKDOWN
|
|
||||||
depends on EC_SYSTEM76_EC
|
|
||||||
bool
|
|
||||||
default n
|
|
||||||
|
|
||||||
config EC_SYSTEM76_EC_OLED
|
config EC_SYSTEM76_EC_OLED
|
||||||
depends on EC_SYSTEM76_EC
|
depends on EC_SYSTEM76_EC
|
||||||
bool
|
bool
|
||||||
|
@@ -4,7 +4,6 @@ ifeq ($(CONFIG_EC_SYSTEM76_EC),y)
|
|||||||
all-y += system76_ec.c
|
all-y += system76_ec.c
|
||||||
|
|
||||||
ramstage-y += smbios.c
|
ramstage-y += smbios.c
|
||||||
ramstage-$(CONFIG_EC_SYSTEM76_EC_LOCKDOWN) += lockdown.c
|
|
||||||
|
|
||||||
smm-$(CONFIG_DEBUG_SMI) += system76_ec.c
|
smm-$(CONFIG_DEBUG_SMI) += system76_ec.c
|
||||||
|
|
||||||
|
@@ -1,59 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include "system76_ec.h"
|
|
||||||
#include <bootstate.h>
|
|
||||||
#include <commonlib/region.h>
|
|
||||||
#include <fmap.h>
|
|
||||||
#include <spi_flash.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)) {
|
|
||||||
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
|
|
@@ -26,9 +26,6 @@
|
|||||||
#define CMD_PRINT_REG_LEN 3
|
#define CMD_PRINT_REG_LEN 3
|
||||||
#define CMD_PRINT_REG_DATA 4
|
#define CMD_PRINT_REG_DATA 4
|
||||||
|
|
||||||
// Get security state command
|
|
||||||
#define CMD_SECURITY_GET 20
|
|
||||||
|
|
||||||
static inline uint8_t system76_ec_read(uint8_t addr)
|
static inline uint8_t system76_ec_read(uint8_t addr)
|
||||||
{
|
{
|
||||||
return inb(SYSTEM76_EC_BASE + (uint16_t)addr);
|
return inb(SYSTEM76_EC_BASE + (uint16_t)addr);
|
||||||
@@ -113,9 +110,3 @@ bool system76_ec_cmd(uint8_t cmd, const uint8_t *request_data,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool system76_ec_security_get(uint8_t *state)
|
|
||||||
{
|
|
||||||
*state = SYSTEM76_EC_SECURITY_STATE_LOCK;
|
|
||||||
return system76_ec_cmd(CMD_SECURITY_GET, NULL, 0, state, sizeof(*state));
|
|
||||||
}
|
|
||||||
|
@@ -6,15 +6,6 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.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
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send a command to the EC. request_data/request_size are the request payload,
|
* Send a command to the EC. request_data/request_size are the request payload,
|
||||||
* request_data can be NULL if request_size is 0. reply_data/reply_size are
|
* request_data can be NULL if request_size is 0. reply_data/reply_size are
|
||||||
@@ -23,6 +14,4 @@
|
|||||||
bool system76_ec_cmd(uint8_t cmd, const uint8_t *request_data,
|
bool system76_ec_cmd(uint8_t cmd, const uint8_t *request_data,
|
||||||
uint8_t request_size, uint8_t *reply_data, uint8_t reply_size);
|
uint8_t request_size, uint8_t *reply_data, uint8_t reply_size);
|
||||||
|
|
||||||
bool system76_ec_security_get(uint8_t *state);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -129,12 +129,6 @@ u32 fdt_find_node_by_alias(const void *blob, const char *alias_name,
|
|||||||
*/
|
*/
|
||||||
int fdt_next_node_name(const void *blob, uint32_t node_offset, const char **name);
|
int fdt_next_node_name(const void *blob, uint32_t node_offset, const char **name);
|
||||||
|
|
||||||
/* Read memory regions from a flat device-tree. */
|
|
||||||
size_t fdt_read_memory_regions(const void *blob, struct device_tree_region regions[],
|
|
||||||
size_t regions_count);
|
|
||||||
/* Find top of memory from a flat device-tree. */
|
|
||||||
uint64_t fdt_get_memory_top(const void *blob);
|
|
||||||
|
|
||||||
/* Read a flattened device tree into a hierarchical structure which refers to
|
/* Read a flattened device tree into a hierarchical structure which refers to
|
||||||
the contents of the flattened tree in place. Modifying the flat tree
|
the contents of the flattened tree in place. Modifying the flat tree
|
||||||
invalidates the unflattened one. */
|
invalidates the unflattened one. */
|
||||||
|
@@ -584,13 +584,7 @@ enum smbios_processor_upgrade_field {
|
|||||||
/* defines for processor family */
|
/* defines for processor family */
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_OTHER 0x01
|
#define SMBIOS_PROCESSOR_FAMILY_OTHER 0x01
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_UNKNOWN 0x02
|
#define SMBIOS_PROCESSOR_FAMILY_UNKNOWN 0x02
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_INTEL486 0x06
|
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_PENTIUM_PRO 0x0c
|
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_XEON 0xb3
|
#define SMBIOS_PROCESSOR_FAMILY_XEON 0xb3
|
||||||
#define SMBIOS_PROCESSOR_FAMILY_FROM_FAMILY2 0xfe
|
|
||||||
|
|
||||||
/* defines for processor family 2 */
|
|
||||||
#define SMBIOS_PROCESSOR_FAMILY2_ARMV8 0x101
|
|
||||||
|
|
||||||
/* defines for processor characteristics */
|
/* defines for processor characteristics */
|
||||||
#define PROCESSOR_64BIT_CAPABLE (1 << 2)
|
#define PROCESSOR_64BIT_CAPABLE (1 << 2)
|
||||||
|
@@ -36,18 +36,6 @@
|
|||||||
#define DDR4_SPD_PART_OFF 329
|
#define DDR4_SPD_PART_OFF 329
|
||||||
#define DDR4_SPD_PART_LEN 20
|
#define DDR4_SPD_PART_LEN 20
|
||||||
#define DDR4_SPD_SN_OFF 325
|
#define DDR4_SPD_SN_OFF 325
|
||||||
#define MAX_SPD_PAGE_SIZE_SPD5 128
|
|
||||||
#define MAX_SPD_SIZE (SPD_PAGE_LEN * 4)
|
|
||||||
#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 {
|
struct spd_block {
|
||||||
u8 addr_map[CONFIG_DIMM_MAX]; /* 7 bit I2C addresses */
|
u8 addr_map[CONFIG_DIMM_MAX]; /* 7 bit I2C addresses */
|
||||||
|
@@ -160,12 +160,10 @@ ramstage-$(CONFIG_GENERIC_GPIO_LIB) += gpio.c
|
|||||||
ramstage-$(CONFIG_GENERIC_UDELAY) += timer.c
|
ramstage-$(CONFIG_GENERIC_UDELAY) += timer.c
|
||||||
ramstage-y += b64_decode.c
|
ramstage-y += b64_decode.c
|
||||||
ramstage-$(CONFIG_ACPI_NHLT) += nhlt.c
|
ramstage-$(CONFIG_ACPI_NHLT) += nhlt.c
|
||||||
|
ramstage-$(CONFIG_FLATTENED_DEVICE_TREE) += device_tree.c
|
||||||
ramstage-$(CONFIG_PAYLOAD_FIT_SUPPORT) += fit.c
|
ramstage-$(CONFIG_PAYLOAD_FIT_SUPPORT) += fit.c
|
||||||
ramstage-$(CONFIG_PAYLOAD_FIT_SUPPORT) += fit_payload.c
|
ramstage-$(CONFIG_PAYLOAD_FIT_SUPPORT) += fit_payload.c
|
||||||
|
|
||||||
romstage-$(CONFIG_FLATTENED_DEVICE_TREE) += device_tree.c
|
|
||||||
ramstage-$(CONFIG_FLATTENED_DEVICE_TREE) += device_tree.c
|
|
||||||
|
|
||||||
romstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
romstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
||||||
ramstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
ramstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
||||||
|
|
||||||
|
@@ -12,12 +12,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#define FDT_PATH_MAX_DEPTH 10 // should be a good enough upper bound
|
#define FDT_PATH_MAX_DEPTH 10 // should be a good enough upper bound
|
||||||
#define FDT_PATH_MAX_LEN 128 // should be a good enough upper bound
|
#define FDT_PATH_MAX_LEN 128 // should be a good enough upper bound
|
||||||
#define FDT_MAX_MEMORY_NODES 4 // should be a good enough upper bound
|
|
||||||
#define FDT_MAX_MEMORY_REGIONS 16 // should be a good enough upper bound
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Functions for picking apart flattened trees.
|
* Functions for picking apart flattened trees.
|
||||||
@@ -506,96 +503,6 @@ void fdt_print_node(const void *blob, uint32_t offset)
|
|||||||
print_flat_node(blob, offset, 0);
|
print_flat_node(blob, offset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* fdt_read_memory_regions finds memory ranges from a flat device-tree
|
|
||||||
*
|
|
||||||
* @params blob address of FDT
|
|
||||||
* @params regions all regions that are read inside the reg property of
|
|
||||||
* memory nodes are saved inside this array
|
|
||||||
* @params regions_count maximum number of entries that can be saved inside
|
|
||||||
* the regions array.
|
|
||||||
*
|
|
||||||
* Returns: Either 0 on error or returns the number of regions put into the regions array.
|
|
||||||
*/
|
|
||||||
size_t fdt_read_memory_regions(const void *blob,
|
|
||||||
struct device_tree_region regions[],
|
|
||||||
size_t regions_count)
|
|
||||||
{
|
|
||||||
u32 node, root, addrcp, sizecp;
|
|
||||||
u32 nodes[FDT_MAX_MEMORY_NODES] = {0};
|
|
||||||
size_t region_idx = 0;
|
|
||||||
size_t node_count = 0;
|
|
||||||
|
|
||||||
if (!fdt_is_valid(blob))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
node = fdt_find_node_by_path(blob, "/memory", &addrcp, &sizecp);
|
|
||||||
if (node) {
|
|
||||||
region_idx += fdt_read_reg_prop(blob, node, addrcp, sizecp,
|
|
||||||
regions, regions_count);
|
|
||||||
if (region_idx >= regions_count) {
|
|
||||||
printk(BIOS_WARNING, "FDT: Too many memory regions\n");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
root = fdt_find_node_by_path(blob, "/", &addrcp, &sizecp);
|
|
||||||
node_count = fdt_find_subnodes_by_prefix(blob, root, "memory@",
|
|
||||||
&addrcp, &sizecp, nodes,
|
|
||||||
FDT_MAX_MEMORY_NODES);
|
|
||||||
if (node_count >= FDT_MAX_MEMORY_NODES) {
|
|
||||||
printk(BIOS_WARNING, "FDT: Too many memory nodes\n");
|
|
||||||
/* Can still reading the regions for those we got */
|
|
||||||
}
|
|
||||||
|
|
||||||
for (size_t i = 0; i < MIN(node_count, FDT_MAX_MEMORY_NODES); i++) {
|
|
||||||
region_idx += fdt_read_reg_prop(blob, nodes[i], addrcp, sizecp,
|
|
||||||
®ions[region_idx],
|
|
||||||
regions_count - region_idx);
|
|
||||||
if (region_idx >= regions_count) {
|
|
||||||
printk(BIOS_WARNING, "FDT: Too many memory regions\n");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
|
||||||
for (size_t i = 0; i < MIN(region_idx, regions_count); i++) {
|
|
||||||
printk(BIOS_DEBUG, "FDT: Memory region [%#llx - %#llx]\n",
|
|
||||||
regions[i].addr, regions[i].addr + regions[i].size);
|
|
||||||
}
|
|
||||||
|
|
||||||
return region_idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* fdt_get_memory_top finds top of memory from a flat device-tree
|
|
||||||
*
|
|
||||||
* @params blob address of FDT
|
|
||||||
*
|
|
||||||
* Returns: Either 0 on error or returns the maximum memory address
|
|
||||||
*/
|
|
||||||
uint64_t fdt_get_memory_top(const void *blob)
|
|
||||||
{
|
|
||||||
struct device_tree_region regions[FDT_MAX_MEMORY_REGIONS] = {0};
|
|
||||||
uint64_t top = 0;
|
|
||||||
uint64_t total = 0;
|
|
||||||
size_t count;
|
|
||||||
|
|
||||||
if (!fdt_is_valid(blob))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
count = fdt_read_memory_regions(blob, regions, FDT_MAX_MEMORY_REGIONS);
|
|
||||||
for (size_t i = 0; i < MIN(count, FDT_MAX_MEMORY_REGIONS); i++) {
|
|
||||||
top = MAX(top, regions[i].addr + regions[i].size);
|
|
||||||
total += regions[i].size;
|
|
||||||
}
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "FDT: Found %u MiB of RAM\n",
|
|
||||||
(uint32_t)(total / MiB));
|
|
||||||
|
|
||||||
return top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Functions to turn a flattened tree into an unflattened one.
|
* Functions to turn a flattened tree into an unflattened one.
|
||||||
*/
|
*/
|
||||||
@@ -701,7 +608,7 @@ struct device_tree *fdt_unflatten(const void *blob)
|
|||||||
const struct fdt_header *header = (const struct fdt_header *)blob;
|
const struct fdt_header *header = (const struct fdt_header *)blob;
|
||||||
tree->header = header;
|
tree->header = header;
|
||||||
|
|
||||||
if (!fdt_is_valid(blob))
|
if (fdt_is_valid(blob))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
uint32_t struct_offset = be32toh(header->structure_offset);
|
uint32_t struct_offset = be32toh(header->structure_offset);
|
||||||
|
@@ -209,9 +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);
|
dram_type = *(spd_cache + SC_SPD_OFFSET(i) + SPD_DRAM_TYPE);
|
||||||
|
|
||||||
if (dram_type == SPD_DRAM_DDR5)
|
if (dram_type == SPD_DRAM_DDR4)
|
||||||
blk->len = CONFIG_DIMM_SPD_SIZE;
|
|
||||||
else if (dram_type == SPD_DRAM_DDR4)
|
|
||||||
blk->len = SPD_PAGE_LEN_DDR4;
|
blk->len = SPD_PAGE_LEN_DDR4;
|
||||||
else
|
else
|
||||||
blk->len = SPD_PAGE_LEN;
|
blk->len = SPD_PAGE_LEN;
|
||||||
|
@@ -122,11 +122,6 @@ config BOARD_GOOGLE_OVIS4ES
|
|||||||
config BOARD_GOOGLE_REX0
|
config BOARD_GOOGLE_REX0
|
||||||
select BOARD_GOOGLE_MODEL_REX
|
select BOARD_GOOGLE_MODEL_REX
|
||||||
|
|
||||||
config BOARD_GOOGLE_REX64
|
|
||||||
select BOARD_GOOGLE_MODEL_REX
|
|
||||||
select HAVE_X86_64_SUPPORT
|
|
||||||
select USE_X86_64_SUPPORT
|
|
||||||
|
|
||||||
config BOARD_GOOGLE_REX_EC_ISH
|
config BOARD_GOOGLE_REX_EC_ISH
|
||||||
select BOARD_GOOGLE_MODEL_REX_EC_ISH
|
select BOARD_GOOGLE_MODEL_REX_EC_ISH
|
||||||
|
|
||||||
@@ -187,7 +182,6 @@ config MAINBOARD_FAMILY
|
|||||||
|
|
||||||
config MAINBOARD_PART_NUMBER
|
config MAINBOARD_PART_NUMBER
|
||||||
default "Rex" if BOARD_GOOGLE_REX0
|
default "Rex" if BOARD_GOOGLE_REX0
|
||||||
default "Rex64" if BOARD_GOOGLE_REX64
|
|
||||||
default "Rex_Ec_Ish" if BOARD_GOOGLE_REX_EC_ISH
|
default "Rex_Ec_Ish" if BOARD_GOOGLE_REX_EC_ISH
|
||||||
default "Rex4ES" if BOARD_GOOGLE_REX4ES
|
default "Rex4ES" if BOARD_GOOGLE_REX4ES
|
||||||
default "Rex4ES_Ec_Ish" if BOARD_GOOGLE_REX4ES_EC_ISH
|
default "Rex4ES_Ec_Ish" if BOARD_GOOGLE_REX4ES_EC_ISH
|
||||||
|
@@ -32,9 +32,6 @@ config BOARD_GOOGLE_REX4ES
|
|||||||
config BOARD_GOOGLE_REX4ES_EC_ISH
|
config BOARD_GOOGLE_REX4ES_EC_ISH
|
||||||
bool "-> Rex4ES EC ISH"
|
bool "-> Rex4ES EC ISH"
|
||||||
|
|
||||||
config BOARD_GOOGLE_REX64
|
|
||||||
bool "-> Rex 64"
|
|
||||||
|
|
||||||
config BOARD_GOOGLE_SCREEBO
|
config BOARD_GOOGLE_SCREEBO
|
||||||
bool "-> Screebo"
|
bool "-> Screebo"
|
||||||
|
|
||||||
|
@@ -1,12 +1,16 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
config BOARD_RAZER_BLADE_STEALTH_KBL
|
if BOARD_RAZER_BLADE_STEALTH_KBL
|
||||||
bool
|
|
||||||
|
config BOARD_SPECIFIC_OPTIONS
|
||||||
|
def_bool y
|
||||||
select SYSTEM_TYPE_LAPTOP
|
select SYSTEM_TYPE_LAPTOP
|
||||||
select BOARD_ROMSIZE_KB_8192
|
select BOARD_ROMSIZE_KB_8192
|
||||||
select SUPERIO_ITE_IT8528E
|
select SUPERIO_ITE_IT8528E
|
||||||
select SOC_INTEL_KABYLAKE
|
select SOC_INTEL_KABYLAKE
|
||||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||||
|
select MEMORY_MAPPED_TPM
|
||||||
|
select MAINBOARD_HAS_TPM2
|
||||||
select MAINBOARD_HAS_LIBGFXINIT
|
select MAINBOARD_HAS_LIBGFXINIT
|
||||||
select HAVE_SPD_IN_CBFS
|
select HAVE_SPD_IN_CBFS
|
||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
@@ -14,31 +18,6 @@ config BOARD_RAZER_BLADE_STEALTH_KBL
|
|||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select DRIVERS_GENERIC_CBFS_SERIAL
|
select DRIVERS_GENERIC_CBFS_SERIAL
|
||||||
|
|
||||||
config BOARD_RAZER_BLADE_H2U
|
|
||||||
select BOARD_RAZER_BLADE_STEALTH_KBL
|
|
||||||
select MEMORY_MAPPED_TPM
|
|
||||||
select MAINBOARD_HAS_TPM2
|
|
||||||
|
|
||||||
config BOARD_RAZER_BLADE_H3Q
|
|
||||||
select BOARD_RAZER_BLADE_STEALTH_KBL
|
|
||||||
|
|
||||||
if BOARD_RAZER_BLADE_STEALTH_KBL
|
|
||||||
|
|
||||||
config VARIANT_DIR
|
|
||||||
default "h2u" if BOARD_RAZER_BLADE_H2U
|
|
||||||
default "h3q" if BOARD_RAZER_BLADE_H3Q
|
|
||||||
|
|
||||||
config OVERRIDE_DEVICETREE
|
|
||||||
default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"
|
|
||||||
|
|
||||||
config MAINBOARD_FAMILY
|
|
||||||
string
|
|
||||||
default "BLADE_STEALTH"
|
|
||||||
|
|
||||||
config MAINBOARD_PART_NUMBER
|
|
||||||
default "H2U: RZ09-01962" if BOARD_RAZER_BLADE_H2U
|
|
||||||
default "H3Q: RZ09-01963/RZ09-01964" if BOARD_RAZER_BLADE_H3Q
|
|
||||||
|
|
||||||
# For now no way to choose the correct the available RAM
|
# For now no way to choose the correct the available RAM
|
||||||
config BOARD_RAZER_BLADE_STEALTH_KBL_16GB
|
config BOARD_RAZER_BLADE_STEALTH_KBL_16GB
|
||||||
bool "16GB RAM (4x MT52L1G32D4PG)"
|
bool "16GB RAM (4x MT52L1G32D4PG)"
|
||||||
@@ -48,6 +27,13 @@ config VGA_BIOS_ID
|
|||||||
string
|
string
|
||||||
default "8086,5916"
|
default "8086,5916"
|
||||||
|
|
||||||
|
config MAINBOARD_FAMILY
|
||||||
|
string
|
||||||
|
default "BLADE_STEALTH"
|
||||||
|
|
||||||
|
config MAINBOARD_PART_NUMBER
|
||||||
|
default "H2U"
|
||||||
|
|
||||||
config MAINBOARD_VERSION
|
config MAINBOARD_VERSION
|
||||||
string
|
string
|
||||||
default "1.0"
|
default "1.0"
|
||||||
|
@@ -1,7 +1,4 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
config BOARD_RAZER_BLADE_H2U
|
config BOARD_RAZER_BLADE_STEALTH_KBL
|
||||||
bool "Razer Blade Stealth KabyLake (2016, RZ09-01962, 12.5\")"
|
bool "Razer Blade Stealth KabyLake (2016)"
|
||||||
|
|
||||||
config BOARD_RAZER_BLADE_H3Q
|
|
||||||
bool "Razer Blade Stealth KabyLake (Mid 2017, RZ09-01963/RZ09-10964, 13.3\")"
|
|
||||||
|
@@ -3,8 +3,6 @@
|
|||||||
subdirs-y += spd
|
subdirs-y += spd
|
||||||
|
|
||||||
ramstage-y += ramstage.c
|
ramstage-y += ramstage.c
|
||||||
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
|
ramstage-y += hda_verb.c
|
||||||
|
|
||||||
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
|
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
|
||||||
|
|
||||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
Vendor name: RAZER
|
Vendor name: RAZER
|
||||||
Board name: Blade Stealth KabyLake
|
Board name: Blade Stealth KabyLake (H2U)
|
||||||
Category: laptop
|
Category: laptop
|
||||||
ROM package: SOIC8
|
ROM package: SOIC8
|
||||||
ROM protocol: SPI
|
ROM protocol: SPI
|
||||||
|
@@ -126,6 +126,24 @@ chip soc/intel/skylake
|
|||||||
|
|
||||||
register "PcieRpHotPlug[4]" = "1"
|
register "PcieRpHotPlug[4]" = "1"
|
||||||
|
|
||||||
|
register "usb2_ports" = "{
|
||||||
|
[0] = USB2_PORT_MID(OC1), /* Type-A Port (right) */
|
||||||
|
[1] = USB2_PORT_MID(OC1), /* Type-A Port (left) */
|
||||||
|
[2] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
||||||
|
[3] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
||||||
|
[4] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
||||||
|
[5] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
||||||
|
[6] = USB2_PORT_FLEX(OC2), /* Camera */
|
||||||
|
[7] = USB2_PORT_FLEX(OC2), /* Keyboard */
|
||||||
|
[8] = USB2_PORT_FLEX(OC2), /* Touchscreen */
|
||||||
|
}"
|
||||||
|
|
||||||
|
register "usb3_ports" = "{
|
||||||
|
[0] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (left) */
|
||||||
|
[1] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (right) */
|
||||||
|
[5] = USB3_PORT_DEFAULT(OC1), /* TODO Unknown. Maybe USBC? */
|
||||||
|
}"
|
||||||
|
|
||||||
# PL1 override 25W
|
# PL1 override 25W
|
||||||
# PL2 override 44W
|
# PL2 override 44W
|
||||||
register "power_limits_config" = "{
|
register "power_limits_config" = "{
|
||||||
@@ -173,6 +191,9 @@ chip soc/intel/skylake
|
|||||||
device ref pcie_rp5 on end
|
device ref pcie_rp5 on end
|
||||||
device ref pcie_rp9 on end
|
device ref pcie_rp9 on end
|
||||||
device ref lpc_espi on
|
device ref lpc_espi on
|
||||||
|
chip drivers/pc80/tpm
|
||||||
|
device pnp 0c31.0 on end
|
||||||
|
end
|
||||||
chip superio/ite/it8528e
|
chip superio/ite/it8528e
|
||||||
device pnp 6e.1 off end
|
device pnp 6e.1 off end
|
||||||
device pnp 6e.2 off end
|
device pnp 6e.2 off end
|
||||||
|
@@ -20,7 +20,7 @@ const u32 cim_verb_data[] = {
|
|||||||
AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
|
AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
|
||||||
AZALIA_PIN_CFG(0, 0x21, 0x03211020),
|
AZALIA_PIN_CFG(0, 0x21, 0x03211020),
|
||||||
|
|
||||||
/* Intel, Kaby Lake HDMI */
|
/* Intel, KabylakeHDMI */
|
||||||
0x8086280b, /* Vendor ID */
|
0x8086280b, /* Vendor ID */
|
||||||
0x80860101, /* Subsystem ID */
|
0x80860101, /* Subsystem ID */
|
||||||
4, /* Number of entries */
|
4, /* Number of entries */
|
@@ -1,7 +1,7 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <soc/ramstage.h>
|
#include <soc/ramstage.h>
|
||||||
#include <variant/gpio.h>
|
#include "gpio.h"
|
||||||
|
|
||||||
void mainboard_silicon_init_params(FSP_SIL_UPD *params)
|
void mainboard_silicon_init_params(FSP_SIL_UPD *params)
|
||||||
{
|
{
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
#define MAINBOARD_SPD_H
|
#define MAINBOARD_SPD_H
|
||||||
|
|
||||||
#include <gpio.h>
|
#include <gpio.h>
|
||||||
|
#include "../gpio.h"
|
||||||
|
|
||||||
void mainboard_fill_dq_map_data(void *dq_map_ptr);
|
void mainboard_fill_dq_map_data(void *dq_map_ptr);
|
||||||
void mainboard_fill_dqs_map_data(void *dqs_map_ptr);
|
void mainboard_fill_dqs_map_data(void *dqs_map_ptr);
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
Vendor name: RAZER
|
|
||||||
Board name: Blade Stealth KabyLake (H2U: RZ09-01962)
|
|
||||||
Board URL: https://mysupport.razer.com/app/answers/detail/a_id/3698/
|
|
||||||
Category: laptop
|
|
||||||
ROM package: SOIC8
|
|
||||||
ROM protocol: SPI
|
|
||||||
ROM socketed: n
|
|
||||||
Flashrom support: y
|
|
||||||
Release year: 2016
|
|
@@ -1,31 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
|
||||||
device domain 0 on
|
|
||||||
device ref south_xhci on
|
|
||||||
register "usb2_ports" = "{
|
|
||||||
[0] = USB2_PORT_MID(OC1), /* Type-A Port (right) */
|
|
||||||
[1] = USB2_PORT_MID(OC1), /* Type-A Port (left) */
|
|
||||||
[2] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
|
||||||
[3] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
|
||||||
[4] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
|
||||||
[5] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
|
|
||||||
[6] = USB2_PORT_FLEX(OC2), /* Camera */
|
|
||||||
[7] = USB2_PORT_FLEX(OC2), /* Keyboard */
|
|
||||||
[8] = USB2_PORT_FLEX(OC2), /* Touchscreen */
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "usb3_ports" = "{
|
|
||||||
[0] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (left) */
|
|
||||||
[1] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (right) */
|
|
||||||
[5] = USB3_PORT_DEFAULT(OC1), /* TODO Unknown. Maybe USBC? */
|
|
||||||
}"
|
|
||||||
end
|
|
||||||
|
|
||||||
device ref lpc_espi on
|
|
||||||
chip drivers/pc80/tpm
|
|
||||||
device pnp 0c31.0 on end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@@ -1,9 +0,0 @@
|
|||||||
Vendor name: RAZER
|
|
||||||
Board name: Blade Stealth KabyLake (H3Q: RZ09-01963 / RZ09-01964)
|
|
||||||
Board URL: https://mysupport.razer.com/app/answers/detail/a_id/3694/
|
|
||||||
Category: laptop
|
|
||||||
ROM package: SOIC8
|
|
||||||
ROM protocol: SPI
|
|
||||||
ROM socketed: n
|
|
||||||
Flashrom support: y
|
|
||||||
Release year: 2017
|
|
@@ -1,34 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <device/azalia_device.h>
|
|
||||||
|
|
||||||
const u32 cim_verb_data[] = {
|
|
||||||
/* Realtek, ALC298 */
|
|
||||||
0x10ec0298, /* Vendor ID */
|
|
||||||
0x1a586753, /* Subsystem ID */
|
|
||||||
12, /* Number of entries */
|
|
||||||
AZALIA_SUBVENDOR(0, 0x1a586753),
|
|
||||||
AZALIA_PIN_CFG(0, 0x12, 0x90a60130),
|
|
||||||
AZALIA_PIN_CFG(0, 0x13, 0x40000000),
|
|
||||||
AZALIA_PIN_CFG(0, 0x14, 0x90170110),
|
|
||||||
AZALIA_PIN_CFG(0, 0x17, 0x411111f0),
|
|
||||||
AZALIA_PIN_CFG(0, 0x18, 0x04a11040),
|
|
||||||
AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
|
|
||||||
AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
|
|
||||||
AZALIA_PIN_CFG(0, 0x1d, 0x4075812d),
|
|
||||||
AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
|
|
||||||
AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
|
|
||||||
AZALIA_PIN_CFG(0, 0x21, 0x04211020),
|
|
||||||
|
|
||||||
/* Intel, Kaby Lake HDMI */
|
|
||||||
0x8086280b, /* Vendor ID */
|
|
||||||
0x80860101, /* Subsystem ID */
|
|
||||||
4, /* Number of entries */
|
|
||||||
AZALIA_SUBVENDOR(2, 0x80860101),
|
|
||||||
AZALIA_PIN_CFG(2, 0x05, 0x18560010),
|
|
||||||
AZALIA_PIN_CFG(2, 0x06, 0x18560010),
|
|
||||||
AZALIA_PIN_CFG(2, 0x07, 0x18560010),
|
|
||||||
};
|
|
||||||
|
|
||||||
const u32 pc_beep_verbs[] = {};
|
|
||||||
AZALIA_ARRAY_SIZES;
|
|
@@ -1,200 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#ifndef CFG_GPIO_H
|
|
||||||
#define CFG_GPIO_H
|
|
||||||
|
|
||||||
#include <gpio.h>
|
|
||||||
|
|
||||||
/* Pad configuration was generated automatically using intelp2m utility */
|
|
||||||
static const struct pad_config gpio_table[] = {
|
|
||||||
|
|
||||||
/* ------- GPIO Community 0 ------- */
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_A ------- */
|
|
||||||
PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPI_TRIG_OWN(GPP_A7, NONE, PLTRST, OFF, ACPI),
|
|
||||||
PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A9, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_A10, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_A11, 0, DEEP),
|
|
||||||
PAD_NC(GPP_A12, NONE),
|
|
||||||
PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_A14, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A15, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A16, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A17, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A18, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A19, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A20, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A21, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A22, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_A23, 0, DEEP),
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_B ------- */
|
|
||||||
PAD_CFG_GPO(GPP_B0, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B1, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B2, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B3, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B4, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_B8, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_B10, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_B11, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_B14, 1, DN_20K, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B15, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B16, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_B17, 0, DEEP),
|
|
||||||
PAD_CFG_GPI_SCI(GPP_B18, UP_20K, PLTRST, LEVEL, INVERT),
|
|
||||||
PAD_NC(GPP_B19, NONE),
|
|
||||||
PAD_CFG_NF(GPP_B20, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B21, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_B22, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_B23, 1, DN_20K, DEEP),
|
|
||||||
|
|
||||||
/* ------- GPIO Community 1 ------- */
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_C ------- */
|
|
||||||
PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C1, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_C2, 1, DN_20K, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPI_APIC_LOW(GPP_C5, DN_20K, DEEP),
|
|
||||||
/* GPP_C6 - RESERVED */
|
|
||||||
/* GPP_C7 - RESERVED */
|
|
||||||
PAD_CFG_NF(GPP_C8, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C9, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_C10, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C11, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C12, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C13, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C14, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C15, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C18, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C19, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_C22, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_C23, 0, DEEP),
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_D ------- */
|
|
||||||
PAD_CFG_GPO(GPP_D0, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D1, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D2, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D3, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D4, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D5, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D6, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D7, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D8, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D9, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D10, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D11, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D12, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D13, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D14, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D15, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D16, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D17, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D18, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D19, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D20, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D21, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D22, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_D23, 0, DEEP),
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_E ------- */
|
|
||||||
PAD_CFG_GPO(GPP_E0, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_E1, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_E3, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_E4, 0, DEEP),
|
|
||||||
PAD_CFG_GPI_SCI(GPP_E5, NONE, PLTRST, EDGE_SINGLE, INVERT),
|
|
||||||
PAD_CFG_GPO(GPP_E6, 0, DEEP),
|
|
||||||
PAD_CFG_GPI_DUAL_ROUTE(GPP_E7, NONE, PLTRST, LEVEL, NONE, IOAPIC, SCI),
|
|
||||||
PAD_CFG_NF(GPP_E8, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_E9, 0, DEEP),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_E10, 1, DN_20K, DEEP),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_E11, 1, DN_20K, DEEP),
|
|
||||||
PAD_NC(GPP_E12, NONE),
|
|
||||||
PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPI_SMI(GPP_E15, NONE, DEEP, EDGE_SINGLE, INVERT),
|
|
||||||
PAD_CFG_GPI_SCI(GPP_E16, NONE, PLTRST, LEVEL, INVERT),
|
|
||||||
PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_E18, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_E19, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_E21, DN_20K, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_E22, 0, DEEP),
|
|
||||||
PAD_CFG_TERM_GPO(GPP_E23, 0, DN_20K, PLTRST),
|
|
||||||
|
|
||||||
/* ------- GPIO Community 2 ------- */
|
|
||||||
|
|
||||||
/* -------- GPIO Group GPD -------- */
|
|
||||||
PAD_CFG_NF(GPD0, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD1, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD2, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD4, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD5, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD6, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_GPO(GPD7, 0, DEEP),
|
|
||||||
PAD_NC(GPD8, NONE),
|
|
||||||
PAD_CFG_NF(GPD9, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD10, NONE, PWROK, NF1),
|
|
||||||
PAD_CFG_NF(GPD11, NONE, PWROK, NF1),
|
|
||||||
|
|
||||||
/* ------- GPIO Community 3 ------- */
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_F ------- */
|
|
||||||
PAD_CFG_GPO(GPP_F0, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F1, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F2, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F3, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F4, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F5, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F6, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F7, 0, DEEP),
|
|
||||||
PAD_CFG_NF(GPP_F8, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_F9, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_F10, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F11, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F12, 0, DEEP),
|
|
||||||
PAD_CFG_GPI_TRIG_OWN(GPP_F13, NONE, DEEP, OFF, ACPI),
|
|
||||||
PAD_CFG_GPI_TRIG_OWN(GPP_F14, NONE, DEEP, OFF, ACPI),
|
|
||||||
PAD_CFG_GPI_TRIG_OWN(GPP_F15, NONE, DEEP, OFF, ACPI),
|
|
||||||
PAD_CFG_NF(GPP_F16, NONE, DEEP, NF1),
|
|
||||||
PAD_CFG_GPO(GPP_F17, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F18, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F19, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F20, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F21, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F22, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_F23, 0, DEEP),
|
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_G ------- */
|
|
||||||
PAD_CFG_GPO(GPP_G0, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G1, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G2, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G3, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G4, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G5, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G6, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_G7, 0, DEEP),
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* CFG_GPIO_H */
|
|
@@ -1,23 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
|
||||||
device domain 0 on
|
|
||||||
device ref south_xhci on
|
|
||||||
# NOTE: TYPE-C port is controlled by Intel Thunderbolt
|
|
||||||
|
|
||||||
register "usb2_ports" = "{
|
|
||||||
[0] = USB2_PORT_MID(OC0), /* Type-A Port (right) */
|
|
||||||
[1] = USB2_PORT_MID(OC0), /* Type-A Port (left) */
|
|
||||||
[5] = USB2_PORT_SHORT(OC2), /* M.2 Slot (Bluetooth) */
|
|
||||||
[6] = USB2_PORT_FLEX(OC3), /* Camera */
|
|
||||||
[7] = USB2_PORT_FLEX(OC3), /* Keyboard */
|
|
||||||
[8] = USB2_PORT_FLEX(OC_SKIP), /* Touchscreen */
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "usb3_ports" = "{
|
|
||||||
[0] = USB3_PORT_DEFAULT(OC0), /* Type-A Port (left) */
|
|
||||||
[1] = USB3_PORT_DEFAULT(OC0), /* Type-A Port (right) */
|
|
||||||
}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
// Touchpad I2C bus
|
// Touchpad I2C bus
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
# Serial I/O
|
# Serial I/O
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
# Serial I/O
|
# Serial I/O
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@@ -10,7 +10,6 @@ config BOARD_SYSTEM76_ADL_COMMON
|
|||||||
select DRIVERS_INTEL_PMC
|
select DRIVERS_INTEL_PMC
|
||||||
select DRIVERS_INTEL_USB4_RETIMER
|
select DRIVERS_INTEL_USB4_RETIMER
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
select EC_SYSTEM76_EC_LOCKDOWN
|
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_CMOS_DEFAULT
|
select HAVE_CMOS_DEFAULT
|
||||||
@@ -104,10 +103,6 @@ config MAINBOARD_VERSION
|
|||||||
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
default "oryp9" if BOARD_SYSTEM76_ORYP9
|
||||||
default "oryp10" if BOARD_SYSTEM76_ORYP10
|
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
|
config CONSOLE_POST
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
@@ -1,3 +0,0 @@
|
|||||||
boot_option=Fallback
|
|
||||||
debug_level=Debug
|
|
||||||
me_state=Enable
|
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
// Touchpad I2C bus
|
// Touchpad I2C bus
|
||||||
|
@@ -1,8 +1,4 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "s0ix_enable" = "1"
|
|
||||||
|
|
||||||
register "power_limits_config[ADL_P_282_442_482_28W_CORE]" = "{
|
register "power_limits_config[ADL_P_282_442_482_28W_CORE]" = "{
|
||||||
.tdp_pl1_override = 20,
|
.tdp_pl1_override = 20,
|
||||||
.tdp_pl2_override = 56,
|
.tdp_pl2_override = 56,
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "power_limits_config[ADL_P_282_442_482_28W_CORE]" = "{
|
register "power_limits_config[ADL_P_282_442_482_28W_CORE]" = "{
|
||||||
.tdp_pl1_override = 28,
|
.tdp_pl1_override = 28,
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
# FIVR configuration
|
# FIVR configuration
|
||||||
# Read EXT_RAIL_CONFIG to determine bitmaps
|
# Read EXT_RAIL_CONFIG to determine bitmaps
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
# FIVR configuration
|
# FIVR configuration
|
||||||
# Read EXT_RAIL_CONFIG to determine bitmaps
|
# Read EXT_RAIL_CONFIG to determine bitmaps
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "power_limits_config[ADL_P_142_242_282_15W_CORE]" = "{
|
register "power_limits_config[ADL_P_142_242_282_15W_CORE]" = "{
|
||||||
.tdp_pl1_override = 15,
|
.tdp_pl1_override = 15,
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
||||||
.tdp_pl1_override = 45,
|
.tdp_pl1_override = 45,
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/alderlake
|
chip soc/intel/alderlake
|
||||||
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
register "power_limits_config[ADL_P_642_682_45W_CORE]" = "{
|
||||||
.tdp_pl1_override = 45,
|
.tdp_pl1_override = 45,
|
||||||
|
@@ -9,7 +9,6 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select DRIVERS_GENERIC_CBFS_UUID
|
select DRIVERS_GENERIC_CBFS_UUID
|
||||||
select DRIVERS_GFX_NVIDIA
|
select DRIVERS_GFX_NVIDIA
|
||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
select DRIVERS_I2C_TAS5825M
|
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
select EC_SYSTEM76_EC_DGPU
|
select EC_SYSTEM76_EC_DGPU
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
|
@@ -10,4 +10,3 @@ romstage-y += romstage.c
|
|||||||
ramstage-y += ramstage.c
|
ramstage-y += ramstage.c
|
||||||
ramstage-y += gpio.c
|
ramstage-y += gpio.c
|
||||||
ramstage-y += hda_verb.c
|
ramstage-y += hda_verb.c
|
||||||
ramstage-y += tas5825m.c
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
// Touchpad I2C bus
|
// Touchpad I2C bus
|
||||||
@@ -222,16 +220,7 @@ chip soc/intel/cannonlake
|
|||||||
device pci 1f.3 on # Intel HDA
|
device pci 1f.3 on # Intel HDA
|
||||||
register "PchHdaAudioLinkHda" = "1"
|
register "PchHdaAudioLinkHda" = "1"
|
||||||
end
|
end
|
||||||
device pci 1f.4 on # SMBus
|
device pci 1f.4 on end # SMBus
|
||||||
chip drivers/i2c/tas5825m
|
|
||||||
register "id" = "0"
|
|
||||||
device i2c 4e on end # (8bit address: 0x9c)
|
|
||||||
end
|
|
||||||
chip drivers/i2c/tas5825m
|
|
||||||
register "id" = "1"
|
|
||||||
device i2c 4f on end # (8bit address: 0x9e)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
device pci 1f.5 on end # PCH SPI
|
device pci 1f.5 on end # PCH SPI
|
||||||
device pci 1f.6 off end # GbE
|
device pci 1f.6 off end # GbE
|
||||||
end
|
end
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,15 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <drivers/i2c/tas5825m/tas5825m.h>
|
|
||||||
|
|
||||||
#include "tas5825m-normal.c"
|
|
||||||
#include "tas5825m-sub.c"
|
|
||||||
|
|
||||||
int tas5825m_setup(struct device *dev, int id)
|
|
||||||
{
|
|
||||||
if (id == 0)
|
|
||||||
return tas5825m_setup_normal(dev);
|
|
||||||
if (id == 1)
|
|
||||||
return tas5825m_setup_sub(dev);
|
|
||||||
return -1;
|
|
||||||
}
|
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
/* Touchpad */
|
/* Touchpad */
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1404 inherit
|
subsystemid 0x1558 0x1404 inherit
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1403 inherit
|
subsystemid 0x1558 0x1403 inherit
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1401 inherit
|
subsystemid 0x1558 0x1401 inherit
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
// Touchpad I2C bus
|
// Touchpad I2C bus
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
# Serial I/O
|
# Serial I/O
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
# Serial I/O
|
# Serial I/O
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
chip soc/intel/skylake
|
||||||
# Send an extra VR mailbox command for the PS4 exit issue
|
# Send an extra VR mailbox command for the PS4 exit issue
|
||||||
register "SendVrMbxCmd" = "2"
|
register "SendVrMbxCmd" = "2"
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
chip soc/intel/skylake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1303 inherit
|
subsystemid 0x1558 0x1303 inherit
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
chip soc/intel/skylake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1413 inherit
|
subsystemid 0x1558 0x1413 inherit
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/skylake
|
chip soc/intel/skylake
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
subsystemid 0x1558 0x1313 inherit
|
subsystemid 0x1558 0x1313 inherit
|
||||||
|
@@ -1,117 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_MTL_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 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 PCIEXP_SUPPORT_RESIZABLE_BARS
|
|
||||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
|
||||||
select SOC_INTEL_CRASHLOG
|
|
||||||
select SOC_INTEL_METEORLAKE
|
|
||||||
select SPD_READ_BY_WORD
|
|
||||||
select SYSTEM_TYPE_LAPTOP
|
|
||||||
select TPM_RDRESP_NEED_DELAY
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_DARP10
|
|
||||||
select BOARD_SYSTEM76_MTL_COMMON
|
|
||||||
select MAINBOARD_USES_IFD_GBE_REGION
|
|
||||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
|
||||||
select SOC_INTEL_METEORLAKE_U_H
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_DARP10_B
|
|
||||||
select BOARD_SYSTEM76_MTL_COMMON
|
|
||||||
select MAINBOARD_USES_IFD_GBE_REGION
|
|
||||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
|
||||||
select SOC_INTEL_METEORLAKE_U_H
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_LEMP13
|
|
||||||
select BOARD_SYSTEM76_MTL_COMMON
|
|
||||||
select DRIVERS_I2C_TAS5825M
|
|
||||||
select HAVE_SPD_IN_CBFS
|
|
||||||
select SOC_INTEL_METEORLAKE_U_H
|
|
||||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_LEMP13_B
|
|
||||||
select BOARD_SYSTEM76_MTL_COMMON
|
|
||||||
select DRIVERS_I2C_TAS5825M
|
|
||||||
select HAVE_SPD_IN_CBFS
|
|
||||||
select SOC_INTEL_METEORLAKE_U_H
|
|
||||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
|
||||||
|
|
||||||
if BOARD_SYSTEM76_MTL_COMMON
|
|
||||||
|
|
||||||
config MAINBOARD_DIR
|
|
||||||
default "system76/mtl"
|
|
||||||
|
|
||||||
config VARIANT_DIR
|
|
||||||
default "darp10" if BOARD_SYSTEM76_DARP10 || BOARD_SYSTEM76_DARP10_B
|
|
||||||
default "lemp13" if BOARD_SYSTEM76_LEMP13 || BOARD_SYSTEM76_LEMP13_B
|
|
||||||
|
|
||||||
config OVERRIDE_DEVICETREE
|
|
||||||
default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"
|
|
||||||
|
|
||||||
config MAINBOARD_PART_NUMBER
|
|
||||||
default "darp10" if BOARD_SYSTEM76_DARP10
|
|
||||||
default "darp10-b" if BOARD_SYSTEM76_DARP10_B
|
|
||||||
default "lemp13" if BOARD_SYSTEM76_LEMP13
|
|
||||||
default "lemp13-b" if BOARD_SYSTEM76_LEMP13_B
|
|
||||||
|
|
||||||
config MAINBOARD_SMBIOS_PRODUCT_NAME
|
|
||||||
default "Darter Pro" if BOARD_SYSTEM76_DARP10 || BOARD_SYSTEM76_DARP10_B
|
|
||||||
default "Lemur Pro" if BOARD_SYSTEM76_LEMP13 || BOARD_SYSTEM76_LEMP13_B
|
|
||||||
|
|
||||||
config MAINBOARD_VERSION
|
|
||||||
default "darp10" if BOARD_SYSTEM76_DARP10
|
|
||||||
default "darp10-b" if BOARD_SYSTEM76_DARP10_B
|
|
||||||
default "lemp13" if BOARD_SYSTEM76_LEMP13
|
|
||||||
default "lemp13-b" if BOARD_SYSTEM76_LEMP13_B
|
|
||||||
|
|
||||||
config CMOS_DEFAULT_FILE
|
|
||||||
default "src/mainboard/\$(MAINBOARDDIR)/cmos.default"
|
|
||||||
|
|
||||||
config CONSOLE_POST
|
|
||||||
default y
|
|
||||||
|
|
||||||
config D3COLD_SUPPORT
|
|
||||||
default n
|
|
||||||
|
|
||||||
config DIMM_SPD_SIZE
|
|
||||||
default 1024
|
|
||||||
|
|
||||||
config FMDFILE
|
|
||||||
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/board.fmd"
|
|
||||||
|
|
||||||
config ONBOARD_VGA_IS_PRIMARY
|
|
||||||
default y
|
|
||||||
|
|
||||||
config PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS
|
|
||||||
default 36
|
|
||||||
|
|
||||||
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
|
|
@@ -1,13 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_DARP10
|
|
||||||
bool "darp10"
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_DARP10_B
|
|
||||||
bool "darp10-b"
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_LEMP13
|
|
||||||
bool "lemp13"
|
|
||||||
|
|
||||||
config BOARD_SYSTEM76_LEMP13_B
|
|
||||||
bool "lemp13-b"
|
|
@@ -1,16 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
|
|
||||||
|
|
||||||
bootblock-y += bootblock.c
|
|
||||||
bootblock-y += variants/$(VARIANT_DIR)/gpio_early.c
|
|
||||||
|
|
||||||
romstage-y += variants/$(VARIANT_DIR)/romstage.c
|
|
||||||
|
|
||||||
ramstage-y += ramstage.c
|
|
||||||
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
|
|
||||||
ramstage-y += variants/$(VARIANT_DIR)/gpio.c
|
|
||||||
ramstage-y += variants/$(VARIANT_DIR)/ramstage.c
|
|
||||||
ramstage-$(CONFIG_DRIVERS_I2C_TAS5825M) += variants/$(VARIANT_DIR)/tas5825m.c
|
|
||||||
|
|
||||||
SPD_SOURCES = samsung-M425R1GB4BB0-CQKOD
|
|
@@ -1,31 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <drivers/intel/gma/acpi/gma.asl>
|
|
||||||
|
|
||||||
Scope (GFX0)
|
|
||||||
{
|
|
||||||
Name (BRIG, Package (22) {
|
|
||||||
100, /* default AC */
|
|
||||||
100, /* default Battery */
|
|
||||||
5,
|
|
||||||
10,
|
|
||||||
15,
|
|
||||||
20,
|
|
||||||
25,
|
|
||||||
30,
|
|
||||||
35,
|
|
||||||
40,
|
|
||||||
45,
|
|
||||||
50,
|
|
||||||
55,
|
|
||||||
60,
|
|
||||||
65,
|
|
||||||
70,
|
|
||||||
75,
|
|
||||||
80,
|
|
||||||
85,
|
|
||||||
90,
|
|
||||||
95,
|
|
||||||
100
|
|
||||||
})
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#define EC_GPE_SCI 0x6E
|
|
||||||
#define EC_GPE_SWI 0x6B
|
|
||||||
#include <ec/system76/ec/acpi/ec.asl>
|
|
||||||
|
|
||||||
Scope (\_SB) {
|
|
||||||
#include "sleep.asl"
|
|
||||||
Scope (PCI0) {
|
|
||||||
#include "backlight.asl"
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,9 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
External(\TBTS, MethodObj)
|
|
||||||
|
|
||||||
Method(MPTS, 1, Serialized) {
|
|
||||||
If (CondRefOf(\TBTS)) {
|
|
||||||
\TBTS()
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,6 +0,0 @@
|
|||||||
Vendor name: System76
|
|
||||||
Category: laptop
|
|
||||||
ROM package: WSON-8
|
|
||||||
ROM protocol: SPI
|
|
||||||
ROM socketed: n
|
|
||||||
Flashrom support: y
|
|
@@ -1,9 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <bootblock_common.h>
|
|
||||||
#include <mainboard/gpio.h>
|
|
||||||
|
|
||||||
void bootblock_mainboard_early_init(void)
|
|
||||||
{
|
|
||||||
mainboard_configure_early_gpios();
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
## SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
boot_option=Fallback
|
|
||||||
debug_level=Debug
|
|
||||||
me_state=Disable
|
|
@@ -1,43 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
entries
|
|
||||||
|
|
||||||
0 384 r 0 reserved_memory
|
|
||||||
|
|
||||||
# RTC_BOOT_BYTE (coreboot hardcoded)
|
|
||||||
384 1 e 4 boot_option
|
|
||||||
388 4 h 0 reboot_counter
|
|
||||||
|
|
||||||
# RTC_CLK_ALTCENTURY
|
|
||||||
400 8 r 0 century
|
|
||||||
|
|
||||||
412 4 e 6 debug_level
|
|
||||||
416 1 e 2 me_state
|
|
||||||
417 3 h 0 me_state_counter
|
|
||||||
|
|
||||||
# CMOS_VSTART_ramtop
|
|
||||||
800 80 r 0 ramtop
|
|
||||||
|
|
||||||
984 16 h 0 check_sum
|
|
||||||
|
|
||||||
enumerations
|
|
||||||
|
|
||||||
2 0 Enable
|
|
||||||
2 1 Disable
|
|
||||||
|
|
||||||
4 0 Fallback
|
|
||||||
4 1 Normal
|
|
||||||
|
|
||||||
6 0 Emergency
|
|
||||||
6 1 Alert
|
|
||||||
6 2 Critical
|
|
||||||
6 3 Error
|
|
||||||
6 4 Warning
|
|
||||||
6 5 Notice
|
|
||||||
6 6 Info
|
|
||||||
6 7 Debug
|
|
||||||
6 8 Spew
|
|
||||||
|
|
||||||
checksums
|
|
||||||
|
|
||||||
checksum 408 799 984
|
|
@@ -1,67 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
chip soc/intel/meteorlake
|
|
||||||
register "common_soc_config" = "{
|
|
||||||
// Touchpad I2C bus
|
|
||||||
.i2c[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 80,
|
|
||||||
.fall_time_ns = 110,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Enable Enhanced Intel SpeedStep
|
|
||||||
register "eist_enable" = "1"
|
|
||||||
|
|
||||||
# Thermal
|
|
||||||
register "tcc_offset" = "8"
|
|
||||||
|
|
||||||
device cpu_cluster 0 on end
|
|
||||||
|
|
||||||
device domain 0 on
|
|
||||||
device ref system_agent on end
|
|
||||||
device ref igpu on
|
|
||||||
# DDIA is eDP, TCP2 is HDMI
|
|
||||||
register "ddi_port_A_config" = "1"
|
|
||||||
register "ddi_ports_config" = "{
|
|
||||||
[DDI_PORT_A] = DDI_ENABLE_HPD,
|
|
||||||
[DDI_PORT_2] = DDI_ENABLE_HPD | DDI_ENABLE_DDC,
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "gfx" = "GMA_DEFAULT_PANEL(0)"
|
|
||||||
end
|
|
||||||
device ref ioe_shared_sram on end
|
|
||||||
device ref pmc_shared_sram on end
|
|
||||||
device ref cnvi_wifi on
|
|
||||||
register "cnvi_bt_core" = "true"
|
|
||||||
register "cnvi_bt_audio_offload" = "true"
|
|
||||||
chip drivers/wifi/generic
|
|
||||||
register "wake" = "GPE0_PME_B0"
|
|
||||||
device generic 0 on end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
device ref i2c1 on
|
|
||||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C1]" = "PchSerialIoPci"
|
|
||||||
end
|
|
||||||
|
|
||||||
device ref heci1 on end
|
|
||||||
device ref soc_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
|
|
||||||
end
|
|
||||||
end
|
|
||||||
device ref p2sb on end
|
|
||||||
device ref hda on
|
|
||||||
register "pch_hda_audio_link_hda_enable" = "1"
|
|
||||||
register "pch_hda_sdi_enable[0]" = "1"
|
|
||||||
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"
|
|
||||||
end
|
|
||||||
device ref smbus on end
|
|
||||||
device ref fast_spi on end
|
|
||||||
end
|
|
||||||
end
|
|
@@ -1,36 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
//TODO: HACK FOR MISSING MISCCFG_GPIO_PM_CONFIG_BITS
|
|
||||||
#include <soc/gpio.h>
|
|
||||||
|
|
||||||
#include <acpi/acpi.h>
|
|
||||||
DefinitionBlock(
|
|
||||||
"dsdt.aml",
|
|
||||||
"DSDT",
|
|
||||||
ACPI_DSDT_REV_2,
|
|
||||||
OEM_ID,
|
|
||||||
ACPI_TABLE_CREATOR,
|
|
||||||
0x20110725
|
|
||||||
)
|
|
||||||
{
|
|
||||||
#include <acpi/dsdt_top.asl>
|
|
||||||
#include <soc/intel/common/block/acpi/acpi/platform.asl>
|
|
||||||
#include <soc/intel/common/block/acpi/acpi/globalnvs.asl>
|
|
||||||
#include <cpu/intel/common/acpi/cpu.asl>
|
|
||||||
|
|
||||||
Device (\_SB.PCI0)
|
|
||||||
{
|
|
||||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
|
||||||
#include <soc/intel/meteorlake/acpi/southbridge.asl>
|
|
||||||
#include <soc/intel/meteorlake/acpi/tcss.asl>
|
|
||||||
}
|
|
||||||
|
|
||||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
|
||||||
|
|
||||||
Scope (\_SB.PCI0.LPCB)
|
|
||||||
{
|
|
||||||
#include <drivers/pc80/pc/ps2_controller.asl>
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "acpi/mainboard.asl"
|
|
||||||
}
|
|
@@ -1,9 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#ifndef MAINBOARD_GPIO_H
|
|
||||||
#define MAINBOARD_GPIO_H
|
|
||||||
|
|
||||||
void mainboard_configure_early_gpios(void);
|
|
||||||
void mainboard_configure_gpios(void);
|
|
||||||
|
|
||||||
#endif
|
|
@@ -1,13 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <mainboard/gpio.h>
|
|
||||||
#include <soc/ramstage.h>
|
|
||||||
|
|
||||||
static void mainboard_init(void *chip_info)
|
|
||||||
{
|
|
||||||
mainboard_configure_gpios();
|
|
||||||
}
|
|
||||||
|
|
||||||
struct chip_operations mainboard_ops = {
|
|
||||||
.init = mainboard_init,
|
|
||||||
};
|
|
@@ -1,65 +0,0 @@
|
|||||||
# Samsung M425R1GB4BB0-CQKOD
|
|
||||||
30 10 12 03 04 00 40 42 00 00 00 00 90 02 00 00
|
|
||||||
00 00 00 00 A0 01 F2 03 7A 0D 00 00 00 00 80 3E
|
|
||||||
80 3E 80 3E 00 7D 80 BB 30 75 27 01 A0 00 82 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 88 13 08 88 13 08 20 4E 20 10
|
|
||||||
27 10 1A 41 28 10 27 10 C4 09 04 4C 1D 0C 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
10 00 80 B3 80 21 80 B3 82 20 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 0F 01 02 81 00 22 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 D1
|
|
||||||
80 CE 00 00 00 00 00 00 00 4D 34 32 35 52 31 47
|
|
||||||
42 34 42 42 30 2D 43 51 4B 4F 44 20 20 20 20 20
|
|
||||||
20 20 20 20 20 20 20 00 80 CE 95 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
@@ -1,13 +0,0 @@
|
|||||||
FLASH 32M {
|
|
||||||
SI_DESC 16K
|
|
||||||
SI_GBE 8K
|
|
||||||
SI_ME 10640K
|
|
||||||
SI_BIOS@16M 16M {
|
|
||||||
RW_MRC_CACHE 64K
|
|
||||||
SMMSTORE(PRESERVE) 256K
|
|
||||||
WP_RO {
|
|
||||||
FMAP 4K
|
|
||||||
COREBOOT(CBFS)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,2 +0,0 @@
|
|||||||
Board name: darp10
|
|
||||||
Release year: 2024
|
|
Binary file not shown.
@@ -1,216 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <mainboard/gpio.h>
|
|
||||||
#include <soc/gpio.h>
|
|
||||||
|
|
||||||
static const struct pad_config gpio_table[] = {
|
|
||||||
PAD_CFG_NF(GPP_A00, UP_20K, DEEP, NF1), // ESPI_IO0_EC
|
|
||||||
PAD_CFG_NF(GPP_A01, UP_20K, DEEP, NF1), // ESPI_IO1_EC
|
|
||||||
PAD_CFG_NF(GPP_A02, UP_20K, DEEP, NF1), // ESPI_IO2_EC
|
|
||||||
PAD_CFG_NF(GPP_A03, UP_20K, DEEP, NF1), // ESPI_IO3_EC
|
|
||||||
PAD_CFG_NF(GPP_A04, UP_20K, DEEP, NF1), // ESPI_CS_EC#
|
|
||||||
PAD_CFG_NF(GPP_A05, UP_20K, DEEP, NF1), // ESPI_CLK_EC
|
|
||||||
PAD_CFG_NF(GPP_A06, NONE, DEEP, NF1), // ESPI_RESET_N
|
|
||||||
// GPP_A07 missing
|
|
||||||
// GPP_A08 missing
|
|
||||||
// GPP_A09 missing
|
|
||||||
// GPP_A10 missing
|
|
||||||
PAD_CFG_GPO(GPP_A11, 0, DEEP), // ADDS_CODE
|
|
||||||
PAD_CFG_GPI(GPP_A12, NONE, DEEP), // WLAN_WAKEUP#
|
|
||||||
PAD_CFG_TERM_GPO(GPP_A13, 1, UP_20K, PLTRST), // M2_SSD2_RST#
|
|
||||||
PAD_NC(GPP_A14, NONE),
|
|
||||||
PAD_NC(GPP_A15, NONE), // CPU_SWI# (test point)
|
|
||||||
PAD_CFG_NF(GPP_A16, UP_20K, DEEP, NF1), // ESPI_ALRT0#
|
|
||||||
PAD_NC(GPP_A17, NONE), // TP_ATTN#_A17
|
|
||||||
PAD_NC(GPP_A18, NONE),
|
|
||||||
PAD_NC(GPP_A19, NONE),
|
|
||||||
PAD_NC(GPP_A20, NONE),
|
|
||||||
PAD_CFG_NF(GPP_A21, NATIVE, DEEP, NF1), // PMC_I2C_INT
|
|
||||||
|
|
||||||
PAD_CFG_GPI_INT(GPP_B00, NONE, PLTRST, LEVEL), // TP_ATTN#_B00
|
|
||||||
PAD_NC(GPP_B01, NONE),
|
|
||||||
PAD_NC(GPP_B02, NONE),
|
|
||||||
PAD_NC(GPP_B03, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_B04, 0, DEEP), // NO REBOOT strap
|
|
||||||
PAD_CFG_GPO(GPP_B05, 0, DEEP), // CPU_KBCRST# (test point)
|
|
||||||
PAD_CFG_GPO(GPP_B06, 0, DEEP), // ROM_I2C_EN
|
|
||||||
PAD_NC(GPP_B07, NONE),
|
|
||||||
PAD_NC(GPP_B08, NONE),
|
|
||||||
PAD_NC(GPP_B09, NONE),
|
|
||||||
PAD_NC(GPP_B10, NONE),
|
|
||||||
PAD_CFG_NF(GPP_B11, NONE, DEEP, NF2), // HDMI_HPD
|
|
||||||
PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), // SLP_S0#
|
|
||||||
PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), // PLTRST#
|
|
||||||
PAD_CFG_GPI(GPP_B14, NONE, DEEP), // Top swap override strap
|
|
||||||
PAD_CFG_GPI(GPP_B15, NONE, DEEP), // GPP_B15_USB2_OC0_N
|
|
||||||
PAD_NC(GPP_B16, NONE),
|
|
||||||
PAD_NC(GPP_B17, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_B18, 1, DEEP), // PCH_BT_EN
|
|
||||||
PAD_CFG_GPO(GPP_B19, 1, DEEP), // WIFI_RF_EN
|
|
||||||
PAD_NC(GPP_B20, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_B21, 0, PLTRST), // TCP_RETIMER_FORCE_PWR
|
|
||||||
PAD_NC(GPP_B22, NONE),
|
|
||||||
PAD_NC(GPP_B23, NONE),
|
|
||||||
|
|
||||||
PAD_CFG_NF(GPP_C00, NONE, DEEP, NF1), // SMB_CLK
|
|
||||||
PAD_CFG_NF(GPP_C01, NONE, DEEP, NF1), // SMB_DATA
|
|
||||||
PAD_CFG_NF(GPP_C02, NONE, DEEP, NF1), // TLS confidentiality strap
|
|
||||||
PAD_CFG_NF(GPP_C03, UP_20K, DEEP, NF1), // SML0_CLK
|
|
||||||
PAD_CFG_NF(GPP_C04, UP_20K, DEEP, NF1), // SML0_DATA
|
|
||||||
PAD_CFG_NF(GPP_C05, UP_20K, DEEP, NF1), // eSPI disabled strap
|
|
||||||
PAD_CFG_NF(GPP_C06, UP_20K, DEEP, NF1), // PMC_I2C_SCL
|
|
||||||
PAD_CFG_NF(GPP_C07, UP_20K, DEEP, NF1), // PMC_I2C_SDA
|
|
||||||
PAD_NC(GPP_C08, NONE),
|
|
||||||
PAD_NC(GPP_C09, NONE),
|
|
||||||
PAD_NC(GPP_C10, NONE),
|
|
||||||
PAD_CFG_NF(GPP_C11, NONE, PWROK, NF1), // CPU_LAN_CLKREQ#
|
|
||||||
PAD_CFG_NF(GPP_C12, NONE, PWROK, NF1), // CPU_CARD_CLKREQ#
|
|
||||||
PAD_NC(GPP_C13, NONE),
|
|
||||||
// GPP_C14 missing
|
|
||||||
PAD_CFG_GPO(GPP_C15, 0, DEEP), // GPP_C15_STRAP
|
|
||||||
PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1), // TBT_LSX0_TXD
|
|
||||||
PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1), // TBT_LSX0_RXD
|
|
||||||
PAD_NC(GPP_C18, NONE),
|
|
||||||
PAD_NC(GPP_C19, NONE),
|
|
||||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF2), // HDMI_CTRLCLK
|
|
||||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF2), // HDMI_CTRLDATA
|
|
||||||
PAD_NC(GPP_C22, NONE),
|
|
||||||
PAD_NC(GPP_C23, NONE),
|
|
||||||
|
|
||||||
PAD_CFG_GPO(GPP_D00, 1, DEEP), // SB_BLON
|
|
||||||
PAD_CFG_GPO(GPP_D01, 1, DEEP), // SSD2_PWR_EN
|
|
||||||
PAD_CFG_GPO(GPP_D02, 1, DEEP), // M2_SSD1_RST#
|
|
||||||
PAD_NC(GPP_D03, NONE),
|
|
||||||
PAD_NC(GPP_D04, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_D05, 1, DEEP), // SSD1_PWR_EN
|
|
||||||
PAD_NC(GPP_D06, NONE),
|
|
||||||
PAD_NC(GPP_D07, NONE),
|
|
||||||
PAD_NC(GPP_D08, NONE),
|
|
||||||
PAD_NC(GPP_D09, NONE),
|
|
||||||
PAD_CFG_NF(GPP_D10, NONE, DEEP, NF1), // HDA_BITCLK
|
|
||||||
PAD_CFG_NF(GPP_D11, NATIVE, DEEP, NF1), // HDA_SYNC
|
|
||||||
PAD_CFG_NF(GPP_D12, NATIVE, DEEP, NF1), // HDA_SDOUT / ME_WE
|
|
||||||
PAD_CFG_NF(GPP_D13, NATIVE, DEEP, NF1), // HDA_SDI0
|
|
||||||
PAD_NC(GPP_D14, NONE),
|
|
||||||
PAD_NC(GPP_D15, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_D16, 0, DEEP), // GPIO_SPK_MUTE
|
|
||||||
PAD_CFG_NF(GPP_D17, NONE, DEEP, NF1), // HDA_RST#
|
|
||||||
PAD_NC(GPP_D18, NONE),
|
|
||||||
PAD_CFG_NF(GPP_D19, NONE, DEEP, NF1), // CPU_SSD1_CLKREQ#
|
|
||||||
PAD_CFG_NF(GPP_D20, NONE, DEEP, NF1), // CPU_SSD2_CLKREQ#
|
|
||||||
PAD_CFG_NF(GPP_D21, NONE, DEEP, NF2), // CPU_WLAN_CLKREQ#
|
|
||||||
PAD_CFG_NF(GPP_D22, NATIVE, DEEP, NF1),
|
|
||||||
PAD_CFG_NF(GPP_D23, NATIVE, DEEP, NF1),
|
|
||||||
|
|
||||||
PAD_NC(GPP_E00, NONE),
|
|
||||||
_PAD_CFG_STRUCT(GPP_E01, 0x40100100, 0x3000), // TPM_PIRQ#
|
|
||||||
PAD_CFG_GPI(GPP_E02, NONE, DEEP), // BOARD_ID4
|
|
||||||
PAD_CFG_GPI(GPP_E03, NONE, DEEP), // CNVI_WAKE#
|
|
||||||
PAD_NC(GPP_E04, NONE),
|
|
||||||
PAD_NC(GPP_E05, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_E06, 0, DEEP), // JTAG ODT disable strap
|
|
||||||
PAD_NC(GPP_E07, NONE),
|
|
||||||
PAD_NC(GPP_E08, NONE),
|
|
||||||
PAD_CFG_GPI(GPP_E09, NONE, DEEP), // GPP_E9_USB2_OC0_N
|
|
||||||
PAD_NC(GPP_E10, NONE),
|
|
||||||
PAD_CFG_GPI(GPP_E11, NONE, DEEP), // BOARD_ID6
|
|
||||||
PAD_NC(GPP_E12, NONE),
|
|
||||||
PAD_NC(GPP_E13, NONE),
|
|
||||||
PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1), // EDP_HPD
|
|
||||||
PAD_NC(GPP_E15, NONE),
|
|
||||||
PAD_CFG_NF(GPP_E16, NONE, DEEP, NF2), // VRALERT#
|
|
||||||
PAD_CFG_GPO(GPP_E17, 0, DEEP), // BOARD_ID5
|
|
||||||
// GPP_E18 missing
|
|
||||||
// GPP_E19 missing
|
|
||||||
// GPP_E20 missing
|
|
||||||
// GPP_E21 missing
|
|
||||||
PAD_CFG_GPO(GPP_E22, 0, DEEP), // DNX_FORCE_RELOAD
|
|
||||||
|
|
||||||
PAD_CFG_NF(GPP_F00, NONE, DEEP, NF1), // CNVI_BRI_DT
|
|
||||||
PAD_CFG_NF(GPP_F01, UP_20K, DEEP, NF1), // CNVI_BRI_RSP
|
|
||||||
PAD_CFG_NF(GPP_F02, NONE, DEEP, NF1), // CNVI_RGI_DT
|
|
||||||
PAD_CFG_NF(GPP_F03, UP_20K, DEEP, NF1), // CNVI_RGI_RSP
|
|
||||||
PAD_CFG_NF(GPP_F04, NONE, DEEP, NF1), // CNVI_RST#
|
|
||||||
PAD_CFG_NF(GPP_F05, NONE, DEEP, NF3), // CNVI_CLKREQ
|
|
||||||
PAD_CFG_GPO(GPP_F06, 0, DEEP), // CNVI_GNSS_PA_BLANKING
|
|
||||||
PAD_NC(GPP_F07, NONE),
|
|
||||||
PAD_NC(GPP_F08, NONE),
|
|
||||||
PAD_CFG_GPI(GPP_F09, NONE, DEEP), // TPM_DET
|
|
||||||
PAD_NC(GPP_F10, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_F11, 0, DEEP), // BOARD_ID3
|
|
||||||
PAD_NC(GPP_F12, NONE), // I2C_SCL_CODEC
|
|
||||||
PAD_NC(GPP_F13, NONE), // I2C_SDA_CODEC
|
|
||||||
PAD_CFG_GPO(GPP_F14, 0, DEEP), // BOARD_ID1
|
|
||||||
PAD_CFG_GPO(GPP_F15, 0, DEEP), // BOARD_ID2
|
|
||||||
PAD_NC(GPP_F16, NONE),
|
|
||||||
PAD_NC(GPP_F17, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_F18, 0, DEEP), // CPU_CCD_WP#
|
|
||||||
PAD_NC(GPP_F19, NONE),
|
|
||||||
PAD_CFG_GPO(GPP_F20, 0, DEEP), // SVID support strap
|
|
||||||
PAD_NC(GPP_F21, NONE),
|
|
||||||
PAD_NC(GPP_F22, NONE),
|
|
||||||
PAD_NC(GPP_F23, NONE),
|
|
||||||
|
|
||||||
PAD_CFG_GPO(GPP_H00, 0, DEEP), // eSPI flash sharing mode strap
|
|
||||||
PAD_CFG_GPO(GPP_H01, 0, DEEP), // SPI flash descriptor recovery strap
|
|
||||||
PAD_NC(GPP_H02, NONE),
|
|
||||||
// GPP_H03 missing
|
|
||||||
PAD_CFG_GPO(GPP_H04, 0, DEEP), // CNVI_MFUART2_RXD
|
|
||||||
PAD_CFG_GPO(GPP_H05, 0, DEEP), // CNVI_MFUART2_TXD
|
|
||||||
PAD_CFG_NF(GPP_H06, NONE, DEEP, NF1), // I2C3_SDA (Pantone)
|
|
||||||
PAD_CFG_NF(GPP_H07, NONE, DEEP, NF1), // I2C3_SCL (Pantone)
|
|
||||||
// GPP_H08 (UART0_RXD) configured in bootblock
|
|
||||||
// GPP_H09 (UART0_TXD) configured in bootblock
|
|
||||||
PAD_CFG_GPO(GPP_H10, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_H11, 0, DEEP),
|
|
||||||
PAD_CFG_GPO(GPP_H12, 0, DEEP),
|
|
||||||
PAD_NC(GPP_H13, NONE),
|
|
||||||
PAD_NC(GPP_H14, NONE),
|
|
||||||
PAD_NC(GPP_H15, NONE),
|
|
||||||
PAD_NC(GPP_H16, NONE),
|
|
||||||
PAD_NC(GPP_H17, NONE),
|
|
||||||
// GPP_H18 missing
|
|
||||||
PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1), // I2C_SDA_TP
|
|
||||||
PAD_CFG_NF(GPP_H20, NONE, DEEP, NF1), // I2C_SCL_TP
|
|
||||||
PAD_CFG_NF(GPP_H21, NONE, DEEP, NF1), // PCH_I2C_SDA
|
|
||||||
PAD_CFG_NF(GPP_H22, NONE, DEEP, NF1), // PCH_I2C_SCL
|
|
||||||
|
|
||||||
PAD_NC(GPP_S00, NONE),
|
|
||||||
PAD_NC(GPP_S01, NONE),
|
|
||||||
PAD_NC(GPP_S02, NONE), // DMIC_CLK_A1
|
|
||||||
PAD_NC(GPP_S03, NONE), // DMIC_DATA_A1
|
|
||||||
PAD_NC(GPP_S04, NONE),
|
|
||||||
PAD_NC(GPP_S05, NONE),
|
|
||||||
PAD_NC(GPP_S06, NONE),
|
|
||||||
PAD_NC(GPP_S07, NONE),
|
|
||||||
|
|
||||||
PAD_CFG_NF(GPP_V00, NONE, DEEP, NF1), // PM_BATLOW#
|
|
||||||
PAD_CFG_NF(GPP_V01, NONE, DEEP, NF1), // AC_PRESENT
|
|
||||||
PAD_CFG_NF(GPP_V02, NONE, DEEP, NF1), // LAN_WAKEUP#
|
|
||||||
PAD_CFG_NF(GPP_V03, NONE, DEEP, NF1), // PWR_BTN#
|
|
||||||
PAD_CFG_NF(GPP_V04, NONE, DEEP, NF1), // SUSB#_PCH
|
|
||||||
PAD_CFG_NF(GPP_V05, UP_20K, DEEP, NF1), // SUSC#_PCH
|
|
||||||
PAD_CFG_NF(GPP_V06, NATIVE, DEEP, NF1), // SLP_A#
|
|
||||||
// GPP_V07 missing
|
|
||||||
PAD_CFG_NF(GPP_V08, UP_20K, DEEP, NF1), // SUS_CLK
|
|
||||||
PAD_CFG_NF(GPP_V09, NONE, DEEP, NF1), // SLP_WLAN#
|
|
||||||
PAD_NC(GPP_V10, NONE),
|
|
||||||
PAD_CFG_NF(GPP_V11, NONE, DEEP, NF1), // LANPHYPC
|
|
||||||
PAD_CFG_GPO(GPP_V12, 0, DEEP), // SLP_LAN#
|
|
||||||
// GPP_V13 missing
|
|
||||||
PAD_CFG_NF(GPP_V14, NONE, DEEP, NF1), // PCIE_WAKE#
|
|
||||||
// GPP_V15 missing
|
|
||||||
// GPP_V16 missing
|
|
||||||
// GPP_V17 missing
|
|
||||||
// GPP_V18 missing
|
|
||||||
// GPP_V19 missing
|
|
||||||
// GPP_V20 missing
|
|
||||||
// GPP_V21 missing
|
|
||||||
PAD_NC(GPP_V22, NONE),
|
|
||||||
PAD_NC(GPP_V23, NONE),
|
|
||||||
};
|
|
||||||
|
|
||||||
void mainboard_configure_gpios(void)
|
|
||||||
{
|
|
||||||
gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
|
|
||||||
}
|
|
@@ -1,16 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
|
|
||||||
#include <mainboard/gpio.h>
|
|
||||||
#include <soc/gpio.h>
|
|
||||||
|
|
||||||
static const struct pad_config early_gpio_table[] = {
|
|
||||||
PAD_CFG_NF(GPP_C00, NONE, DEEP, NF1), // SMB_CLK
|
|
||||||
PAD_CFG_NF(GPP_C01, NONE, DEEP, NF1), // SMB_DATA
|
|
||||||
PAD_CFG_NF(GPP_H08, NONE, DEEP, NF1), // UART0_RX
|
|
||||||
PAD_CFG_NF(GPP_H09, NONE, DEEP, NF1), // UART0_TX
|
|
||||||
};
|
|
||||||
|
|
||||||
void mainboard_configure_early_gpios(void)
|
|
||||||
{
|
|
||||||
gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table));
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user