Merge remote-tracking branch 'upstream/master' into HEAD

Change-Id: Id25620ddd031ef761b2f7962acb6682223c9753b
This commit is contained in:
Jeremy Soller
2020-12-02 20:42:22 -07:00
77 changed files with 955 additions and 306 deletions

View File

@@ -233,19 +233,19 @@ F: src/mainboard/facebook/monolith/
GETAC P470 MAINBOARD GETAC P470 MAINBOARD
M: Patrick Georgi <patrick@georgi.software> M: Patrick Georgi <patrick@georgi.software>
S: Maintained S: Maintained
F: src/mainboard/getac/p470 F: src/mainboard/getac/p470/
GIGABYTE GA-G41M-ES2L MAINBOARD GIGABYTE GA-G41M-ES2L MAINBOARD
M: Damien Zammit <damien@zamaudio.com> M: Damien Zammit <damien@zamaudio.com>
S: Odd Fixes S: Odd Fixes
F: src/mainboard/gigabyte/ga-g41m-es2l F: src/mainboard/gigabyte/ga-g41m-es2l/
GIGABYTE GA-H61M SERIES MAINBOARDS GIGABYTE GA-H61M SERIES MAINBOARDS
M: Angel Pons <th3fanbus@gmail.com> M: Angel Pons <th3fanbus@gmail.com>
S: Maintained S: Maintained
F: src/mainboard/gigabyte/ga-h61m-series F: src/mainboard/gigabyte/ga-h61m-series/
@@ -273,7 +273,7 @@ F: src/mainboard/google/stout/
INTEL D510MO MAINBOARD INTEL D510MO MAINBOARD
M: Damien Zammit <damien@zamaudio.com> M: Damien Zammit <damien@zamaudio.com>
S: Odd Fixes S: Odd Fixes
F: src/mainboard/intel/d510mo F: src/mainboard/intel/d510mo/
INTEL STRAGO MAINBOARD INTEL STRAGO MAINBOARD
M: Hannah Williams <hannah.williams@intel.com> M: Hannah Williams <hannah.williams@intel.com>
@@ -314,7 +314,7 @@ LIBRETREND LT1000 MAINBOARD
M: Piotr Król <piotr.krol@3mdeb.com> M: Piotr Król <piotr.krol@3mdeb.com>
M: Michał Żygowski <michal.zygowski@3mdeb.com> M: Michał Żygowski <michal.zygowski@3mdeb.com>
S: Maintained S: Maintained
F: src/mainboard/libretrend/lt1000 F: src/mainboard/libretrend/lt1000/
OCP DELTALAKE MAINBOARD OCP DELTALAKE MAINBOARD
@@ -325,7 +325,7 @@ M: Morgan Jang <Morgan_Jang@wiwynn.com>
M: Ryback Hung <<Ryback.Hung@quantatw.com> M: Ryback Hung <<Ryback.Hung@quantatw.com>
M: Bryant Ou <Bryant.Ou@quantatw.com> M: Bryant Ou <Bryant.Ou@quantatw.com>
S: Supported S: Supported
F: src/mainboard/ocp/deltalake F: src/mainboard/ocp/deltalake/
OCP TIOGAPASS MAINBOARD OCP TIOGAPASS MAINBOARD
M: Jonathan Zhang <jonzhang@fb.com> M: Jonathan Zhang <jonzhang@fb.com>
@@ -335,7 +335,7 @@ M: Morgan Jang <Morgan_Jang@wiwynn.com>
M: Ryback Hung <<Ryback.Hung@quantatw.com> M: Ryback Hung <<Ryback.Hung@quantatw.com>
M: Bryant Ou <Bryant.Ou@quantatw.com> M: Bryant Ou <Bryant.Ou@quantatw.com>
S: Maintained S: Maintained
F: src/mainboard/ocp/tiogapass F: src/mainboard/ocp/tiogapass/
@@ -375,14 +375,14 @@ PRODRIVE HERMES MAINBOARD
M: Christian Walter <christian.walter@9elements.com> M: Christian Walter <christian.walter@9elements.com>
M: Patrick Rudolph <patrick.rudolph@9elements.com> M: Patrick Rudolph <patrick.rudolph@9elements.com>
S: Maintained S: Maintained
F: src/mainboard/prodrive/hermes F: src/mainboard/prodrive/hermes/
PURISM MAINBOARDS PURISM MAINBOARDS
M: Matt DeVillier <matt.devillier@puri.sm> M: Matt DeVillier <matt.devillier@puri.sm>
S: Supported S: Supported
F: src/mainboard/purism F: src/mainboard/purism/
@@ -556,8 +556,8 @@ M: Marshall Dawson <marshalldawson3rd@gmail.com>
M: Felix Held <felix-coreboot@felixheld.de> M: Felix Held <felix-coreboot@felixheld.de>
M: Jason Glenesk <jason.glenesk@gmail.com> M: Jason Glenesk <jason.glenesk@gmail.com>
S: Maintained S: Maintained
F: src/soc/amd/picasso F: src/soc/amd/picasso/
F: src/vendorcode/amd/fsp/picasso F: src/vendorcode/amd/fsp/picasso/
INTEL APOLLOLAKE_SOC INTEL APOLLOLAKE_SOC
M: Andrey Petrov <andrey.petrov@gmail.com> M: Andrey Petrov <andrey.petrov@gmail.com>
@@ -569,8 +569,8 @@ M: Piotr Król <piotr.krol@3mdeb.com>
M: Michał Żygowski <michal.zygowski@3mdeb.com> M: Michał Żygowski <michal.zygowski@3mdeb.com>
M: Frans Hendriks <fhendriks@eltan.com> M: Frans Hendriks <fhendriks@eltan.com>
S: Maintained S: Maintained
F: /src/soc/intel/braswell F: /src/soc/intel/braswell/
F: /src/vendorcode/intel/fsp/fsp1_1/braswell F: /src/vendorcode/intel/fsp/fsp1_1/braswell/
INTEL Xeon Sacalable Processor Family INTEL Xeon Sacalable Processor Family
M: Jonathan Zhang <jonzhang@fb.com> M: Jonathan Zhang <jonzhang@fb.com>
@@ -581,13 +581,13 @@ M: Ryback Hung <<Ryback.Hung@quantatw.com>
M: Bryant Ou <Bryant.Ou@quantatw.com> M: Bryant Ou <Bryant.Ou@quantatw.com>
S: Supported S: Supported
F: src/soc/intel/xeon_sp F: src/soc/intel/xeon_sp
F: src/vendorcode/intel/fsp/fsp2_0/skylake_sp F: src/vendorcode/intel/fsp/fsp2_0/skylake_sp/
F: src/vendorcode/intel/fsp/fsp2_0/copperlake_sp F: src/vendorcode/intel/fsp/fsp2_0/copperlake_sp/
MEDIATEK SOCS MEDIATEK SOCS
M: Hung-Te Lin <hungte@chromium.org> M: Hung-Te Lin <hungte@chromium.org>
S: Supported S: Supported
F: src/soc/mediatek F: src/soc/mediatek/
ORPHANED ARM SOCS ORPHANED ARM SOCS
S: Orphaned S: Orphaned
@@ -615,13 +615,13 @@ F: payloads/coreinfo/
EXTERNAL PAYLOADS INTEGRATION EXTERNAL PAYLOADS INTEGRATION
M: Stefan Reinauer <stefan.reinauer@coreboot.org> M: Stefan Reinauer <stefan.reinauer@coreboot.org>
M: Martin Roth <gaumless@gmail.com> M: Martin Roth <gaumless@gmail.com>
F: payloads/external F: payloads/external/
LINUXBOOT PAYLOAD INTEGRATION LINUXBOOT PAYLOAD INTEGRATION
M: Christian Walter <christian.walter@9elements.com> M: Christian Walter <christian.walter@9elements.com>
M: Marcello Sylvester Bauer <info@marcellobauer.com> M: Marcello Sylvester Bauer <info@marcellobauer.com>
S: Supported S: Supported
F: payloads/external/LinuxBoot F: payloads/external/LinuxBoot/
################################################################################ ################################################################################
# Utilities # Utilities
@@ -751,7 +751,7 @@ TPM SUPPORT
M: Christian Walter <christian.walter@9elements.com> M: Christian Walter <christian.walter@9elements.com>
S: Supported S: Supported
F: src/drivers/*/tpm/ F: src/drivers/*/tpm/
F: src/security/tpm F: src/security/tpm/
SUPERIOS & SUPERIOTOOL SUPERIOS & SUPERIOTOOL
M: Felix Held <felix-coreboot@felixheld.de> M: Felix Held <felix-coreboot@felixheld.de>
@@ -769,7 +769,7 @@ ELTAN VENDORCODE
M: Frans Hendriks <fhendriks@eltan.com> M: Frans Hendriks <fhendriks@eltan.com>
M: Wim Vervoorn <wvervoorn@eltan.com> M: Wim Vervoorn <wvervoorn@eltan.com>
S: Maintained S: Maintained
F: src/vendorcode/eltan F: src/vendorcode/eltan/
MISSING: TIMERS / DELAYS MISSING: TIMERS / DELAYS

View File

@@ -338,7 +338,7 @@ cbfs-files-processor-struct= \
$(eval $(2): $(1) $(obj)/build.h $(KCONFIG_AUTOHEADER); \ $(eval $(2): $(1) $(obj)/build.h $(KCONFIG_AUTOHEADER); \
printf " CC+STRIP $(@)\n"; \ printf " CC+STRIP $(@)\n"; \
$(CC_ramstage) -MMD $(CPPFLAGS_ramstage) $(CFLAGS_ramstage) $$(ramstage-c-ccopts) -include $(KCONFIG_AUTOHEADER) -MT $(2) -o $(2).tmp -c $(1) && \ $(CC_ramstage) -MMD $(CPPFLAGS_ramstage) $(CFLAGS_ramstage) $$(ramstage-c-ccopts) -include $(KCONFIG_AUTOHEADER) -MT $(2) -o $(2).tmp -c $(1) && \
$(OBJCOPY_ramstage) -O binary $(2).tmp $(2); \ $(OBJCOPY_ramstage) -O binary --set-section-flags .bss*=alloc,contents,load $(2).tmp $(2); \
rm -f $(2).tmp) \ rm -f $(2).tmp) \
$(eval DEPENDENCIES += $(2).d) $(eval DEPENDENCIES += $(2).d)

View File

@@ -43,6 +43,7 @@
* if the revision of the update is newer than what is installed * if the revision of the update is newer than what is installed
*/ */
.code32
.section .text .section .text
.global update_bsp_microcode .global update_bsp_microcode

View File

@@ -16,7 +16,12 @@
#endif #endif
#include <cpu/x86/msr.h> #include <cpu/x86/msr.h>
#if defined(__RAMSTAGE__)
#include <arch/ram_segs.h>
#else
#include <arch/rom_segs.h> #include <arch/rom_segs.h>
#endif
setup_longmode: setup_longmode:
/* Get page table address */ /* Get page table address */
@@ -42,7 +47,12 @@ setup_longmode:
movl %eax, %cr0 movl %eax, %cr0
/* use long jump to switch to 64-bit code segment */ /* use long jump to switch to 64-bit code segment */
#if defined(__RAMSTAGE__)
ljmp $RAM_CODE_SEG64, $__longmode_start
#else
ljmp $ROM_CODE_SEG64, $__longmode_start ljmp $ROM_CODE_SEG64, $__longmode_start
#endif
.code64 .code64
__longmode_start: __longmode_start:

View File

@@ -7,6 +7,7 @@
#include <cpu/x86/mtrr.h> #include <cpu/x86/mtrr.h>
.code32
.section .text .section .text
.global check_mtrr .global check_mtrr

View File

@@ -5,6 +5,8 @@
#include <cpu/x86/msr.h> #include <cpu/x86/msr.h>
#include <arch/ram_segs.h> #include <arch/ram_segs.h>
#define __RAMSTAGE__
/* The SIPI vector is responsible for initializing the APs in the system. It /* The SIPI vector is responsible for initializing the APs in the system. It
* loads microcode, sets up MSRs, and enables caching before calling into * loads microcode, sets up MSRs, and enables caching before calling into
* C code. */ * C code. */
@@ -192,11 +194,24 @@ load_msr:
mov %eax, %cr4 mov %eax, %cr4
#endif #endif
#ifdef __x86_64__
/* entry64.inc preserves ebx. */
#include <cpu/x86/64bit/entry64.inc>
mov %rsi, %rdi /* cpu_num */
movl c_handler, %eax
call *%rax
#else
/* c_handler(cpu_num), preserve proper stack alignment */ /* c_handler(cpu_num), preserve proper stack alignment */
sub $12, %esp sub $12, %esp
push %esi /* cpu_num */ push %esi /* cpu_num */
mov c_handler, %eax mov c_handler, %eax
call *%eax call *%eax
#endif
halt_jump: halt_jump:
hlt hlt
jmp halt_jump jmp halt_jump

View File

@@ -32,7 +32,7 @@ int ast_crtc_do_set_base(struct drm_crtc *crtc)
return -ENOMEM; return -ENOMEM;
} }
fb->mmio_addr = (u32)res2mmio(res, 4095, 4095); fb->mmio_addr = (uintptr_t)res2mmio(res, 4095, 4095);
ast_set_offset_reg(crtc); ast_set_offset_reg(crtc);
ast_set_start_address_crt1(ast, fb->mmio_addr); ast_set_start_address_crt1(ast, fb->mmio_addr);
@@ -230,7 +230,7 @@ int ast_driver_framebuffer_init(struct drm_device *dev, int flags)
set_vbe_mode_info_valid(&edid, fb.mmio_addr); set_vbe_mode_info_valid(&edid, fb.mmio_addr);
/* Clear display */ /* Clear display */
memset((void *)fb.mmio_addr, 0, edid.bytes_per_line * edid.y_resolution); memset((void *)(uintptr_t)fb.mmio_addr, 0, edid.bytes_per_line * edid.y_resolution);
return 0; return 0;
} }

View File

@@ -57,7 +57,7 @@ static void fsp_notify(enum fsp_notify_phase phase)
static void fsp_notify_dummy(void *arg) static void fsp_notify_dummy(void *arg)
{ {
enum fsp_notify_phase phase = (uint32_t)arg; enum fsp_notify_phase phase = (uint32_t)(uintptr_t)arg;
display_mtrrs(); display_mtrrs();

View File

@@ -82,7 +82,7 @@ Device (EC0)
Offset (0x12), Offset (0x12),
BTID, 8, // Battery index that host wants to read BTID, 8, // Battery index that host wants to read
USPP, 8, // USB Port Power USPP, 8, // USB Port Power
} }
#if CONFIG(EC_GOOGLE_CHROMEEC_ACPI_MEMMAP) #if CONFIG(EC_GOOGLE_CHROMEEC_ACPI_MEMMAP)
OperationRegion (EMEM, EmbeddedControl, OperationRegion (EMEM, EmbeddedControl,

View File

@@ -150,11 +150,11 @@ static uint32_t reg_script_read_mmio(struct reg_script_context *ctx)
switch (step->size) { switch (step->size) {
case REG_SCRIPT_SIZE_8: case REG_SCRIPT_SIZE_8:
return read8((u8 *)step->reg); return read8((u8 *)(uintptr_t)step->reg);
case REG_SCRIPT_SIZE_16: case REG_SCRIPT_SIZE_16:
return read16((u16 *)step->reg); return read16((u16 *)(uintptr_t)step->reg);
case REG_SCRIPT_SIZE_32: case REG_SCRIPT_SIZE_32:
return read32((u32 *)step->reg); return read32((u32 *)(uintptr_t)step->reg);
} }
return 0; return 0;
} }
@@ -165,13 +165,13 @@ static void reg_script_write_mmio(struct reg_script_context *ctx)
switch (step->size) { switch (step->size) {
case REG_SCRIPT_SIZE_8: case REG_SCRIPT_SIZE_8:
write8((u8 *)step->reg, step->value); write8((u8 *)(uintptr_t)step->reg, step->value);
break; break;
case REG_SCRIPT_SIZE_16: case REG_SCRIPT_SIZE_16:
write16((u16 *)step->reg, step->value); write16((u16 *)(uintptr_t)step->reg, step->value);
break; break;
case REG_SCRIPT_SIZE_32: case REG_SCRIPT_SIZE_32:
write32((u32 *)step->reg, step->value); write32((u32 *)(uintptr_t)step->reg, step->value);
break; break;
} }
} }

View File

@@ -21,7 +21,7 @@ config FMDFILE
config AMD_LPC_DEBUG_CARD config AMD_LPC_DEBUG_CARD
bool "Enable LPC-Serial debug card on the debug header" bool "Enable LPC-Serial debug card on the debug header"
default n default n
select PICASSO_LPC_IOMUX select MANDOLIN_LPC
select SUPERIO_SMSC_SIO1036 select SUPERIO_SMSC_SIO1036
help help
AMD's debug card contains an SMSC SIO1036 device which provides an AMD's debug card contains an SMSC SIO1036 device which provides an
@@ -111,7 +111,7 @@ config MANDOLIN_IOMUX_USE_EMMC
endchoice endchoice
endif # !AMD_LPC_DEBUG_CARD endif # !AMD_LPC_DEBUG_CARD
config PICASSO_LPC_IOMUX config MANDOLIN_LPC
bool bool
default y if MANDOLIN_IOMUX_USE_LPC default y if MANDOLIN_IOMUX_USE_LPC
help help

View File

@@ -6,7 +6,7 @@ bootblock-y += variants/$(VARIANT_DIR)/early_gpio.c
ramstage-y += variants/$(VARIANT_DIR)/gpio.c ramstage-y += variants/$(VARIANT_DIR)/gpio.c
ramstage-y += variants/$(VARIANT_DIR)/port_descriptors.c ramstage-y += variants/$(VARIANT_DIR)/port_descriptors.c
ifneq ($(CONFIG_PICASSO_LPC_IOMUX),y) ifneq ($(CONFIG_MANDOLIN_LPC),y)
ramstage-y += emmc_gpio.c ramstage-y += emmc_gpio.c
endif endif

View File

@@ -111,13 +111,13 @@ static void mainboard_init(void *chip_info)
{ {
struct soc_amd_picasso_config *cfg = config_of_soc(); struct soc_amd_picasso_config *cfg = config_of_soc();
if (!CONFIG(PICASSO_LPC_IOMUX)) if (!CONFIG(MANDOLIN_LPC))
cfg->emmc_config.timing = SD_EMMC_EMMC_HS400; cfg->emmc_config.timing = SD_EMMC_EMMC_HS400;
mainboard_program_gpios(); mainboard_program_gpios();
/* Re-muxing LPCCLK0 can hang the system if LPC is in use. */ /* Re-muxing LPCCLK0 can hang the system if LPC is in use. */
if (CONFIG(PICASSO_LPC_IOMUX)) if (CONFIG(MANDOLIN_LPC))
printk(BIOS_INFO, "eMMC not available due to LPC requirement\n"); printk(BIOS_INFO, "eMMC not available due to LPC requirement\n");
else else
mainboard_program_emmc_gpios(); mainboard_program_emmc_gpios();

View File

@@ -106,6 +106,7 @@ config MAINBOARD_PART_NUMBER
default "Boldar" if BOARD_GOOGLE_BOLDAR default "Boldar" if BOARD_GOOGLE_BOLDAR
default "Elemi" if BOARD_GOOGLE_ELEMI default "Elemi" if BOARD_GOOGLE_ELEMI
default "Voema" if BOARD_GOOGLE_VOEMA default "Voema" if BOARD_GOOGLE_VOEMA
default "Drobit" if BOARD_GOOGLE_DROBIT
config MAX_CPUS config MAX_CPUS
int int
@@ -146,6 +147,7 @@ config VARIANT_DIR
default "boldar" if BOARD_GOOGLE_BOLDAR default "boldar" if BOARD_GOOGLE_BOLDAR
default "elemi" if BOARD_GOOGLE_ELEMI default "elemi" if BOARD_GOOGLE_ELEMI
default "voema" if BOARD_GOOGLE_VOEMA default "voema" if BOARD_GOOGLE_VOEMA
default "drobit" if BOARD_GOOGLE_DROBIT
config VARIANT_HAS_MIPI_CAMERA config VARIANT_HAS_MIPI_CAMERA
bool bool

View File

@@ -89,3 +89,7 @@ config BOARD_GOOGLE_VOEMA
bool "-> Voema" bool "-> Voema"
select BOARD_GOOGLE_BASEBOARD_VOLTEER select BOARD_GOOGLE_BASEBOARD_VOLTEER
select SOC_INTEL_CSE_LITE_SKU select SOC_INTEL_CSE_LITE_SKU
config BOARD_GOOGLE_DROBIT
bool "-> Drobit"
select BOARD_GOOGLE_BASEBOARD_VOLTEER

View File

@@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __VARIANT_EC_H__
#define __VARIANT_EC_H__
#include <baseboard/ec.h>
#endif

View File

@@ -0,0 +1,15 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef VARIANT_GPIO_H
#define VARIANT_GPIO_H
#include <baseboard/gpio.h>
/* Memory configuration board straps */
/* Copied from baseboard and may need to change for the new variant. */
#define GPIO_MEM_CONFIG_0 GPP_C12
#define GPIO_MEM_CONFIG_1 GPP_C15
#define GPIO_MEM_CONFIG_2 GPP_C14
#define GPIO_MEM_CONFIG_3 GPP_D15
#endif

View File

@@ -0,0 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-or-later
## This is an auto-generated file. Do not edit!!
## Add memory parts in mem_parts_used.txt and run spd_tools to regenerate.
SPD_SOURCES = placeholder.spd.hex

View File

@@ -0,0 +1 @@
DRAM Part Name ID to assign

View File

@@ -0,0 +1,4 @@
# This is a CSV file containing a list of memory parts used by this variant.
# Generate an updated Makefile.inc and dram_id.generated.txt by running the
# gen_part_id tool from util/spd_tools/ddr4 or util/spd_tools/lp4x
# See util/spd_tools/{ddr4,lp4x}/README.md for more details and instructions.

View File

@@ -0,0 +1,6 @@
chip soc/intel/tigerlake
device domain 0 on
end
end

View File

@@ -1,6 +1,6 @@
FLASH@0xFF000000 16M { FLASH@0xFF000000 16M {
SI_BIOS { SI_BIOS {
RW_MRC_CACHE 64K RW_MRC_CACHE(PRESERVE) 64K
RW_SECTION_A 3M { RW_SECTION_A 3M {
VBLOCK_A 8K VBLOCK_A 8K
FW_MAIN_A(CBFS) FW_MAIN_A(CBFS)

View File

@@ -0,0 +1,499 @@
/* SPDX-License-Identifier: GPL-2.0-only */
Scope (\_SB.PCI0.IPU0)
{
Name (_DSD, Package (0x02) /* _DSD: Device-Specific Data */
{
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x02)
{
Package (0x02)
{
"port0",
"PRT0"
},
Package (0x02)
{
"port1",
"PRT1"
}
}
})
Name (PRT0, Package (0x04)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"port",
2
}
},
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"endpoint0",
"EP00"
}
}
})
Name (PRT1, Package (0x04)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"port",
One
}
},
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"endpoint0",
"EP10"
}
}
})
}
Scope (\_SB.PCI0.IPU0)
{
Name (EP00, Package (0x02)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x04)
{
Package (0x02)
{
"endpoint",
Zero
},
Package (0x02)
{
"clock-lanes",
Zero
},
Package (0x02)
{
"data-lanes",
Package (0x02)
{
One,
0x02,
}
},
Package (0x02)
{
"remote-endpoint",
Package (0x03)
{
^I2C5.CAM1,
Zero,
Zero
}
}
}
})
Name (EP10, Package (0x02)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x04)
{
Package (0x02)
{
"endpoint",
Zero
},
Package (0x02)
{
"clock-lanes",
Zero
},
Package (0x02)
{
"data-lanes",
Package (0x02)
{
One,
0x02,
}
},
Package (0x02)
{
"remote-endpoint",
Package (0x03)
{
^I2C1.CAM0,
Zero,
Zero
}
}
}
})
}
Scope (\_SB.PCI0.I2C1)
{
PowerResource (RCPR, 0x00, 0x0000)
{
Name (STA, Zero)
Method (_ON, 0, Serialized) /* Rear camera_ON_: Power On */
{
If ((STA == Zero))
{
/* Enable IMG_CLK */
MCON(0,1) /* Clock 0, 19.2MHz */
/* Pull PWREN high */
STXS(GPP_B23)
Sleep(2) /* reset pulse width */
/* Pull RST low */
CTXS(GPP_R5)
Sleep(1) /* t2 */
/* Pull RST high */
STXS(GPP_R5)
Sleep(1) /* t2 */
Store(1,STA)
}
}
Method (_OFF, 0, Serialized) /* Rear camera _OFF: Power Off */
{
If ((STA == One))
{
/* Disable IMG_CLK */
Sleep(1) /* t0+t1 */
MCOF(0) /* Clock 0 */
/* Pull RST low */
CTXS(GPP_R5)
/* Pull PWREN low */
CTXS(GPP_B23)
Store(0,STA)
}
}
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (STA)
}
}
Device (CAM0)
{
Name (_HID, "OVTI5675") /* _HID: Hardware ID */
Name (_UID, Zero) /* _UID: Unique ID */
Name (_DDN, "Ov 5675 Camera") /* _DDN: DOS Device Name */
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
{
I2cSerialBus (0x0036, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, ,
)
})
Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
{
RCPR
})
Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
{
RCPR
})
Name (_DSD, Package (0x04) /* _DSD: Device-Specific Data */
{
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"port0",
"PRT0"
}
},
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x02)
{
Package (0x02)
{
"clock-frequency",
0x0124F800
},
Package (0x02)
{
"lens-focus",
Package (0x01)
{
VCM0
}
}
}
})
Name (PRT0, Package (0x04)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"port",
Zero
}
},
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"endpoint0",
"EP00"
}
}
})
Name (EP00, Package (0x02)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x05)
{
Package (0x02)
{
"endpoint",
Zero
},
Package (0x02)
{
"clock-lanes",
Zero
},
Package (0x02)
{
"data-lanes",
Package (0x02)
{
One,
0x02
}
},
Package (0x02)
{
"link-frequencies",
Package (0x01)
{
0x1AD27480
}
},
Package (0x02)
{
"remote-endpoint",
Package (0x03)
{
IPU0,
Zero,
Zero
}
}
}
})
}
Device (VCM0)
{
Name (_HID, "PRP0001") /* _HID: Hardware ID */
Name (_UID, 0x03) /* _UID: Unique ID */
Name (_DDN, "DW AF DAC") /* _DDN: DOS Device Name */
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
{
I2cSerialBus (0x000C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C1",
0x00, ResourceConsumer, ,
)
})
Name (_DEP, Package (0x01) /* _DEP: Dependencies */
{
CAM0
})
Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
{
RCPR
})
Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
{
RCPR
})
Name (_DSD, Package (0x02) /* _DSD: Device-Specific Data */
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"compatible",
"dongwoon,dw9714"
}
}
})
}
}
Scope (\_SB.PCI0.I2C5)
{
PowerResource (FCPR, 0x00, 0x0000)
{
Name (STA, Zero)
Method (_ON, 0, Serialized) /* Front camera_ON_: Power On */
{
If ((STA == Zero))
{
/* Enable IMG_CLK */
MCON(1,1) /* Clock 1, 19.2MHz */
/* Pull PWREN high */
STXS(GPP_E16)
Sleep(2) /* reset pulse width */
/* Pull RST low */
CTXS(GPP_E15)
Sleep(1) /* t2 */
/* Pull RST high */
STXS(GPP_E15)
Sleep(1) /* t2 */
Store(1,STA)
}
}
Method (_OFF, 0, Serialized) /* Front camera_OFF_: Power Off */
{
If ((STA == One))
{
/* Disable IMG_CLK */
Sleep(1) /* t0+t1 */
MCOF(1) /* Clock 1 */
/* Pull RST low */
CTXS(GPP_E15)
/* Pull PWREN low */
CTXS(GPP_E16)
Store(0,STA)
}
}
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (STA)
}
}
Device (CAM1)
{
Name (_HID, "OVTI5675") /* _HID: Hardware ID */
Name (_UID, Zero) /* _UID: Unique ID */
Name (_DDN, "Ov 5675 Camera") /* _DDN: DOS Device Name */
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
{
I2cSerialBus (0x0036, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C5",
0x00, ResourceConsumer, ,
)
})
Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
{
FCPR
})
Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
{
FCPR
})
Name (_DSD, Package (0x04) /* _DSD: Device-Specific Data */
{
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"port0",
"PRT0"
}
},
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"clock-frequency",
0x0124F800
}
}
})
Name (PRT0, Package (0x04)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x01)
{
Package (0x02)
{
"port",
Zero
}
},
ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
Package (0x01)
{
Package (0x02)
{
"endpoint0",
"EP00"
}
}
})
Name (EP00, Package (0x02)
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package (0x05)
{
Package (0x02)
{
"endpoint",
Zero
},
Package (0x02)
{
"clock-lanes",
Zero
},
Package (0x02)
{
"data-lanes",
Package (0x02)
{
One,
0x02
}
},
Package (0x02)
{
"link-frequencies",
Package (0x01)
{
0x1AD27480
}
},
Package (0x02)
{
"remote-endpoint",
Package (0x03)
{
IPU0,
One,
Zero
}
}
}
})
}
}

View File

@@ -51,6 +51,12 @@ chip soc/intel/alderlake
register "PcieClkSrcUsage[5]" = "0x5" register "PcieClkSrcUsage[5]" = "0x5"
register "PcieRpClkReqDetect[5]" = "1" register "PcieRpClkReqDetect[5]" = "1"
# Enable PCH PCIE RP 8 using free running CLK (0x80)
register "PcieRpEnable[7]" = "1"
register "PcieClkSrcClkReq[7]" = "7"
register "PcieClkSrcUsage[7]" = "0x80"
register "PcieRpClkReqDetect[7]" = "1"
# Enable PCH PCIE RP 9 using CLK 1 # Enable PCH PCIE RP 9 using CLK 1
register "PcieRpEnable[8]" = "1" register "PcieRpEnable[8]" = "1"
register "PcieClkSrcClkReq[1]" = "1" register "PcieClkSrcClkReq[1]" = "1"
@@ -245,7 +251,7 @@ chip soc/intel/alderlake
device pci 1c.4 on end # RP5 device pci 1c.4 on end # RP5
device pci 1c.5 on end # RP6 device pci 1c.5 on end # RP6
device pci 1c.6 off end # RP7 device pci 1c.6 off end # RP7
device pci 1c.7 off end # RP8 device pci 1c.7 on end # RP8
device pci 1d.0 on end # RP9 device pci 1d.0 on end # RP9
device pci 1d.1 off end # RP10 device pci 1d.1 off end # RP10
device pci 1d.2 on end # RP11 device pci 1d.2 on end # RP11

View File

@@ -27,6 +27,9 @@ DefinitionBlock(
#include <soc/intel/common/block/acpi/acpi/ipu.asl> #include <soc/intel/common/block/acpi/acpi/ipu.asl>
} }
/* Camera */
#include <acpi/mipi_camera.asl>
#if CONFIG(CHROMEOS) #if CONFIG(CHROMEOS)
/* Chrome OS specific */ /* Chrome OS specific */
#include <vendorcode/google/chromeos/acpi/chromeos.asl> #include <vendorcode/google/chromeos/acpi/chromeos.asl>

View File

@@ -26,8 +26,6 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_GPO(GPP_B2, 1, PLTRST), PAD_CFG_GPO(GPP_B2, 1, PLTRST),
/* M.2 SSD_2 Reset */ /* M.2 SSD_2 Reset */
PAD_CFG_GPO(GPP_H0, 1, PLTRST), PAD_CFG_GPO(GPP_H0, 1, PLTRST),
/* CAM1-IRQ */
PAD_CFG_GPO(GPP_B23, 1, PLTRST),
/* CAM_STROBE */ /* CAM_STROBE */
PAD_CFG_GPO(GPP_B18, 0, PLTRST), PAD_CFG_GPO(GPP_B18, 0, PLTRST),
/* Audio Codec INT N */ /* Audio Codec INT N */
@@ -72,7 +70,19 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_GPO(GPP_B4, 1, PLTRST), PAD_CFG_GPO(GPP_B4, 1, PLTRST),
/* M.2_PCH_SSD_PWREN */ /* M.2_PCH_SSD_PWREN */
PAD_CFG_GPO(GPP_D16, 1, PLTRST), PAD_CFG_GPO(GPP_D16, 1, PLTRST),
/* SRCCLK_OEB7 */
PAD_CFG_GPO(GPP_A7, 0, PLTRST),
/* SRCCLK_OEB6 */
PAD_CFG_GPO(GPP_E5, 0, PLTRST),
/* CAM1_RST */
PAD_CFG_GPO(GPP_R5, 1, PLTRST),
/* CAM2_RST */
PAD_CFG_GPO(GPP_E15, 1, PLTRST),
/* CAM1_PWR_EN */
PAD_CFG_GPO(GPP_B23, 1, PLTRST),
/* CAM2_PWR_EN */
PAD_CFG_GPO(GPP_E16, 1, PLTRST),
/* M.2_SSD_PDET_R */ /* M.2_SSD_PDET_R */
PAD_CFG_NF(GPP_A12, NONE, DEEP, NF1), PAD_CFG_NF(GPP_A12, NONE, DEEP, NF1),
/* THC0 SPI1 CLK */ /* THC0 SPI1 CLK */
@@ -134,22 +144,16 @@ static const struct pad_config gpio_table[] = {
/* SPI_MOSI(2) */ /* SPI_MOSI(2) */
PAD_CFG_NF(GPP_D12, NONE, DEEP, NF2), PAD_CFG_NF(GPP_D12, NONE, DEEP, NF2),
/* SPI_MIS0(0) */
PAD_CFG_NF(GPP_B17, NONE, DEEP, NF1),
/* SPI_MIS0(1) */ /* SPI_MIS0(1) */
PAD_CFG_NF(GPP_B21, NONE, DEEP, NF1), PAD_CFG_NF(GPP_B21, NONE, DEEP, NF1),
/* SPI_MIS0(2) */ /* SPI_MIS0(2) */
PAD_CFG_NF(GPP_D11, NONE, DEEP, NF2), PAD_CFG_NF(GPP_D11, NONE, DEEP, NF2),
/* SPI_CLK(0) */
PAD_CFG_NF(GPP_B16, NONE, DEEP, NF1),
/* SPI_CLK(1) */ /* SPI_CLK(1) */
PAD_CFG_NF(GPP_B20, NONE, DEEP, NF1), PAD_CFG_NF(GPP_B20, NONE, DEEP, NF1),
/* SPI_CLK(2) */ /* SPI_CLK(2) */
PAD_CFG_NF(GPP_D10, NONE, DEEP, NF2), PAD_CFG_NF(GPP_D10, NONE, DEEP, NF2),
/* SPI_CS(0, 0) */
PAD_CFG_NF(GPP_B15, NONE, DEEP, NF1),
/* SPI_CS(0, 1) */ /* SPI_CS(0, 1) */
PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1), PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1),
/* SPI_CS(1, 0) */ /* SPI_CS(1, 0) */
@@ -158,34 +162,26 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPP_D9, NONE, DEEP, NF2), PAD_CFG_NF(GPP_D9, NONE, DEEP, NF2),
/* I2C_SCL(0) */ /* I2C_SCL(0) */
PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),
/* I2C_SCL(1) */
PAD_CFG_NF(GPP_C19, NONE, DEEP, NF1),
/* I2C_SCL(2) */
PAD_CFG_NF(GPP_H5, NONE, DEEP, NF1), PAD_CFG_NF(GPP_H5, NONE, DEEP, NF1),
/* I2C_SCL(3) */ /* I2C_SCL(1) */
PAD_CFG_NF(GPP_H7, NONE, DEEP, NF1), PAD_CFG_NF(GPP_H7, NONE, DEEP, NF1),
/* I2C_SCL(2) */
PAD_CFG_NF(GPP_B6, NONE, DEEP, NF2),
/* I2C_SCL(3) */
PAD_CFG_NF(GPP_B8, NONE, DEEP, NF2),
/* I2C_SCL(5) */ /* I2C_SCL(5) */
PAD_CFG_NF(GPP_B10, NONE, DEEP, NF1), PAD_CFG_NF(GPP_B17, NONE, DEEP, NF2),
/* I2C_SCL(6) */
PAD_CFG_NF(GPP_T1, NONE, DEEP, NF1),
/* I2C_SCL(7) */
PAD_CFG_NF(GPP_T3, NONE, DEEP, NF1),
/* I2C_SDA(0) */ /* I2C_SDA(0) */
PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),
/* I2C_SDA(1) */
PAD_CFG_NF(GPP_C18, NONE, DEEP, NF1),
/* I2C_SDA(2) */
PAD_CFG_NF(GPP_H4, NONE, DEEP, NF1), PAD_CFG_NF(GPP_H4, NONE, DEEP, NF1),
/* I2C_SDA(3) */ /* I2C_SDA(1) */
PAD_CFG_NF(GPP_H6, NONE, DEEP, NF1), PAD_CFG_NF(GPP_H6, NONE, DEEP, NF1),
/* I2C_SDA(2) */
PAD_CFG_NF(GPP_B5, NONE, DEEP, NF2),
/* I2C_SDA(3) */
PAD_CFG_NF(GPP_B7, NONE, DEEP, NF2),
/* I2C_SDA(5) */ /* I2C_SDA(5) */
PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1), PAD_CFG_NF(GPP_B16, NONE, DEEP, NF2),
/* I2C_SDA(6) */
PAD_CFG_NF(GPP_T0, NONE, DEEP, NF1),
/* I2C_SDA(7) */
PAD_CFG_NF(GPP_T2, NONE, DEEP, NF1),
/* I2S0_SCLK */ /* I2S0_SCLK */
PAD_CFG_NF(GPP_R0, NONE, DEEP, NF2), PAD_CFG_NF(GPP_R0, NONE, DEEP, NF2),
@@ -196,15 +192,6 @@ static const struct pad_config gpio_table[] = {
/* I2S0_RXD */ /* I2S0_RXD */
PAD_CFG_NF(GPP_R3, NONE, DEEP, NF2), PAD_CFG_NF(GPP_R3, NONE, DEEP, NF2),
/* I2S1_SCLK */
PAD_CFG_NF(GPP_A23, NONE, DEEP, NF1),
/* I2S1_SFRM */
PAD_CFG_NF(GPP_R5, NONE, DEEP, NF2),
/* I2S1_TXD */
PAD_CFG_NF(GPP_R6, NONE, DEEP, NF2),
/* I2S1_RXD */
PAD_CFG_NF(GPP_R7, NONE, DEEP, NF2),
/* I2S2_SCLK */ /* I2S2_SCLK */
PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1), PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1),
/* I2S2_SFRM */ /* I2S2_SFRM */
@@ -251,10 +238,6 @@ static const struct pad_config gpio_table[] = {
/* USB2 OC0 pins */ /* USB2 OC0 pins */
PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1), PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1),
/* USB2 OC1 pins */
PAD_CFG_NF(GPP_A14, NONE, DEEP, NF1),
/* USB2 OC2 pins */
PAD_CFG_NF(GPP_A15, NONE, DEEP, NF1),
/* USB2 OC3 pins */ /* USB2 OC3 pins */
PAD_CFG_NF(GPP_A16, NONE, DEEP, NF1), PAD_CFG_NF(GPP_A16, NONE, DEEP, NF1),
@@ -263,8 +246,6 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1), PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1), PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_D8, NONE, DEEP, NF1), PAD_CFG_NF(GPP_D8, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_H10, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_H11, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1), PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1),
PAD_CFG_NF(GPP_F19, NONE, DEEP, NF1), PAD_CFG_NF(GPP_F19, NONE, DEEP, NF1),

View File

@@ -56,9 +56,6 @@
/* Enable EC backed ALS device in ACPI */ /* Enable EC backed ALS device in ACPI */
#define EC_ENABLE_ALS_DEVICE #define EC_ENABLE_ALS_DEVICE
/* Enable EC sync interrupt, EC_SYNC_IRQ is defined in baseboard/gpio.h */
#define EC_ENABLE_SYNC_IRQ
/* Enable EC backed PD MCU device in ACPI */ /* Enable EC backed PD MCU device in ACPI */
#define EC_ENABLE_PD_MCU_DEVICE #define EC_ENABLE_PD_MCU_DEVICE

View File

@@ -12,7 +12,4 @@
/* EC wake is LAN_WAKE# which is a special DeepSX wake pin */ /* EC wake is LAN_WAKE# which is a special DeepSX wake pin */
#define GPE_EC_WAKE GPE0_LAN_WAK #define GPE_EC_WAKE GPE0_LAN_WAK
/* EC sync IRQ */
#define EC_SYNC_IRQ GPP_A15_IRQ
#endif /* __BASEBOARD_GPIO_H__ */ #endif /* __BASEBOARD_GPIO_H__ */

View File

@@ -14,6 +14,8 @@ enum adl_boardid {
ADL_P_LP4_2 = 0x11, ADL_P_LP4_2 = 0x11,
/* ADL-P DDR5 RVPs */ /* ADL-P DDR5 RVPs */
ADL_P_DDR5 = 0x12, ADL_P_DDR5 = 0x12,
/* ADL-P LPDDR5 RVP */
ADL_P_LP5 = 0x13,
/* ADL-P DDR4 RVPs */ /* ADL-P DDR4 RVPs */
ADL_P_DDR4_1 = 0x14, ADL_P_DDR4_1 = 0x14,
ADL_P_DDR4_2 = 0x3F, ADL_P_DDR4_2 = 0x3F,

View File

@@ -22,29 +22,19 @@ static const struct mb_cfg ddr4_mem_config = {
static const struct mb_cfg lpddr4_mem_config = { static const struct mb_cfg lpddr4_mem_config = {
/* DQ byte map */ /* DQ byte map */
.dq_map = { .dq_map = {
{ 0, 2, 3, 1, 6, 7, 5, 4, /* Byte 0 */ { 0, 2, 3, 1, 6, 7, 5, 4, 10, 8, 11, 9, 14, 12, 13, 15 },
10, 8, 11, 9, 14, 12, 13, 15 }, /* Byte 1 */ { 12, 8, 14, 10, 11, 13, 15, 9, 5, 0, 7, 3, 6, 2, 1, 4 },
{ 12, 8, 14, 10, 11, 13, 15, 9, /* Byte 2 */ { 3, 0, 2, 1, 6, 5, 4, 7, 12, 13, 14, 15, 10, 9, 8, 11 },
5, 0, 7, 3, 6, 2, 1, 4 }, /* Byte 3 */ { 2, 6, 7, 1, 3, 4, 0, 5, 9, 13, 8, 15, 14, 11, 12, 10 },
{ 3, 0, 2, 1, 6, 5, 4, 7, /* Byte 4 */ { 3, 0, 1, 2, 7, 4, 6, 5, 10, 8, 11, 9, 14, 13, 12, 15 },
12, 13, 14, 15, 10, 9, 8, 11 }, /* Byte 5 */ { 10, 12, 14, 8, 9, 13, 15, 11, 3, 7, 6, 2, 0, 4, 5, 1 },
{ 2, 6, 7, 1, 3, 4, 0, 5, /* Byte 6 */ { 12, 15, 14, 13, 9, 10, 11, 8, 7, 4, 6, 5, 0, 1, 3, 2 },
9, 13, 8, 15, 14, 11, 12, 10 }, /* Byte 7 */ { 0, 2, 4, 3, 1, 6, 7, 5, 13, 9, 10, 11, 8, 12, 14, 15 },
{ 3, 0, 1, 2, 7, 4, 6, 5, /* Byte 0 */
10, 8, 11, 9, 14, 13, 12, 15 }, /* Byte 1 */
{ 10, 12, 14, 8, 9, 13, 15, 11, /* Byte 2 */
3, 7, 6, 2, 0, 4, 5, 1 }, /* Byte 3 */
{ 12, 15, 14, 13, 9, 10, 11, 8, /* Byte 4 */
7, 4, 6, 5, 0, 1, 3, 2 }, /* Byte 5 */
{ 0, 2, 4, 3, 1, 6, 7, 5, /* Byte 6 */
13, 9, 10, 11, 8, 12, 14, 15 }, /* Byte 7 */
}, },
/* DQS CPU<>DRAM map */ /* DQS CPU<>DRAM map */
.dqs_map = { .dqs_map = {
/* Ch 0 1 2 3 */ { 0, 1 }, { 1, 0 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 1, 0 }, { 1, 0 }, { 0, 1 }
{ 0, 1 }, { 1, 0 }, { 0, 1 }, { 0, 1 },
{ 0, 1 }, { 1, 0 }, { 1, 0 }, { 0, 1 }
}, },
.dq_pins_interleaved = false, .dq_pins_interleaved = false,
@@ -54,6 +44,34 @@ static const struct mb_cfg lpddr4_mem_config = {
.UserBd = BOARD_TYPE_MOBILE, .UserBd = BOARD_TYPE_MOBILE,
}; };
static const struct mb_cfg lp5_mem_config = {
/* DQ byte map */
.dq_map = {
{ 3, 2, 1, 0, 5, 4, 6, 7, 15, 14, 12, 13, 8, 9, 10, 11 },
{ 0, 2, 3, 1, 5, 7, 4, 6, 14, 13, 15, 12, 8, 9, 11, 10 },
{ 1, 2, 0, 3, 4, 6, 5, 7, 15, 13, 12, 14, 9, 10, 8, 11 },
{ 2, 1, 3, 0, 7, 4, 5, 6, 13, 12, 15, 14, 9, 11, 8, 10 },
{ 1, 2, 3, 0, 6, 4, 5, 7, 15, 13, 14, 12, 10, 9, 8, 11 },
{ 1, 0, 3, 2, 6, 7, 4, 5, 14, 12, 15, 13, 8, 9, 10, 11 },
{ 0, 2, 1, 3, 4, 7, 5, 6, 12, 13, 15, 14, 9, 11, 10, 8 },
{ 3, 2, 1, 0, 5, 4, 6, 7, 13, 15, 11, 12, 10, 9, 14, 8 },
},
/* DQS CPU<>DRAM map */
.dqs_map = {
{ 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }, { 0, 1 }
},
.dq_pins_interleaved = false,
.ect = false, /* Early Command Training */
.lp5_ccc_config = 0xff,
.UserBd = BOARD_TYPE_MOBILE,
};
static const struct mb_cfg ddr5_mem_config = { static const struct mb_cfg ddr5_mem_config = {
/* Baseboard uses only 100ohm Rcomp resistors */ /* Baseboard uses only 100ohm Rcomp resistors */
.rcomp_resistor = {100, 100, 100}, .rcomp_resistor = {100, 100, 100},
@@ -81,6 +99,8 @@ const struct mb_cfg *variant_memory_params(void)
return &ddr4_mem_config; return &ddr4_mem_config;
case ADL_P_DDR5: case ADL_P_DDR5:
return &ddr5_mem_config; return &ddr5_mem_config;
case ADL_P_LP5:
return &lp5_mem_config;
default: default:
die("unsupported board id : 0x%x\n", board_id); die("unsupported board id : 0x%x\n", board_id);
} }

View File

@@ -31,7 +31,7 @@ void mainboard_memory_init_params(FSPM_UPD *mupd)
int board_id = get_board_id(); int board_id = get_board_id();
const bool half_populated = false; const bool half_populated = false;
const struct spd_info lpddr4_spd_info = { const struct spd_info lp4_lp5_spd_info = {
.read_type = READ_SPD_CBFS, .read_type = READ_SPD_CBFS,
.spd_spec.spd_index = get_spd_index(), .spd_spec.spd_index = get_spd_index(),
}; };
@@ -56,7 +56,8 @@ void mainboard_memory_init_params(FSPM_UPD *mupd)
break; break;
case ADL_P_LP4_1: case ADL_P_LP4_1:
case ADL_P_LP4_2: case ADL_P_LP4_2:
memcfg_init(&mupd->FspmConfig, mem_config, &lpddr4_spd_info, half_populated); case ADL_P_LP5:
memcfg_init(&mupd->FspmConfig, mem_config, &lp4_lp5_spd_info, half_populated);
break; break;
default: default:
die("Unknown board id = 0x%x\n", board_id); die("Unknown board id = 0x%x\n", board_id);

View File

@@ -1,4 +1,6 @@
## SPDX-License-Identifier: GPL-2.0-only ## SPDX-License-Identifier: GPL-2.0-only
SPD_SOURCES = adlrvp_lp4 #0b000 SPD_SOURCES = adlrvp_lp4 # 0b000
SPD_SOURCES += empty # 0b001 SPD_SOURCES += empty # 0b001
SPD_SOURCES += empty # 0b002
SPD_SOURCES += adlrvp_lp5 # 0b003

View File

@@ -1,11 +1,11 @@
23 12 11 0E 15 21 B5 08 00 40 00 00 0A 01 00 00 23 11 11 0E 15 21 B5 08 00 40 00 00 0A 01 00 00
48 00 04 00 D2 54 01 00 87 40 90 A8 90 C0 08 60 48 00 04 FF 92 55 00 00 8C 00 90 A8 90 C0 08 60
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 E4 00 60 A1 AC 00 00 00 00 00 00 00 00 00 00 00 00 7F E1 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -0,0 +1,32 @@
23 10 13 0E 15 1A 95 08 00 40 00 00 02 01 00 00
48 00 0A FF 92 55 05 00 AA 00 98 A8 90 90 06 C0
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 7F 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 20 00 00 00 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 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 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

View File

@@ -1,37 +1,38 @@
FLASH@0xff000000 0x1000000 { FLASH@0xff000000 0x1000000 {
SI_ALL@0x0 0x600000 { SI_ALL@0x0 0x381000 {
SI_DESC@0x0 0x1000 SI_DESC@0x0 0x1000
SI_EC@0x1000 0x80000 SI_EC@0x1000 0x80000
SI_ME@0x81000 0x57F000 SI_ME@0x81000 0x300000
} }
SI_BIOS@0x600000 0xA00000 { SI_BIOS@0x381000 0xc7f000 {
RW_SECTION_A@0x0 0x2d0000 { RW_LEGACY(CBFS)@0x0 0x100000
VBLOCK_A@0x0 0x10000 RW_SECTION_A@0x100000 0x3a4800 {
FW_MAIN_A(CBFS)@0x10000 0x12ffc0 VBLOCK_A@0x0 0x2000
RW_FWID_A@0x13ffc0 0x40 FW_MAIN_A(CBFS)@0x2000 0x2127c0
ME_RW_A(CBFS)@0x140000 0x190000 RW_FWID_A@0x2147c0 0x40
ME_RW_A(CBFS)@0x214800 0x190000
} }
RW_SECTION_B@0x2d0000 0x2d0000 { RW_SECTION_B@0x4a4800 0x3a4800 {
VBLOCK_B@0x0 0x10000 VBLOCK_B@0x0 0x2000
FW_MAIN_B(CBFS)@0x10000 0x12ffc0 FW_MAIN_B(CBFS)@0x2000 0x2127c0
RW_FWID_B@0x13ffc0 0x40 RW_FWID_B@0x2147c0 0x40
ME_RW_B(CBFS)@0x140000 0x190000 ME_RW_B(CBFS)@0x214800 0x190000
} }
RW_MISC@0x5a0000 0x30000 { RW_MISC@0x849000 0x36000 {
UNIFIED_MRC_CACHE@0x0 0x20000 { UNIFIED_MRC_CACHE(PRESERVE)@0x0 0x30000 {
RECOVERY_MRC_CACHE@0x0 0x10000 RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000 RW_MRC_CACHE@0x10000 0x20000
} }
RW_ELOG(PRESERVE)@0x20000 0x4000 RW_ELOG(PRESERVE)@0x30000 0x1000
RW_SHARED@0x24000 0x4000 { RW_SHARED@0x31000 0x1000 {
SHARED_DATA@0x0 0x2000 SHARED_DATA@0x0 0x1000
VBLOCK_DEV@0x2000 0x2000
} }
RW_VPD(PRESERVE)@0x28000 0x2000 RW_VPD(PRESERVE)@0x32000 0x2000
RW_NVRAM(PRESERVE)@0x2a000 0x6000 RW_NVRAM(PRESERVE)@0x34000 0x2000
} }
RW_LEGACY(CBFS)@0x5d0000 0x30000 # Make WP_RO region align with SPI vendor
WP_RO@0x600000 0x400000 { # memory protected range specification.
WP_RO@0x87f000 0x400000 {
RO_VPD(PRESERVE)@0x0 0x4000 RO_VPD(PRESERVE)@0x0 0x4000
RO_SECTION@0x4000 0x3fc000 { RO_SECTION@0x4000 0x3fc000 {
FMAP@0x0 0x800 FMAP@0x0 0x800

View File

@@ -1,9 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/ramstage.h> #include <device/device.h>
#include <mainboard/gpio.h> #include <mainboard/gpio.h>
void mainboard_silicon_init_params(FSP_SIL_UPD *params) static void init_mainboard(void *chip_info)
{ {
mainboard_configure_gpios(); mainboard_configure_gpios();
} }
struct chip_operations mainboard_ops = {
.init = init_mainboard,
};

View File

@@ -2,18 +2,18 @@ if BOARD_KONTRON_COME_MAL10
config BOARD_SPECIFIC_OPTIONS config BOARD_SPECIFIC_OPTIONS
def_bool y def_bool y
select BOARD_ROMSIZE_KB_16384
select DRIVERS_I2C_NCT7802Y
select EC_KONTRON_KEMPLD
select HAVE_ACPI_TABLES select HAVE_ACPI_TABLES
select HAVE_ACPI_RESUME select HAVE_ACPI_RESUME
select HAVE_OPTION_TABLE
select HAVE_CMOS_DEFAULT select HAVE_CMOS_DEFAULT
select HAVE_OPTION_TABLE
select INTEL_GMA_HAVE_VBT select INTEL_GMA_HAVE_VBT
select SOC_INTEL_APOLLOLAKE
select BOARD_ROMSIZE_KB_16384
select ONBOARD_VGA_IS_PRIMARY
select MAINBOARD_HAS_LIBGFXINIT
select MAINBOARD_HAS_CRB_TPM select MAINBOARD_HAS_CRB_TPM
select EC_KONTRON_KEMPLD select MAINBOARD_HAS_LIBGFXINIT
select DRIVERS_I2C_NCT7802Y select ONBOARD_VGA_IS_PRIMARY
select SOC_INTEL_APOLLOLAKE
config MAINBOARD_DIR config MAINBOARD_DIR
string string

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include "include/carrier/gpio.h" #include <carrier/gpio.h>
static const struct pad_config gpio_table[] = { static const struct pad_config gpio_table[] = {
PAD_CFG_GPIO_DRIVER_HI_Z(GPIO_0, DN_20K, DEEP, IGNORE, SAME), PAD_CFG_GPIO_DRIVER_HI_Z(GPIO_0, DN_20K, DEEP, IGNORE, SAME),

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include "include/variant/gpio.h" #include <variant/gpio.h>
static const struct pad_config gpio_table[] = { static const struct pad_config gpio_table[] = {
/* SPI */ /* SPI */

View File

@@ -180,6 +180,30 @@ static void dl_oem_smbios_strings(struct device *dev, struct smbios_type11 *t)
} }
} }
static const struct port_information smbios_type8_info[] = {
{
.internal_reference_designator = "JCN18 - CPU MIPI60",
.internal_connector_type = CONN_OTHER,
.external_reference_designator = "",
.external_connector_type = CONN_NONE,
.port_type = TYPE_OTHER_PORT
},
{
.internal_reference_designator = "JCN32 - TPM_CONN",
.internal_connector_type = CONN_OTHER,
.external_reference_designator = "",
.external_connector_type = CONN_NONE,
.port_type = TYPE_OTHER_PORT
},
{
.internal_reference_designator = "JCN7 - USB type C",
.internal_connector_type = CONN_USB_TYPE_C,
.external_reference_designator = "",
.external_connector_type = CONN_NONE,
.port_type = TYPE_USB
},
};
static int create_smbios_type9(int *handle, unsigned long *current) static int create_smbios_type9(int *handle, unsigned long *current)
{ {
int index; int index;
@@ -281,6 +305,13 @@ static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long
{ {
int len = 0; int len = 0;
// add port information
len += smbios_write_type8(
current, handle,
smbios_type8_info,
ARRAY_SIZE(smbios_type8_info)
);
len += create_smbios_type9(handle, current); len += create_smbios_type9(handle, current);
return len; return len;

View File

@@ -1,6 +1,6 @@
## SPDX-License-Identifier: GPL-2.0-only ## SPDX-License-Identifier: GPL-2.0-only
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR) CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
romstage-y += romstage.c romstage-y += romstage.c

View File

@@ -4,10 +4,9 @@
#include <console/console.h> #include <console/console.h>
#include <cpu/x86/smm.h> #include <cpu/x86/smm.h>
#include <ec/acpi/ec.h> #include <ec/acpi/ec.h>
#include <mainboard/ec.h>
#include <timer.h> #include <timer.h>
#include "ec.h"
#define EC_STATUS 0x50 #define EC_STATUS 0x50
#define EC_RUNNING (1 << 1) #define EC_RUNNING (1 << 1)
#define EC_DEVICE_CONTROL_1 0x80 #define EC_DEVICE_CONTROL_1 0x80

View File

@@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef MAINBOARD_GPIO_H
#define MAINBOARD_GPIO_H
void mainboard_configure_gpios(void);
#endif

View File

@@ -7,6 +7,4 @@
void variant_romstage_params(FSPM_UPD *); void variant_romstage_params(FSPM_UPD *);
const struct pad_config *variant_gpio_table(size_t *num);
#endif /* _VARIANT_H_ */ #endif /* _VARIANT_H_ */

View File

@@ -1,8 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <device/device.h> #include <device/device.h>
#include <mainboard/ec.h>
#include "ec.h"
static void mainboard_dev_init(struct device *dev) static void mainboard_dev_init(struct device *dev)
{ {

View File

@@ -1,20 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <mainboard/gpio.h>
#include <option.h> #include <option.h>
#include <soc/cnl_memcfg_init.h> #include <soc/cnl_memcfg_init.h>
#include <soc/gpio.h> #include <soc/gpio.h>
#include <soc/romstage.h> #include <soc/romstage.h>
#include <variant.h>
#include "variant.h"
static void mainboard_init(void)
{
const struct pad_config *pads;
size_t num;
pads = variant_gpio_table(&num);
gpio_configure_pads(pads, num);
}
void mainboard_memory_init_params(FSPM_UPD *memupd) void mainboard_memory_init_params(FSPM_UPD *memupd)
{ {
@@ -40,7 +31,7 @@ void mainboard_memory_init_params(FSPM_UPD *memupd)
variant_romstage_params(memupd); variant_romstage_params(memupd);
mainboard_init(); mainboard_configure_gpios();
} }
__weak void variant_romstage_params(FSPM_UPD *const mupd) __weak void variant_romstage_params(FSPM_UPD *const mupd)

View File

@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/gpio.h> #include <soc/gpio.h>
#include "variant.h" #include <mainboard/gpio.h>
static const struct pad_config gpio_table[] = { static const struct pad_config gpio_table[] = {
/* GPP_A14 GPIO */ PAD_NC(GPP_A14, NONE), /* GPP_A14 GPIO */ PAD_NC(GPP_A14, NONE),
@@ -122,8 +122,7 @@ static const struct pad_config gpio_table[] = {
/* GPP_J11 A4WP_PRESENT */ PAD_CFG_NF(GPP_J11, NONE, DEEP, NF1), /* GPP_J11 A4WP_PRESENT */ PAD_CFG_NF(GPP_J11, NONE, DEEP, NF1),
}; };
const struct pad_config *variant_gpio_table(size_t *num) void mainboard_configure_gpios(void)
{ {
*num = ARRAY_SIZE(gpio_table); gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
return gpio_table;
} }

View File

@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/gpio.h> #include <soc/gpio.h>
#include "variant.h" #include <mainboard/gpio.h>
static const struct pad_config gpio_table[] = { static const struct pad_config gpio_table[] = {
/* GPP_A14 GPIO 0x0000002644000300 */ PAD_NC(GPP_A14, NONE), /* GPP_A14 GPIO 0x0000002644000300 */ PAD_NC(GPP_A14, NONE),
@@ -121,8 +121,7 @@ static const struct pad_config gpio_table[] = {
/* GPP_J11 A4WP_PRESENT 0x0000003944000700 */ PAD_CFG_NF(GPP_J11, NONE, DEEP, NF1), /* GPP_J11 A4WP_PRESENT 0x0000003944000700 */ PAD_CFG_NF(GPP_J11, NONE, DEEP, NF1),
}; };
const struct pad_config *variant_gpio_table(size_t *num) void mainboard_configure_gpios(void)
{ {
*num = ARRAY_SIZE(gpio_table); gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table));
return gpio_table;
} }

View File

@@ -3,8 +3,7 @@
#include <option.h> #include <option.h>
#include <console/console.h> #include <console/console.h>
#include <fsp/soc_binding.h> #include <fsp/soc_binding.h>
#include <variant.h>
#include "../../variant.h"
void variant_romstage_params(FSPM_UPD *const mupd) void variant_romstage_params(FSPM_UPD *const mupd)
{ {

View File

@@ -1 +1,2 @@
subdirs-$(CONFIG_SOC_AMD_COMMON_BLOCK_CAR) += car subdirs-$(CONFIG_SOC_AMD_COMMON_BLOCK_CAR) += car
subdirs-$(CONFIG_SOC_AMD_COMMON_BLOCK_NONCAR) += noncar

View File

@@ -0,0 +1 @@
bootblock-y += pre_c.S

View File

@@ -1,6 +1,14 @@
config SOC_AMD_COMMON_BLOCK_PCI config SOC_AMD_COMMON_BLOCK_PCI
bool bool
default n default n
select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
help help
This option builds functions used to program PCI interrupt This option builds functions used to program PCI interrupt
routing, both PIC and APIC modes. routing, both PIC and APIC modes.
config SOC_AMD_COMMON_BLOCK_PCI_MMCONF
bool
default n
help
Selecting this option adds the AMD-common enable_pci_mmconf function
to the build.

View File

@@ -1,8 +1,11 @@
ramstage-$(CONFIG_SOC_AMD_COMMON_BLOCK_PCI) += amd_pci_util.c ramstage-$(CONFIG_SOC_AMD_COMMON_BLOCK_PCI) += amd_pci_util.c
# FIXME: This gets added when CONFIG_SOC_AMD_COMMON is set, which is a bit unexpected. ifeq ($(CONFIG_SOC_AMD_COMMON_BLOCK_PCI_MMCONF),y)
bootblock-y += amd_pci_mmconf.c bootblock-y += amd_pci_mmconf.c
verstage_x86-y += amd_pci_mmconf.c verstage_x86-y += amd_pci_mmconf.c
romstage-y += amd_pci_mmconf.c romstage-y += amd_pci_mmconf.c
postcar-y += amd_pci_mmconf.c postcar-y += amd_pci_mmconf.c
ramstage-y += amd_pci_mmconf.c ramstage-y += amd_pci_mmconf.c
endif # CONFIG_SOC_AMD_COMMON_BLOCK_PCI_MMCONF

View File

@@ -4,3 +4,5 @@ verstage-y += vbnv_cmos.c
romstage-y += vbnv_cmos.c romstage-y += vbnv_cmos.c
ramstage-y += vbnv_cmos.c ramstage-y += vbnv_cmos.c
endif endif
bootblock-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += vboot_bootblock.c

View File

@@ -2,13 +2,23 @@
#include <amdblocks/reset.h> #include <amdblocks/reset.h>
#include <bl_uapp/bl_syscall_public.h> #include <bl_uapp/bl_syscall_public.h>
#include <bootblock_common.h>
#include <console/console.h> #include <console/console.h>
#include <pc80/mc146818rtc.h> #include <pc80/mc146818rtc.h>
#include <security/vboot/vbnv.h> #include <security/vboot/vbnv.h>
#include <security/vboot/symbols.h> #include <security/vboot/symbols.h>
#include <soc/psp_transfer.h> #include <soc/psp_transfer.h>
#include <timestamp.h>
#include <2struct.h> #include <2struct.h>
static int transfer_buffer_valid(const struct transfer_info_struct *ptr)
{
if (ptr->magic_val == TRANSFER_MAGIC_VAL)
return 1;
else
return 0;
}
void verify_psp_transfer_buf(void) void verify_psp_transfer_buf(void)
{ {
if (*(uint32_t *)_vboot2_work == VB2_SHARED_DATA_MAGIC) { if (*(uint32_t *)_vboot2_work == VB2_SHARED_DATA_MAGIC) {
@@ -37,7 +47,7 @@ void show_psp_transfer_info(void)
struct transfer_info_struct *info = (struct transfer_info_struct *) struct transfer_info_struct *info = (struct transfer_info_struct *)
(void *)(uintptr_t)_transfer_buffer; (void *)(uintptr_t)_transfer_buffer;
if (info->magic_val == TRANSFER_MAGIC_VAL) { if (transfer_buffer_valid(info)) {
if ((info->psp_info & PSP_INFO_VALID) == 0) { if ((info->psp_info & PSP_INFO_VALID) == 0) {
printk(BIOS_INFO, "No PSP info found in transfer buffer.\n"); printk(BIOS_INFO, "No PSP info found in transfer buffer.\n");
return; return;
@@ -51,3 +61,43 @@ void show_psp_transfer_info(void)
"Production" : "Pre-Production"); "Production" : "Pre-Production");
} }
} }
void boot_with_psp_timestamp(uint64_t base_timestamp)
{
const struct transfer_info_struct *info = (const struct transfer_info_struct *)
(void *)(uintptr_t)_transfer_buffer;
if (!transfer_buffer_valid(info) || info->timestamp == 0)
return;
/*
* info->timestamp is PSP's timestamp (in microseconds)
* when x86 processor is released.
*/
uint64_t psp_last_ts = info->timestamp;
int i;
struct timestamp_table *psp_ts_table =
(struct timestamp_table *)(void *)
((uintptr_t)_transfer_buffer + info->timestamp_offset);
/* new base_timestamp will be offset for all PSP timestamps. */
base_timestamp -= psp_last_ts;
for (i = 0; i < psp_ts_table->num_entries; i++) {
struct timestamp_entry *tse = &psp_ts_table->entries[i];
/*
* We ignore the time between x86 processor release and bootblock.
* Since timestamp_add subtracts base_time, we first add old base_time
* to make it absolute then add base_timestamp again since
* it'll be a new base_time.
*
* We don't need to convert unit since both PSP and coreboot
* will use 1us granularity.
*
*/
tse->entry_stamp += psp_ts_table->base_time + base_timestamp;
}
bootblock_main_with_timestamp(base_timestamp, psp_ts_table->entries,
psp_ts_table->num_entries);
}

View File

@@ -376,12 +376,6 @@ config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ
int int
default 150 default 150
config PICASSO_LPC_IOMUX
bool
help
Picasso's LPC bus signals are MUXed with some of the EMMC signals.
Select this option if LPC signals are required.
config DISABLE_SPI_FLASH_ROM_SHARING config DISABLE_SPI_FLASH_ROM_SHARING
def_bool n def_bool n
help help
@@ -406,14 +400,6 @@ config FSP_TEMP_RAM_SIZE
menu "PSP Configuration Options" menu "PSP Configuration Options"
config AMDFW_OUTSIDE_CBFS
bool
default n
help
The AMDFW (PSP) is typically locatable in cbfs. Select this
option to manually attach the generated amdfw.rom outside of
cbfs. The location is selected by the FWM position.
config AMD_FWM_POSITION_INDEX config AMD_FWM_POSITION_INDEX
int "Firmware Directory Table location (0 to 5)" int "Firmware Directory Table location (0 to 5)"
range 0 5 range 0 5

View File

@@ -11,8 +11,7 @@ subdirs-y += ../../../cpu/x86/pae
subdirs-y += ../../../cpu/x86/smm subdirs-y += ../../../cpu/x86/smm
subdirs-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += psp_verstage subdirs-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += psp_verstage
bootblock-y += bootblock/pre_c.S bootblock-y += bootblock.c
bootblock-y += bootblock/bootblock.c
bootblock-y += aoac.c bootblock-y += aoac.c
bootblock-y += southbridge.c bootblock-y += southbridge.c
bootblock-y += i2c.c bootblock-y += i2c.c
@@ -24,7 +23,6 @@ bootblock-y += gpio.c
bootblock-y += smi_util.c bootblock-y += smi_util.c
bootblock-y += config.c bootblock-y += config.c
bootblock-y += reset.c bootblock-y += reset.c
bootblock-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += bootblock/vboot_bootblock.c
romstage-y += i2c.c romstage-y += i2c.c
romstage-y += romstage.c romstage-y += romstage.c

View File

@@ -21,7 +21,7 @@
* waiting for each device to become available, a single delay will be * waiting for each device to become available, a single delay will be
* executed. The console UART is handled separately from this table. * executed. The console UART is handled separately from this table.
*/ */
const static int aoac_devs[] = { const static unsigned int aoac_devs[] = {
FCH_AOAC_DEV_AMBA, FCH_AOAC_DEV_AMBA,
FCH_AOAC_DEV_I2C2, FCH_AOAC_DEV_I2C2,
FCH_AOAC_DEV_I2C3, FCH_AOAC_DEV_I2C3,
@@ -45,7 +45,7 @@ void power_off_aoac_device(unsigned int dev)
{ {
uint8_t byte; uint8_t byte;
/* Power on the UART and AMBA devices */ /* Power off the UART and AMBA devices */
byte = aoac_read8(AOAC_DEV_D3_CTL(dev)); byte = aoac_read8(AOAC_DEV_D3_CTL(dev));
byte &= ~FCH_AOAC_PWR_ON_DEV; byte &= ~FCH_AOAC_PWR_ON_DEV;
aoac_write8(AOAC_DEV_D3_CTL(dev), byte); aoac_write8(AOAC_DEV_D3_CTL(dev), byte);

View File

@@ -3,7 +3,6 @@
#include <stdint.h> #include <stdint.h>
#include <symbols.h> #include <symbols.h>
#include <amdblocks/reset.h> #include <amdblocks/reset.h>
#include <timestamp.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <console/console.h> #include <console/console.h>
#include <cpu/x86/cache.h> #include <cpu/x86/cache.h>
@@ -18,7 +17,6 @@
#include <soc/i2c.h> #include <soc/i2c.h>
#include <amdblocks/amd_pci_mmconf.h> #include <amdblocks/amd_pci_mmconf.h>
#include <acpi/acpi.h> #include <acpi/acpi.h>
#include <security/vboot/vbnv.h>
asmlinkage void bootblock_resume_entry(void); asmlinkage void bootblock_resume_entry(void);
@@ -110,54 +108,6 @@ static void write_resume_eip(void)
wrmsr(S3_RESUME_EIP_MSR, s3_resume_entry); wrmsr(S3_RESUME_EIP_MSR, s3_resume_entry);
} }
static int transfer_buffer_valid(const struct transfer_info_struct *ptr)
{
if (ptr->magic_val == TRANSFER_MAGIC_VAL)
return 1;
else
return 0;
}
static void boot_with_psp_timestamp(uint64_t base_timestamp)
{
const struct transfer_info_struct *info = (const struct transfer_info_struct *)
(void *)(uintptr_t)_transfer_buffer;
if (!transfer_buffer_valid(info) || info->timestamp == 0)
return;
/*
* info->timestamp is PSP's timestamp (in microseconds)
* when x86 processor is released.
*/
uint64_t psp_last_ts = info->timestamp;
int i;
struct timestamp_table *psp_ts_table =
(struct timestamp_table *)(void *)
((uintptr_t)_transfer_buffer + info->timestamp_offset);
/* new base_timestamp will be offset for all PSP timestamps. */
base_timestamp -= psp_last_ts;
for (i = 0; i < psp_ts_table->num_entries; i++) {
struct timestamp_entry *tse = &psp_ts_table->entries[i];
/*
* We ignore the time between x86 processor release and bootblock.
* Since timestamp_add subtracts base_time, we first add old base_time
* to make it absolute then add base_timestamp again since
* it'll be a new base_time.
*
* We don't need to convert unit since both PSP and coreboot
* will use 1us granularity.
*
*/
tse->entry_stamp += psp_ts_table->base_time + base_timestamp;
}
bootblock_main_with_timestamp(base_timestamp, psp_ts_table->entries,
psp_ts_table->num_entries);
}
asmlinkage void bootblock_c_entry(uint64_t base_timestamp) asmlinkage void bootblock_c_entry(uint64_t base_timestamp)
{ {
set_caching(); set_caching();

View File

@@ -46,6 +46,8 @@ _Static_assert(sizeof(struct transfer_info_struct) == TRANSFER_INFO_SIZE, \
void verify_psp_transfer_buf(void); void verify_psp_transfer_buf(void);
/* Display the transfer block's PSP_info data */ /* Display the transfer block's PSP_info data */
void show_psp_transfer_info(void); void show_psp_transfer_info(void);
/* Called by bootblock_c_entry in the VBOOT_STARTS_BEFORE_BOOTBLOCK case */
void boot_with_psp_timestamp(uint64_t base_timestamp);
#endif #endif

View File

@@ -12,7 +12,7 @@ subdirs-y += ../../../cpu/x86/smm
bootblock-$(CONFIG_STONEYRIDGE_UART) += uart.c bootblock-$(CONFIG_STONEYRIDGE_UART) += uart.c
bootblock-y += BiosCallOuts.c bootblock-y += BiosCallOuts.c
bootblock-y += bootblock/bootblock.c bootblock-y += bootblock.c
bootblock-y += gpio.c bootblock-y += gpio.c
bootblock-y += i2c.c bootblock-y += i2c.c
bootblock-y += enable_usbdebug.c bootblock-y += enable_usbdebug.c

View File

@@ -190,16 +190,20 @@
#define DEBUG_PORT_MASK (BIT(16) | BIT(17) | BIT(18)) #define DEBUG_PORT_MASK (BIT(16) | BIT(17) | BIT(18))
/* FCH AOAC Registers 0xfed81e00 */ /* FCH AOAC Registers 0xfed81e00 */
#define FCH_AOAC_D3_CONTROL_CLK_GEN 0x40 #define AOAC_DEV_D3_CTL(device) (0x40 + device * 2)
#define FCH_AOAC_D3_CONTROL_I2C0 0x4a #define AOAC_DEV_D3_STATE(device) (AOAC_DEV_D3_CTL(device) + 1)
#define FCH_AOAC_D3_CONTROL_I2C1 0x4c
#define FCH_AOAC_D3_CONTROL_I2C2 0x4e #define FCH_AOAC_DEV_CLK_GEN 0
#define FCH_AOAC_D3_CONTROL_I2C3 0x50 #define FCH_AOAC_DEV_I2C0 5
#define FCH_AOAC_D3_CONTROL_UART0 0x56 #define FCH_AOAC_DEV_I2C1 6
#define FCH_AOAC_D3_CONTROL_UART1 0x58 #define FCH_AOAC_DEV_I2C2 7
#define FCH_AOAC_D3_CONTROL_AMBA 0x62 #define FCH_AOAC_DEV_I2C3 8
#define FCH_AOAC_D3_CONTROL_USB2 0x64 #define FCH_AOAC_DEV_UART0 11
#define FCH_AOAC_D3_CONTROL_USB3 0x6e #define FCH_AOAC_DEV_UART1 12
#define FCH_AOAC_DEV_AMBA 17
#define FCH_AOAC_DEV_USB2 18
#define FCH_AOAC_DEV_USB3 23
/* Bit definitions for all FCH_AOAC_D3_CONTROL_* Registers */ /* Bit definitions for all FCH_AOAC_D3_CONTROL_* Registers */
#define FCH_AOAC_TARGET_DEVICE_STATE (BIT(0) + BIT(1)) #define FCH_AOAC_TARGET_DEVICE_STATE (BIT(0) + BIT(1))
#define FCH_AOAC_DEVICE_STATE BIT(2) #define FCH_AOAC_DEVICE_STATE BIT(2)
@@ -209,16 +213,6 @@
#define FCH_AOAC_SW_RST_B BIT(6) #define FCH_AOAC_SW_RST_B BIT(6)
#define FCH_AOAC_IS_SW_CONTROL BIT(7) #define FCH_AOAC_IS_SW_CONTROL BIT(7)
#define FCH_AOAC_D3_STATE_CLK_GEN 0x41
#define FCH_AOAC_D3_STATE_I2C0 0x4b
#define FCH_AOAC_D3_STATE_I2C1 0x4d
#define FCH_AOAC_D3_STATE_I2C2 0x4f
#define FCH_AOAC_D3_STATE_I2C3 0x51
#define FCH_AOAC_D3_STATE_UART0 0x57
#define FCH_AOAC_D3_STATE_UART1 0x59
#define FCH_AOAC_D3_STATE_AMBA 0x63
#define FCH_AOAC_D3_STATE_USB2 0x65
#define FCH_AOAC_D3_STATE_USB3 0x6f
/* Bit definitions for all FCH_AOAC_D3_STATE_* Registers */ /* Bit definitions for all FCH_AOAC_D3_STATE_* Registers */
#define FCH_AOAC_PWR_RST_STATE BIT(0) #define FCH_AOAC_PWR_RST_STATE BIT(0)
#define FCH_AOAC_RST_CLK_OK_STATE BIT(1) #define FCH_AOAC_RST_CLK_OK_STATE BIT(1)
@@ -292,11 +286,6 @@ void soc_enable_psp_early(void);
#define RST_CMD BIT(2) #define RST_CMD BIT(2)
#define SYS_RST BIT(1) #define SYS_RST BIT(1)
struct stoneyridge_aoac {
int enable;
int status;
};
typedef struct aoac_devs { typedef struct aoac_devs {
unsigned int :5; unsigned int :5;
unsigned int ic0e:1; /* 5: I2C0 */ unsigned int ic0e:1; /* 5: I2C0 */

View File

@@ -31,14 +31,13 @@
* waiting for each device to become available, a single delay will be * waiting for each device to become available, a single delay will be
* executed. * executed.
*/ */
static const struct stoneyridge_aoac aoac_devs[] = { static const unsigned int aoac_devs[] = {
{ (FCH_AOAC_D3_CONTROL_UART0 + CONFIG_UART_FOR_CONSOLE * 2), FCH_AOAC_DEV_UART0 + CONFIG_UART_FOR_CONSOLE * 2,
(FCH_AOAC_D3_STATE_UART0 + CONFIG_UART_FOR_CONSOLE * 2) }, FCH_AOAC_DEV_AMBA,
{ FCH_AOAC_D3_CONTROL_AMBA, FCH_AOAC_D3_STATE_AMBA }, FCH_AOAC_DEV_I2C0,
{ FCH_AOAC_D3_CONTROL_I2C0, FCH_AOAC_D3_STATE_I2C0 }, FCH_AOAC_DEV_I2C1,
{ FCH_AOAC_D3_CONTROL_I2C1, FCH_AOAC_D3_STATE_I2C1 }, FCH_AOAC_DEV_I2C2,
{ FCH_AOAC_D3_CONTROL_I2C2, FCH_AOAC_D3_STATE_I2C2 }, FCH_AOAC_DEV_I2C3,
{ FCH_AOAC_D3_CONTROL_I2C3, FCH_AOAC_D3_STATE_I2C3 }
}; };
static int is_sata_config(void) static int is_sata_config(void)
@@ -146,21 +145,21 @@ const struct irq_idx_name *sb_get_apic_reg_association(size_t *size)
return irq_association; return irq_association;
} }
static void power_on_aoac_device(int aoac_device_control_register) static void power_on_aoac_device(unsigned int dev)
{ {
uint8_t byte; uint8_t byte;
/* Power on the UART and AMBA devices */ /* Power on the UART and AMBA devices */
byte = aoac_read8(aoac_device_control_register); byte = aoac_read8(AOAC_DEV_D3_CTL(dev));
byte |= FCH_AOAC_PWR_ON_DEV; byte |= FCH_AOAC_PWR_ON_DEV;
aoac_write8(aoac_device_control_register, byte); aoac_write8(AOAC_DEV_D3_CTL(dev), byte);
} }
static bool is_aoac_device_enabled(int aoac_device_status_register) static bool is_aoac_device_enabled(unsigned int dev)
{ {
uint8_t byte; uint8_t byte;
byte = aoac_read8(aoac_device_status_register); byte = aoac_read8(AOAC_DEV_D3_STATE(dev));
byte &= (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE); byte &= (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE);
if (byte == (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE)) if (byte == (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE))
return true; return true;
@@ -174,14 +173,14 @@ void enable_aoac_devices(void)
int i; int i;
for (i = 0; i < ARRAY_SIZE(aoac_devs); i++) for (i = 0; i < ARRAY_SIZE(aoac_devs); i++)
power_on_aoac_device(aoac_devs[i].enable); power_on_aoac_device(aoac_devs[i]);
/* Wait for AOAC devices to indicate power and clock OK */ /* Wait for AOAC devices to indicate power and clock OK */
do { do {
udelay(100); udelay(100);
status = true; status = true;
for (i = 0; i < ARRAY_SIZE(aoac_devs); i++) for (i = 0; i < ARRAY_SIZE(aoac_devs); i++)
status &= is_aoac_device_enabled(aoac_devs[i].status); status &= is_aoac_device_enabled(aoac_devs[i]);
} while (!status); } while (!status);
} }
@@ -545,14 +544,14 @@ static void set_sb_final_nvs(void)
if (gnvs == NULL) if (gnvs == NULL)
return; return;
gnvs->aoac.ic0e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_I2C0); gnvs->aoac.ic0e = is_aoac_device_enabled(FCH_AOAC_DEV_I2C0);
gnvs->aoac.ic1e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_I2C1); gnvs->aoac.ic1e = is_aoac_device_enabled(FCH_AOAC_DEV_I2C1);
gnvs->aoac.ic2e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_I2C2); gnvs->aoac.ic2e = is_aoac_device_enabled(FCH_AOAC_DEV_I2C2);
gnvs->aoac.ic3e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_I2C3); gnvs->aoac.ic3e = is_aoac_device_enabled(FCH_AOAC_DEV_I2C3);
gnvs->aoac.ut0e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_UART0); gnvs->aoac.ut0e = is_aoac_device_enabled(FCH_AOAC_DEV_UART0);
gnvs->aoac.ut1e = is_aoac_device_enabled(FCH_AOAC_D3_STATE_UART1); gnvs->aoac.ut1e = is_aoac_device_enabled(FCH_AOAC_DEV_UART1);
gnvs->aoac.ehce = is_aoac_device_enabled(FCH_AOAC_D3_STATE_USB2); gnvs->aoac.ehce = is_aoac_device_enabled(FCH_AOAC_DEV_USB2);
gnvs->aoac.xhce = is_aoac_device_enabled(FCH_AOAC_D3_STATE_USB3); gnvs->aoac.xhce = is_aoac_device_enabled(FCH_AOAC_DEV_USB3);
/* Rely on these being in sync with devicetree */ /* Rely on these being in sync with devicetree */
sd = pcidev_path_on_root(SD_DEVFN); sd = pcidev_path_on_root(SD_DEVFN);
gnvs->aoac.sd_e = sd && sd->enabled ? 1 : 0; gnvs->aoac.sd_e = sd && sd->enabled ? 1 : 0;

View File

@@ -9,6 +9,7 @@
#include <rules.h> #include <rules.h>
#include <intelblocks/msr.h> #include <intelblocks/msr.h>
.code32
.global bootblock_pre_c_entry .global bootblock_pre_c_entry
bootblock_pre_c_entry: bootblock_pre_c_entry:
@@ -161,6 +162,15 @@ car_init_done:
/* Need to align stack to 16 bytes at call instruction. Account for /* Need to align stack to 16 bytes at call instruction. Account for
the two pushes below. */ the two pushes below. */
andl $0xfffffff0, %esp andl $0xfffffff0, %esp
#if ENV_X86_64
#include <cpu/x86/64bit/entry64.inc>
movd %mm2, %rdi
shlq $32, %rdi
movd %mm1, %rsi
or %rsi, %rdi
movd %mm0, %rsi
#else
sub $8, %esp sub $8, %esp
/* push TSC value to stack */ /* push TSC value to stack */
@@ -168,6 +178,7 @@ car_init_done:
pushl %eax /* tsc[63:32] */ pushl %eax /* tsc[63:32] */
movd %mm1, %eax movd %mm1, %eax
pushl %eax /* tsc[31:0] */ pushl %eax /* tsc[31:0] */
#endif
before_carstage: before_carstage:
post_code(0x2A) post_code(0x2A)

View File

@@ -28,7 +28,11 @@ chipset_teardown_car:
* Retrieve return address from stack as it will get trashed below if * Retrieve return address from stack as it will get trashed below if
* execution is utilizing the cache-as-ram stack. * execution is utilizing the cache-as-ram stack.
*/ */
#if ENV_X86_64
pop %rbx
#else
pop %ebx pop %ebx
#endif
/* Disable MTRRs. */ /* Disable MTRRs. */
mov $(MTRR_DEF_TYPE_MSR), %ecx mov $(MTRR_DEF_TYPE_MSR), %ecx
@@ -95,4 +99,8 @@ car_nem_enhanced_teardown:
#endif #endif
/* Return to caller. */ /* Return to caller. */
#if ENV_X86_64
jmp *%rbx
#else
jmp *%ebx jmp *%ebx
#endif

View File

@@ -304,7 +304,7 @@ static void southbridge_smi_store(
reg_ebx = save_state_ops->get_reg(io_smi, RBX); reg_ebx = save_state_ops->get_reg(io_smi, RBX);
/* drivers/smmstore/smi.c */ /* drivers/smmstore/smi.c */
ret = smmstore_exec(sub_command, (void *)reg_ebx); ret = smmstore_exec(sub_command, (void *)(uintptr_t)reg_ebx);
save_state_ops->set_reg(io_smi, RAX, ret); save_state_ops->set_reg(io_smi, RAX, ret);
} }
@@ -409,7 +409,7 @@ void smihandler_southbridge_pm1(
if ((pm1_sts & PWRBTN_STS) && (pm1_en & PWRBTN_EN)) { if ((pm1_sts & PWRBTN_STS) && (pm1_en & PWRBTN_EN)) {
/* power button pressed */ /* power button pressed */
elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON); elog_gsmi_add_event(ELOG_TYPE_POWER_BUTTON);
pmc_disable_pm1_control(-1UL); pmc_disable_pm1_control(~0);
pmc_enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT)); pmc_enable_pm1_control(SLP_EN | (SLP_TYP_S5 << SLP_TYP_SHIFT));
} }
} }

View File

@@ -95,8 +95,8 @@ void sa_set_mch_bar(const struct sa_mmio_descriptor *fixed_set_resources,
base = fixed_set_resources[i].base; base = fixed_set_resources[i].base;
index = fixed_set_resources[i].index; index = fixed_set_resources[i].index;
if (base >> 32) if (base >> 32)
write32((void *)(MCH_BASE_ADDRESS + index + 4), base >> 32); write32((void *)(uintptr_t)(MCH_BASE_ADDRESS + index + 4), base >> 32);
write32((void *)(MCH_BASE_ADDRESS + index), (base & 0xffffffff) | 1); write32((void *)(uintptr_t)(MCH_BASE_ADDRESS + index), (base & 0xffffffff) | 1);
} }
} }

View File

@@ -434,7 +434,7 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
soc_irq_settings(params); soc_irq_settings(params);
} }
/* Mainboard GPIO Configuration */ /* Mainboard FSP Configuration */
__weak void mainboard_silicon_init_params(FSP_S_CONFIG *params) __weak void mainboard_silicon_init_params(FSP_S_CONFIG *params)
{ {
printk(BIOS_DEBUG, "WEAK: %s/%s called\n", __FILE__, __func__); printk(BIOS_DEBUG, "WEAK: %s/%s called\n", __FILE__, __func__);

View File

@@ -16,6 +16,7 @@ config SOUTHBRIDGE_SPECIFIC_OPTIONS # dummy
select HAVE_CF9_RESET_PREPARE select HAVE_CF9_RESET_PREPARE
select SOC_AMD_COMMON select SOC_AMD_COMMON
select SOC_AMD_COMMON_BLOCK_ACPIMMIO select SOC_AMD_COMMON_BLOCK_ACPIMMIO
select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
config EHCI_BAR config EHCI_BAR
hex hex

View File

@@ -10,6 +10,7 @@ config SOUTHBRIDGE_AMD_CIMX_SB800
select HAVE_CF9_RESET_PREPARE select HAVE_CF9_RESET_PREPARE
select SOC_AMD_COMMON select SOC_AMD_COMMON
select SOC_AMD_COMMON_BLOCK_ACPIMMIO select SOC_AMD_COMMON_BLOCK_ACPIMMIO
select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
if SOUTHBRIDGE_AMD_CIMX_SB800 if SOUTHBRIDGE_AMD_CIMX_SB800
config ENABLE_IDE_COMBINED_MODE config ENABLE_IDE_COMBINED_MODE

View File

@@ -19,6 +19,7 @@ config SOUTHBRIDGE_SPECIFIC_OPTIONS # dummy
select HAVE_CF9_RESET_PREPARE select HAVE_CF9_RESET_PREPARE
select SOC_AMD_COMMON select SOC_AMD_COMMON
select SOC_AMD_COMMON_BLOCK_ACPIMMIO select SOC_AMD_COMMON_BLOCK_ACPIMMIO
select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
config EHCI_BAR config EHCI_BAR
hex hex

View File

@@ -1,7 +1,4 @@
chip soc/intel/cannonlake chip soc/intel/cannonlake
# Enable heci communication
register "HeciEnabled" = "1"
# Auto-switch between X4 NVMe and X2 NVMe. # Auto-switch between X4 NVMe and X2 NVMe.
register "TetonGlacierMode" = "1" register "TetonGlacierMode" = "1"

View File

@@ -14,6 +14,6 @@ $(obj)/mainboard/$(MAINBOARDDIR)/pagetables: $(PGTBLGEN) $(obj)/config.h
$(PGTBLGEN): util/pgtblgen/pgtblgen.c $(PGTBLGEN): util/pgtblgen/pgtblgen.c
printf " MAKE Creating PGTBLGEN tool\n" printf " MAKE Creating PGTBLGEN tool\n"
$(HOSTCC) $< -I$(obj) -o $@ $(HOSTCC) -std=c99 $< -I$(obj) -o $@
endif endif

View File

@@ -9,6 +9,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
#include <getopt.h>
static void usage(char *argv[]) static void usage(char *argv[])
{ {