From 8c4674ee37c3446e7cf4dd81101e6eaa3d5fc690 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Thu, 26 Oct 2023 16:11:10 +0530 Subject: [PATCH] mb/google/{rex, ovis}: Introduce devicetree.cb for pre-prod SoC This patch introduces a dedicated devicetree.cb file for platforms built with pre-production SoC. This will help to keep the SoC configuration separate for platforms with ESx and QSx silicons. For example, the SaGv WP configuration is different between pre-production (aka ESx) and production (aka QSx) silicon. BUG=b:306267652 TEST=Able to build and boot google/rex4es. Change-Id: I01b0abeeb25ce5a83882c56b30929228fcc6c95c Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/78659 Tested-by: build bot (Jenkins) Reviewed-by: Kapil Porwal Reviewed-by: Mike Lee --- src/mainboard/google/rex/Kconfig | 1 + .../rex/variants/baseboard/ovis/devicetree.cb | 22 ++-- .../baseboard/ovis/devicetree_pre_prod.cb | 96 ++++++++++++++++ .../baseboard/rex/devicetree_pre_prod.cb | 104 ++++++++++++++++++ 4 files changed, 211 insertions(+), 12 deletions(-) create mode 100644 src/mainboard/google/rex/variants/baseboard/ovis/devicetree_pre_prod.cb create mode 100644 src/mainboard/google/rex/variants/baseboard/rex/devicetree_pre_prod.cb diff --git a/src/mainboard/google/rex/Kconfig b/src/mainboard/google/rex/Kconfig index 3f0947b460..e781f08597 100644 --- a/src/mainboard/google/rex/Kconfig +++ b/src/mainboard/google/rex/Kconfig @@ -163,6 +163,7 @@ config CHROMEOS_WIFI_SAR select USE_SAR config DEVICETREE + default "variants/baseboard/\$(CONFIG_BASEBOARD_DIR)/devicetree_pre_prod.cb" if SOC_INTEL_METEORLAKE_PRE_PRODUCTION_SILICON default "variants/baseboard/\$(CONFIG_BASEBOARD_DIR)/devicetree.cb" config FMDFILE diff --git a/src/mainboard/google/rex/variants/baseboard/ovis/devicetree.cb b/src/mainboard/google/rex/variants/baseboard/ovis/devicetree.cb index 7d39ece8c0..3f75b709da 100644 --- a/src/mainboard/google/rex/variants/baseboard/ovis/devicetree.cb +++ b/src/mainboard/google/rex/variants/baseboard/ovis/devicetree.cb @@ -53,19 +53,17 @@ chip soc/intel/meteorlake register "sagv" = "SAGV_ENABLED" - register "sagv_freq_mhz" = "{ - [0] = 3200, - [1] = 6000, - [2] = 6400, - [3] = 5600, - }" + register "sagv_freq_mhz[0]" = "2133" + register "sagv_gear[0]" = "4" - register "sagv_gear" = "{ - [0] = 4, - [1] = 4, - [2] = 4, - [3] = 2, - }" + register "sagv_freq_mhz[1]" = "4267" + register "sagv_gear[1]" = "4" + + register "sagv_freq_mhz[2]" = "6000" + register "sagv_gear[2]" = "4" + + register "sagv_freq_mhz[3]" = "6400" + register "sagv_gear[3]" = "4" # Set on-board graphics as primary display register "skip_ext_gfx_scan" = "1" diff --git a/src/mainboard/google/rex/variants/baseboard/ovis/devicetree_pre_prod.cb b/src/mainboard/google/rex/variants/baseboard/ovis/devicetree_pre_prod.cb new file mode 100644 index 0000000000..0835ded2f2 --- /dev/null +++ b/src/mainboard/google/rex/variants/baseboard/ovis/devicetree_pre_prod.cb @@ -0,0 +1,96 @@ +chip soc/intel/meteorlake + + # GPE configuration + register "pmc_gpe0_dw0" = "GPP_D" + register "pmc_gpe0_dw1" = "GPP_E" + register "pmc_gpe0_dw2" = "GPP_F" + + # EC host command ranges are in 0x800-0x8ff & 0x200-0x20f + register "gen1_dec" = "0x00fc0801" + register "gen2_dec" = "0x000c0201" + # EC memory map range is 0x900-0x9ff + register "gen3_dec" = "0x00fc0901" + + register "usb2_ports[0]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 0 + register "usb2_ports[1]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 1 + register "usb2_ports[2]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 2 + register "usb2_ports[3]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 3 + register "usb2_ports[4]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 4 + register "usb2_ports[5]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 5 + register "usb2_ports[6]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 6 + register "usb2_ports[7]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 7 + register "usb2_ports[8]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 8 + register "usb2_ports[9]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 9 + + register "usb3_ports[0]" = "USB3_PORT_EMPTY" # Disable USB3.0 Port 0 + register "usb3_ports[1]" = "USB3_PORT_EMPTY" # Disable USB3.0 Port 1 + + register "tcss_ports[0]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 0 + register "tcss_ports[1]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 1 + register "tcss_ports[2]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 2 + register "tcss_ports[3]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 3 + + # S0ix enable + register "s0ix_enable" = "1" + + # Disable C1 C-state auto-demotion + register "disable_c1_state_auto_demotion" = "1" + + # Disable PKGC-state demotion + register "disable_package_c_state_demotion" = "1" + + # Enable Energy Reporting + register "pch_pm_energy_report_enable" = "1" + + # DPTF enable + register "dptf_enable" = "1" + + # Temporary setting TCC of 100C = Tj max (110) - TCC_Offset (10) + register "tcc_offset" = "10" + + # Enable CNVi BT + register "cnvi_bt_core" = "true" + + register "sagv" = "SAGV_ENABLED" + + register "sagv_freq_mhz[0]" = "3200" + register "sagv_gear[0]" = "4" + + register "sagv_freq_mhz[1]" = "6000" + register "sagv_gear[1]" = "4" + + register "sagv_freq_mhz[2]" = "6400" + register "sagv_gear[2]" = "4" + + register "sagv_freq_mhz[3]" = "5600" + register "sagv_gear[3]" = "2" + + # Set on-board graphics as primary display + register "skip_ext_gfx_scan" = "1" + + register "serial_io_uart_mode" = "{ + [PchSerialIoIndexUART0] = PchSerialIoPci, + [PchSerialIoIndexUART1] = PchSerialIoDisabled, + [PchSerialIoIndexUART2] = PchSerialIoDisabled, + }" + + register "pch_hda_dsp_enable" = "1" + register "pch_hda_idisp_link_tmode" = "HDA_TMODE_8T" + register "pch_hda_idisp_link_frequency" = "HDA_LINKFREQ_96MHZ" + register "pch_hda_idisp_codec_enable" = "1" + + device domain 0 on + device ref igpu on end + device ref dtt on end + device ref ioe_shared_sram on end + device ref xhci on end + device ref pmc_shared_sram on end + device ref heci1 on end + device ref uart0 on end + device ref soc_espi on + chip ec/google/chromeec + device pnp 0c09.0 on end + end + end + end +end diff --git a/src/mainboard/google/rex/variants/baseboard/rex/devicetree_pre_prod.cb b/src/mainboard/google/rex/variants/baseboard/rex/devicetree_pre_prod.cb new file mode 100644 index 0000000000..5894fe637a --- /dev/null +++ b/src/mainboard/google/rex/variants/baseboard/rex/devicetree_pre_prod.cb @@ -0,0 +1,104 @@ +chip soc/intel/meteorlake + + # GPE configuration + register "pmc_gpe0_dw0" = "GPP_B" + register "pmc_gpe0_dw1" = "GPP_E" + register "pmc_gpe0_dw2" = "GPP_F" + + # EC host command ranges are in 0x800-0x8ff & 0x200-0x20f + register "gen1_dec" = "0x00fc0801" + register "gen2_dec" = "0x000c0201" + # EC memory map range is 0x900-0x9ff + register "gen3_dec" = "0x00fc0901" + + register "usb2_ports[0]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 0 + register "usb2_ports[1]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 1 + register "usb2_ports[2]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 2 + register "usb2_ports[3]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 3 + register "usb2_ports[4]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 4 + register "usb2_ports[5]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 5 + register "usb2_ports[6]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 6 + register "usb2_ports[7]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 7 + register "usb2_ports[8]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 8 + register "usb2_ports[9]" = "USB2_PORT_EMPTY" # Disable USB2.0 Port 9 + + register "usb3_ports[0]" = "USB3_PORT_EMPTY" # Disable USB3.0 Port 0 + register "usb3_ports[1]" = "USB3_PORT_EMPTY" # Disable USB3.0 Port 1 + + register "tcss_ports[0]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 0 + register "tcss_ports[1]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 1 + register "tcss_ports[2]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 2 + register "tcss_ports[3]" = "TCSS_PORT_EMPTY" # Disable USB-C Port 3 + + # S0ix enable + register "s0ix_enable" = "1" + + # Disable C1 C-state auto-demotion + register "disable_c1_state_auto_demotion" = "1" + + # Disable PKGC-state demotion + register "disable_package_c_state_demotion" = "1" + + # Enable Energy Reporting + register "pch_pm_energy_report_enable" = "1" + + # DPTF enable + register "dptf_enable" = "1" + + # Enable CNVi BT + register "cnvi_bt_core" = "true" + + register "sagv" = "SAGV_ENABLED" + + register "sagv_freq_mhz[0]" = "3200" + register "sagv_gear[0]" = "4" + + register "sagv_freq_mhz[1]" = "6000" + register "sagv_gear[1]" = "4" + + register "sagv_freq_mhz[2]" = "6400" + register "sagv_gear[2]" = "4" + + register "sagv_freq_mhz[3]" = "5600" + register "sagv_gear[3]" = "2" + + # Set on-board graphics as primary display + register "skip_ext_gfx_scan" = "1" + + register "serial_io_uart_mode" = "{ + [PchSerialIoIndexUART0] = PchSerialIoPci, + [PchSerialIoIndexUART1] = PchSerialIoDisabled, + [PchSerialIoIndexUART2] = PchSerialIoDisabled, + }" + + register "pch_hda_dsp_enable" = "1" + register "pch_hda_idisp_link_tmode" = "HDA_TMODE_8T" + register "pch_hda_idisp_link_frequency" = "HDA_LINKFREQ_96MHZ" + register "pch_hda_idisp_codec_enable" = "1" + + # As per doc 640982, Intel MTL-U 15W CPU supports FVM on IA and SA + # The ICC Limit is represented in 1/4 A increments, i.e., a value of 400 = 100A + # For IA VR configuration + register "enable_fast_vmode[VR_DOMAIN_IA]" = "1" + register "cep_enable[VR_DOMAIN_IA]" = "1" + register "fast_vmode_i_trip[VR_DOMAIN_IA]" = "264" # 66A + # For SA VR configuration + register "enable_fast_vmode[VR_DOMAIN_SA]" = "1" + register "cep_enable[VR_DOMAIN_SA]" = "1" + register "fast_vmode_i_trip[VR_DOMAIN_SA]" = "84" # 21A + + device domain 0 on + device ref igpu on end + device ref dtt on end + device ref ioe_shared_sram on end + device ref xhci on end + device ref pmc_shared_sram on end + device ref heci1 on end + device ref uart0 on end + device ref soc_espi on + chip ec/google/chromeec + device pnp 0c09.0 on end + end + end + end +end