mb/protectli/vault_cml: Add Comet Lake 6 port board support

Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: If1b4f9c8245a082ff875ae9c6102a1c45e677d0b
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67940
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
This commit is contained in:
Michał Żygowski
2022-09-29 00:58:43 +02:00
committed by Felix Held
parent 71b4e29566
commit ef886c4ede
28 changed files with 1288 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
if BOARD_PROTECTLI_VP4630_VP4650 || BOARD_PROTECTLI_VP4670
config BOARD_SPECIFIC_OPTIONS
def_bool y
select BOARD_ROMSIZE_KB_16384
select GFX_GMA_IGNORE_PRESENCE_STRAPS
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select HAVE_CMOS_DEFAULT
select HAVE_INTEL_PTT
select HAVE_OPTION_TABLE
select INTEL_GMA_HAVE_VBT
select MAINBOARD_HAS_LIBGFXINIT
select MEMORY_MAPPED_TPM
select SEABIOS_ADD_SERCON_PORT_FILE if PAYLOAD_SEABIOS
select SOC_INTEL_COMETLAKE_1 if BOARD_PROTECTLI_VP4670
select SOC_INTEL_COMETLAKE_2 if BOARD_PROTECTLI_VP4630_VP4650
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
select SPI_FLASH_MACRONIX
select SUPERIO_ITE_IT8786E
config MAINBOARD_DIR
default "protectli/vault_cml"
config MAINBOARD_PART_NUMBER
default "VP4630/VP4650" if BOARD_PROTECTLI_VP4630_VP4650
default "VP4670" if BOARD_PROTECTLI_VP4670
config MAINBOARD_FAMILY
default "Vault Pro"
config DIMM_MAX
default 2
config DIMM_SPD_SIZE
default 512
config CBFS_SIZE
default 0xa00000
config GFX_GMA_PANEL_1_ON_EDP
default n
config VBOOT
select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
select GBB_FLAG_DISABLE_FWMP
select GBB_FLAG_DISABLE_LID_SHUTDOWN
select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
select VBOOT_ALWAYS_ENABLE_DISPLAY
select VBOOT_NO_BOARD_SUPPORT
config VBOOT_SLOTS_RW_A
default y if VBOOT
config FMDFILE
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/vboot-rwa.fmd" if VBOOT && VBOOT_SLOTS_RW_A
default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/board.fmd"
config BEEP_ON_BOOT
bool "Beep on successful boot"
default y
help
Make the platform beep using the PC speaker in final coreboot phase.
May serve as a useful indicator in headless mode that platform is
properly booting.
endif

View File

@@ -0,0 +1,5 @@
config BOARD_PROTECTLI_VP4630_VP4650
bool "VP4630/VP4650"
config BOARD_PROTECTLI_VP4670
bool "VP4670"

View File

@@ -0,0 +1,14 @@
## SPDX-License-Identifier: GPL-2.0-only
bootblock-y += bootblock.c
bootblock-y += gpio.c
romstage-y += romstage.c
ramstage-y += mainboard.c
ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_HDA_VERB) += hda_verb.c
ramstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
all-y += die.c
smm-y += die.c

View File

@@ -0,0 +1 @@
/* SPDX-License-Identifier: GPL-2.0-only */

View File

@@ -0,0 +1 @@
/* SPDX-License-Identifier: GPL-2.0-only */

View File

@@ -0,0 +1,15 @@
FLASH@0xff000000 0x1000000 {
SI_ALL 6M {
SI_DESC 4K
SI_ME
}
UNIFIED_MRC_CACHE(PRESERVE) 128K {
RECOVERY_MRC_CACHE 64K
RW_MRC_CACHE 64K
}
SMMSTORE(PRESERVE) 256K
FMAP 0x800
COREBOOT(CBFS)
}

View File

@@ -0,0 +1,6 @@
Vendor name: Protectli
Board name: VP4630/VP4650/VP4670
Category: sbc
ROM protocol: SPI
ROM socketed: y
Flashrom support: y

View File

@@ -0,0 +1,37 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h>
#include <soc/gpio.h>
#include <superio/ite/common/ite.h>
#include <superio/ite/it8786e/it8786e.h>
#include "gpio.h"
#define UART_DEV PNP_DEV(0x2e, IT8786E_SP1)
#define GPIO_DEV PNP_DEV(0x2e, IT8786E_GPIO)
void bootblock_mainboard_early_init(void)
{
/* CLKIN freq 24MHz, Ext CLKIN for Watchdog, Internal VCC_OK */
ite_reg_write(GPIO_DEV, 0x23, 0x49);
/* Set pin native functions */
ite_reg_write(GPIO_DEV, 0x26, 0x00);
/* Set GPIOS exposed on pin header as GPIO functions */
ite_reg_write(GPIO_DEV, 0x29, 0xc0);
/* External CLKIN PCICLK */
ite_reg_write(GPIO_DEV, 0x71, 0x08);
/* Enable 3VSB during Suspend-to-RAM */
ite_enable_3vsbsw(GPIO_DEV);
/* Delay PWROK2 after 3VSBSW# during resume from Suspend-to-RAM */
ite_delay_pwrgd3(GPIO_DEV);
ite_kill_watchdog(GPIO_DEV);
ite_enable_serial(UART_DEV, CONFIG_TTYS0_BASE);
}
void bootblock_mainboard_init(void)
{
const struct pad_config *pads;
size_t num;
pads = board_gpio_table(&num);
gpio_configure_pads(pads, num);
}

View File

@@ -0,0 +1,3 @@
boot_option=Fallback
debug_level=Debug
me_state=Enable

View File

@@ -0,0 +1,40 @@
# SPDX-License-Identifier: GPL-2.0-only
entries
0 384 r 0 reserved_memory
# RTC_BOOT_BYTE (coreboot hardcoded)
384 1 e 2 boot_option
388 4 h 0 reboot_counter
395 3 e 3 debug_level
398 1 e 4 me_state
400 4 h 0 me_state_counter
984 16 h 0 check_sum
enumerations
1 0 Disable
1 1 Enable
2 0 Fallback
2 1 Normal
3 0 Emergency
3 1 Alert
3 2 Critical
3 3 Error
3 4 Warning
3 5 Notice
3 6 Info
3 7 Debug
3 8 Spew
4 0 Enable
4 1 Disable
checksums
checksum 392 983 984

Binary file not shown.

View File

@@ -0,0 +1,248 @@
chip soc/intel/cannonlake
# Enable Enhanced Intel SpeedStep
register "eist_enable" = "1"
register "cpu_pl2_4_cfg" = "baseline"
register "gen1_dec" = "0x00fc0201"
register "gen2_dec" = "0x007c0a01"
register "gen3_dec" = "0x000c03e1"
register "gen4_dec" = "0x001c02e1"
# GPIO
register "PchUnlockGpioPads" = "1"
register "gpe0_dw0" = "0x2"
register "gpe0_dw1" = "0x3"
register "gpe0_dw2" = "0xd"
# FSP configuration
register "SaGv" = "SaGv_Enabled"
register "ScsEmmcHs400Enabled" = "1"
# Enable eDP device
register "DdiPortEdp" = "1" # Display Port
# Enable HPD for DDI ports B/C
register "DdiPortBHpd" = "1" # HDMI
register "DdiPortCHpd" = "1" # USB Type-C
# Enable DDC for DDI port B
register "DdiPortBDdc" = "1" # HDMI
register "PchHdaAudioLinkHda" = "1"
# Misc
register "AcousticNoiseMitigation" = "1"
# Power
register "PchPmSlpS3MinAssert" = "3" # 50ms
register "PchPmSlpS4MinAssert" = "1" # 1s
register "PchPmSlpSusMinAssert" = "2" # 500ms
register "PchPmSlpAMinAssert" = "4" # 2s
register "tcc_offset" = "20" # TCC of 80C
# Enable SERIRQ continuous
register "serirq_mode" = "SERIRQ_CONTINUOUS"
register "SkipExtGfxScan" = "1"
register "enable_c6dram" = "1"
register "SataPortsEnable[0]" = "1"
register "SataPortsEnable[2]" = "1"
register "PcieRpEnable[4]" = "1" # LAN1
register "PcieRpEnable[5]" = "1" # LAN2
register "PcieRpEnable[6]" = "1" # LAN3
register "PcieRpEnable[7]" = "1" # LAN4
register "PcieRpEnable[8]" = "1" # LAN5
register "PcieRpEnable[9]" = "1" # LAN6
register "PcieRpEnable[11]" = "1" # M.2 WiFi
register "PcieRpEnable[12]" = "1" # M.2 NVMe x4
# Enable Advanced Error Reporting for RP 5-10, 12, 13
register "PcieRpAdvancedErrorReporting[4]" = "1"
register "PcieRpAdvancedErrorReporting[5]" = "1"
register "PcieRpAdvancedErrorReporting[6]" = "1"
register "PcieRpAdvancedErrorReporting[7]" = "1"
register "PcieRpAdvancedErrorReporting[8]" = "1"
register "PcieRpAdvancedErrorReporting[9]" = "1"
register "PcieRpAdvancedErrorReporting[11]" = "1"
register "PcieRpAdvancedErrorReporting[12]" = "1"
# Enable Latency Tolerance Reporting Mechanism RP 5-10, 12, 13
register "PcieRpLtrEnable[4]" = "1"
register "PcieRpLtrEnable[5]" = "1"
register "PcieRpLtrEnable[6]" = "1"
register "PcieRpLtrEnable[7]" = "1"
register "PcieRpLtrEnable[8]" = "1"
register "PcieRpLtrEnable[9]" = "1"
register "PcieRpLtrEnable[11]" = "1"
register "PcieRpLtrEnable[12]" = "1"
register "PcieClkSrcUsage[0]" = "PCIE_CLK_FREE"
register "PcieClkSrcUsage[1]" = "PCIE_CLK_FREE"
register "PcieClkSrcUsage[2]" = "PCIE_CLK_FREE"
register "PcieClkSrcUsage[3]" = "PCIE_CLK_FREE"
register "PcieClkSrcUsage[4]" = "PCIE_CLK_FREE"
register "PcieClkSrcUsage[5]" = "PCIE_CLK_FREE"
# USB related
register "usb2_wake_enable_bitmap" = "USB_PORT_WAKE_ENABLE(1) | \
USB_PORT_WAKE_ENABLE(2) | \
USB_PORT_WAKE_ENABLE(3) | \
USB_PORT_WAKE_ENABLE(4) | \
USB_PORT_WAKE_ENABLE(5) | \
USB_PORT_WAKE_ENABLE(6) | \
USB_PORT_WAKE_ENABLE(7) | \
USB_PORT_WAKE_ENABLE(8) | \
USB_PORT_WAKE_ENABLE(9)"
register "usb3_wake_enable_bitmap" = "USB_PORT_WAKE_ENABLE(1) | \
USB_PORT_WAKE_ENABLE(2) | \
USB_PORT_WAKE_ENABLE(3) | \
USB_PORT_WAKE_ENABLE(4)"
register "PchUsb2PhySusPgDisable" = "1"
register "usb2_ports[0]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[1]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[2]" = "USB2_PORT_TYPE_C(OC_SKIP)"
register "usb2_ports[3]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[4]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[5]" = "USB2_PORT_MID(OC_SKIP)" # M2 WiFi
register "usb2_ports[6]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)"
register "usb2_ports[8]" = "USB2_PORT_MID(OC_SKIP)" # 4G/LTE
register "usb2_ports[9]" = "USB2_PORT_EMPTY"
register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC_SKIP)"
register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)"
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)"
register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC_SKIP)"
register "usb3_ports[4]" = "USB3_PORT_EMPTY"
register "usb3_ports[5]" = "USB3_PORT_EMPTY"
register "SerialIoDevMode" = "{
[PchSerialIoIndexI2C0] = PchSerialIoDisabled,
[PchSerialIoIndexI2C1] = PchSerialIoDisabled,
[PchSerialIoIndexI2C2] = PchSerialIoDisabled,
[PchSerialIoIndexI2C3] = PchSerialIoDisabled,
[PchSerialIoIndexI2C4] = PchSerialIoDisabled,
[PchSerialIoIndexI2C5] = PchSerialIoDisabled,
[PchSerialIoIndexSPI0] = PchSerialIoDisabled,
[PchSerialIoIndexSPI1] = PchSerialIoDisabled,
[PchSerialIoIndexSPI2] = PchSerialIoDisabled,
[PchSerialIoIndexUART0] = PchSerialIoDisabled,
[PchSerialIoIndexUART1] = PchSerialIoDisabled,
[PchSerialIoIndexUART2] = PchSerialIoDisabled,
}"
device cpu_cluster 0 on end
device domain 0 on
device pci 00.0 on end # Host Bridge
device pci 02.0 on end # Integrated Graphics Device
device pci 04.0 on end # SA Thermal device
device pci 08.0 off end # Gaussian Mixture Model
device pci 12.0 on end # Thermal Subsystem
device pci 12.5 off end # UFS SCS
device pci 12.6 off end # GSPI #2
device pci 14.0 on end # USB xHCI
device pci 14.1 off end # USB xDCI (OTG)
device pci 14.5 off end # SDCard
device pci 15.0 off end # I2C #0
device pci 15.1 off end # I2C #1
device pci 15.2 off end # I2C #2
device pci 15.3 off end # I2C #3
device pci 16.0 on end # Management Engine Interface 1
device pci 16.1 off end # Management Engine Interface 2
device pci 16.2 off end # Management Engine IDE-R
device pci 16.3 off end # Management Engine KT Redirection
device pci 16.4 off end # Management Engine Interface 3
device pci 16.5 off end # Management Engine Interface 4
device pci 17.0 on end # SATA
device pci 19.0 off end # I2C #4
device pci 19.1 off end # I2C #5
device pci 19.2 off end # UART #2
device pci 1a.0 on end # eMMC
device pci 1c.0 off end # PCI Express Port 1
device pci 1c.1 off end # PCI Express Port 2
device pci 1c.2 off end # PCI Express Port 3
device pci 1c.3 off end # PCI Express Port 4
device pci 1c.4 on end # PCI Express Port 5 LAN1
device pci 1c.5 on end # PCI Express Port 6 LAN2
device pci 1c.6 on end # PCI Express Port 7 LAN3
device pci 1c.7 on end # PCI Express Port 8 LAN4
device pci 1d.0 on end # PCI Express Port 9 LAN5
device pci 1d.1 on end # PCI Express Port 10 LAN6
device pci 1d.2 off end # PCI Express Port 11
device pci 1d.3 on end # PCI Express Port 12 M.2 WiFi
smbios_slot_desc "SlotTypeM2Socket1_SD" "SlotLengthOther"
"M.2/E 2230 (M2_WIFI2)" "SlotDataBusWidth1X"
device pci 1d.4 on # PCI Express Port 13 NVMe
smbios_slot_desc "SlotTypeM2Socket3" "SlotLengthOther"
"M.2/M 2280 (J1)" "SlotDataBusWidth4X"
end
device pci 1d.5 off end # PCI Express Port 14
device pci 1d.6 off end # PCI Express Port 15
device pci 1d.7 off end # PCI Express Port 16
device pci 1e.0 off end # UART #0
device pci 1e.1 off end # UART #1
device pci 1e.2 off end # GSPI #0
device pci 1e.3 off end # GSPI #1
device pci 1f.0 on
chip superio/ite/it8786e
register "TMPIN1.mode" = "THERMAL_PECI"
register "TMPIN1.offset" = "0x63"
register "TMPIN2.mode" = "THERMAL_MODE_DISABLED"
register "TMPIN3.mode" = "THERMAL_MODE_DISABLED"
register "ec.vin_mask" = "VIN_ALL"
register "ec.smbus_24mhz" = "1"
register "ec.smbus_en" = "1"
# FAN1 is CPU fan (connector on board)
register "FAN1.mode" = "FAN_SMART_AUTOMATIC"
register "FAN1.smart.tmpin" = " 1"
register "FAN1.smart.tmp_off" = "40"
register "FAN1.smart.tmp_start" = "60"
register "FAN1.smart.tmp_full" = "85"
register "FAN1.smart.tmp_delta" = " 2"
register "FAN1.smart.pwm_start" = "20"
register "FAN1.smart.slope" = "24"
register "FAN2.mode" = "FAN_MODE_OFF"
register "FAN3.mode" = "FAN_MODE_OFF"
device pnp 2e.1 on # COM 1
io 0x60 = 0x3f8
irq 0x70 = 4
end
device pnp 2e.2 on # COM 2
io 0x60 = 0x2f8
irq 0x70 = 3
end
device pnp 2e.3 off end # Printer Port
device pnp 2e.4 on # Environment Controller
io 0x60 = 0xa40
io 0x62 = 0xa30
irq 0x70 = 9
end
device pnp 2e.5 off end # Keyboard
device pnp 2e.6 off end # Mouse
device pnp 2e.7 off end # GPIO
device pnp 2e.8 off end # COM 3
device pnp 2e.9 off end # COM 4
device pnp 2e.a off end # CIR
device pnp 2e.b off end # COM 5
device pnp 2e.c off end # COM 6
end
chip drivers/pc80/tpm
device pnp 0c31.0 on end
end
end # LPC Interface
device pci 1f.1 hidden end # P2SB
device pci 1f.2 hidden end # Power Management Controller
device pci 1f.3 on end # Intel HDA
device pci 1f.4 on end # SMBus
device pci 1f.5 on end # PCH SPI
device pci 1f.6 off end # GbE
end
end

View File

@@ -0,0 +1,42 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <console/console.h>
#include <pc80/i8254.h>
#include <soc/gpio.h>
#include <delay.h>
#include <gpio.h>
static void beep_and_blink(void)
{
static uint8_t blink = 0;
static uint8_t beep_count = 0;
gpio_set(GPP_E8, blink);
/* Beep 12 times at most, constant beeps may be annoying */
if (beep_count < 12) {
beep(800, 300);
mdelay(200);
beep_count++;
} else {
mdelay(500);
}
blink ^= 1;
}
void die_notify(void)
{
if (ENV_POSTCAR)
return;
/* Make SATA LED blink and use PC SPKR */
gpio_output(GPP_E8, 0);
while (1) {
beep_and_blink();
beep_and_blink();
beep_and_blink();
beep_and_blink();
delay(2);
}
}

View File

@@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#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/cannonlake/acpi/southbridge.asl>
}
#include <southbridge/intel/common/acpi/sleepstates.asl>
}

View File

@@ -0,0 +1,17 @@
-- SPDX-License-Identifier: GPL-2.0-or-later
with HW.GFX.GMA;
with HW.GFX.GMA.Display_Probing;
use HW.GFX.GMA;
use HW.GFX.GMA.Display_Probing;
private package GMA.Mainboard is
ports : constant Port_List :=
(eDP,
DP2,
HDMI1,
others => Disabled);
end GMA.Mainboard;

View File

@@ -0,0 +1,442 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef CFG_GPIO_H
#define CFG_GPIO_H
#include "gpio.h"
/* Pad configuration was generated automatically using intelp2m utility */
static const struct pad_config gpio_table[] = {
/* ------- GPIO Community 0 ------- */
/* ------- GPIO Group GPP_A ------- */
/* GPP_A0 - RCIN# */
PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1),
/* GPP_A1 - LAD0 */
PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1),
/* GPP_A2 - LAD1 */
PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1),
/* GPP_A3 - LAD2 */
PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1),
/* GPP_A4 - LAD3 */
PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1),
/* GPP_A5 - LFRAME# */
PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1),
/* GPP_A6 - SERIRQ */
PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1),
/* GPP_A7 - PIRQA# */
PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1),
/* GPP_A8 - CLKRUN# */
PAD_CFG_NF(GPP_A8, NONE, PLTRST, NF1),
/* GPP_A9 - CLKOUT_LPC0 */
PAD_CFG_NF(GPP_A9, DN_20K, DEEP, NF1),
/* GPP_A10 - CLKOUT_LPC1 */
PAD_CFG_NF(GPP_A10, DN_20K, DEEP, NF1),
/* GPP_A11 - PME# */
PAD_CFG_NF(GPP_A11, UP_20K, DEEP, NF1),
/* GPP_A12 - GPIO */
PAD_NC(GPP_A12, NONE),
/* GPP_A13 - GPIO */
PAD_NC(GPP_A13, NONE),
/* GPP_A14 - GPIO */
PAD_NC(GPP_A14, NONE),
/* GPP_A15 - GPIO */
PAD_NC(GPP_A15, NONE),
/* GPP_A16 - GPIO */
PAD_NC(GPP_A16, NONE),
/* GPP_A17 - GPIO */
PAD_NC(GPP_A17, NONE),
/* GPP_A18 - GPIO */
PAD_NC(GPP_A18, NONE),
/* GPP_A19 - GPIO */
PAD_NC(GPP_A19, NONE),
/* GPP_A20 - GPIO */
PAD_NC(GPP_A20, NONE),
/* GPP_A21 - GPIO */
PAD_NC(GPP_A21, NONE),
/* GPP_A22 - GPIO */
PAD_NC(GPP_A22, NONE),
/* GPP_A23 - GPIO */
PAD_NC(GPP_A23, NONE),
/* ------- GPIO Group GPP_B ------- */
/* GPP_B0 - CORE_VID0 */
PAD_NC(GPP_B0, NONE),
/* GPP_B1 - CORE_VID1 */
PAD_NC(GPP_B1, NONE),
/* GPP_B2 - GPIO */
PAD_NC(GPP_B2, NONE),
/* GPP_B3 - GPIO */
PAD_NC(GPP_B3, NONE),
/* GPP_B4 - GPIO */
PAD_NC(GPP_B4, NONE),
/* GPP_B5 - GPIO */
PAD_NC(GPP_B5, NONE),
/* GPP_B6 - GPIO */
PAD_NC(GPP_B6, NONE),
/* GPP_B7 - GPIO */
PAD_NC(GPP_B7, NONE),
/* GPP_B8 - GPIO */
PAD_NC(GPP_B8, NONE),
/* GPP_B9 - GPIO */
PAD_NC(GPP_B9, NONE),
/* GPP_B10 - GPIO */
PAD_NC(GPP_B10, NONE),
/* GPP_B11 - EXT_PWR_GATE# */
PAD_NC(GPP_B11, NONE),
/* GPP_B12 - SLP_S0# */
PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),
/* GPP_B13 - PLTRST# */
PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),
/* GPP_B14 - SPKR */
PAD_CFG_NF(GPP_B14, DN_20K, PLTRST, NF1),
/* GPP_B15 - GPIO */
PAD_NC(GPP_B15, NONE),
/* GPP_B16 - GPIO */
PAD_NC(GPP_B16, NONE),
/* GPP_B17 - GPIO */
PAD_NC(GPP_B17, NONE),
/* GPP_B18 - GPIO */
PAD_NC(GPP_B18, NONE),
/* GPP_B19 - GPIO */
PAD_NC(GPP_B19, NONE),
/* GPP_B20 - GPIO */
PAD_NC(GPP_B20, NONE),
/* GPP_B21 - GPIO */
PAD_NC(GPP_B21, NONE),
/* GPP_B22 - GPIO */
PAD_NC(GPP_B22, NONE),
/* GPP_B23 - GPIO */
PAD_NC(GPP_B23, NONE),
/* ------- GPIO Group GPP_G ------- */
/* GPP_G0 - GPIO */
PAD_NC(GPP_G0, NONE),
/* GPP_G1 - GPIO */
PAD_NC(GPP_G1, NONE),
/* GPP_G2 - GPIO */
PAD_NC(GPP_G2, NONE),
/* GPP_G3 - GPIO */
PAD_NC(GPP_G3, NONE),
/* GPP_G4 - GPIO */
PAD_NC(GPP_G4, NONE),
/* GPP_G5 - SD3_CD# */
PAD_NC(GPP_G5, NONE),
/* GPP_G6 - GPIO */
PAD_NC(GPP_G6, NONE),
/* GPP_G7 - SD3_WP */
PAD_NC(GPP_G7, NONE),
/* ------- GPIO Group SPI ------- */
/* ------- GPIO Community 1 ------- */
/* ------- GPIO Group GPP_D ------- */
/* GPP_D0 - GPIO */
PAD_NC(GPP_D0, NONE),
/* GPP_D1 - GPIO */
PAD_NC(GPP_D1, NONE),
/* GPP_D2 - GPIO */
PAD_NC(GPP_D2, NONE),
/* GPP_D3 - GPIO */
PAD_NC(GPP_D3, NONE),
/* GPP_D4 - GPIO */
PAD_NC(GPP_D4, NONE),
/* GPP_D5 - GPIO */
PAD_NC(GPP_D5, NONE),
/* GPP_D6 - GPIO */
PAD_NC(GPP_D6, NONE),
/* GPP_D7 - GPIO */
PAD_NC(GPP_D7, NONE),
/* GPP_D8 - GPIO */
PAD_NC(GPP_D8, NONE),
/* GPP_D9 - GPIO */
PAD_NC(GPP_D9, NONE),
/* GPP_D10 - GPIO */
PAD_NC(GPP_D10, NONE),
/* GPP_D11 - GPIO */
PAD_NC(GPP_D11, NONE),
/* GPP_D12 - GPIO */
PAD_NC(GPP_D12, NONE),
/* GPP_D13 - GPIO */
PAD_NC(GPP_D13, NONE),
/* GPP_D14 - GPIO */
PAD_NC(GPP_D14, NONE),
/* GPP_D15 - GPIO */
PAD_NC(GPP_D15, NONE),
/* GPP_D16 - GPIO */
PAD_NC(GPP_D16, NONE),
/* GPP_D17 - GPIO */
PAD_NC(GPP_D17, NONE),
/* GPP_D18 - GPIO */
PAD_NC(GPP_D18, NONE),
/* GPP_D19 - GPIO */
PAD_NC(GPP_D19, NONE),
/* GPP_D20 - GPIO */
PAD_NC(GPP_D20, NONE),
/* GPP_D21 - SPI1_IO2 */
PAD_NC(GPP_D21, NONE),
/* GPP_D22 - SPI1_IO3 */
PAD_NC(GPP_D22, NONE),
/* GPP_D23 - GPIO */
PAD_NC(GPP_D23, NONE),
/* ------- GPIO Group GPP_F ------- */
/* GPP_F0 - GPIO */
PAD_NC(GPP_F0, NONE),
/* GPP_F1 - GPIO */
PAD_NC(GPP_F1, NONE),
/* GPP_F2 - GPIO */
PAD_NC(GPP_F2, NONE),
/* GPP_F3 - GPIO */
PAD_NC(GPP_F3, NONE),
/* GPP_F4 - GPIO */
PAD_NC(GPP_F4, NONE),
/* GPP_F5 - GPIO */
PAD_NC(GPP_F5, NONE),
/* GPP_F6 - GPIO */
PAD_NC(GPP_F6, NONE),
/* GPP_F7 - GPIO */
PAD_NC(GPP_F7, NONE),
/* GPP_F8 - GPIO */
PAD_NC(GPP_F8, NONE),
/* GPP_F9 - GPIO */
PAD_NC(GPP_F9, NONE),
/* GPP_F10 - GPIO */
PAD_NC(GPP_F10, NONE),
/* GPP_F11 - EMMC_CMD */
PAD_CFG_NF(GPP_F11, NONE, DEEP, NF1),
/* GPP_F12 - EMMC_DATA0 */
PAD_CFG_NF(GPP_F12, NONE, DEEP, NF1),
/* GPP_F13 - EMMC_DATA1 */
PAD_CFG_NF(GPP_F13, NONE, DEEP, NF1),
/* GPP_F14 - EMMC_DATA2 */
PAD_CFG_NF(GPP_F14, NONE, DEEP, NF1),
/* GPP_F15 - EMMC_DATA3 */
PAD_CFG_NF(GPP_F15, NONE, DEEP, NF1),
/* GPP_F16 - EMMC_DATA4 */
PAD_CFG_NF(GPP_F16, NONE, DEEP, NF1),
/* GPP_F17 - EMMC_DATA5 */
PAD_CFG_NF(GPP_F17, NONE, DEEP, NF1),
/* GPP_F18 - EMMC_DATA6 */
PAD_CFG_NF(GPP_F18, NONE, DEEP, NF1),
/* GPP_F19 - EMMC_DATA7 */
PAD_CFG_NF(GPP_F19, NONE, DEEP, NF1),
/* GPP_F20 - EMMC_RCLK */
PAD_CFG_NF(GPP_F20, NONE, DEEP, NF1),
/* GPP_F21 - EMMC_CLK */
PAD_CFG_NF(GPP_F21, NONE, DEEP, NF1),
/* GPP_F22 - EMMC_RESET# */
PAD_CFG_NF(GPP_F22, NONE, DEEP, NF1),
/* GPP_F23 - GPIO */
PAD_NC(GPP_F23, NONE),
/* ------- GPIO Group GPP_H ------- */
/* GPP_H0 - GPIO */
PAD_NC(GPP_H0, NONE),
/* GPP_H1 - GPIO# */
PAD_NC(GPP_H1, NONE),
/* GPP_H2 - GPIO */
PAD_NC(GPP_H2, NONE),
/* GPP_H3 - GPIO */
PAD_NC(GPP_H3, NONE),
/* GPP_H4 - GPIO */
PAD_NC(GPP_H4, NONE),
/* GPP_H5 - GPIO */
PAD_NC(GPP_H5, NONE),
/* GPP_H6 - GPIO */
PAD_NC(GPP_H6, NONE),
/* GPP_H7 - GPIO */
PAD_NC(GPP_H7, NONE),
/* GPP_H8 - GPIO */
PAD_NC(GPP_H8, NONE),
/* GPP_H9 - GPIO */
PAD_NC(GPP_H9, NONE),
/* GPP_H10 - GPIO */
PAD_NC(GPP_H10, NONE),
/* GPP_H11 - GPIO */
PAD_NC(GPP_H11, NONE),
/* GPP_H12 - GPIO */
PAD_NC(GPP_H12, NONE),
/* GPP_H13 - GPIO */
PAD_NC(GPP_H13, NONE),
/* GPP_H14 - GPIO */
PAD_NC(GPP_H14, NONE),
/* GPP_H15 - GPIO */
PAD_NC(GPP_H15, NONE),
/* GPP_H16 - GPIO */
PAD_NC(GPP_H16, NONE),
/* GPP_H17 - GPIO */
PAD_NC(GPP_H17, NONE),
/* GPP_H18 - CPU_C10_GATE# */
PAD_CFG_NF(GPP_H18, NONE, DEEP, NF1),
/* GPP_H19 - GPIO */
PAD_NC(GPP_H19, NONE),
/* GPP_H20 - GPIO */
PAD_NC(GPP_H20, NONE),
/* GPP_H21 - GPIO */
PAD_NC(GPP_H21, NONE),
/* GPP_H22 - GPIO */
PAD_NC(GPP_H22, NONE),
/* GPP_H23 - GPIO */
PAD_NC(GPP_H23, NONE),
/* ------- GPIO Group VGPIO ------- */
/* ------- GPIO Community 2 ------- */
/* ------- GPIO Group GPD ------- */
/* GPD0 - BATLOW# */
PAD_CFG_NF(GPD0, NONE, RSMRST, NF1),
/* GPD1 - ACPRESENT */
PAD_CFG_NF(GPD1, NATIVE, RSMRST, NF1),
/* GPD2 - LAN_WAKE# */
PAD_CFG_NF(GPD2, NATIVE, RSMRST, NF1),
/* GPD3 - PRWBTN# */
PAD_CFG_NF(GPD3, UP_20K, RSMRST, NF1),
/* GPD4 - SLP_S3# */
PAD_CFG_NF(GPD4, NONE, RSMRST, NF1),
/* GPD5 - SLP_S4# */
PAD_CFG_NF(GPD5, NONE, RSMRST, NF1),
/* GPD6 - SLP_A# */
PAD_NC(GPD6, NONE),
/* GPD7 - GPIO */
PAD_NC(GPD7, NONE),
/* GPD8 - SUSCLK */
PAD_NC(GPD8, NONE),
/* GPD9 - GPIO */
PAD_NC(GPD9, NONE),
/* GPD10 - SLP_S5# */
PAD_NC(GPD10, NONE),
/* GPD11 - GPIO */
PAD_NC(GPD11, NONE),
/* ------- GPIO Community 3 ------- */
/* ------- GPIO Group AZA ------- */
/* ------- GPIO Group CPU ------- */
/* ------- GPIO Community 4 ------- */
/* ------- GPIO Group GPP_C ------- */
/* GPP_C0 - SMBCLK */
PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),
/* GPP_C1 - SMBDATA */
PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1),
/* GPP_C2 - GPIO */
PAD_NC(GPP_C2, NONE),
/* GPP_C3 - SML0CLK */
PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),
/* GPP_C4 - SML0DATA */
PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),
/* GPP_C5 - GPIO */
PAD_NC(GPP_C5, NONE),
/* GPP_C6 - SML1CLK */
PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1),
/* GPP_C7 - SML1DATA */
PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1),
/* GPP_C8 - GPIO */
PAD_NC(GPP_C8, NONE),
/* GPP_C9 - GPIO */
PAD_NC(GPP_C9, NONE),
/* GPP_C10 - GPIO */
PAD_NC(GPP_C10, NONE),
/* GPP_C11 - GPIO */
PAD_NC(GPP_C11, NONE),
/* GPP_C12 - GPIO */
PAD_NC(GPP_C12, NONE),
/* GPP_C13 - GPIO */
PAD_NC(GPP_C13, NONE),
/* GPP_C14 - GPIO */
PAD_NC(GPP_C14, NONE),
/* GPP_C15 - GPIO */
PAD_NC(GPP_C15, NONE),
/* GPP_C16 - GPIO */
PAD_NC(GPP_C16, NONE),
/* GPP_C17 - GPIO */
PAD_NC(GPP_C17, NONE),
/* GPP_C18 - GPIO */
PAD_NC(GPP_C18, NONE),
/* GPP_C19 - GPIO */
PAD_NC(GPP_C19, NONE),
/* GPP_C20 - GPIO */
PAD_NC(GPP_C20, NONE),
/* GPP_C21 - GPIO */
PAD_NC(GPP_C21, NONE),
/* GPP_C22 - GPIO */
PAD_NC(GPP_C22, NONE),
/* GPP_C23 - GPIO */
PAD_NC(GPP_C23, NONE),
/* ------- GPIO Group GPP_E ------- */
/* GPP_E0 - GPIO */
PAD_NC(GPP_E0, NONE),
/* GPP_E1 - GPIO */
PAD_NC(GPP_E1, NONE),
/* GPP_E2 - SATAXPCIE2 */
PAD_CFG_NF(GPP_E2, UP_20K, PLTRST, NF1),
/* GPP_E3 - GPIO */
PAD_NC(GPP_E3, NONE),
/* GPP_E4 - GPIO */
PAD_NC(GPP_E4, NONE),
/* GPP_E5 - GPIO */
PAD_NC(GPP_E5, NONE),
/* GPP_E6 - GPIO */
PAD_NC(GPP_E6, NONE),
/* GPP_E7 - GPIO */
PAD_NC(GPP_E7, NONE),
/* GPP_E8 - SATALED# */
PAD_CFG_NF(GPP_E8, NONE, PLTRST, NF1),
/* GPP_E9 - RESERVED */
PAD_NC(GPP_E9, NONE),
/* GPP_E10 - RESERVED */
PAD_NC(GPP_E10, NONE),
/* GPP_E11 - GPIO */
PAD_NC(GPP_E11, NONE),
/* GPP_E12 - GPIO */
PAD_NC(GPP_E12, NONE),
/* GPP_E13 - DDPB_HPD0 */
PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1),
/* GPP_E14 - DDPC_HPD1 */
PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),
/* GPP_E15 - DDPD_HPD2 */
PAD_NC(GPP_E15, NONE),
/* GPP_E16 - GPIO */
PAD_NC(GPP_E16, NONE),
/* GPP_E17 - EDP_HPD */
PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1),
/* GPP_E18 - DPPB_CTRLCLK */
PAD_CFG_NF(GPP_E18, NONE, DEEP, NF1),
/* GPP_E19 - DPPB_CTRLDATA */
PAD_CFG_NF(GPP_E19, NONE, DEEP, NF1),
/* GPP_E20 - DPPC_CTRLCLK */
PAD_NC(GPP_E20, NONE),
/* GPP_E21 - DPPC_CTRLDATA */
PAD_NC(GPP_E21, NONE),
/* GPP_E22 - DPPD_CTRLCLK */
PAD_NC(GPP_E22, NONE),
/* GPP_E23 - DPPD_CTRLDATA */
PAD_NC(GPP_E23, NONE),
/* ------- GPIO Group JTAG ------- */
/* ------- GPIO Group HVMOS ------- */
};
const struct pad_config *board_gpio_table(size_t *num)
{
*num = ARRAY_SIZE(gpio_table);
return gpio_table;
}
#endif /* CFG_GPIO_H */

View File

@@ -0,0 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __BASEBOARD_GPIO_H__
#define __BASEBOARD_GPIO_H__
#include <stdint.h>
#include <soc/gpio.h>
const struct pad_config *board_gpio_table(size_t *num);
#endif /* __BASEBOARD_GPIO_H__ */

View File

@@ -0,0 +1,34 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <device/azalia_device.h>
const u32 cim_verb_data[] = {
0x10ec0897, /* Codec Vendor / Device ID: Realtek */
0x10ec0000, /* Subsystem ID */
15, /* Number of 4 dword sets */
AZALIA_SUBVENDOR(0, 0x10ec0662),
AZALIA_PIN_CFG(0, 0x11, 0x40000000),
AZALIA_PIN_CFG(0, 0x12, 0x411111f0),
AZALIA_PIN_CFG(0, 0x14, 0x04214110),
AZALIA_PIN_CFG(0, 0x15, 0x411111f0),
AZALIA_PIN_CFG(0, 0x16, 0x411111f0),
AZALIA_PIN_CFG(0, 0x17, 0x411111f0),
AZALIA_PIN_CFG(0, 0x18, 0x04a19120),
AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
AZALIA_PIN_CFG(0, 0x1b, 0x411111f0),
AZALIA_PIN_CFG(0, 0x1c, 0x411111f0),
AZALIA_PIN_CFG(0, 0x1d, 0x40231105),
AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
0x8086280b, /* Codec Vendor / Device ID: Intel */
0x80860101, /* Subsystem ID */
2, /* Number of 4 dword sets */
AZALIA_SUBVENDOR(2, 0x80860101),
AZALIA_PIN_CFG(2, 0x03, 0x18560010),
};
const u32 pc_beep_verbs[] = {
};
AZALIA_ARRAY_SIZES;

View File

@@ -0,0 +1,34 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <cpu/x86/name.h>
#include <device/device.h>
#include <pc80/i8254.h>
#include <smbios.h>
#include <string.h>
const char *smbios_mainboard_product_name(void)
{
char processor_name[49];
fill_processor_name(processor_name);
if (strstr(processor_name, "i3-10110U") != NULL)
return "VP4630";
else if (strstr(processor_name, "i5-10210U") != NULL)
return "VP4650";
else if (strstr(processor_name, "i7-10810U") != NULL)
return "VP4670";
else
return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME;
}
static void mainboard_final(void *unused)
{
if (CONFIG(BEEP_ON_BOOT))
beep(1500, 100);
}
struct chip_operations mainboard_ops = {
.final = mainboard_final,
};

View File

@@ -0,0 +1,44 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/cnl_memcfg_init.h>
#include <soc/romstage.h>
static const struct cnl_mb_cfg board_memcfg_cfg = {
/* Access memory info through SMBUS. */
.spd[0] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xA0}
},
.spd[1] = {
.read_type = NOT_EXISTING,
},
.spd[2] = {
.read_type = READ_SMBUS,
.spd_spec = {.spd_smbus_address = 0xA4}
},
.spd[3] = {
.read_type = NOT_EXISTING,
},
/* Baseboard uses 121, 81 and 100 rcomp resistors */
.rcomp_resistor = {121, 81, 100},
/*
* Baseboard Rcomp target values.
*/
.rcomp_targets = {100, 40, 20, 20, 26},
/* Baseboard is an interleaved design */
.dq_pins_interleaved = 1,
/* Baseboard is using config 2 for vref_ca */
.vref_ca_config = 2,
/* Enable Early Command Training */
.ect = 1,
};
void mainboard_memory_init_params(FSPM_UPD *memupd)
{
cannonlake_memcfg_init(&memupd->FspmConfig, &board_memcfg_cfg);
}

View File

@@ -0,0 +1,40 @@
FLASH@0xff000000 0x1000000 {
SI_ALL 6M {
SI_DESC 4K
SI_ME
}
RW_MISC 424K {
UNIFIED_MRC_CACHE(PRESERVE) 128K {
RECOVERY_MRC_CACHE 64K
RW_MRC_CACHE 64K
}
SMMSTORE(PRESERVE) 256K
RW_SHARED 0x4000 {
SHARED_DATA@0x0 0x2000
VBLOCK_DEV@0x2000 0x2000
}
RW_NVRAM(PRESERVE) 24K
}
CONSOLE 0x20000
RW_SECTION_A {
VBLOCK_A 0x2000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
# T/B = 0
# BP3 = 0 BP2 = 1 BP1 = 1 BP0 = 1
WP_RO@0xC00000 0x400000 {
RO_VPD(PRESERVE)@0x0 0x4000
RO_SECTION@0x4000 0x3fc000 {
FMAP@0x0 0x800
RO_FRID@0x800 0x40
RO_FRID_PAD@0x840 0x7c0
GBB@0x1000 0x3000
COREBOOT(CBFS)@0x4000 0x3f8000
}
}
}