Compare commits
31 Commits
brightness
...
acpi-rpm
Author | SHA1 | Date | |
---|---|---|---|
|
b376d29c5c | ||
|
552e524c1b | ||
|
49122b0ec5 | ||
|
8cd1045572 | ||
|
7dbc4052ed | ||
|
2ff8127cdf | ||
|
3a66a8eed9 | ||
|
d462108ba8 | ||
|
9dad323baf | ||
|
4a0c8c4289 | ||
|
fc17805ba7 | ||
|
568ef48bda | ||
|
65b8b55f44 | ||
|
6a6f7f8db0 | ||
|
7114256ba7 | ||
|
30ee8e1e97 | ||
|
160f0f97a2 | ||
|
9c1710a9a7 | ||
|
37241d7fa8 | ||
|
7beec0babd | ||
|
22a3cb788d | ||
|
b1996b212b | ||
|
a176798a16 | ||
|
9bd47b4bed | ||
|
bcd34461da | ||
|
d876776a6b | ||
|
960bfe9d53 | ||
|
d14c9c670d | ||
|
b8bf900ce6 | ||
|
7480a5a34e | ||
|
b37a24f403 |
@@ -1,5 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <commonlib/helpers.h>
|
||||
#include <cpu/cpu.h>
|
||||
#include <types.h>
|
||||
|
||||
@@ -234,3 +235,18 @@ bool fill_cpu_cache_info(uint8_t level, struct cpu_cache_info *info)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_cache_sets_power_of_two(void)
|
||||
{
|
||||
struct cpu_cache_info info;
|
||||
|
||||
if (!fill_cpu_cache_info(CACHE_L3, &info))
|
||||
return false;
|
||||
|
||||
size_t cache_sets = cpu_get_cache_sets(&info);
|
||||
|
||||
if (IS_POWER_OF_2(cache_sets))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -329,6 +329,15 @@ uint8_t cpu_get_c_substate_support(const int state);
|
||||
*/
|
||||
bool fill_cpu_cache_info(uint8_t level, struct cpu_cache_info *info);
|
||||
|
||||
/*
|
||||
* Determines whether the number of cache sets is a power of two.
|
||||
*
|
||||
* Cache designs often favor power-of-two set counts for efficient indexing
|
||||
* and addressing. This function checks if the provided cache configuration
|
||||
* adheres to this practice.
|
||||
*/
|
||||
bool is_cache_sets_power_of_two(void);
|
||||
|
||||
#if CONFIG(RESERVED_PHYSICAL_ADDRESS_BITS_SUPPORT)
|
||||
unsigned int get_reserved_phys_addr_bits(void);
|
||||
#else
|
||||
|
@@ -241,6 +241,12 @@ const void *intel_microcode_find(void)
|
||||
static bool microcode_checked;
|
||||
static const void *ucode_update;
|
||||
|
||||
if (ENV_CACHE_AS_RAM) {
|
||||
printk(BIOS_ERR, "Microcode Error: Early microcode patching is not supported due"
|
||||
"to NEM limitation\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (microcode_checked)
|
||||
return ucode_update;
|
||||
|
||||
|
@@ -37,6 +37,9 @@ void set_var_mtrr(
|
||||
/* FIXME: It only support 4G less range */
|
||||
msr_t basem, maskm;
|
||||
|
||||
if (type == MTRR_TYPE_WRBACK && !is_cache_sets_power_of_two() && ENV_CACHE_AS_RAM)
|
||||
printk(BIOS_ERR, "MTRR Error: Type %x may not be supported due to NEM limitation\n",
|
||||
type);
|
||||
if (!IS_POWER_OF_2(size))
|
||||
printk(BIOS_ERR, "MTRR Error: size %#x is not a power of two\n", size);
|
||||
if (size < 4 * KiB)
|
||||
|
@@ -1,23 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <console/console.h>
|
||||
#include <device/smbus.h>
|
||||
#include <device/pci.h>
|
||||
#include <device/i2c_bus.h>
|
||||
#include "chip.h"
|
||||
#include "tas5825m.h"
|
||||
|
||||
int tas5825m_write_at(struct device *dev, uint8_t addr, uint8_t value)
|
||||
{
|
||||
return smbus_write_byte(dev, addr, value);
|
||||
return i2c_dev_writeb_at(dev, addr, value);
|
||||
}
|
||||
|
||||
//TODO: use I2C block write for better performance
|
||||
int tas5825m_write_block_at(struct device *dev, uint8_t addr,
|
||||
const uint8_t *values, uint8_t length)
|
||||
{
|
||||
// TODO: use I2C block write for better performance; SMBus does not
|
||||
// have `transfer` op for it.
|
||||
|
||||
int res = 0;
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
res = smbus_write_byte(dev, addr + i, values[i]);
|
||||
res = i2c_dev_writeb_at(dev, addr + i, values[i]);
|
||||
if (res < 0)
|
||||
return res;
|
||||
}
|
||||
@@ -45,8 +46,7 @@ __weak int tas5825m_setup(struct device *dev, int id)
|
||||
|
||||
static void tas5825m_init(struct device *dev)
|
||||
{
|
||||
if (dev->enabled && dev->path.type == DEVICE_PATH_I2C &&
|
||||
ops_smbus_bus(get_pbus_smbus(dev))) {
|
||||
if (dev->enabled && dev->path.type == DEVICE_PATH_I2C && i2c_link(dev)) {
|
||||
printk(BIOS_DEBUG, "tas5825m at %s\n", dev_path(dev));
|
||||
|
||||
struct drivers_i2c_tas5825m_config *config = dev->chip_info;
|
||||
|
@@ -56,14 +56,12 @@ config MRC_SAVE_HASH_IN_TPM
|
||||
|
||||
config MRC_CACHE_USING_MRC_VERSION
|
||||
bool
|
||||
default y if UDK_VERSION >= 202302
|
||||
default n
|
||||
help
|
||||
Use the MRC version info from FSP extended header to store the MRC cache data.
|
||||
This method relies on the FSP_PRODUCER_DATA_TABLES belongs to the
|
||||
`FspProducerDataHeader.h`file to get the MRC version.
|
||||
|
||||
Intel FSP built with EDK2 version 202302 onwards has support to retrieve the
|
||||
MRC version by directly parsing the binary.
|
||||
Supported platform can retrieve the MRC version by directly parsing the binary.
|
||||
|
||||
endif # CACHE_MRC_SETTINGS
|
||||
|
@@ -146,10 +146,6 @@ Device (S76D) {
|
||||
Local1 = ^^PCI0.LPCB.EC0.RPM2
|
||||
}
|
||||
}
|
||||
If (Local1 != 0) {
|
||||
// 60 * (EC frequency / 120) / 2
|
||||
Local1 = 2156250 / Local1
|
||||
}
|
||||
Return ((Local1 << 8) | Local0)
|
||||
}
|
||||
|
||||
|
@@ -4128,6 +4128,7 @@
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_2 0x7d50
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_3 0x7d55
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_4 0x7d60
|
||||
#define PCI_DID_INTEL_MTL_P_GT2_5 0x7dd5
|
||||
#define PCI_DID_INTEL_RPL_HX_GT1 0xa788
|
||||
#define PCI_DID_INTEL_RPL_HX_GT2 0xa78b
|
||||
#define PCI_DID_INTEL_RPL_HX_GT3 0x4688
|
||||
|
@@ -36,7 +36,7 @@
|
||||
#define DDR4_SPD_PART_LEN 20
|
||||
#define DDR4_SPD_SN_OFF 325
|
||||
#define MAX_SPD_PAGE_SIZE_SPD5 128
|
||||
#define MAX_SPD_SIZE (SPD_PAGE_LEN * SPD_SN_LEN)
|
||||
#define MAX_SPD_SIZE (SPD_PAGE_LEN * 4)
|
||||
#define SPD_HUB_MEMREG(addr) ((u8)(0x80 | (addr)))
|
||||
#define SPD5_MR11 0x0B
|
||||
#define SPD5_MR0 0x00
|
||||
|
@@ -209,7 +209,9 @@ enum cb_err spd_fill_from_cache(uint8_t *spd_cache, struct spd_block *blk)
|
||||
|
||||
dram_type = *(spd_cache + SC_SPD_OFFSET(i) + SPD_DRAM_TYPE);
|
||||
|
||||
if (dram_type == SPD_DRAM_DDR4 || dram_type == SPD_DRAM_DDR5)
|
||||
if (dram_type == SPD_DRAM_DDR5)
|
||||
blk->len = CONFIG_DIMM_SPD_SIZE;
|
||||
else if (dram_type == SPD_DRAM_DDR4)
|
||||
blk->len = SPD_PAGE_LEN_DDR4;
|
||||
else
|
||||
blk->len = SPD_PAGE_LEN;
|
||||
|
@@ -58,7 +58,6 @@ config BOARD_GOOGLE_BASEBOARD_REX
|
||||
select HAVE_SLP_S0_GATE
|
||||
select MAINBOARD_HAS_CHROMEOS
|
||||
select MEMORY_SOLDERDOWN
|
||||
select SOC_INTEL_COMMON_BASECODE_RAMTOP
|
||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
||||
select SOC_INTEL_IOE_DIE_SUPPORT
|
||||
select SOC_INTEL_METEORLAKE_U_H
|
||||
|
@@ -19,7 +19,6 @@ config BOARD_INTEL_MTLRVP_COMMON
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_SPD_IN_CBFS
|
||||
select MAINBOARD_HAS_CHROMEOS
|
||||
select SOC_INTEL_COMMON_BASECODE_RAMTOP
|
||||
select SOC_INTEL_COMMON_BLOCK_VARIANT_POWER_LIMIT
|
||||
select SOC_INTEL_CSE_LITE_SKU
|
||||
select SOC_INTEL_METEORLAKE_U_H
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -12,7 +12,10 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -32,4 +35,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
108
src/mainboard/system76/mtl/Kconfig
Normal file
108
src/mainboard/system76/mtl/Kconfig
Normal file
@@ -0,0 +1,108 @@
|
||||
## 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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
config MAINBOARD_SMBIOS_PRODUCT_NAME
|
||||
default "Darter Pro" if BOARD_SYSTEM76_DARP10 || BOARD_SYSTEM76_DARP10_B
|
||||
default "Lemur Pro" if BOARD_SYSTEM76_LEMP13
|
||||
|
||||
config MAINBOARD_VERSION
|
||||
default "darp10" if BOARD_SYSTEM76_DARP10
|
||||
default "darp10-b" if BOARD_SYSTEM76_DARP10_B
|
||||
default "lemp13" if BOARD_SYSTEM76_LEMP13
|
||||
|
||||
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
|
10
src/mainboard/system76/mtl/Kconfig.name
Normal file
10
src/mainboard/system76/mtl/Kconfig.name
Normal file
@@ -0,0 +1,10 @@
|
||||
## 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"
|
20
src/mainboard/system76/mtl/Makefile.mk
Normal file
20
src/mainboard/system76/mtl/Makefile.mk
Normal file
@@ -0,0 +1,20 @@
|
||||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
|
||||
|
||||
ifeq ($(CONFIG_DRIVERS_GFX_NVIDIA),y)
|
||||
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
|
||||
endif
|
||||
|
||||
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
|
31
src/mainboard/system76/mtl/acpi/backlight.asl
Normal file
31
src/mainboard/system76/mtl/acpi/backlight.asl
Normal file
@@ -0,0 +1,31 @@
|
||||
/* 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
|
||||
})
|
||||
}
|
12
src/mainboard/system76/mtl/acpi/mainboard.asl
Normal file
12
src/mainboard/system76/mtl/acpi/mainboard.asl
Normal file
@@ -0,0 +1,12 @@
|
||||
/* 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"
|
||||
}
|
||||
}
|
9
src/mainboard/system76/mtl/acpi/sleep.asl
Normal file
9
src/mainboard/system76/mtl/acpi/sleep.asl
Normal file
@@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
External(\TBTS, MethodObj)
|
||||
|
||||
Method(MPTS, 1, Serialized) {
|
||||
If (CondRefOf(\TBTS)) {
|
||||
\TBTS()
|
||||
}
|
||||
}
|
6
src/mainboard/system76/mtl/board_info.txt
Normal file
6
src/mainboard/system76/mtl/board_info.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
Vendor name: System76
|
||||
Category: laptop
|
||||
ROM package: WSON-8
|
||||
ROM protocol: SPI
|
||||
ROM socketed: n
|
||||
Flashrom support: y
|
9
src/mainboard/system76/mtl/bootblock.c
Normal file
9
src/mainboard/system76/mtl/bootblock.c
Normal file
@@ -0,0 +1,9 @@
|
||||
/* 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();
|
||||
}
|
5
src/mainboard/system76/mtl/cmos.default
Normal file
5
src/mainboard/system76/mtl/cmos.default
Normal file
@@ -0,0 +1,5 @@
|
||||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
43
src/mainboard/system76/mtl/cmos.layout
Normal file
43
src/mainboard/system76/mtl/cmos.layout
Normal file
@@ -0,0 +1,43 @@
|
||||
# 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
|
65
src/mainboard/system76/mtl/devicetree.cb
Normal file
65
src/mainboard/system76/mtl/devicetree.cb
Normal file
@@ -0,0 +1,65 @@
|
||||
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_sdi_enable[0]" = "1"
|
||||
register "pch_hda_audio_link_hda_enable" = "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
|
36
src/mainboard/system76/mtl/dsdt.asl
Normal file
36
src/mainboard/system76/mtl/dsdt.asl
Normal file
@@ -0,0 +1,36 @@
|
||||
/* 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"
|
||||
}
|
9
src/mainboard/system76/mtl/include/mainboard/gpio.h
Normal file
9
src/mainboard/system76/mtl/include/mainboard/gpio.h
Normal file
@@ -0,0 +1,9 @@
|
||||
/* 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
|
13
src/mainboard/system76/mtl/ramstage.c
Normal file
13
src/mainboard/system76/mtl/ramstage.c
Normal file
@@ -0,0 +1,13 @@
|
||||
/* 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,
|
||||
};
|
@@ -0,0 +1,65 @@
|
||||
# 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
|
13
src/mainboard/system76/mtl/variants/darp10/board.fmd
Normal file
13
src/mainboard/system76/mtl/variants/darp10/board.fmd
Normal file
@@ -0,0 +1,13 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,2 @@
|
||||
Board name: darp10
|
||||
Release year: 2024
|
BIN
src/mainboard/system76/mtl/variants/darp10/data.vbt
Normal file
BIN
src/mainboard/system76/mtl/variants/darp10/data.vbt
Normal file
Binary file not shown.
216
src/mainboard/system76/mtl/variants/darp10/gpio.c
Normal file
216
src/mainboard/system76/mtl/variants/darp10/gpio.c
Normal file
@@ -0,0 +1,216 @@
|
||||
/* 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));
|
||||
}
|
16
src/mainboard/system76/mtl/variants/darp10/gpio_early.c
Normal file
16
src/mainboard/system76/mtl/variants/darp10/gpio_early.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* 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));
|
||||
}
|
59
src/mainboard/system76/mtl/variants/darp10/hda_verb.c
Normal file
59
src/mainboard/system76/mtl/variants/darp10/hda_verb.c
Normal file
@@ -0,0 +1,59 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <device/azalia_device.h>
|
||||
|
||||
const u32 cim_verb_data[] = {
|
||||
/* Realtek, ALC245 */
|
||||
0x10ec0245, /* Vendor ID */
|
||||
0x1558a763, /* Subsystem ID */
|
||||
40, /* Number of entries */
|
||||
//AZALIA_SUBVENDOR(0, 0x1558a763),
|
||||
AZALIA_SUBVENDOR(0, 0x1558a743),
|
||||
AZALIA_RESET(1),
|
||||
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, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1b, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1d, 0x40789b2d),
|
||||
AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x21, 0x04211020),
|
||||
|
||||
0x05b50006, 0x05b40011, 0x0205001a, 0x0204810b,
|
||||
0x0205004a, 0x02042010, 0x02050038, 0x02047909,
|
||||
0x05c50000, 0x05c43d82, 0x05c50000, 0x05c43d82,
|
||||
0x05350000, 0x0534201a, 0x05350000, 0x0534201a,
|
||||
0x0535001d, 0x05340800, 0x0535001e, 0x05340800,
|
||||
0x05350003, 0x05341ec4, 0x05350004, 0x05340000,
|
||||
0x05450000, 0x05442000, 0x0545001d, 0x05440800,
|
||||
0x0545001e, 0x05440800, 0x05450003, 0x05441ec4,
|
||||
0x05450004, 0x05440000, 0x05350000, 0x0534a01a,
|
||||
0x0205003c, 0x0204f175, 0x0205003c, 0x0204f135,
|
||||
0x02050040, 0x02048800, 0x05a50001, 0x05a4001f,
|
||||
0x02050010, 0x02040020, 0x02050010, 0x02040020,
|
||||
0x0205006b, 0x0204a390, 0x0205006b, 0x0204a390,
|
||||
0x0205006c, 0x02040c9e, 0x0205006d, 0x02040c00,
|
||||
0x00170500, 0x00170500, 0x05a50004, 0x05a40113,
|
||||
0x02050008, 0x02046a8c, 0x02050076, 0x0204f000,
|
||||
0x0205000e, 0x020465c0, 0x02050033, 0x02048580,
|
||||
0x02050069, 0x0204fda8, 0x02050068, 0x02040000,
|
||||
0x02050003, 0x02040002, 0x02050069, 0x02040000,
|
||||
0x02050068, 0x02040001, 0x0205002e, 0x0204290e,
|
||||
0x02236100, 0x02235100, 0x00920011, 0x00970610,
|
||||
0x00936000, 0x00935000, 0x0205000d, 0x0204a020,
|
||||
0x00220011, 0x00270610, 0x0023a046, 0x00239046,
|
||||
0x0173b000, 0x01770740, 0x05a50001, 0x05a4001f,
|
||||
0x05c5000f, 0x05c40003, 0x02050036, 0x020437d7,
|
||||
0x0143b000, 0x01470740, 0x02050010, 0x02040020,
|
||||
0x01470c02, 0x01470c02,
|
||||
|
||||
// XXX: Duplicate last 2 u32s to keep in 4-dword blocks
|
||||
0x01470c02, 0x01470c02,
|
||||
};
|
||||
|
||||
const u32 pc_beep_verbs[] = {};
|
||||
|
||||
AZALIA_ARRAY_SIZES;
|
91
src/mainboard/system76/mtl/variants/darp10/overridetree.cb
Normal file
91
src/mainboard/system76/mtl/variants/darp10/overridetree.cb
Normal file
@@ -0,0 +1,91 @@
|
||||
chip soc/intel/meteorlake
|
||||
device domain 0 on
|
||||
subsystemid 0x1558 0xa743 inherit
|
||||
|
||||
device ref tbt_pcie_rp0 on end
|
||||
device ref tcss_xhci on end
|
||||
device ref tcss_dma0 on end
|
||||
device ref xhci on
|
||||
register "usb2_ports" = "{
|
||||
[0] = USB2_PORT_MID(OC_SKIP), /* J_AUD1 / AJ_USB3_1 */
|
||||
[1] = USB2_PORT_MID(OC_SKIP), /* J_TYPEC1 */
|
||||
[2] = USB2_PORT_MID(OC_SKIP), /* J_USB3_1 */
|
||||
[5] = USB2_PORT_MID(OC_SKIP), /* TBT */
|
||||
[6] = USB2_PORT_MID(OC_SKIP), /* Camera */
|
||||
[9] = USB2_PORT_MID(OC_SKIP), /* Bluetooth */
|
||||
}"
|
||||
register "usb3_ports" = "{
|
||||
[0] = USB3_PORT_DEFAULT(OC_SKIP), /* J_AUD1 / AJ_USB3_1 */
|
||||
[1] = USB3_PORT_DEFAULT(OC_SKIP), /* J_USB3_1 */
|
||||
}"
|
||||
end
|
||||
device ref i2c0 on
|
||||
# Touchpad I2C bus
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C0]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""ELAN0412""
|
||||
register "generic.desc" = ""ELAN Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_B00)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 15 on end
|
||||
end
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""FTCS1000""
|
||||
register "generic.desc" = ""FocalTech Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_B00)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 38 on end
|
||||
end
|
||||
end
|
||||
device ref pcie_rp5 on
|
||||
# GLAN
|
||||
register "pcie_rp[PCH_RP(5)]" = "{
|
||||
.clk_src = 2,
|
||||
.clk_req = 2,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER | PCIE_RP_CLK_SRC_UNUSED,
|
||||
}"
|
||||
register "pcie_clk_config_flag[2]" = "PCIE_CLK_FREE_RUNNING"
|
||||
device pci 00.0 on end
|
||||
end
|
||||
device ref pcie_rp6 on
|
||||
# Card Reader
|
||||
register "pcie_rp[PCH_RP(6)]" = "{
|
||||
.clk_src = 3,
|
||||
.clk_req = 3,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp8 on
|
||||
# WLAN
|
||||
register "pcie_rp[PCH_RP(8)]" = "{
|
||||
.clk_src = 5,
|
||||
.clk_req = 5,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp10 on
|
||||
# SSD2
|
||||
# XXX: Schematics show RP[13:16] used
|
||||
register "pcie_rp[PCH_RP(10)]" = "{
|
||||
.clk_src = 8,
|
||||
.clk_req = 8,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp11 on
|
||||
# SSD1
|
||||
# XXX: Schematics show RP[17:20] used
|
||||
register "pcie_rp[PCH_RP(11)]" = "{
|
||||
.clk_src = 7,
|
||||
.clk_req = 7,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref hda on
|
||||
subsystemid 0x1558 0xa763
|
||||
end
|
||||
device ref gbe on end
|
||||
end
|
||||
end
|
10
src/mainboard/system76/mtl/variants/darp10/ramstage.c
Normal file
10
src/mainboard/system76/mtl/variants/darp10/ramstage.c
Normal file
@@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <soc/ramstage.h>
|
||||
|
||||
void mainboard_silicon_init_params(FSP_S_CONFIG *params)
|
||||
{
|
||||
// XXX: Enabling C10 reporting causes system to constantly enter and
|
||||
// exit opportunistic suspend when idle.
|
||||
params->PchEspiHostC10ReportEnable = 0;
|
||||
}
|
25
src/mainboard/system76/mtl/variants/darp10/romstage.c
Normal file
25
src/mainboard/system76/mtl/variants/darp10/romstage.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR5,
|
||||
.ect = true,
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_DIMM_MODULE,
|
||||
.smbus = {
|
||||
[0] = { .addr_dimm[0] = 0x50, },
|
||||
[1] = { .addr_dimm[0] = 0x52, },
|
||||
},
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
12
src/mainboard/system76/mtl/variants/lemp13/board.fmd
Normal file
12
src/mainboard/system76/mtl/variants/lemp13/board.fmd
Normal file
@@ -0,0 +1,12 @@
|
||||
FLASH 32M {
|
||||
SI_DESC 16K
|
||||
SI_ME 10128K
|
||||
SI_BIOS@16M 16M {
|
||||
RW_MRC_CACHE 64K
|
||||
SMMSTORE(PRESERVE) 256K
|
||||
WP_RO {
|
||||
FMAP 4K
|
||||
COREBOOT(CBFS)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,2 @@
|
||||
Board name: lemp13
|
||||
Release year: 2024
|
BIN
src/mainboard/system76/mtl/variants/lemp13/data.vbt
Normal file
BIN
src/mainboard/system76/mtl/variants/lemp13/data.vbt
Normal file
Binary file not shown.
208
src/mainboard/system76/mtl/variants/lemp13/gpio.c
Normal file
208
src/mainboard/system76/mtl/variants/lemp13/gpio.c
Normal file
@@ -0,0 +1,208 @@
|
||||
/* 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#
|
||||
PAD_NC(GPP_A07, NONE),
|
||||
PAD_NC(GPP_A08, NONE),
|
||||
PAD_NC(GPP_A09, NONE),
|
||||
PAD_NC(GPP_A10, NONE),
|
||||
PAD_CFG_GPO(GPP_A11, 0, PLTRST),
|
||||
PAD_NC(GPP_A12, NONE),
|
||||
PAD_CFG_TERM_GPO(GPP_A13, 1, UP_20K, PLTRST),
|
||||
PAD_CFG_TERM_GPO(GPP_A14, 0, UP_20K, PLTRST),
|
||||
PAD_CFG_TERM_GPO(GPP_A15, 0, UP_20K, PLTRST),
|
||||
PAD_CFG_NF(GPP_A16, UP_20K, DEEP, NF1),
|
||||
PAD_CFG_GPI_INT(GPP_A17, NONE, PLTRST, LEVEL), // TP_ATTN#
|
||||
PAD_CFG_TERM_GPO(GPP_A18, 0, UP_20K, PLTRST),
|
||||
PAD_CFG_TERM_GPO(GPP_A19, 0, UP_20K, DEEP),
|
||||
PAD_CFG_TERM_GPO(GPP_A20, 0, NATIVE, DEEP),
|
||||
PAD_CFG_NF(GPP_A21, NATIVE, DEEP, NF1),
|
||||
_PAD_CFG_STRUCT(GPP_B00, 0x40100100, 0x0000),
|
||||
PAD_CFG_GPO(GPP_B01, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B02, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B03, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B04, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B05, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B06, 0, DEEP),
|
||||
PAD_CFG_GPO(GPP_B07, 1, DEEP),
|
||||
PAD_CFG_GPO(GPP_B08, 1, DEEP),
|
||||
PAD_CFG_GPI(GPP_B09, NONE, DEEP),
|
||||
PAD_CFG_GPI(GPP_B10, NONE, DEEP),
|
||||
PAD_CFG_NF(GPP_B11, NONE, DEEP, NF2), // CPU_HDMI_HPD
|
||||
PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_B13, NONE, PLTRST, NF1),
|
||||
PAD_CFG_GPO(GPP_B14, 0, PLTRST),
|
||||
PAD_CFG_GPI(GPP_B15, NONE, DEEP),
|
||||
PAD_CFG_GPI(GPP_B16, NONE, DEEP),
|
||||
PAD_CFG_GPO(GPP_B17, 1, PLTRST), // HDMI_EN
|
||||
PAD_CFG_GPO(GPP_B18, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B19, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B20, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_B21, 0, PLTRST),
|
||||
PAD_CFG_GPI(GPP_B22, NONE, DEEP),
|
||||
PAD_CFG_GPO(GPP_B23, 1, DEEP),
|
||||
PAD_CFG_NF(GPP_C00, NONE, DEEP, NF1), // SMB_CLK_DDR
|
||||
PAD_CFG_NF(GPP_C01, NONE, DEEP, NF1), // SMB_DATA_DDR
|
||||
PAD_CFG_NF(GPP_C02, NONE, DEEP, NF1), // GPP_C2_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), // GPP_C5_STRAP
|
||||
PAD_CFG_NF(GPP_C06, UP_20K, DEEP, NF1), // TBT_I2C_SCL
|
||||
PAD_CFG_NF(GPP_C07, UP_20K, DEEP, NF1), // TBT_I2C_SDA
|
||||
PAD_CFG_NF(GPP_C08, NONE, DEEP, NF1), // GPP_C08_TEST
|
||||
PAD_CFG_NF(GPP_C09, NONE, DEEP, NF1), // CARD_CLKREQ
|
||||
PAD_CFG_GPO(GPP_C10, 0, PLTRST), // 5G_PCIE_CLKREQ
|
||||
PAD_CFG_NF(GPP_C11, NONE, PWROK, NF1), // WLAN_CLKREQ
|
||||
PAD_CFG_NF(GPP_C12, NONE, PWROK, NF1), // GPP_C13-TEST (typo from schematic)
|
||||
PAD_CFG_GPO(GPP_C13, 1, DEEP),
|
||||
PAD_CFG_NF(GPP_C14, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_C15, NONE, DEEP, NF1), // GPP_C15
|
||||
// GPP_C16 (TBTA_LSX0_TXD) configured by FSP
|
||||
// GPP_C17 (TBTA_LSX0_RXD) configured by FSP
|
||||
// GPP_C18 not connected
|
||||
// GPP_C19 not connected
|
||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF2), // HDMI_CTRLCLK
|
||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF2), // HDMI_CTRLDATA
|
||||
// GPP_C22 not connected
|
||||
// GPP_C23 not connected
|
||||
PAD_CFG_GPO(GPP_D00, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D01, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D02, 1, PLTRST),
|
||||
PAD_NC(GPP_D03, NONE),
|
||||
PAD_CFG_GPO(GPP_D04, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D05, 1, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D06, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D07, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D08, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D09, 0, PLTRST),
|
||||
PAD_CFG_NF(GPP_D10, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_D11, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_D12, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_D13, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_GPO(GPP_D14, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D15, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_D16, 0, DEEP),
|
||||
PAD_CFG_NF(GPP_D17, NONE, DEEP, NF1),
|
||||
PAD_NC(GPP_D18, NONE), // GPP_D18-TEST
|
||||
PAD_CFG_NF(GPP_D19, NONE, DEEP, NF1), // SSD2_CLKREQ
|
||||
PAD_CFG_NF(GPP_D20, NONE, DEEP, NF1), // SSD1_CLKREQ
|
||||
PAD_CFG_NF(GPP_D21, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_D22, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_D23, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_GPO(GPP_E00, 0, PLTRST),
|
||||
_PAD_CFG_STRUCT(GPP_E01, 0x40100100, 0x1000),
|
||||
PAD_CFG_GPI(GPP_E02, NONE, DEEP),
|
||||
PAD_NC(GPP_E03, NONE),
|
||||
PAD_CFG_GPO(GPP_E04, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_E05, 0, PLTRST),
|
||||
PAD_CFG_GPI(GPP_E06, NONE, DEEP),
|
||||
PAD_CFG_GPO(GPP_E07, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_E08, 0, PLTRST),
|
||||
PAD_CFG_GPI(GPP_E09, NONE, DEEP),
|
||||
PAD_CFG_GPO(GPP_E10, 0, PLTRST),
|
||||
PAD_CFG_GPI(GPP_E11, NONE, DEEP),
|
||||
_PAD_CFG_STRUCT(GPP_E12, 0x84002200, 0x0000),
|
||||
_PAD_CFG_STRUCT(GPP_E13, 0x44002100, 0x0000),
|
||||
PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),
|
||||
PAD_CFG_GPO(GPP_E15, 0, PLTRST),
|
||||
PAD_CFG_NF(GPP_E16, NONE, DEEP, NF2),
|
||||
PAD_CFG_GPO(GPP_E17, 0, PLTRST),
|
||||
PAD_NC(GPP_E18, NONE),
|
||||
PAD_NC(GPP_E19, NONE),
|
||||
PAD_NC(GPP_E20, NONE),
|
||||
PAD_NC(GPP_E21, NONE),
|
||||
PAD_CFG_TERM_GPO(GPP_E22, 0, DN_20K, PLTRST),
|
||||
PAD_CFG_NF(GPP_F00, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F01, UP_20K, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F02, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F03, UP_20K, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F04, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F05, NONE, DEEP, NF3),
|
||||
PAD_CFG_NF(GPP_F06, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F07, DN_20K, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_F08, DN_20K, DEEP, NF1),
|
||||
PAD_CFG_GPI(GPP_F09, NONE, DEEP),
|
||||
PAD_NC(GPP_F10, NONE),
|
||||
PAD_CFG_GPO(GPP_F11, 0, PLTRST),
|
||||
_PAD_CFG_STRUCT(GPP_F12, 0x44002300, 0x0000), // AMP_SMB_CLK
|
||||
_PAD_CFG_STRUCT(GPP_F13, 0x44002300, 0x0000), // AMP_SMB_DATA
|
||||
PAD_CFG_GPO(GPP_F14, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F15, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F16, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F17, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F18, 0, DEEP),
|
||||
PAD_CFG_GPO(GPP_F19, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F20, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F21, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F22, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_F23, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H00, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H01, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H02, 1, PLTRST),
|
||||
PAD_NC(GPP_H03, NONE),
|
||||
PAD_NC(GPP_H04, NONE),
|
||||
PAD_NC(GPP_H05, NONE),
|
||||
PAD_NC(GPP_H06, NONE),
|
||||
PAD_NC(GPP_H07, NONE),
|
||||
PAD_NC(GPP_H08, NONE),
|
||||
PAD_NC(GPP_H09, NONE),
|
||||
PAD_CFG_GPO(GPP_H10, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H11, 0, PLTRST),
|
||||
PAD_NC(GPP_H12, NONE),
|
||||
PAD_CFG_NF(GPP_H13, NONE, DEEP, NF1),
|
||||
PAD_CFG_GPO(GPP_H14, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H15, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H16, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_H17, 0, PLTRST),
|
||||
PAD_NC(GPP_H18, NONE),
|
||||
PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_H20, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_H21, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_H22, NONE, DEEP, NF1),
|
||||
PAD_CFG_GPO(GPP_S00, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_S01, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_S02, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_S03, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_S04, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_S05, 0, PLTRST),
|
||||
PAD_CFG_NF(GPP_S06, NONE, DEEP, NF3),
|
||||
PAD_CFG_NF(GPP_S07, NONE, DEEP, NF3),
|
||||
PAD_CFG_NF(GPP_V00, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V01, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V02, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V03, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V04, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V05, UP_20K, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V06, NATIVE, DEEP, NF1),
|
||||
PAD_CFG_GPI(GPP_V07, NATIVE, DEEP),
|
||||
PAD_CFG_NF(GPP_V08, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V09, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V10, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V11, NONE, DEEP, NF1),
|
||||
PAD_NC(GPP_V12, NONE),
|
||||
PAD_CFG_NF(GPP_V13, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V14, NONE, DEEP, NF1),
|
||||
PAD_CFG_NF(GPP_V15, NONE, PLTRST, NF1),
|
||||
PAD_CFG_GPO(GPP_V16, 0, PLTRST),
|
||||
PAD_CFG_GPO(GPP_V17, 0, PLTRST),
|
||||
PAD_NC(GPP_V18, NONE),
|
||||
PAD_CFG_NF(GPP_V19, NONE, DEEP, NF1),
|
||||
PAD_NC(GPP_V20, NONE),
|
||||
PAD_NC(GPP_V21, NONE),
|
||||
PAD_NC(GPP_V22, NONE),
|
||||
PAD_NC(GPP_V23, NONE),
|
||||
};
|
||||
|
||||
void mainboard_configure_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
16
src/mainboard/system76/mtl/variants/lemp13/gpio_early.c
Normal file
16
src/mainboard/system76/mtl/variants/lemp13/gpio_early.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* 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));
|
||||
}
|
50
src/mainboard/system76/mtl/variants/lemp13/hda_verb.c
Normal file
50
src/mainboard/system76/mtl/variants/lemp13/hda_verb.c
Normal file
@@ -0,0 +1,50 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <device/azalia_device.h>
|
||||
|
||||
const u32 cim_verb_data[] = {
|
||||
/* Realtek, ALC245 */
|
||||
0x10ec0245, /* Vendor ID */
|
||||
0x15582624, /* Subsystem ID */
|
||||
34, /* Number of entries */
|
||||
|
||||
AZALIA_SUBVENDOR(0, 0x15582624),
|
||||
AZALIA_RESET(1),
|
||||
AZALIA_PIN_CFG(0, 0x12, 0x90a60130),
|
||||
AZALIA_PIN_CFG(0, 0x13, 0x40000000),
|
||||
AZALIA_PIN_CFG(0, 0x14, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x17, 0x90170110),
|
||||
AZALIA_PIN_CFG(0, 0x18, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1b, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1d, 0x40689b2d),
|
||||
AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x21, 0x04211020),
|
||||
|
||||
0x05b50006, 0x05b40011, 0x0205001a, 0x0204810b,
|
||||
0x0205004a, 0x02042010, 0x02050038, 0x02046909,
|
||||
0x05c50000, 0x05c43d82, 0x05c50000, 0x05c43d82,
|
||||
0x05350000, 0x0534201a, 0x05350000, 0x0534201a,
|
||||
0x0535001d, 0x05340800, 0x0535001e, 0x05340800,
|
||||
0x05350003, 0x05341ec4, 0x05350004, 0x05340000,
|
||||
0x05450000, 0x05442000, 0x0545001d, 0x05440800,
|
||||
0x0545001e, 0x05440800, 0x05450003, 0x05441ec4,
|
||||
0x05450004, 0x05440000, 0x05350000, 0x0534a01a,
|
||||
0x0205003c, 0x0204f175, 0x0205003c, 0x0204f135,
|
||||
0x02050040, 0x02048800, 0x05a50001, 0x05a4001f,
|
||||
0x02050010, 0x02040020, 0x02050010, 0x02040020,
|
||||
0x0205006b, 0x0204a390, 0x0205006b, 0x0204a390,
|
||||
0x0205006c, 0x02040c9e, 0x0205006d, 0x02040c00,
|
||||
0x00170500, 0x00170500, 0x05a50004, 0x05a40113,
|
||||
0x02050008, 0x02046a8c, 0x02050076, 0x0204f000,
|
||||
0x0205000e, 0x020465c0, 0x02050033, 0x02048580,
|
||||
0x02050069, 0x0204fda8, 0x02050068, 0x02040000,
|
||||
0x02050003, 0x02040002, 0x02050069, 0x02040000,
|
||||
0x02050068, 0x02040001, 0x0205002e, 0x0204290e,
|
||||
0x02050010, 0x02040020, 0x02050010, 0x02040020,
|
||||
};
|
||||
|
||||
const u32 pc_beep_verbs[] = {};
|
||||
|
||||
AZALIA_ARRAY_SIZES;
|
120
src/mainboard/system76/mtl/variants/lemp13/overridetree.cb
Normal file
120
src/mainboard/system76/mtl/variants/lemp13/overridetree.cb
Normal file
@@ -0,0 +1,120 @@
|
||||
chip soc/intel/meteorlake
|
||||
#TODO: POWER LIMITS
|
||||
#register "power_limits_config[RPL_P_282_242_142_15W_CORE]" = "{
|
||||
# .tdp_pl1_override = 15,
|
||||
# .tdp_pl2_override = 46,
|
||||
#}"
|
||||
|
||||
device domain 0 on
|
||||
subsystemid 0x1558 0x2624 inherit
|
||||
|
||||
device ref tbt_pcie_rp0 on end
|
||||
device ref tcss_xhci on
|
||||
register "tcss_ports[0]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
#TODO: TCP1 is used as USB Type-A
|
||||
register "tcss_ports[1]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
#TODO: TCP2 is used as HDMI
|
||||
#TODO: TCP3 goes to redriver, then mux, then USB Type-C
|
||||
register "tcss_ports[3]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
|
||||
chip drivers/usb/acpi
|
||||
device ref tcss_root_hub on
|
||||
chip drivers/usb/acpi
|
||||
register "desc" = ""TBT Type-C""
|
||||
register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
|
||||
device ref tcss_usb3_port0 on end
|
||||
end
|
||||
chip drivers/usb/acpi
|
||||
register "desc" = ""USB Type-A""
|
||||
register "type" = "UPC_TYPE_USB3_A"
|
||||
device ref tcss_usb3_port1 on end
|
||||
end
|
||||
chip drivers/usb/acpi
|
||||
register "desc" = ""USB Type-C""
|
||||
register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
|
||||
device ref tcss_usb3_port3 on end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
device ref tcss_dma0 on end
|
||||
device ref xhci on
|
||||
register "usb2_ports" = "{
|
||||
[0] = USB2_PORT_MID(OC_SKIP), /* TODO: USB TYPEA port1 GEN2 */
|
||||
[1] = USB2_PORT_MID(OC_SKIP), /* TODO: USB TYPEA port2 GEN1 */
|
||||
[2] = USB2_PORT_TYPE_C(OC_SKIP), /* TODO: TBT TYPEC USB2.0 */
|
||||
[4] = USB2_PORT_TYPE_C(OC_SKIP), /* TODO: TYPEC USB2.0 */
|
||||
[6] = USB2_PORT_MID(OC_SKIP), /* Camera */
|
||||
[9] = USB2_PORT_MID(OC_SKIP), /* Bluetooth */
|
||||
}"
|
||||
register "usb3_ports" = "{
|
||||
[0] = USB3_PORT_DEFAULT(OC_SKIP), /* TODO: USB port1 GEN1 */
|
||||
}"
|
||||
end
|
||||
|
||||
device ref i2c0 on
|
||||
# Touchpad I2C bus
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C0]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""ELAN0412""
|
||||
register "generic.desc" = ""ELAN Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_A17)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 15 on end
|
||||
end
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""FTCS1000""
|
||||
register "generic.desc" = ""FocalTech Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_A17)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 38 on end
|
||||
end
|
||||
end
|
||||
device ref i2c5 on
|
||||
# Smart Amplifier I2C bus
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C5]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/tas5825m
|
||||
register "id" = "0"
|
||||
device i2c 4e on end # (8bit address: 0x9c)
|
||||
end
|
||||
end
|
||||
|
||||
device ref pcie_rp1 on
|
||||
# PCH RP#1 x1, Clock 0 (CARD)
|
||||
register "pcie_rp[PCH_RP(1)]" = "{
|
||||
.clk_src = 0,
|
||||
.clk_req = 0,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp2 on
|
||||
# PCH RP#2 x1, Clock 2 (WLAN)
|
||||
register "pcie_rp[PCH_RP(2)]" = "{
|
||||
.clk_src = 2,
|
||||
.clk_req = 2,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp10 on
|
||||
# PCH RP#10 x4, Clock 7 (SSD2)
|
||||
# This uses signals PCIE_13 through PCIE_16 in the schematics
|
||||
# but is identified as root port 10 in firmware.
|
||||
register "pcie_rp[PCH_RP(10)]" = "{
|
||||
.clk_src = 7,
|
||||
.clk_req = 7,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp11 on
|
||||
# CPU RP#11 x4, Clock 8 (SSD1)
|
||||
# This uses signals PCIE_17 through PCIE_20 in the schematics
|
||||
# but is identified as root port 11 in firmware.
|
||||
register "pcie_rp[PCIE_RP(11)]" = "{
|
||||
.clk_src = 8,
|
||||
.clk_req = 8,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
end
|
||||
end
|
19
src/mainboard/system76/mtl/variants/lemp13/ramstage.c
Normal file
19
src/mainboard/system76/mtl/variants/lemp13/ramstage.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <soc/ramstage.h>
|
||||
|
||||
void mainboard_silicon_init_params(FSP_S_CONFIG *params)
|
||||
{
|
||||
// TODO: Pin Mux settings
|
||||
|
||||
// Enable TCP1 and TCP3 USB-A conversion
|
||||
// BIT 0:3 is mapping to PCH XHCI USB2 port
|
||||
// BIT 4:5 is reserved
|
||||
// BIT 6 is orientational
|
||||
// BIT 7 is enable
|
||||
params->EnableTcssCovTypeA[1] = 0x81;
|
||||
params->EnableTcssCovTypeA[3] = 0x85;
|
||||
|
||||
// Disable reporting CPU C10 state over eSPI (causes LED flicker).
|
||||
params->PchEspiHostC10ReportEnable = 0;
|
||||
}
|
24
src/mainboard/system76/mtl/variants/lemp13/romstage.c
Normal file
24
src/mainboard/system76/mtl/variants/lemp13/romstage.c
Normal file
@@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR5,
|
||||
.ect = true,
|
||||
.LpDdrDqDqsReTraining = 1,
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_MIXED,
|
||||
.cbfs_index = 0,
|
||||
.smbus[1] = { .addr_dimm[0] = 0x52, },
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
1049
src/mainboard/system76/mtl/variants/lemp13/tas5825m.c
Normal file
1049
src/mainboard/system76/mtl/variants/lemp13/tas5825m.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -84,6 +84,16 @@ config BOARD_SYSTEM76_ORYP11
|
||||
select SOC_INTEL_ALDERLAKE_PCH_P
|
||||
select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
|
||||
|
||||
config BOARD_SYSTEM76_ORYP12
|
||||
select BOARD_SYSTEM76_RPL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select DRIVERS_INTEL_DTBT
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select PCIEXP_HOTPLUG
|
||||
select SOC_INTEL_ALDERLAKE_PCH_S
|
||||
|
||||
config BOARD_SYSTEM76_SERW13
|
||||
select BOARD_SYSTEM76_RPL_COMMON
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
@@ -107,6 +117,7 @@ config VARIANT_DIR
|
||||
default "gaze18" if BOARD_SYSTEM76_GAZE18
|
||||
default "lemp12" if BOARD_SYSTEM76_LEMP12
|
||||
default "oryp11" if BOARD_SYSTEM76_ORYP11
|
||||
default "oryp12" if BOARD_SYSTEM76_ORYP12
|
||||
default "serw13" if BOARD_SYSTEM76_SERW13
|
||||
|
||||
config OVERRIDE_DEVICETREE
|
||||
@@ -121,6 +132,7 @@ config MAINBOARD_PART_NUMBER
|
||||
default "gaze18" if BOARD_SYSTEM76_GAZE18
|
||||
default "lemp12" if BOARD_SYSTEM76_LEMP12
|
||||
default "oryp11" if BOARD_SYSTEM76_ORYP11
|
||||
default "oryp12" if BOARD_SYSTEM76_ORYP12
|
||||
default "serw13" if BOARD_SYSTEM76_SERW13
|
||||
|
||||
config MAINBOARD_SMBIOS_PRODUCT_NAME
|
||||
@@ -130,7 +142,7 @@ config MAINBOARD_SMBIOS_PRODUCT_NAME
|
||||
default "Galago Pro" if BOARD_SYSTEM76_GALP7
|
||||
default "Gazelle" if BOARD_SYSTEM76_GAZE18
|
||||
default "Lemur Pro" if BOARD_SYSTEM76_LEMP12
|
||||
default "Oryx Pro" if BOARD_SYSTEM76_ORYP11
|
||||
default "Oryx Pro" if BOARD_SYSTEM76_ORYP11 || BOARD_SYSTEM76_ORYP12
|
||||
default "Serval WS" if BOARD_SYSTEM76_SERW13
|
||||
|
||||
config MAINBOARD_VERSION
|
||||
@@ -142,6 +154,7 @@ config MAINBOARD_VERSION
|
||||
default "gaze18" if BOARD_SYSTEM76_GAZE18
|
||||
default "lemp12" if BOARD_SYSTEM76_LEMP12
|
||||
default "oryp11" if BOARD_SYSTEM76_ORYP11
|
||||
default "oryp12" if BOARD_SYSTEM76_ORYP12
|
||||
default "serw13" if BOARD_SYSTEM76_SERW13
|
||||
|
||||
config CMOS_DEFAULT_FILE
|
||||
@@ -161,12 +174,12 @@ config DRIVERS_GFX_NVIDIA_BRIDGE
|
||||
default 0x02 if BOARD_SYSTEM76_BONW15
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_TPP
|
||||
default 45 if BOARD_SYSTEM76_ORYP11
|
||||
default 45 if BOARD_SYSTEM76_ORYP11 || BOARD_SYSTEM76_ORYP12
|
||||
default 55 if BOARD_SYSTEM76_ADDW3 || BOARD_SYSTEM76_ADDW4 || BOARD_SYSTEM76_GAZE18 || BOARD_SYSTEM76_SERW13
|
||||
default 80 if BOARD_SYSTEM76_BONW15
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_DYNAMIC_BOOST_MAX
|
||||
default 25 if BOARD_SYSTEM76_ADDW3 || BOARD_SYSTEM76_ADDW4 || BOARD_SYSTEM76_BONW15 || BOARD_SYSTEM76_GAZE18 || BOARD_SYSTEM76_ORYP11 || BOARD_SYSTEM76_SERW13
|
||||
default 25 if BOARD_SYSTEM76_ADDW3 || BOARD_SYSTEM76_ADDW4 || BOARD_SYSTEM76_BONW15 || BOARD_SYSTEM76_GAZE18 || BOARD_SYSTEM76_ORYP11 || BOARD_SYSTEM76_ORYP12 || BOARD_SYSTEM76_SERW13
|
||||
|
||||
config FMDFILE
|
||||
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/board.fmd"
|
||||
|
@@ -24,5 +24,8 @@ config BOARD_SYSTEM76_LEMP12
|
||||
config BOARD_SYSTEM76_ORYP11
|
||||
bool "oryp11"
|
||||
|
||||
config BOARD_SYSTEM76_ORYP12
|
||||
bool "oryp12"
|
||||
|
||||
config BOARD_SYSTEM76_SERW13
|
||||
bool "serw13"
|
||||
|
@@ -14,5 +14,6 @@ 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-$(CONFIG_DRIVERS_I2C_TAS5825M) += variants/$(VARIANT_DIR)/tas5825m.c
|
||||
|
||||
SPD_SOURCES = samsung-M425R1GB4BB0-CQKOD
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
12
src/mainboard/system76/rpl/variants/oryp12/board.fmd
Normal file
12
src/mainboard/system76/rpl/variants/oryp12/board.fmd
Normal file
@@ -0,0 +1,12 @@
|
||||
FLASH 32M {
|
||||
SI_DESC 4K
|
||||
SI_ME 3944K
|
||||
SI_BIOS@16M 16M {
|
||||
RW_MRC_CACHE 64K
|
||||
SMMSTORE(PRESERVE) 256K
|
||||
WP_RO {
|
||||
FMAP 4K
|
||||
COREBOOT(CBFS)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,2 @@
|
||||
Board name: oryp12
|
||||
Release year: 2024
|
BIN
src/mainboard/system76/rpl/variants/oryp12/data.vbt
Normal file
BIN
src/mainboard/system76/rpl/variants/oryp12/data.vbt
Normal file
Binary file not shown.
296
src/mainboard/system76/rpl/variants/oryp12/gpio.c
Normal file
296
src/mainboard/system76/rpl/variants/oryp12/gpio.c
Normal file
@@ -0,0 +1,296 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/gpio.h>
|
||||
|
||||
static const struct pad_config gpio_table[] = {
|
||||
/* ------- GPIO Group GPD ------- */
|
||||
PAD_CFG_NF(GPD0, UP_20K, PWROK, NF1), // BATLOW_N
|
||||
PAD_CFG_NF(GPD1, NATIVE, PWROK, NF1), // AC_PRESENT
|
||||
PAD_NC(GPD2, NONE),
|
||||
PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1), // PWR_BTN#
|
||||
PAD_CFG_NF(GPD4, NONE, PWROK, NF1), // SUSB#_PCH
|
||||
PAD_CFG_NF(GPD5, NONE, PWROK, NF1), // SUSC#_PCH
|
||||
PAD_NC(GPD6, NONE), // SLP_A# (test)
|
||||
PAD_NC(GPD7, NONE), // GPD_7 (strap)
|
||||
PAD_CFG_NF(GPD8, NONE, PWROK, NF1), // CNVI_SUSCLK
|
||||
PAD_CFG_GPO(GPD9, 0, PWROK), // SLP_WLAN#
|
||||
PAD_CFG_NF(GPD10, NONE, DEEP, NF1), // SLP_S5# (test)
|
||||
PAD_NC(GPD11, NONE),
|
||||
PAD_NC(GPD12, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_A ------- */
|
||||
PAD_CFG_NF(GPP_A0, UP_20K, DEEP, NF1), // ESPI_IO0_EC
|
||||
PAD_CFG_NF(GPP_A1, UP_20K, DEEP, NF1), // ESPI_IO1_EC
|
||||
PAD_CFG_NF(GPP_A2, UP_20K, DEEP, NF1), // ESPI_IO2_EC
|
||||
PAD_CFG_NF(GPP_A3, UP_20K, DEEP, NF1), // ESPI_IO3_EC
|
||||
PAD_CFG_NF(GPP_A4, UP_20K, DEEP, NF1), // ESPI_CS_EC#
|
||||
PAD_CFG_NF(GPP_A5, DN_20K, DEEP, NF1), // ESPI_CLK_EC
|
||||
PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1), // ESPI_RESET#
|
||||
PAD_NC(GPP_A7, NONE),
|
||||
PAD_NC(GPP_A8, NONE),
|
||||
PAD_NC(GPP_A9, NONE),
|
||||
PAD_CFG_NF(GPP_A10, UP_20K, DEEP, NF1), // SERIRQ_ESPI_ALERT0
|
||||
PAD_NC(GPP_A11, NONE),
|
||||
PAD_NC(GPP_A12, NONE),
|
||||
PAD_NC(GPP_A13, NONE),
|
||||
PAD_NC(GPP_A14, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_B ------- */
|
||||
_PAD_CFG_STRUCT(GPP_B0, 0x40100100, 0x3000), // PIRQ#_TPM
|
||||
PAD_CFG_GPI(GPP_B1, NONE, DEEP),
|
||||
PAD_CFG_GPI(GPP_B2, NONE, DEEP), //CNVI_WAKE#
|
||||
PAD_CFG_GPO(GPP_B3, 1, PLTRST), // BT_EN
|
||||
PAD_NC(GPP_B4, NONE),
|
||||
PAD_NC(GPP_B5, NONE),
|
||||
PAD_NC(GPP_B6, NONE),
|
||||
PAD_NC(GPP_B7, NONE), // M2_SSD2_RST#
|
||||
PAD_NC(GPP_B8, NONE), // M2_SSD1_RST#
|
||||
PAD_NC(GPP_B9, NONE), // M2_SSD1_PWR_EN
|
||||
PAD_NC(GPP_B10, NONE), // M2_SSD2_PWR_EN
|
||||
PAD_NC(GPP_B11, NONE),
|
||||
PAD_NC(GPP_B12, NONE),
|
||||
PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), // PLT_RST#
|
||||
PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1), // HDA_SPKR
|
||||
PAD_CFG_GPO(GPP_B15, 0, DEEP), // PS8461_SW (XXX: NC)
|
||||
PAD_NC(GPP_B16, NONE),
|
||||
PAD_NC(GPP_B17, NONE),
|
||||
PAD_CFG_NF(GPP_B18, NONE, PWROK, NF1), // GPP_B18_PMCALERT#
|
||||
PAD_CFG_GPO(GPP_B19, 1, DEEP), // PCH_WLAN_EN (XXX: NC)
|
||||
PAD_CFG_GPO(GPP_B20, 0, DEEP), // GPIO_LANRTD3
|
||||
_PAD_CFG_STRUCT(GPP_B21, 0x42880100, 0x0000), // GPP_B21_TBT_WAKE#
|
||||
PAD_CFG_GPO(GPP_B22, 0, DEEP), // LAN_PLT_RST#
|
||||
PAD_CFG_GPI(GPP_B23, NONE, DEEP), // Crystal frequency bit 1 strap
|
||||
|
||||
/* ------- GPIO Group GPP_C ------- */
|
||||
PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1), // SMB_CLK
|
||||
PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1), // SMB_DATA
|
||||
PAD_CFG_GPI(GPP_C2, NONE, DEEP), // PCH_PORT80_LED
|
||||
PAD_CFG_NF(GPP_C3, NONE, DEEP, NF3), // GPPB_I2C2_SDA
|
||||
PAD_CFG_NF(GPP_C4, NONE, DEEP, NF3), // GPPB_I2C2_SCL
|
||||
PAD_CFG_GPO(GPP_C5, 0, DEEP), // GPP_C_5_SML0ALERT_N
|
||||
PAD_CFG_NF(GPP_C6, NONE, DEEP, NF2), // I2C_SDA_AMP
|
||||
PAD_CFG_NF(GPP_C7, NONE, DEEP, NF2), // I2C_SCL_AMP
|
||||
PAD_CFG_GPI(GPP_C8, NONE, DEEP), // TPM_DET
|
||||
PAD_NC(GPP_C9, NONE),
|
||||
PAD_NC(GPP_C10, NONE),
|
||||
PAD_NC(GPP_C11, NONE),
|
||||
PAD_NC(GPP_C12, NONE),
|
||||
PAD_NC(GPP_C13, NONE),
|
||||
PAD_NC(GPP_C14, NONE),
|
||||
PAD_NC(GPP_C15, NONE),
|
||||
PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1), // I2C_SDA_TP
|
||||
PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1), // I2C_SCL_TP
|
||||
PAD_CFG_NF(GPP_C18, NONE, DEEP, NF1), // PCH_I2C_SDA
|
||||
PAD_CFG_NF(GPP_C19, NONE, DEEP, NF1), // PCH_I2C_SCL
|
||||
// GPP_C20 (UART2_RXD) configured in bootblock
|
||||
// GPP_C21 (UART2_TXD) configured in bootblock
|
||||
PAD_CFG_GPO(GPP_C22, 0, DEEP),
|
||||
PAD_CFG_GPO(GPP_C23, 0, DEEP),
|
||||
|
||||
/* ------- GPIO Group GPP_D ------- */
|
||||
PAD_NC(GPP_D0, NONE),
|
||||
PAD_NC(GPP_D1, NONE),
|
||||
PAD_NC(GPP_D2, NONE),
|
||||
PAD_CFG_GPO(GPP_D3, 0, DEEP), // GFX_DETECT_STRAP
|
||||
PAD_NC(GPP_D4, NONE), // GPP_D4_SML1CLK
|
||||
PAD_CFG_GPO(GPP_D5, 1, DEEP), // M.2_BT_PCMFRM_CRF_RST_N
|
||||
// GPP_D6 (M.2_BT_PCMOUT_CLKREQ0) configured by FSP
|
||||
PAD_NC(GPP_D7, NONE), // M.2_BT_PCMIN
|
||||
PAD_NC(GPP_D8, NONE), // M.2_BT_PCMCLK
|
||||
PAD_NC(GPP_D9, NONE), // GPP_D9_SML0CLK
|
||||
PAD_NC(GPP_D10, NONE), // GPP_D10_SML0DATA
|
||||
PAD_NC(GPP_D11, NONE),
|
||||
PAD_NC(GPP_D12, NONE),
|
||||
PAD_NC(GPP_D13, NONE),
|
||||
PAD_NC(GPP_D14, NONE),
|
||||
PAD_NC(GPP_D15, NONE), // GPP_D15_SML1DATA
|
||||
PAD_NC(GPP_D16, NONE),
|
||||
PAD_NC(GPP_D17, NONE),
|
||||
PAD_NC(GPP_D18, NONE),
|
||||
PAD_NC(GPP_D19, NONE),
|
||||
PAD_NC(GPP_D20, NONE),
|
||||
PAD_NC(GPP_D21, NONE),
|
||||
PAD_NC(GPP_D22, NONE),
|
||||
PAD_NC(GPP_D23, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_E ------- */
|
||||
PAD_NC(GPP_E0, NONE),
|
||||
PAD_NC(GPP_E1, NONE),
|
||||
PAD_CFG_GPI(GPP_E2, NONE, DEEP), // SWI#
|
||||
PAD_CFG_GPI(GPP_E3, NONE, DEEP), // SMI#
|
||||
PAD_NC(GPP_E4, NONE),
|
||||
PAD_NC(GPP_E5, NONE),
|
||||
PAD_NC(GPP_E6, NONE),
|
||||
PAD_CFG_GPI_INT(GPP_E7, NONE, PLTRST, LEVEL), // TP_ATTN#
|
||||
PAD_NC(GPP_E8, NONE),
|
||||
PAD_CFG_GPI(GPP_E9, NONE, DEEP), // GPP_E_9_USB_OC0_N
|
||||
PAD_CFG_GPI(GPP_E10, NONE, DEEP), // GPP_E_10_USB_OC1_N
|
||||
PAD_CFG_GPI(GPP_E11, NONE, DEEP), // GPP_E_11_USB_OC2_N
|
||||
PAD_CFG_GPI(GPP_E12, NONE, DEEP), // GPP_E_12_USB_OC3_N
|
||||
PAD_NC(GPP_E13, NONE),
|
||||
PAD_NC(GPP_E14, NONE),
|
||||
PAD_CFG_GPO(GPP_E15, 1, DEEP), // ROM_I2C_EN
|
||||
PAD_NC(GPP_E16, NONE),
|
||||
PAD_CFG_GPI(GPP_E17, NONE, DEEP), // SB_KBCRST#
|
||||
PAD_CFG_GPO(GPP_E18, 1, DEEP), // SB_BLON
|
||||
PAD_NC(GPP_E19, NONE),
|
||||
PAD_NC(GPP_E20, NONE),
|
||||
PAD_NC(GPP_E21, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_F ------- */
|
||||
PAD_NC(GPP_F0, NONE),
|
||||
PAD_NC(GPP_F1, NONE),
|
||||
PAD_CFG_GPO(GPP_F2, 1, DEEP), // GPP_F2_TBT_RST#
|
||||
PAD_NC(GPP_F3, NONE),
|
||||
PAD_NC(GPP_F4, NONE),
|
||||
PAD_CFG_GPI(GPP_F5, NONE, DEEP), // GPIO4_GC6_NVVDD_EN_R
|
||||
PAD_NC(GPP_F6, NONE), // GPU_EVENT#
|
||||
PAD_NC(GPP_F7, NONE),
|
||||
PAD_CFG_GPI(GPP_F8, NONE, PLTRST), // GC6_FB_EN_PCH
|
||||
// GPP_F9 (DGPU_PWR_EN) configured in bootblock
|
||||
PAD_CFG_GPI(GPP_F10, NONE, DEEP), // GPP_F10
|
||||
PAD_NC(GPP_F11, NONE), // CARD_RTD3_RST#
|
||||
PAD_NC(GPP_F12, NONE),
|
||||
PAD_NC(GPP_F13, NONE),
|
||||
PAD_NC(GPP_F14, NONE),
|
||||
PAD_CFG_GPI(GPP_F15, NONE, DEEP), // H_SKTOCC_N
|
||||
PAD_NC(GPP_F16, NONE),
|
||||
PAD_CFG_GPI(GPP_F17, NONE, DEEP), // PLVDD_RST_EC
|
||||
PAD_CFG_GPO(GPP_F18, 0, DEEP), // CCD_FW_WP#
|
||||
PAD_CFG_NF(GPP_F19, NONE, DEEP, NF1), // NB_ENAVDD
|
||||
PAD_CFG_NF(GPP_F20, NONE, DEEP, NF1), // BLON
|
||||
PAD_CFG_NF(GPP_F21, NONE, DEEP, NF1), // EDP_BRIGHTNESS
|
||||
PAD_NC(GPP_F22, NONE),
|
||||
PAD_NC(GPP_F23, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_G ------- */
|
||||
PAD_NC(GPP_G0, NONE),
|
||||
PAD_NC(GPP_G1, NONE),
|
||||
PAD_NC(GPP_G2, NONE),
|
||||
PAD_CFG_GPI(GPP_G3, NONE, DEEP), // L: W/Pantone, H: W/O Pantone
|
||||
PAD_CFG_GPI(GPP_G4, NONE, DEEP), // L: BID_X2, H: BID_X6/X4
|
||||
PAD_CFG_NF(GPP_G5, NONE, DEEP, NF1), // GPP_G_5_SLP_DRAM_N
|
||||
PAD_CFG_GPI(GPP_G6, NONE, DEEP),
|
||||
PAD_CFG_GPI(GPP_G7, NONE, DEEP),
|
||||
|
||||
/* ------- GPIO Group GPP_H ------- */
|
||||
PAD_CFG_GPI(GPP_H0, NONE, DEEP), // VAL_SV_ADVANCE_STRAP
|
||||
PAD_NC(GPP_H1, NONE),
|
||||
PAD_CFG_GPI(GPP_H2, NONE, DEEP), // LAN_GPIO_WAKE_N
|
||||
// GPP_H3 (PEX_SSD2_CLKREQ#) configured by FSP
|
||||
// GPP_H4 (PEX_SSD1_CLKREQ#) configured by FSP
|
||||
// GPP_H5 (WLAN_CLKREQ#) configured by FSP
|
||||
// GPP_H6 (CARD_CLKREQ#) configured by FSP
|
||||
// GPP_H7 (LAN_CLKREQ#) configured by FSP
|
||||
// GPP_H8 (PEG_CLKREQ#) configured by FSP
|
||||
// GPP_H9 (TBT_CLKREQ#) configured by FSP
|
||||
PAD_NC(GPP_H10, NONE),
|
||||
PAD_NC(GPP_H11, NONE),
|
||||
PAD_CFG_GPO(GPP_H12, 0, DEEP), // L: MAFS, H: SAFS
|
||||
PAD_NC(GPP_H13, NONE),
|
||||
PAD_NC(GPP_H14, NONE),
|
||||
PAD_CFG_GPO(GPP_H15, 0, DEEP), // JTAG ODT: L: disabled, H: enabled
|
||||
PAD_NC(GPP_H16, NONE),
|
||||
PAD_NC(GPP_H17, NONE), // M2_WLAN_RST#
|
||||
PAD_CFG_GPO(GPP_H18, 0, DEEP), // VCCSPI: L: 3.3V, H: 1.8V
|
||||
PAD_NC(GPP_H19, NONE),
|
||||
PAD_NC(GPP_H20, NONE),
|
||||
PAD_CFG_GPO(GPP_H21, 0, DEEP), // TBT_MRESET_PCH
|
||||
PAD_NC(GPP_H22, NONE),
|
||||
PAD_NC(GPP_H23, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_I ------- */
|
||||
PAD_NC(GPP_I0, NONE),
|
||||
PAD_CFG_NF(GPP_I1, NONE, PLTRST, NF1), // CPU_DP_B_HPD
|
||||
PAD_CFG_NF(GPP_I2, NONE, PLTRST, NF1), // HDMI_HPD
|
||||
PAD_CFG_NF(GPP_I3, NONE, PLTRST, NF1), // CPU_DP_D_HPD
|
||||
PAD_CFG_NF(GPP_I4, NONE, PLTRST, NF1), // G_DP_A_HPD_L
|
||||
PAD_CFG_GPO(GPP_I5, 0, DEEP), // GPIO_TBT_RESET
|
||||
PAD_NC(GPP_I6, NONE),
|
||||
PAD_NC(GPP_I7, NONE),
|
||||
PAD_NC(GPP_I8, NONE),
|
||||
PAD_NC(GPP_I9, NONE),
|
||||
PAD_NC(GPP_I10, NONE),
|
||||
PAD_CFG_GPI(GPP_I11, NONE, DEEP), // GPP_I_11_USB_OC4_N
|
||||
PAD_CFG_GPI(GPP_I12, NONE, DEEP), // GPP_I_12_USB_OC5_N
|
||||
PAD_CFG_GPI(GPP_I13, NONE, DEEP), // GPP_I_13_USB_OC6_N
|
||||
PAD_CFG_GPI(GPP_I14, NONE, DEEP), // GPP_I_14_USB_OC7_N
|
||||
PAD_NC(GPP_I15, NONE),
|
||||
PAD_NC(GPP_I16, NONE),
|
||||
PAD_NC(GPP_I17, NONE),
|
||||
PAD_CFG_GPO(GPP_I18, 0, DEEP), // No Reboot: L: disable H: enable
|
||||
PAD_NC(GPP_I19, NONE),
|
||||
PAD_NC(GPP_I20, NONE),
|
||||
PAD_NC(GPP_I21, NONE),
|
||||
PAD_CFG_GPO(GPP_I22, 0, DEEP), // BIOS fetch routing:
|
||||
// L: SPI (MAF) or eSPI Flash Ch (SAF)
|
||||
// H: eSPI Peripheral Ch
|
||||
|
||||
/* ------- GPIO Group GPP_J ------- */
|
||||
PAD_CFG_NF(GPP_J0, NONE, DEEP, NF1), // CNVI_GNSS_PA_BLANKING
|
||||
PAD_CFG_NF(GPP_J1, NONE, DEEP, NF1), // CPU_C10_GATE_N
|
||||
PAD_CFG_NF(GPP_J2, NONE, DEEP, NF1), // CNVI_BRI_DT
|
||||
PAD_CFG_NF(GPP_J3, UP_20K, DEEP, NF1), // CNVI_BRI_RSP
|
||||
PAD_CFG_NF(GPP_J4, NONE, DEEP, NF1), // CNVI_RGI_DT
|
||||
PAD_CFG_NF(GPP_J5, UP_20K, DEEP, NF1), // CNVI_RGI_RSP
|
||||
PAD_CFG_NF(GPP_J6, NONE, DEEP, NF1), // CNVI_MFUART2_RXD
|
||||
PAD_CFG_NF(GPP_J7, NONE, DEEP, NF1), // CNVI_MFUART2_TXD
|
||||
PAD_CFG_GPI(GPP_J8, NONE, DEEP), // VAL_TEST_SETUP_MENU
|
||||
PAD_NC(GPP_J9, NONE),
|
||||
PAD_NC(GPP_J10, NONE),
|
||||
PAD_NC(GPP_J11, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_K ------- */
|
||||
_PAD_CFG_STRUCT(GPP_K0, 0x42800100, 0x0000), // TBCIO_PLUG_EVENT#
|
||||
PAD_NC(GPP_K1, NONE),
|
||||
PAD_NC(GPP_K2, NONE),
|
||||
PAD_CFG_GPO(GPP_K3, 1, PLTRST), // TBT_RTD3_PWR_EN_R
|
||||
PAD_CFG_TERM_GPO(GPP_K4, 0, UP_20K, DEEP), // TBT_FORCE_PWR_R
|
||||
PAD_NC(GPP_K5, NONE),
|
||||
// GPP_K6 not in schematics
|
||||
// GPP_K7 not in schematics
|
||||
PAD_CFG_NF(GPP_K8, NONE, DEEP, NF1), // VCCIN_AUX_VID0
|
||||
PAD_CFG_NF(GPP_K9, NONE, DEEP, NF1), // VCCIN_AUX_VID1
|
||||
// GPP_K10 not in schematics
|
||||
PAD_NC(GPP_K11, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_R ------- */
|
||||
PAD_CFG_NF(GPP_R0, NONE, DEEP, NF1), // HDA_BITCLK
|
||||
PAD_CFG_NF(GPP_R1, NATIVE, DEEP, NF1), // HDA_SYNC
|
||||
PAD_CFG_NF(GPP_R2, NATIVE, DEEP, NF1), // HDA_SDOUT / ME_WE
|
||||
PAD_CFG_NF(GPP_R3, NATIVE, DEEP, NF1), // HDA_SDIN0
|
||||
PAD_CFG_NF(GPP_R4, NONE, DEEP, NF1), // HDA_RST#
|
||||
PAD_CFG_GPO(GPP_R5, 0, DEEP), // PCH_MUTE (XXX: SMART_AMP_EN)
|
||||
PAD_NC(GPP_R6, NONE),
|
||||
PAD_NC(GPP_R7, NONE),
|
||||
PAD_CFG_GPI(GPP_R8, NONE, DEEP), // DGPU_PWRGD_R
|
||||
PAD_CFG_NF(GPP_R9, NONE, DEEP, NF1), // PCH_EDP_HPD
|
||||
PAD_NC(GPP_R10, NONE),
|
||||
PAD_NC(GPP_R11, NONE),
|
||||
PAD_NC(GPP_R12, NONE),
|
||||
PAD_NC(GPP_R13, NONE),
|
||||
PAD_NC(GPP_R14, NONE),
|
||||
PAD_NC(GPP_R15, NONE),
|
||||
// GPP_R16 (DGPU_RST#_PCH) configured in bootblock
|
||||
PAD_NC(GPP_R17, NONE),
|
||||
PAD_NC(GPP_R18, NONE),
|
||||
PAD_CFG_GPI(GPP_R19, NONE, DEEP), // SCI#
|
||||
PAD_NC(GPP_R20, NONE),
|
||||
PAD_NC(GPP_R21, NONE),
|
||||
|
||||
/* ------- GPIO Group GPP_S ------- */
|
||||
PAD_NC(GPP_S0, NONE),
|
||||
PAD_NC(GPP_S1, NONE),
|
||||
PAD_NC(GPP_S2, NONE),
|
||||
PAD_NC(GPP_S3, NONE),
|
||||
PAD_NC(GPP_S4, NONE),
|
||||
PAD_NC(GPP_S5, NONE),
|
||||
PAD_NC(GPP_S6, NONE),
|
||||
PAD_NC(GPP_S7, NONE),
|
||||
};
|
||||
|
||||
void mainboard_configure_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
|
||||
}
|
16
src/mainboard/system76/rpl/variants/oryp12/gpio_early.c
Normal file
16
src/mainboard/system76/rpl/variants/oryp12/gpio_early.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* 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_C20, NONE, DEEP, NF1), // UART2_RXD
|
||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
||||
PAD_CFG_GPO(GPP_F9, 0, DEEP), // DGPU_PWR_EN
|
||||
PAD_CFG_GPO(GPP_R16, 0, DEEP), // DGPU_RST#_PCH
|
||||
};
|
||||
|
||||
void mainboard_configure_early_gpios(void)
|
||||
{
|
||||
gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table));
|
||||
}
|
41
src/mainboard/system76/rpl/variants/oryp12/hda_verb.c
Normal file
41
src/mainboard/system76/rpl/variants/oryp12/hda_verb.c
Normal file
@@ -0,0 +1,41 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <device/azalia_device.h>
|
||||
|
||||
const u32 cim_verb_data[] = {
|
||||
/* Realtek, ALC1220 */
|
||||
0x10ec1220, /* Vendor ID */
|
||||
0x155866a6, /* Subsystem ID */
|
||||
24, /* Number of entries */
|
||||
|
||||
0x02050008, 0x020480cb, 0x02050008, 0x0204c0cb,
|
||||
|
||||
AZALIA_SUBVENDOR(0, 0x155866a6),
|
||||
AZALIA_RESET(1),
|
||||
AZALIA_PIN_CFG(0, 0x12, 0x90a60120),
|
||||
AZALIA_PIN_CFG(0, 0x14, 0x0421101f),
|
||||
AZALIA_PIN_CFG(0, 0x15, 0x40000000),
|
||||
AZALIA_PIN_CFG(0, 0x16, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x17, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x18, 0x04a11030),
|
||||
AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
|
||||
AZALIA_PIN_CFG(0, 0x1b, 0x90170110),
|
||||
AZALIA_PIN_CFG(0, 0x1d, 0x40a7952d),
|
||||
AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
|
||||
|
||||
0x05b50000, 0x05b43530, 0x05750002, 0x05741400,
|
||||
0x02050058, 0x02048ed1, 0x02050063, 0x0204e430,
|
||||
0x02050016, 0x02048020, 0x02050016, 0x02048020,
|
||||
0x02050043, 0x02043005, 0x02050058, 0x02048ed1,
|
||||
0x02050063, 0x0204e430, 0x05b50000, 0x05b43530,
|
||||
0x05750002, 0x05741400, 0x05b5000a, 0x05b45520,
|
||||
0x02050042, 0x020486cb, 0x0143b000, 0x01470740,
|
||||
0x02050036, 0x02042a6a, 0x02050008, 0x0204800b,
|
||||
0x02050007, 0x020403c3, 0x02050007, 0x020403c3,
|
||||
0x0205001b, 0x02044002, 0x0205001b, 0x02044002,
|
||||
};
|
||||
|
||||
const u32 pc_beep_verbs[] = {};
|
||||
|
||||
AZALIA_ARRAY_SIZES;
|
@@ -0,0 +1,12 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifndef VARIANT_GPIO_H
|
||||
#define VARIANT_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_R16
|
||||
#define DGPU_PWR_EN GPP_F9
|
||||
#define DGPU_SSID 0x66a61558
|
||||
|
||||
#endif
|
122
src/mainboard/system76/rpl/variants/oryp12/overridetree.cb
Normal file
122
src/mainboard/system76/rpl/variants/oryp12/overridetree.cb
Normal file
@@ -0,0 +1,122 @@
|
||||
chip soc/intel/alderlake
|
||||
# Support 5600 MT/s memory
|
||||
register "max_dram_speed_mts" = "5600"
|
||||
|
||||
device domain 0 on
|
||||
subsystemid 0x1558 0x66a6 inherit
|
||||
|
||||
device ref xhci on
|
||||
register "usb2_ports" = "{
|
||||
[0] = USB2_PORT_MID(OC_SKIP), // J_AUD1
|
||||
[2] = USB2_PORT_MID(OC_SKIP), // J_TYPEC2
|
||||
[5] = USB2_PORT_MID(OC_SKIP), // J_USB1
|
||||
[7] = USB2_PORT_MID(OC_SKIP), // Camera
|
||||
[8] = USB2_PORT_MID(OC_SKIP), // J_TYPEC1 (TBT)
|
||||
[13] = USB2_PORT_MID(OC_SKIP), // Bluetooth
|
||||
}"
|
||||
register "usb3_ports" = "{
|
||||
[0] = USB3_PORT_DEFAULT(OC_SKIP), // J_AUD1
|
||||
[1] = USB3_PORT_DEFAULT(OC_SKIP), // J_USB1
|
||||
[3] = USB3_PORT_DEFAULT(OC_SKIP), // J_TYPEC2
|
||||
}"
|
||||
end
|
||||
|
||||
device ref i2c0 on
|
||||
# Touchpad I2C bus
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C0]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""ELAN0412""
|
||||
register "generic.desc" = ""ELAN Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_E7)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 15 on end
|
||||
end
|
||||
chip drivers/i2c/hid
|
||||
register "generic.hid" = ""FTCS1000""
|
||||
register "generic.desc" = ""FocalTech Touchpad""
|
||||
register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_E7)"
|
||||
register "generic.detect" = "1"
|
||||
register "hid_desc_reg_offset" = "0x01"
|
||||
device i2c 38 on end
|
||||
end
|
||||
end
|
||||
device ref i2c1 on
|
||||
# Thunderbolt
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C1]" = "PchSerialIoPci"
|
||||
end
|
||||
device ref i2c2 on
|
||||
# Pantone
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C2]" = "PchSerialIoPci"
|
||||
end
|
||||
device ref i2c3 on
|
||||
# TAS5825M smart amp
|
||||
register "serial_io_i2c_mode[PchSerialIoIndexI2C3]" = "PchSerialIoPci"
|
||||
chip drivers/i2c/tas5825m
|
||||
register "id" = "0"
|
||||
device i2c 4e on end # (8bit address: 0x9c)
|
||||
end
|
||||
end
|
||||
|
||||
device ref pcie5_0 on
|
||||
# GPU
|
||||
register "cpu_pcie_rp[CPU_RP(2)]" = "{
|
||||
.clk_src = 14,
|
||||
.clk_req = 14,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp3 on
|
||||
# GLAN
|
||||
register "pch_pcie_rp[PCH_RP(3)]" = "{
|
||||
.clk_src = 13,
|
||||
.clk_req = 13,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp5 on
|
||||
# CARD
|
||||
register "pch_pcie_rp[PCH_RP(5)]" = "{
|
||||
.clk_src = 12,
|
||||
.clk_req = 12,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER | PCIE_RP_HOTPLUG,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp8 on
|
||||
# WLAN
|
||||
register "pch_pcie_rp[PCH_RP(8)]" = "{
|
||||
.clk_src = 11,
|
||||
.clk_req = 11,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp9 on
|
||||
# SSD1
|
||||
register "pch_pcie_rp[PCH_RP(9)]" = "{
|
||||
.clk_src = 10,
|
||||
.clk_req = 10,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp13 on
|
||||
# SSD2
|
||||
register "pch_pcie_rp[PCH_RP(13)]" = "{
|
||||
.clk_src = 9,
|
||||
.clk_req = 9,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_AER,
|
||||
}"
|
||||
end
|
||||
device ref pcie_rp25 on
|
||||
# TBT
|
||||
# XXX: AER causes UnsupReq warnings
|
||||
register "pch_pcie_rp[PCH_RP(25)]" = "{
|
||||
.clk_src = 15,
|
||||
.clk_req = 15,
|
||||
.flags = PCIE_RP_LTR | PCIE_RP_HOTPLUG,
|
||||
}"
|
||||
chip drivers/intel/dtbt
|
||||
device pci 00.0 on end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
43
src/mainboard/system76/rpl/variants/oryp12/romstage.c
Normal file
43
src/mainboard/system76/rpl/variants/oryp12/romstage.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const struct mb_cfg board_cfg = {
|
||||
.type = MEM_TYPE_DDR5,
|
||||
.ect = true,
|
||||
.LpDdrDqDqsReTraining = 1,
|
||||
.ddr_config = {
|
||||
.dq_pins_interleaved = true,
|
||||
},
|
||||
};
|
||||
const struct mem_spd spd_info = {
|
||||
.topo = MEM_TOPO_DIMM_MODULE,
|
||||
.smbus = {
|
||||
[0] = { .addr_dimm[0] = 0x50, },
|
||||
[1] = { .addr_dimm[0] = 0x52, },
|
||||
},
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to hybrid graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 4;
|
||||
|
||||
mupd->FspmConfig.DmiMaxLinkSpeed = 4;
|
||||
mupd->FspmConfig.GpioOverride = 0;
|
||||
|
||||
memcfg_init(mupd, &board_cfg, &spd_info, half_populated);
|
||||
}
|
1053
src/mainboard/system76/rpl/variants/oryp12/tas5825m.c
Normal file
1053
src/mainboard/system76/rpl/variants/oryp12/tas5825m.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -14,7 +14,10 @@ entries
|
||||
412 4 e 6 debug_level
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
904 80 h 0 ramtop
|
||||
|
||||
# CMOS_VSTART_ramtop
|
||||
800 80 r 0 ramtop
|
||||
|
||||
984 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
@@ -37,4 +40,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 799 984
|
||||
|
@@ -70,8 +70,8 @@ static const struct soc_mem_cfg soc_mem_cfg[] = {
|
||||
* configuration.
|
||||
*/
|
||||
.half_channel = BIT(0),
|
||||
/* In mixed topologies, either channel 0 or 1 can be memory-down. */
|
||||
.mixed_topo = BIT(0) | BIT(1),
|
||||
/* In mixed topologies, channel 0 is memory-down. */
|
||||
.mixed_topo = BIT(0),
|
||||
},
|
||||
},
|
||||
[MEM_TYPE_LP4X] = {
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <commonlib/bsd/ipchksum.h>
|
||||
#include <console/console.h>
|
||||
#include <cpu/cpu.h>
|
||||
#include <cpu/x86/mtrr.h>
|
||||
#include <intelbasecode/ramtop.h>
|
||||
#include <pc80/mc146818rtc.h>
|
||||
@@ -125,9 +126,24 @@ void early_ramtop_enable_cache_range(void)
|
||||
printk(BIOS_WARNING, "ramtop_table update failure due to no free MTRR available!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Background: Some SoCs have a critical bug inside the NEM logic which is responsible
|
||||
* for mapping cached memory to physical memory during tear down and
|
||||
* eventually malfunctions if the number of cache sets is not a power of two.
|
||||
* This can lead to runtime hangs.
|
||||
*
|
||||
* Workaround: To mitigate this issue on affected SoCs, we force the MTRR type to
|
||||
* WC (Write Combining) unless the cache set count is a power of two.
|
||||
* This change alters caching behavior but prevents the runtime failures.
|
||||
*/
|
||||
unsigned int mtrr_type = MTRR_TYPE_WRCOMB;
|
||||
/*
|
||||
* We need to make sure late romstage (including FSP-M post mem) will be run
|
||||
* cached. Caching 16MB below ramtop is a safe to cover late romstage.
|
||||
*/
|
||||
set_var_mtrr(mtrr, ramtop - 16 * MiB, 16 * MiB, MTRR_TYPE_WRBACK);
|
||||
if (is_cache_sets_power_of_two())
|
||||
mtrr_type = MTRR_TYPE_WRBACK;
|
||||
|
||||
set_var_mtrr(mtrr, ramtop - 16 * MiB, 16 * MiB, mtrr_type);
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include <device/pci_ids.h>
|
||||
#include <device/pci_ops.h>
|
||||
#include <intelblocks/cse.h>
|
||||
#include <intelblocks/fast_spi.h>
|
||||
#include <intelblocks/me.h>
|
||||
#include <intelblocks/pmclib.h>
|
||||
#include <intelblocks/post_codes.h>
|
||||
@@ -1268,6 +1269,10 @@ static void me_reset_with_count(void)
|
||||
|
||||
static void cse_set_state(struct device *dev)
|
||||
{
|
||||
if (fast_spi_flash_descriptor_override()) {
|
||||
printk(BIOS_WARNING, "ME: not setting state because flash descriptor override is enabled\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* (CS)ME Disable Command */
|
||||
struct me_disable_command {
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include <bootstate.h>
|
||||
#include <console/console.h>
|
||||
#include <intelblocks/cse.h>
|
||||
#include <intelblocks/fast_spi.h>
|
||||
#include <intelblocks/pmc_ipc.h>
|
||||
#include <security/vboot/vboot_common.h>
|
||||
#include <soc/intel/common/reset.h>
|
||||
@@ -243,6 +244,11 @@ static void do_send_end_of_post(bool wait_for_completion)
|
||||
return;
|
||||
}
|
||||
|
||||
if (fast_spi_flash_descriptor_override()) {
|
||||
printk(BIOS_WARNING, "CSE: not sending EOP because flash descriptor override is enabled\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!eop_sent) {
|
||||
set_cse_device_state(PCH_DEVFN_CSE, DEV_ACTIVE);
|
||||
timestamp_add_now(TS_ME_END_OF_POST_START);
|
||||
|
@@ -483,6 +483,15 @@ void fast_spi_clear_outstanding_status(void)
|
||||
write32(spibar + SPIBAR_HSFSTS_CTL, SPIBAR_HSFSTS_W1C_BITS);
|
||||
}
|
||||
|
||||
/* Check if flash descriptor override is asserted */
|
||||
bool fast_spi_flash_descriptor_override(void)
|
||||
{
|
||||
void *spibar = fast_spi_get_bar();
|
||||
uint32_t hsfsts = read32(spibar + SPIBAR_HSFSTS_CTL);
|
||||
printk(BIOS_DEBUG, "HSFSTS: 0x%X\n", hsfsts);
|
||||
return !(hsfsts & SPIBAR_HSFSTS_FDOPSS);
|
||||
}
|
||||
|
||||
|
||||
/* As there is no official ACPI ID for this controller use the generic PNP ID for now. */
|
||||
static const char *fast_spi_acpi_hid(const struct device *dev)
|
||||
|
@@ -348,6 +348,7 @@ static const unsigned short pci_device_ids[] = {
|
||||
PCI_DID_INTEL_MTL_P_GT2_2,
|
||||
PCI_DID_INTEL_MTL_P_GT2_3,
|
||||
PCI_DID_INTEL_MTL_P_GT2_4,
|
||||
PCI_DID_INTEL_MTL_P_GT2_5,
|
||||
PCI_DID_INTEL_APL_IGD_HD_505,
|
||||
PCI_DID_INTEL_APL_IGD_HD_500,
|
||||
PCI_DID_INTEL_CNL_GT2_ULX_1,
|
||||
|
@@ -111,5 +111,7 @@ void fast_spi_set_bde(void);
|
||||
* Set FAST_SPIBAR Vendor Component Lock bit.
|
||||
*/
|
||||
void fast_spi_set_vcl(void);
|
||||
/* Check if flash descriptor override is asserted */
|
||||
bool fast_spi_flash_descriptor_override(void);
|
||||
|
||||
#endif /* SOC_INTEL_COMMON_BLOCK_FAST_SPI_H */
|
||||
|
@@ -6,17 +6,6 @@
|
||||
#include <device/smbus_host.h>
|
||||
#include "smbuslib.h"
|
||||
|
||||
static const struct spd_offset_table spd_ddr5_table[] = {
|
||||
{ 0, 1 }, /* General Configuration section */
|
||||
{ 2, 2 }, /* General Configuration section */
|
||||
{ 3, 47 }, /* General Configuration section */
|
||||
{ 126, 127 }, /* General Configuration section */
|
||||
{ 192, 213 }, /* Module-Specific section */
|
||||
{ 230, 235 }, /* Module-Specific section */
|
||||
{ 512, 520 }, /* Module Supplier's data */
|
||||
{ 521, 550 }, /* Module Supplier's data */
|
||||
};
|
||||
|
||||
static void update_spd_len(struct spd_block *blk)
|
||||
{
|
||||
u8 i, j = 0;
|
||||
@@ -24,8 +13,11 @@ static void update_spd_len(struct spd_block *blk)
|
||||
if (blk->spd_array[i] != NULL)
|
||||
j |= blk->spd_array[i][SPD_DRAM_TYPE];
|
||||
|
||||
/* If spd used is DDR4/5, then its length is 512 byte. */
|
||||
if (j == SPD_DRAM_DDR4 || j == SPD_DRAM_DDR5)
|
||||
/* If spd used is DDR5, then its length is 1024 byte. */
|
||||
if (j == SPD_DRAM_DDR5)
|
||||
blk->len = CONFIG_DIMM_SPD_SIZE;
|
||||
/* If spd used is DDR4, then its length is 512 byte. */
|
||||
else if (j == SPD_DRAM_DDR4)
|
||||
blk->len = SPD_PAGE_LEN_DDR4;
|
||||
else
|
||||
blk->len = SPD_PAGE_LEN;
|
||||
@@ -64,24 +56,23 @@ static void switch_page(u8 spd_addr, u8 new_page)
|
||||
* Read the SPD data over the SMBus, at the specified SPD address,
|
||||
* starting at the specified starting offset and read the given amount of data.
|
||||
*/
|
||||
static void smbus_read_spd5(u8 *spd, u8 spd_addr, const u16 start, u8 size, u8 *const page)
|
||||
static void smbus_read_spd5(u8 *spd, u8 spd_addr, u16 size)
|
||||
{
|
||||
u16 index;
|
||||
u8 page = (u8) (~0);
|
||||
u32 max_page_size = MAX_SPD_PAGE_SIZE_SPD5;
|
||||
|
||||
if ((start + size) >= MAX_SPD_SIZE) {
|
||||
if (size > MAX_SPD_SIZE) {
|
||||
printk(BIOS_ERR, "Maximum SPD size reached\n");
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < size; i++) {
|
||||
index = start + i;
|
||||
u8 next_page = index / max_page_size;
|
||||
if (next_page != *page) {
|
||||
u8 next_page = (u8) (i / max_page_size);
|
||||
if (next_page != page) {
|
||||
switch_page(spd_addr, next_page);
|
||||
*page = next_page;
|
||||
page = next_page;
|
||||
}
|
||||
unsigned int byte_addr = SPD_HUB_MEMREG(index % max_page_size);
|
||||
spd[index] = smbus_read_byte(spd_addr, byte_addr);
|
||||
unsigned int byte_addr = SPD_HUB_MEMREG(i % max_page_size);
|
||||
spd[i] = smbus_read_byte(spd_addr, byte_addr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,18 +111,7 @@ static int get_spd(u8 *spd, u8 addr)
|
||||
}
|
||||
|
||||
if (is_spd5_hub(addr)) {
|
||||
const struct spd_offset_table *tbl;
|
||||
u32 byte;
|
||||
u32 stop;
|
||||
u8 page;
|
||||
page = (u8) (~0);
|
||||
stop = ARRAY_SIZE(spd_ddr5_table);
|
||||
|
||||
for (byte = 0; byte < stop; byte++) {
|
||||
tbl = &spd_ddr5_table[byte];
|
||||
smbus_read_spd5(spd, addr, tbl->start,
|
||||
tbl->end - tbl->start + 1, &page);
|
||||
}
|
||||
smbus_read_spd5(spd, addr, CONFIG_DIMM_SPD_SIZE);
|
||||
|
||||
/* Reset the page for the next loop iteration */
|
||||
reset_page_spd5(addr);
|
||||
|
@@ -38,6 +38,7 @@ config SOC_INTEL_METEORLAKE
|
||||
select IOAPIC
|
||||
select MICROCODE_BLOB_UNDISCLOSED
|
||||
select MP_SERVICES_PPI_V2
|
||||
select MRC_CACHE_USING_MRC_VERSION
|
||||
select MRC_SETTINGS_PROTECT
|
||||
select PARALLEL_MP_AP_WORK
|
||||
select PCIE_CLOCK_CONTROL_THROUGH_P2SB
|
||||
@@ -83,7 +84,7 @@ config SOC_INTEL_METEORLAKE
|
||||
select SOC_INTEL_COMMON_BLOCK_XHCI
|
||||
select SOC_INTEL_COMMON_BLOCK_XHCI_ELOG
|
||||
select SOC_INTEL_COMMON_BASECODE
|
||||
select SOC_INTEL_COMMON_BASECODE_RAMTOP if !MAINBOARD_HAS_CHROMEOS
|
||||
select SOC_INTEL_COMMON_BASECODE_RAMTOP
|
||||
select SOC_INTEL_COMMON_FSP_RESET
|
||||
select SOC_INTEL_COMMON_PCH_CLIENT
|
||||
select SOC_INTEL_COMMON_RESET
|
||||
@@ -333,11 +334,11 @@ config VBOOT_HASH_BLOCK_SIZE
|
||||
|
||||
config CBFS_SIZE
|
||||
hex
|
||||
default 0x200000
|
||||
default 0x400000
|
||||
|
||||
config PRERAM_CBMEM_CONSOLE_SIZE
|
||||
hex
|
||||
default 0x2000
|
||||
default 0x4000
|
||||
|
||||
config CONSOLE_CBMEM_BUFFER_SIZE
|
||||
hex
|
||||
@@ -399,6 +400,18 @@ config BUILDING_WITH_DEBUG_FSP
|
||||
help
|
||||
Set this option if debug build of FSP is used.
|
||||
|
||||
config INTEL_GMA_BCLV_OFFSET
|
||||
default 0xc8258
|
||||
|
||||
config INTEL_GMA_BCLV_WIDTH
|
||||
default 32
|
||||
|
||||
config INTEL_GMA_BCLM_OFFSET
|
||||
default 0xc8254
|
||||
|
||||
config INTEL_GMA_BCLM_WIDTH
|
||||
default 32
|
||||
|
||||
config DROP_CPU_FEATURE_PROGRAM_IN_FSP
|
||||
bool
|
||||
default y if MP_SERVICES_PPI_V2_NOOP || CHROMEOS
|
||||
|
@@ -37,6 +37,7 @@ ramstage-y += elog.c
|
||||
ramstage-y += espi.c
|
||||
ramstage-y += finalize.c
|
||||
ramstage-y += fsp_params.c
|
||||
ramstage-y += graphics.c
|
||||
ramstage-y += lockdown.c
|
||||
ramstage-y += p2sb.c
|
||||
ramstage-y += pcie_rp.c
|
||||
|
@@ -58,6 +58,7 @@ static struct {
|
||||
{ PCI_DID_INTEL_MTL_P_GT2_2, "MeteorLake-P GT2" },
|
||||
{ PCI_DID_INTEL_MTL_P_GT2_3, "MeteorLake-P GT2" },
|
||||
{ PCI_DID_INTEL_MTL_P_GT2_4, "Meteorlake-P GT2" },
|
||||
{ PCI_DID_INTEL_MTL_P_GT2_5, "Meteorlake-P GT2" },
|
||||
};
|
||||
|
||||
static inline uint8_t get_dev_revision(pci_devfn_t dev)
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define _SOC_CHIP_H_
|
||||
|
||||
#include <drivers/i2c/designware/dw_i2c.h>
|
||||
#include <drivers/intel/gma/gma.h>
|
||||
#include <device/pci_ids.h>
|
||||
#include <gpio.h>
|
||||
#include <intelblocks/cfg.h>
|
||||
@@ -248,8 +249,8 @@ struct soc_intel_meteorlake_config {
|
||||
uint16_t sata_ports_dito_val[8];
|
||||
|
||||
/* Audio related */
|
||||
bool pch_hda_audio_link_hda_enable;
|
||||
uint8_t pch_hda_dsp_enable;
|
||||
|
||||
bool pch_hda_sdi_enable[MAX_HD_AUDIO_SDI_LINKS];
|
||||
|
||||
/* iDisp-Link T-Mode 0: 2T, 2: 4T, 3: 8T, 4: 16T */
|
||||
@@ -525,6 +526,9 @@ struct soc_intel_meteorlake_config {
|
||||
* as per `enum slew_rate` data type.
|
||||
*/
|
||||
uint8_t slow_slew_rate_config[NUM_VR_DOMAINS];
|
||||
|
||||
/* i915 struct for GMA backlight control */
|
||||
struct i915_gpu_controller_info gfx;
|
||||
};
|
||||
|
||||
typedef struct soc_intel_meteorlake_config config_t;
|
||||
|
@@ -442,6 +442,8 @@ static void fill_fsps_tcss_params(FSP_S_CONFIG *s_cfg,
|
||||
if (is_dev_enabled(tcss_port_arr[i]))
|
||||
s_cfg->UsbTcPortEn |= BIT(i);
|
||||
}
|
||||
|
||||
s_cfg->Usb4CmMode = CONFIG(SOFTWARE_CONNECTION_MANAGER);
|
||||
}
|
||||
|
||||
static void fill_fsps_chipset_lockdown_params(FSP_S_CONFIG *s_cfg,
|
||||
@@ -476,6 +478,9 @@ static void fill_fsps_xhci_params(FSP_S_CONFIG *s_cfg,
|
||||
s_cfg->Usb2OverCurrentPin[i] = config->usb2_ports[i].ocpin;
|
||||
else
|
||||
s_cfg->Usb2OverCurrentPin[i] = OC_SKIP;
|
||||
|
||||
if (config->usb2_ports[i].type_c)
|
||||
s_cfg->PortResetMessageEnable[i] = 1;
|
||||
}
|
||||
|
||||
max_port = get_max_usb30_port();
|
||||
|
11
src/soc/intel/meteorlake/graphics.c
Normal file
11
src/soc/intel/meteorlake/graphics.c
Normal file
@@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include <intelblocks/graphics.h>
|
||||
#include <soc/ramstage.h>
|
||||
|
||||
const struct i915_gpu_controller_info *
|
||||
intel_igd_get_controller_info(const struct device *const dev)
|
||||
{
|
||||
const struct soc_intel_meteorlake_config *const chip = dev->chip_info;
|
||||
return &chip->gfx;
|
||||
}
|
@@ -31,6 +31,7 @@ struct usb2_port_config {
|
||||
uint8_t tx_emp_enable;
|
||||
uint8_t pre_emp_bias;
|
||||
uint8_t pre_emp_bit;
|
||||
uint8_t type_c;
|
||||
};
|
||||
|
||||
/* USB Overcurrent pins definition */
|
||||
@@ -112,6 +113,7 @@ enum {
|
||||
.tx_emp_enable = USB2_PRE_EMP_ON, \
|
||||
.pre_emp_bias = USB2_BIAS_56P3MV, \
|
||||
.pre_emp_bit = USB2_HALF_BIT_PRE_EMP, \
|
||||
.type_c = 1, \
|
||||
}
|
||||
|
||||
struct usb3_port_config {
|
||||
|
@@ -8,7 +8,7 @@
|
||||
#define LPX_PHYSICAL_CH_WIDTH 16
|
||||
#define LPX_CHANNELS CHANNEL_COUNT(LPX_PHYSICAL_CH_WIDTH)
|
||||
|
||||
#define DDR5_PHYSICAL_CH_WIDTH 32
|
||||
#define DDR5_PHYSICAL_CH_WIDTH 64 /* 32*2 */
|
||||
#define DDR5_CHANNELS CHANNEL_COUNT(DDR5_PHYSICAL_CH_WIDTH)
|
||||
|
||||
static void set_rcomp_config(FSP_M_CONFIG *mem_cfg, const struct mb_cfg *mb_cfg)
|
||||
@@ -38,18 +38,16 @@ static const struct soc_mem_cfg soc_mem_cfg[] = {
|
||||
.num_phys_channels = DDR5_CHANNELS,
|
||||
.phys_to_mrc_map = {
|
||||
[0] = 0,
|
||||
[1] = 1,
|
||||
[2] = 4,
|
||||
[3] = 5,
|
||||
[1] = 4,
|
||||
},
|
||||
.md_phy_masks = {
|
||||
/*
|
||||
* Physical channels 0 and 1 are populated in case of
|
||||
* half-populated configurations.
|
||||
* Only channel 0 is populated in case of half-populated
|
||||
* configuration.
|
||||
*/
|
||||
.half_channel = BIT(0) | BIT(1),
|
||||
/* In mixed topologies, channels 2 and 3 are always memory-down. */
|
||||
.mixed_topo = BIT(2) | BIT(3),
|
||||
.half_channel = BIT(0),
|
||||
/* In mixed topologies, channel 0 is memory-down. */
|
||||
.mixed_topo = BIT(0),
|
||||
},
|
||||
},
|
||||
[MEM_TYPE_LP5X] = {
|
||||
@@ -75,7 +73,8 @@ static const struct soc_mem_cfg soc_mem_cfg[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static void mem_init_spd_upds(FSP_M_CONFIG *mem_cfg, const struct mem_channel_data *data)
|
||||
static void mem_init_spd_upds(FSP_M_CONFIG *mem_cfg, const struct mem_channel_data *data,
|
||||
bool expand_channels)
|
||||
{
|
||||
uint32_t *spd_upds[MRC_CHANNELS][CONFIG_DIMMS_PER_CHANNEL] = {
|
||||
[0] = { &mem_cfg->MemorySpdPtr000, &mem_cfg->MemorySpdPtr001, },
|
||||
@@ -108,7 +107,16 @@ static void mem_init_spd_upds(FSP_M_CONFIG *mem_cfg, const struct mem_channel_da
|
||||
for (dimm = 0; dimm < CONFIG_DIMMS_PER_CHANNEL; dimm++) {
|
||||
uint32_t *spd_ptr = spd_upds[ch][dimm];
|
||||
|
||||
*spd_ptr = data->spd[ch][dimm];
|
||||
// In DDR5 systems, we need to copy the SPD data such that:
|
||||
// Channel 0 data is used by channel 0 and 1
|
||||
// Channel 2 data is used by channel 2 and 3
|
||||
// Channel 4 data is used by channel 4 and 5
|
||||
// Channel 6 data is used by channel 6 and 7
|
||||
if (expand_channels)
|
||||
*spd_ptr = data->spd[ch & 6][dimm];
|
||||
else
|
||||
*spd_ptr = data->spd[ch][dimm];
|
||||
|
||||
if (*spd_ptr)
|
||||
enable_channel = 1;
|
||||
}
|
||||
@@ -174,27 +182,12 @@ static void mem_init_dqs_upds(FSP_M_CONFIG *mem_cfg, const struct mem_channel_da
|
||||
mem_init_dq_dqs_upds(dqs_upds, mb_cfg->dqs_map, upd_size, data, auto_detect);
|
||||
}
|
||||
|
||||
#define DDR5_CH_DIMM_OFFSET(ch, dimm) ((ch) * CONFIG_DIMMS_PER_CHANNEL + (dimm))
|
||||
|
||||
static void ddr5_fill_dimm_module_info(FSP_M_CONFIG *mem_cfg, const struct mb_cfg *mb_cfg,
|
||||
const struct mem_spd *spd_info)
|
||||
{
|
||||
for (size_t ch = 0; ch < soc_mem_cfg[MEM_TYPE_DDR5].num_phys_channels; ch++) {
|
||||
for (size_t dimm = 0; dimm < CONFIG_DIMMS_PER_CHANNEL; dimm++) {
|
||||
size_t mrc_ch = soc_mem_cfg[MEM_TYPE_DDR5].phys_to_mrc_map[ch];
|
||||
mem_cfg->SpdAddressTable[DDR5_CH_DIMM_OFFSET(mrc_ch, dimm)] =
|
||||
spd_info->smbus[ch].addr_dimm[dimm] << 1;
|
||||
}
|
||||
}
|
||||
mem_init_dq_upds(mem_cfg, NULL, mb_cfg, true);
|
||||
mem_init_dqs_upds(mem_cfg, NULL, mb_cfg, true);
|
||||
}
|
||||
|
||||
void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
|
||||
const struct mem_spd *spd_info, bool half_populated)
|
||||
{
|
||||
struct mem_channel_data data;
|
||||
bool dq_dqs_auto_detect = false;
|
||||
bool expand_channels = false;
|
||||
FSP_M_CONFIG *mem_cfg = &memupd->FspmConfig;
|
||||
|
||||
mem_cfg->ECT = mb_cfg->ect;
|
||||
@@ -205,14 +198,7 @@ void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
|
||||
case MEM_TYPE_DDR5:
|
||||
meminit_ddr(mem_cfg, &mb_cfg->ddr_config);
|
||||
dq_dqs_auto_detect = true;
|
||||
/*
|
||||
* TODO: Drop this workaround once SMBus driver in coreboot is updated to
|
||||
* support DDR5 EEPROM reading.
|
||||
*/
|
||||
if (spd_info->topo == MEM_TOPO_DIMM_MODULE) {
|
||||
ddr5_fill_dimm_module_info(mem_cfg, mb_cfg, spd_info);
|
||||
return;
|
||||
}
|
||||
expand_channels = true;
|
||||
break;
|
||||
case MEM_TYPE_LP5X:
|
||||
meminit_lp5x(mem_cfg, &mb_cfg->lp5x_config);
|
||||
@@ -221,9 +207,9 @@ void memcfg_init(FSPM_UPD *memupd, const struct mb_cfg *mb_cfg,
|
||||
die("Unsupported memory type(%d)\n", mb_cfg->type);
|
||||
}
|
||||
|
||||
mem_populate_channel_data(memupd, &soc_mem_cfg[mb_cfg->type], spd_info,
|
||||
half_populated, &data);
|
||||
mem_init_spd_upds(mem_cfg, &data);
|
||||
mem_populate_channel_data(memupd, &soc_mem_cfg[mb_cfg->type], spd_info, half_populated,
|
||||
&data);
|
||||
mem_init_spd_upds(mem_cfg, &data, expand_channels);
|
||||
mem_init_dq_upds(mem_cfg, &data, mb_cfg, dq_dqs_auto_detect);
|
||||
mem_init_dqs_upds(mem_cfg, &data, mb_cfg, dq_dqs_auto_detect);
|
||||
}
|
||||
|
@@ -288,6 +288,7 @@ static void fill_fspm_audio_params(FSP_M_CONFIG *m_cfg,
|
||||
m_cfg->PchHdaIDispLinkTmode = config->pch_hda_idisp_link_tmode;
|
||||
m_cfg->PchHdaIDispLinkFrequency = config->pch_hda_idisp_link_frequency;
|
||||
m_cfg->PchHdaIDispCodecDisconnect = !config->pch_hda_idisp_codec_enable;
|
||||
m_cfg->PchHdaAudioLinkHdaEnable = config->pch_hda_audio_link_hda_enable;
|
||||
|
||||
for (int i = 0; i < MAX_HD_AUDIO_SDI_LINKS; i++)
|
||||
m_cfg->PchHdaSdiEnable[i] = config->pch_hda_sdi_enable[i];
|
||||
@@ -298,7 +299,6 @@ static void fill_fspm_audio_params(FSP_M_CONFIG *m_cfg,
|
||||
* configuration in coreboot and hence these UPDs are set to 0 to skip FSP GPIO
|
||||
* configuration for audio pads.
|
||||
*/
|
||||
m_cfg->PchHdaAudioLinkHdaEnable = 0;
|
||||
memset(m_cfg->PchHdaAudioLinkDmicEnable, 0, sizeof(m_cfg->PchHdaAudioLinkDmicEnable));
|
||||
memset(m_cfg->PchHdaAudioLinkSspEnable, 0, sizeof(m_cfg->PchHdaAudioLinkSspEnable));
|
||||
memset(m_cfg->PchHdaAudioLinkSndwEnable, 0, sizeof(m_cfg->PchHdaAudioLinkSndwEnable));
|
||||
@@ -409,6 +409,20 @@ static void fill_fsps_acoustic_params(FSP_M_CONFIG *m_cfg,
|
||||
}
|
||||
}
|
||||
|
||||
static void fill_fspm_pci_ssid_params(FSP_M_CONFIG *m_cfg,
|
||||
const struct soc_intel_meteorlake_config *config)
|
||||
{
|
||||
const struct device *dev;
|
||||
|
||||
/* FSP moved setting HDA subsystem ID from FSP-S to FSP-M. */
|
||||
dev = pcidev_path_on_root(PCI_DEVFN_HDA);
|
||||
if (dev) {
|
||||
uint32_t ssid = (dev->subsystem_device << 16) |
|
||||
dev->subsystem_vendor;
|
||||
m_cfg->PchHdaSubSystemIds = ssid;
|
||||
}
|
||||
}
|
||||
|
||||
static void soc_memory_init_params(FSP_M_CONFIG *m_cfg,
|
||||
const struct soc_intel_meteorlake_config *config)
|
||||
{
|
||||
@@ -433,6 +447,7 @@ static void soc_memory_init_params(FSP_M_CONFIG *m_cfg,
|
||||
fill_fspm_vr_config_params,
|
||||
fill_fspm_ibecc_params,
|
||||
fill_fsps_acoustic_params,
|
||||
fill_fspm_pci_ssid_params,
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < ARRAY_SIZE(fill_fspm_params); i++)
|
||||
|
Reference in New Issue
Block a user