and though bugs are the bane of my existence, rest assured the wretched thing will get the best of care here

...
 
Commits (26)
Subproject commit 3b1a73470c4fe89195922b693232614fe279ca55
Subproject commit 3a9d7cdd11332f56d5eafc0a6ba85489eb5142ec
Subproject commit 4fdfa1c797c9c970073c6de23984a7be716ba949
Subproject commit fc2d4e2587e1260f4fe4114e797541229bcc6b9e
......@@ -59,7 +59,7 @@ the `new_layout.txt` file:
| | | |
| 00000000:00000fff fd | 00000000:00000fff fd | 00000000:00000fff fd |
| 00001000:00002fff gbe | 00001000:00002fff gbe | 00001000:00002fff gbe |
| 00003000:003fffff bios | 00003000:007fffff bios | 00003000:01ffffff bios |
| 00003000:003fffff bios | 00003000:007fffff bios | 00003000:00ffffff bios |
| 00fff000:00000fff pd | 00fff000:00000fff pd | 00fff000:00000fff pd |
| 00fff000:00000fff me | 00fff000:00000fff me | 00fff000:00000fff me |
+---------------------------+---------------------------+---------------------------+
......@@ -108,7 +108,7 @@ If your flash is not 8 MiB, you need to change values of `flcomp_density1` and
+=================+=======+=======+========+
| flcomp_density1 | 0x3 | 0x4 | 0x5 |
+-----------------+-------+-------+--------+
| flreg1_limit | 0x3ff | 0x7ff | 0x1fff |
| flreg1_limit | 0x3ff | 0x7ff | 0xfff |
+-----------------+-------+-------+--------+
```
......@@ -127,7 +127,7 @@ to flash descriptor and gbe dump.
```
Mainboard --->
ROM chip size (8192 KB (8 MB)) # According to your chip
(0x7fd000) Size of CBFS filesystem in ROM # or 0x3fd000 for 4 MiB chip / 0x1ffd000 for 16 MiB chip
(0x7fd000) Size of CBFS filesystem in ROM # or 0x3fd000 for 4 MiB chip / 0xffd000 for 16 MiB chip
Chipset --->
[*] Add Intel descriptor.bin file
......
......@@ -253,10 +253,10 @@ config LINUXBOOT_UROOT_SHELL
config LINUXBOOT_UROOT_COMMANDS
string "U-root commands"
default "coreboot-app"
default "boot coreboot-app"
help
List of additional modules to include,
separated by space. (default "coreboot-app")
separated by space. (default "boot coreboot-app")
endif #LINUXBOOT_UROOT
......
......@@ -882,14 +882,15 @@ static struct device_operations *get_pci_bridge_ops(struct device *dev)
case PCI_EXP_TYPE_DOWNSTREAM:
printk(BIOS_DEBUG, "%s subordinate bus PCI Express\n",
dev_path(dev));
#if CONFIG(PCIEXP_HOTPLUG)
u16 sltcap;
sltcap = pci_read_config16(dev, pciexpos + PCI_EXP_SLTCAP);
if (sltcap & PCI_EXP_SLTCAP_HPC) {
printk(BIOS_DEBUG, "%s hot-plug capable\n", dev_path(dev));
return &default_pciexp_hotplug_ops_bus;
if (CONFIG(PCIEXP_HOTPLUG)) {
u16 sltcap;
sltcap = pci_read_config16(dev, pciexpos + PCI_EXP_SLTCAP);
if (sltcap & PCI_EXP_SLTCAP_HPC) {
printk(BIOS_DEBUG, "%s hot-plug capable\n",
dev_path(dev));
return &default_pciexp_hotplug_ops_bus;
}
}
#endif /* CONFIG(PCIEXP_HOTPLUG) */
return &default_pciexp_ops_bus;
case PCI_EXP_TYPE_PCI_BRIDGE:
printk(BIOS_DEBUG, "%s subordinate PCI\n",
......
......@@ -510,8 +510,6 @@ struct device_operations default_pciexp_ops_bus = {
.ops_pci = &pciexp_bus_ops_pci,
};
#if CONFIG(PCIEXP_HOTPLUG)
static void pciexp_hotplug_dummy_read_resources(struct device *dev)
{
struct resource *resource;
......@@ -571,4 +569,3 @@ struct device_operations default_pciexp_hotplug_ops_bus = {
.reset_bus = pci_bus_reset,
.ops_pci = &pciexp_bus_ops_pci,
};
#endif /* CONFIG(PCIEXP_HOTPLUG) */
......@@ -26,11 +26,9 @@ void pciexp_scan_bridge(struct device *dev);
extern struct device_operations default_pciexp_ops_bus;
#if CONFIG(PCIEXP_HOTPLUG)
void pciexp_hotplug_scan_bridge(struct device *dev);
extern struct device_operations default_pciexp_hotplug_ops_bus;
#endif /* CONFIG(PCIEXP_HOTPLUG) */
unsigned int pciexp_find_extended_cap(struct device *dev, unsigned int cap);
#endif /* DEVICE_PCIEXP_H */
......@@ -5,6 +5,7 @@ if BOARD_AMD_MAJOLICA
config BOARD_SPECIFIC_OPTIONS
def_bool y
select BOARD_ROMSIZE_KB_16384
select HAVE_ACPI_RESUME
select SOC_AMD_CEZANNE
select SOC_AMD_COMMON_BLOCK_USE_ESPI
select AMD_SOC_CONSOLE_UART
......
......@@ -10,8 +10,12 @@
#define ADC_LEVELS 15
enum {
/* RAM IDs */
RAM_ID_HIGH_CHANNEL = 4,
RAM_ID_LOW_CHANNEL = 3,
/* SKU IDs */
SKU_ID_HIGH_CHANNEL = 6,
SKU_ID_LOW_CHANNEL = 5,
};
static const unsigned int ram_voltages[ADC_LEVELS] = {
......@@ -58,7 +62,15 @@ static uint32_t get_adc_index(unsigned int channel)
uint32_t sku_id(void)
{
return 0;
static uint32_t cached_sku_code = BOARD_ID_INIT;
if (cached_sku_code == BOARD_ID_INIT) {
cached_sku_code = (get_adc_index(SKU_ID_HIGH_CHANNEL) << 4 |
get_adc_index(SKU_ID_LOW_CHANNEL));
printk(BIOS_DEBUG, "SKU Code: %#02x\n", cached_sku_code);
}
return cached_sku_code;
}
uint32_t ram_code(void)
......
......@@ -4,12 +4,16 @@
#include <console/console.h>
#include <delay.h>
#include <fmap.h>
#include <soc/clkbuf.h>
#include <soc/dramc_param.h>
#include <soc/emi.h>
#include <soc/mmu_operations.h>
#include <soc/mt6315.h>
#include <soc/mt6359p.h>
#include <soc/pll_common.h>
#include <soc/pmif.h>
#include <soc/rtc.h>
#include <soc/srclken_rc.h>
/* This must be defined in chromeos.fmd in same name and size. */
#define CALIBRATION_REGION "RW_DDR_TRAINING"
......@@ -56,8 +60,12 @@ static void raise_little_cpu_freq(void)
void platform_romstage_main(void)
{
mt6359p_romstage_init();
mt6315_romstage_init();
mtk_pmif_init();
mt6359p_init();
mt6315_init();
srclken_rc_init();
clk_buf_init();
rtc_boot();
raise_little_cpu_freq();
mt_mem_init(&dparam_ops);
mtk_mmu_after_dram();
......
......@@ -37,6 +37,24 @@ chip soc/intel/jasperlake
}"
device domain 0 on
device pci 15.0 on end
device pci 15.0 on
chip drivers/i2c/generic
register "hid" = ""ELAN0000""
register "desc" = ""ELAN Touchpad""
register "irq" = "ACPI_IRQ_WAKE_EDGE_LOW(GPP_B3_IRQ)"
register "wake" = "GPE0_DW0_03"
register "probed" = "1"
device i2c 15 on end
end
chip drivers/i2c/hid
register "generic.hid" = ""PNP0C50""
register "generic.desc" = ""Synaptics Touchpad""
register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_B3_IRQ)"
register "generic.wake" = "GPE0_DW0_03"
register "generic.probed" = "1"
register "hid_desc_reg_offset" = "0x20"
device i2c 0x2c on end
end
end # I2C 0
end
end
......@@ -16,6 +16,9 @@ config BOARD_SPECIFIC_OPTIONS
select ELOG
select ELOG_GSMI
select FW_CONFIG
select HAVE_ACPI_RESUME
select HAVE_EM100_SUPPORT
select HAVE_SPD_IN_CBFS
select MAINBOARD_HAS_CHROMEOS
select SOC_AMD_CEZANNE
select SOC_AMD_COMMON_BLOCK_USE_ESPI
......@@ -45,6 +48,16 @@ config AMD_FWM_POSITION_INDEX
help
TODO: might need to be adapted for better placement of files in cbfs
config EFS_SPI_READ_MODE
int
default 0 if EM100 # Normal read mode
default 4 # Dual IO (1-2-2)
config EFS_SPI_SPEED
int
default 3 if EM100 # 16.66 MHz
default 1 # 33.33 MHz
config VARIANT_DIR
string
default "guybrush" if BOARD_GOOGLE_GUYBRUSH
......
......@@ -21,3 +21,5 @@ subdirs-y += variants/$(VARIANT_DIR)
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/baseboard/include
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f))
......@@ -39,6 +39,11 @@ chip soc/amd/cezanne
}"
device domain 0 on
device ref gpp_bridge_0 on end # WLAN
device ref gpp_bridge_1 on end # SD
device ref gpp_bridge_2 on end # WWAN
device ref gpp_bridge_3 on end # NVMe
device ref gpp_bridge_a on # Internal GPP Bridge 0 to Bus A
device ref gfx on end # Internal GPU (GFX)
device ref xhci_0 on # USB 3.1 (USB0)
......
......@@ -9,6 +9,7 @@ config BOARD_SPECIFIC_OPTIONS
def_bool y
select AMD_SOC_CONSOLE_UART
select BOARD_ROMSIZE_KB_16384
select HAVE_ACPI_RESUME
select MAINBOARD_HAS_CHROMEOS
select SOC_AMD_CEZANNE
select SOC_AMD_COMMON_BLOCK_USE_ESPI
......
......@@ -12,7 +12,7 @@ chip soc/amd/picasso
register "slow_ppt_limit_mW" = "6000"
register "fast_ppt_limit_mW" = "9000"
register "slow_ppt_time_constant_s" = "5"
register "stapm_time_constant_s" = "2500"
register "stapm_time_constant_s" = "1640"
register "sustained_power_limit_mW" = "4800"
register "telemetry_vddcr_vdd_slope_mA" = "41322"
......
......@@ -5,6 +5,7 @@
#include <cf9_reset.h>
#include <device/device.h>
#include <device/mmio.h>
#include <elog.h>
#include <timestamp.h>
#include <cpu/x86/lapic.h>
#include <cbmem.h>
......@@ -16,6 +17,7 @@
#include <northbridge/intel/haswell/chip.h>
#include <northbridge/intel/haswell/haswell.h>
#include <northbridge/intel/haswell/raminit.h>
#include <southbridge/intel/common/pmclib.h>
#include <southbridge/intel/lynxpoint/pch.h>
#include <southbridge/intel/lynxpoint/me.h>
#include <string.h>
......@@ -47,8 +49,6 @@ void mainboard_romstage_entry(void)
const struct northbridge_intel_haswell_config *cfg = config_of_soc();
int s3resume;
struct pei_data pei_data = {
.pei_version = PEI_VERSION,
.mchbar = CONFIG_FIXED_MCHBAR_MMIO_BASE,
......@@ -56,7 +56,7 @@ void mainboard_romstage_entry(void)
.epbar = CONFIG_FIXED_EPBAR_MMIO_BASE,
.pciexbar = CONFIG_MMCONF_BASE_ADDRESS,
.smbusbar = CONFIG_FIXED_SMBUS_IO_BASE,
.hpet_address = HPET_ADDR,
.hpet_address = CONFIG_HPET_ADDRESS,
.rcba = CONFIG_FIXED_RCBA_MMIO_BASE,
.pmbase = DEFAULT_PMBASE,
.gpiobase = DEFAULT_GPIOBASE,
......@@ -76,7 +76,11 @@ void mainboard_romstage_entry(void)
enable_lapic();
s3resume = early_pch_init();
early_pch_init();
const int s3resume = southbridge_detect_s3_resume();
elog_boot_notify(s3resume);
/* Perform some early chipset initialization required
* before RAM initialization can work
......@@ -84,15 +88,6 @@ void mainboard_romstage_entry(void)
haswell_early_initialization();
printk(BIOS_DEBUG, "Back from haswell_early_initialization()\n");
if (s3resume) {
#if CONFIG(HAVE_ACPI_RESUME)
printk(BIOS_DEBUG, "Resume from S3 detected.\n");
#else
printk(BIOS_DEBUG, "Resume from S3 detected, but disabled.\n");
s3resume = 0;
#endif
}
/* Prepare USB controller early in S3 resume */
if (s3resume)
enable_usb_bar();
......
......@@ -21,6 +21,7 @@ config SOC_SPECIFIC_OPTIONS
select FSP_COMPRESS_FSP_S_LZMA
select HAVE_ACPI_TABLES
select HAVE_CF9_RESET
select HAVE_FSP_GOP
select HAVE_SMI_HANDLER
select IDT_IN_EVERY_STAGE
select IOAPIC
......@@ -36,6 +37,7 @@ config SOC_SPECIFIC_OPTIONS
select SOC_AMD_COMMON_BLOCK_APOB
select SOC_AMD_COMMON_BLOCK_BANKED_GPIOS
select SOC_AMD_COMMON_BLOCK_DATA_FABRIC
select SOC_AMD_COMMON_BLOCK_GRAPHICS
select SOC_AMD_COMMON_BLOCK_HAS_ESPI
select SOC_AMD_COMMON_BLOCK_LPC
select SOC_AMD_COMMON_BLOCK_NONCAR
......
......@@ -17,6 +17,8 @@ Scope(\_SB) {
#include <soc/amd/common/acpi/platform.asl>
#include <soc/amd/common/acpi/sleepstates.asl>
/*
* Platform Wake Notify
*
......
......@@ -102,4 +102,9 @@ chip soc/amd/cezanne
device pci 18.6 alias data_fabric_6 on end
device pci 18.7 alias data_fabric_7 on end
end
device mmio 0xfedc2000 alias i2c_0 off end
device mmio 0xfedc3000 alias i2c_1 off end
device mmio 0xfedc4000 alias i2c_2 off end
device mmio 0xfedc5000 alias i2c_3 off end
end
......@@ -136,11 +136,12 @@ failed:
static const char *const mca_bank_name[] = {
"Load-store unit",
"Instruction fetch unit",
"Combined unit",
"Reserved",
"Northbridge",
"L2 cache unit",
"Decode unit"
"",
"Execution unit",
"Floating point unit"
"Floating point unit",
"L3 cache unit"
};
/* Check the Legacy Machine Check Architecture registers */
......@@ -161,7 +162,8 @@ void check_mca(void)
int core = cpuid_ebx(1) >> 24;
printk(BIOS_WARNING, "#MC Error: core %d, bank %d %s\n",
core, i, mca_bank_name[i]);
core, i,
i < ARRAY_SIZE(mca_bank_name) ? mca_bank_name[i] : "");
printk(BIOS_WARNING, " MC%d_STATUS = %08x_%08x\n",
i, mci.sts.hi, mci.sts.lo);
......
......@@ -83,28 +83,6 @@ Method (_PRW, 0)
Return (Package() { 0x6D, 4 })
}
Method (_DSD, 0)
{
Return(
Package()
{
/* Thunderbolt GUID for IMR_VALID at ../drivers/acpi/property.c */
ToUUID("C44D002F-69F9-4E7D-A904-A7BAABDF43F7"),
Package ()
{
Package (2) { "IMR_VALID", 1 }
},
/* Thunderbolt GUID for WAKE_SUPPORTED at ../drivers/acpi/property.c */
ToUUID("6C501103-C189-4296-BA72-9BF5A26EBE5D"),
Package ()
{
Package (2) { "WAKE_SUPPORTED", 1 }
}
}
)
}
Method (_DSM, 4, Serialized)
{
Return (Buffer() { 0 })
......
......@@ -216,85 +216,6 @@ Method (_PS3, 0, Serialized)
}
}
Method (_DSD, 0) {
If ((TUID == 0) || (TUID == 1)) {
Return ( Package() {
/* acpi_pci_bridge_d3 at ../drivers/pci/pci-acpi.c */
ToUUID("6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"),
Package ()
{
Package (2) { "HotPlugSupportInD3", 1 },
},
/* pci_acpi_set_untrusted at ../drivers/pci/pci-acpi.c */
ToUUID("EFCC06CC-73AC-4BC3-BFF0-76143807C389"),
Package () {
Package (2) { "ExternalFacingPort", 1 }, /* TBT/CIO port */
/*
* UID of the TBT RP on platform, range is: 0, 1 ...,
* (NumOfTBTRP - 1).
*/
Package (2) { "UID", TUID },
},
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package (2) { "usb4-host-interface", \_SB.PCI0.TDM0 },
Package (2) { "usb4-port-number", TUID },
}
})
} ElseIf (TUID == 2) {
Return ( Package () {
/* acpi_pci_bridge_d3 at ../drivers/pci/pci-acpi.c */
ToUUID("6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"),
Package ()
{
Package (2) { "HotPlugSupportInD3", 1 },
},
/* pci_acpi_set_untrusted at ../drivers/pci/pci-acpi.c */
ToUUID("EFCC06CC-73AC-4BC3-BFF0-76143807C389"),
Package () {
Package (2) { "ExternalFacingPort", 1 }, /* TBT/CIO port */
/*
* UID of the TBT RP on platform, range is: 0, 1 ...,
* (NumOfTBTRP - 1).
*/
Package (2) { "UID", TUID },
},
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package (2) { "usb4-host-interface", \_SB.PCI0.TDM1 },
Package (2) { "usb4-port-number", 0 },
}
})
} Else { /* TUID == 3 */
Return ( Package () {
/* acpi_pci_bridge_d3 at ../drivers/pci/pci-acpi.c */
ToUUID("6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"),
Package ()
{
Package (2) { "HotPlugSupportInD3", 1 },
},
/* pci_acpi_set_untrusted at ../drivers/pci/pci-acpi.c */
ToUUID("EFCC06CC-73AC-4BC3-BFF0-76143807C389"),
Package () {
Package (2) { "ExternalFacingPort", 1 }, /* TBT/CIO port */
/*
* UID of the TBT RP on platform, range is: 0, 1 ...,
* (NumOfTBTRP - 1).
*/
Package (2) { "UID", TUID },
},
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package (2) { "usb4-host-interface", \_SB.PCI0.TDM1 },
Package (2) { "usb4-port-number", 1 },
}
})
}
}
Method (_S0W, 0x0, NotSerialized)
{
Return (0x4)
......
......@@ -32,19 +32,40 @@ postcar-y += mmap_boot.c
ramstage-y += mmap_boot.c
smm-y += mmap_boot.c
# Check to ensure that no sections in the FMAP cross 16MiB boundary if
# the platform supports split decode windows for BIOS region greater
# than 16MiB.
$(call add_intermediate, check-fmap-16mib-crossing, $(obj)/fmap_config.h)
flash_offset=$$(printf "%d" $$(cat $(obj)/fmap_config.h | grep "FMAP_SECTION_FLASH_START" | awk '{print $$NF}')); \
for x in $$(cat $(obj)/fmap_config.h | grep "FMAP_TERMINAL_SECTIONS" | cut -d\" -f2); do \
start=$$(printf "%d" $$(cat $(obj)/fmap_config.h | grep "FMAP_SECTION_"$$x"_START" | awk '{print $$NF}')); \
size=$$(printf "%d" $$(cat $(obj)/fmap_config.h | grep "FMAP_SECTION_"$$x"_SIZE" | awk '{print $$NF}')); \
start=$$((start-flash_offset)); \
end=$$((start+size-1)); \
if [ $$start -lt 16777216 ] && [ $$end -ge 16777216 ]; then echo "ERROR:" $$x "crosses 16MiB boundary"; fail=1; break; fi; \
done; \
if [ $$fail -eq 1 ]; then false; fi
# When using extended BIOS window, no sub-region within the BIOS region must
# cross 16MiB boundary from the end of the BIOS region. This is because the
# top 16MiB of the BIOS region are decoded by the standard window from
# (4G - 16M) to 4G. There is no standard section name that identifies the BIOS
# region in flashmap. This check assumes that BIOS region is placed at the top
# of SPI flash and hence calculates the boundary as flash_size - 16M. If any
# region within the SPI flash crosses this boundary, then the check complains
# and exits.
$(call add_intermediate, check-fmap-16mib-crossing)
check-fmap-16mib-crossing: $(obj)/fmap_config.h
fmap_get() { awk "/$$1/ { print \$$NF }" < $<; }; \
\
flash_offset=$$(fmap_get FMAP_SECTION_FLASH_START); \
flash_size=$$(fmap_get FMAP_SECTION_FLASH_SIZE); \
if [ $$((flash_size)) -le $$((0x1000000)) ]; then \
exit; \
fi; \
bios_16M_boundary=$$((flash_size-0x1000000)); \
for x in $$(grep "FMAP_TERMINAL_SECTIONS" < $< | cut -d\" -f2); \
do \
start=$$(fmap_get "FMAP_SECTION_$${x}_START"); \
size=$$(fmap_get "FMAP_SECTION_$${x}_SIZE"); \
start=$$((start-flash_offset)); \
end=$$((start+size-1)); \
if [ $$((start)) -lt $$((bios_16M_boundary)) ] && \
[ $$((end)) -ge $$((bios_16M_boundary)) ]; \
then \
echo "ERROR: $$x crosses 16MiB boundary"; \
fail=1; \
break; \
fi; \
done; \
exit $$fail
CBFSTOOL_ADD_CMD_OPTIONS += --ext-win-base $(CONFIG_EXT_BIOS_WIN_BASE) --ext-win-size $(CONFIG_EXT_BIOS_WIN_SIZE)
......
......@@ -2,7 +2,6 @@ ifeq ($(CONFIG_SOC_MEDIATEK_MT8192),y)
bootblock-y += ../common/auxadc.c
bootblock-y += bootblock.c
bootblock-y += clkbuf.c srclken_rc.c
bootblock-y += eint_event.c
bootblock-y += ../common/flash_controller.c
bootblock-y += ../common/gpio.c gpio.c
......@@ -13,10 +12,6 @@ bootblock-$(CONFIG_SPI_FLASH) += ../common/spi.c spi.c
bootblock-y += ../common/timer.c
bootblock-y += ../common/uart.c
bootblock-y += ../common/wdt.c
bootblock-y += pmif.c pmif_clk.c pmif_spi.c pmif_spmi.c
bootblock-y += ../common/rtc.c ../common/rtc_osc_init.c rtc.c
bootblock-y += mt6315.c
bootblock-y += mt6359p.c
verstage-y += ../common/auxadc.c
verstage-y += ../common/flash_controller.c
......@@ -28,6 +23,7 @@ verstage-y += ../common/uart.c
romstage-y += ../common/auxadc.c
romstage-y += ../common/cbmem.c
romstage-y += clkbuf.c srclken_rc.c
romstage-y += ../common/dram_init.c
romstage-y += ../common/dramc_param.c
romstage-y += ../common/flash_controller.c
......@@ -40,6 +36,7 @@ romstage-$(CONFIG_SPI_FLASH) += ../common/spi.c spi.c
romstage-y += ../common/timer.c
romstage-y += ../common/uart.c
romstage-y += pmif.c pmif_clk.c pmif_spi.c pmif_spmi.c
romstage-y += ../common/rtc.c ../common/rtc_osc_init.c rtc.c
romstage-y += mt6315.c
romstage-y += mt6359p.c
......
/* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h>
#include <soc/clkbuf.h>
#include <soc/eint_event.h>
#include <soc/mmu_operations.h>
#include <soc/mt6315.h>
#include <soc/mt6359p.h>
#include <soc/pll.h>
#include <soc/pmif.h>
#include <soc/rtc.h>
#include <soc/srclken_rc.h>
#include <soc/wdt.h>
void bootblock_soc_init(void)
......@@ -17,11 +11,5 @@ void bootblock_soc_init(void)
mtk_mmu_init();
mtk_wdt_init();
mt_pll_init();
mtk_pmif_init();
mt6359p_init();
mt6315_init();
srclken_rc_init();
clk_buf_init();
rtc_boot();
unmask_eint_event_mask();
}
......@@ -16,6 +16,33 @@ static void infra_master_init(uintptr_t base)
SET32_BITFIELDS(getreg(base, MAS_SEC_0), PCIE_DOM, MAS_DOMAIN_1);
SET32_BITFIELDS(getreg(base, MAS_DOM_1), SCP_SSPM_DOM, MAS_DOMAIN_2,
CPU_EB_DOM, MAS_DOMAIN_2);
/*
* Domain Remap: TINYSYS to non-EMI (3-bit to 4-bit)
* 1. SCP from 3 to 3
* 2. others from XXX to 15
*/
SET32_BITFIELDS(getreg(base, DOM_REMAP_0_0),
FOUR_BIT_DOM_REMAP_0, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_1, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_2, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_3, MAS_DOMAIN_3,
FOUR_BIT_DOM_REMAP_4, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_5, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_6, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_7, MAS_DOMAIN_15);
/*
* Domain Remap: MMSYS slave domain remap (4-bit to 2-bit)
* 1. From domain 0 ~ 3 to domain 0 ~ 3
* 2. others from XXX to domain 0
*/
SET32_BITFIELDS(getreg(base, DOM_REMAP_0_0),
TWO_BIT_DOM_REMAP_0, MAS_DOMAIN_0,
TWO_BIT_DOM_REMAP_1, MAS_DOMAIN_1,
TWO_BIT_DOM_REMAP_2, MAS_DOMAIN_2,
TWO_BIT_DOM_REMAP_3, MAS_DOMAIN_3);
}
static void peri_master_init(uintptr_t base)
......@@ -24,33 +51,50 @@ static void peri_master_init(uintptr_t base)
SET32_BITFIELDS(getreg(base, MAS_DOM_0), SPM_DOM, MAS_DOMAIN_2);
}
static uintptr_t devapc_base[DEVAPC_AO_MAX] = {
DEVAPC_INFRA_AO_BASE,
DEVAPC_PERI_AO_BASE,
DEVAPC_PERI2_AO_BASE,
DEVAPC_PERI_PAR_AO_BASE,
DEVAPC_FMEM_AO_BASE,
};
static void fmem_master_init(uintptr_t base)
{
/* Domain Remap: TINYSYS to EMI (3-bit to 4-bit)
* 1. SCP from 3 to 3
* 2. others from XXX to 15
*/
SET32_BITFIELDS(getreg(base, DOM_REMAP_0_0),
FOUR_BIT_DOM_REMAP_0, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_1, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_2, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_3, MAS_DOMAIN_3,
FOUR_BIT_DOM_REMAP_4, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_5, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_6, MAS_DOMAIN_15,
FOUR_BIT_DOM_REMAP_7, MAS_DOMAIN_15);
}
static void (*master_init[DEVAPC_AO_MAX])(uintptr_t) = {
infra_master_init,
peri_master_init,
struct devapc_init {
uintptr_t base;
void (*init)(uintptr_t base);
} devapc_init[DEVAPC_AO_MAX] = {
{ DEVAPC_INFRA_AO_BASE, infra_master_init },
{ DEVAPC_PERI_AO_BASE, peri_master_init },
{ DEVAPC_PERI2_AO_BASE, NULL },
{ DEVAPC_PERI_PAR_AO_BASE, NULL },
{ DEVAPC_FMEM_AO_BASE, fmem_master_init },
};
void dapc_init(void)
{
int i;
uintptr_t devapc_ao_base;
void (*init_func)(uintptr_t base);
for (i = 0; i < ARRAY_SIZE(devapc_base); i++) {
devapc_ao_base = devapc_base[i];
for (i = 0; i < ARRAY_SIZE(devapc_init); i++) {
devapc_ao_base = devapc_init[i].base;
init_func = devapc_init[i].init;
/* Init dapc */
write32(getreg(devapc_ao_base, AO_APC_CON), 0x0);
write32(getreg(devapc_ao_base, AO_APC_CON), 0x1);
/* Init master */
if (master_init[i])
master_init[i](devapc_ao_base);
if (init_func)
init_func(devapc_ao_base);
}
}
......@@ -11,6 +11,10 @@ void dapc_init(void);
#define DEVAPC_AO_MAX 6
enum devapc_ao_offset {
DOM_REMAP_0_0 = 0x800,
DOM_REMAP_1_0 = 0x810,
DOM_REMAP_1_1 = 0x814,
DOM_REMAP_2_0 = 0x820,
MAS_DOM_0 = 0x0900,
MAS_DOM_1 = 0x0904,
MAS_SEC_0 = 0x0A00,
......@@ -48,5 +52,19 @@ enum master_domain {
MAS_DOMAIN_MAX,
};
/* Domain Remap */
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_0, 3, 0)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_1, 7, 4)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_2, 11, 8)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_3, 15, 12)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_4, 19, 16)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_5, 23, 20)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_6, 27, 24)
DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_7, 31, 28)
DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_0, 1, 0)
DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_1, 3, 2)
DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_2, 5, 4)
DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_3, 7, 6)
#endif /* SOC_MEDIATEK_MT8192_DEVAPC_H */
......@@ -35,7 +35,6 @@ enum {
};
void mt6315_init(void);
void mt6315_romstage_init(void);
void mt6315_buck_set_voltage(u32 slvid, u32 buck_id, u32 buck_uv);
u32 mt6315_buck_get_voltage(u32 slvid, u32 buck_id);
#endif /* __SOC_MEDIATEK_MT6315_H__ */
......@@ -62,7 +62,6 @@ enum {
#define EFUSE_RG_VPA_OC_FT 78
void mt6359p_init(void);
void mt6359p_romstage_init(void);
void mt6359p_buck_set_voltage(u32 buck_id, u32 buck_uv);
u32 mt6359p_buck_get_voltage(u32 buck_id);
void mt6359p_set_vm18_voltage(u32 vm18_uv);
......
......@@ -300,8 +300,3 @@ void mt6315_init(void)
mt6315_wdt_enable(MT6315_GPU);
mt6315_init_setting();
}
void mt6315_romstage_init(void)
{
init_pmif_arb();
}
......@@ -564,8 +564,3 @@ void mt6359p_init(void)
pmic_protect_key_setting(true);
pmic_wk_vs2_voter_setting();
}
void mt6359p_romstage_init(void)
{
init_pmif_arb();
}
......@@ -6,7 +6,6 @@
#include <device/pci_def.h>
#include <device/smbus_host.h>
#include <southbridge/intel/common/pmbase.h>
#include <southbridge/intel/common/pmclib.h>
#include <elog.h>
#include "pch.h"
#include "chip.h"
......@@ -86,10 +85,8 @@ void __weak mainboard_config_superio(void)
{
}
int early_pch_init(void)
void early_pch_init(void)
{
int wake_from_s3;
pch_enable_bars();
#if CONFIG(INTEL_LYNXPOINT_LP)
......@@ -123,11 +120,4 @@ int early_pch_init(void)
RCBA32(0x2324) = 0x00854c74;
}
wake_from_s3 = southbridge_detect_s3_resume();
elog_boot_notify(wake_from_s3);
/* Report if we are waking from s3. */
return wake_from_s3;
}
......@@ -63,8 +63,6 @@
#define DEFAULT_GPIOSIZE 0x80
#endif
#define HPET_ADDR 0xfed00000
#include <southbridge/intel/common/rcba.h>
#ifndef __ACPI__
......@@ -123,7 +121,7 @@ void pch_log_state(void);
void acpi_create_serialio_ssdt(acpi_header_t *ssdt);
void enable_usb_bar(void);
int early_pch_init(void);
void early_pch_init(void);
void pch_enable_lpc(void);
void mainboard_config_superio(void);
void mainboard_config_rcba(void);
......