diff options
author | Christian Walter <christian.walter@9elements.com> | 2022-09-08 11:44:19 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-01-24 12:47:30 +0000 |
commit | 1364ac3478c69affce32840d92577f5a8da2eb8c (patch) | |
tree | 5c6d30b6831ee3f2bbd806e3d954448022836859 | |
parent | b53e27bc2495ca5b5ba6b84d3a6768d9ad380a93 (diff) |
util/inteltool: add support for EBG (Emmitsburg) PCH
EBG (Emmitsburg) PCH is used in Intel SPR-SP chipset.
Its datasheet is Intel doc# 606161.
Add Intel Emmitsburg PCH GPIO pin definitions.
Also common code change is made to support Intel Emmitsburg PCH:
a. Instead of 2 PAD registers per GPIO, it has 4 PAD registers.
b. The register address space may not be contiguous from one GPIO
group to the next GPIO group.
Change-Id: Ia0d9179544020b6abb0be1ecd275a9a46356db8a
Signed-off-by: Jonathan Zhang <jonzhang@meta.com>
Signed-off-by: Christian Walter <christian.walter@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71943
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
-rw-r--r-- | util/inteltool/gpio.c | 1 | ||||
-rw-r--r-- | util/inteltool/gpio_groups.c | 7 | ||||
-rw-r--r-- | util/inteltool/gpio_names/emmitsburg.h | 440 | ||||
-rw-r--r-- | util/inteltool/gpio_names/gpio_groups.h | 5 | ||||
-rw-r--r-- | util/inteltool/pcr.c | 1 |
5 files changed, 454 insertions, 0 deletions
diff --git a/util/inteltool/gpio.c b/util/inteltool/gpio.c index e219d00e05..bf4156c138 100644 --- a/util/inteltool/gpio.c +++ b/util/inteltool/gpio.c @@ -1115,6 +1115,7 @@ int print_gpios(struct pci_dev *sb, int show_all, int show_diffs) case PCI_DEVICE_ID_INTEL_ADL_M: case PCI_DEVICE_ID_INTEL_RPL_P: case PCI_DEVICE_ID_INTEL_EHL: + case PCI_DEVICE_ID_INTEL_EBG: print_gpio_groups(sb); return 0; case PCI_DEVICE_ID_INTEL_82371XX: diff --git a/util/inteltool/gpio_groups.c b/util/inteltool/gpio_groups.c index e5cfceeecb..fd5be730be 100644 --- a/util/inteltool/gpio_groups.c +++ b/util/inteltool/gpio_groups.c @@ -17,6 +17,7 @@ #include "gpio_names/geminilake.h" #include "gpio_names/icelake.h" #include "gpio_names/lewisburg.h" +#include "gpio_names/emmitsburg.h" #include "gpio_names/sunrise.h" #include "gpio_names/tigerlake.h" #include "gpio_names/alderlake_h.h" @@ -82,6 +83,8 @@ static void print_gpio_community(const struct gpio_community *const community, } for (group = 0; group < community->group_count; ++group) { + if (community->groups[group]->pad_offset) + pad_cfg = community->groups[group]->pad_offset; print_gpio_group(community->pcr_port_id, pad_cfg, community->groups[group], pad_stepping); @@ -150,6 +153,10 @@ const struct gpio_community *const *get_gpio_communities(struct pci_dev *const s case PCI_DEVICE_ID_INTEL_C629A_SUPER: *community_count = ARRAY_SIZE(lewisburg_communities); return lewisburg_communities; + case PCI_DEVICE_ID_INTEL_EBG: + *pad_stepping = 16; + *community_count = ARRAY_SIZE(emmitsburg_communities); + return emmitsburg_communities; case PCI_DEVICE_ID_INTEL_DNV_LPC: *community_count = ARRAY_SIZE(denverton_communities); return denverton_communities; diff --git a/util/inteltool/gpio_names/emmitsburg.h b/util/inteltool/gpio_names/emmitsburg.h new file mode 100644 index 0000000000..382a0805a8 --- /dev/null +++ b/util/inteltool/gpio_names/emmitsburg.h @@ -0,0 +1,440 @@ +#ifndef GPIO_NAMES_EMMITSBURG_H +#define GPIO_NAMES_EMMITSBURG_H + +#include "gpio_groups.h" + +static const char *const emmitsburg_group_a_names[] = { + "GPPC_A0", "ESPI_ALERT0_N", "n/a", + "GPPC_A1", "ESPI_ALERT1_N", "n/a", + "GPPC_A2", "ESPI_IO_0", "n/a", + "GPPC_A3", "ESPI_IO_1", "n/a", + "GPPC_A4", "ESPI_IO_2", "n/a", + "GPPC_A5", "ESPI_IO_3", "n/a", + "GPPC_A6", "ESPI_CS0_N", "ESPI_CS1_N", + "GPPC_A7", "ESPI_CS1_N", "ESPI_CS0_N", + "GPPC_A8", "ESPI_RESET_N", "n/a", + "GPPC_A9", "ESPI_CLK", "n/a", + "GPPC_A10", "SRCCLKREQ0_N", "n/a", + "GPPC_A11", "SRCCLKREQ1_N", "n/a", + "GPPC_A12", "SRCCLKREQ2_N", "n/a", + "GPPC_A13", "SRCCLKREQ3_N", "n/a", + "GPPC_A14", "SRCCLKREQ4_N", "n/a", + "GPPC_A15", "SRCCLKREQ5_N", "n/a", + "GPPC_A16", "SRCCLKREQ6_N", "n/a", + "GPPC_A17", "SRCCLKREQ7_N", "n/a", + "GPPC_A18", "SRCCLKREQ8_N", "n/a", + "GPPC_A19", "SRCCLKREQ9_N", "n/a", + "ESPI_CLK_LOOPBK", "n/a", "n/a", +}; + +static const char *const emmitsburg_group_b_names[] = { + "GPPC_B0","GSXDOUT","n/a","1P8_VISA_CH0_CLK","1P8_PTI_CLK0","n/a","n/a","n/a","n/a", + "GPPC_B1","GSXSLOAD","n/a","1P8_VISA_CH0_D0","1P8_PTI_DATA0","n/a","n/a","n/a","n/a", + "GPPC_B2","GSXDIN","n/a","1P8_VISA_CH0_D1","1P8_PTI_DATA1","n/a","n/a","n/a","n/a", + "GPPC_B3","GSXRESET_N","n/a","1P8_VISA_CH0_D2","1P8_PTI_DATA2","n/a","n/a","n/a","n/a", + "GPPC_B4","GSXCLK","n/a","1P8_VISA_CH0_D3","1P8_PTI_DATA3","n/a","n/a","n/a","n/a", + "GPPC_B5","USB2_OC0_N","n/a","1P8_VISA_CH0_D4","1P8_PTI_DATA4","n/a","n/a","n/a","n/a", + "GPPC_B6","USB2_OC1_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B7","USB2_OC2_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B8","USB2_OC3_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B9","USB2_OC4_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B10","USB2_OC5_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B11","USB2_OC6_N","n/a","n/a","n/a","n/a","n/a","n/a","n/a", + "GPPC_B12","HS_UART0_RXD","n/a","1P8_VISA_CH0_D5","1P8_PTI_DATA5","n/a","n/a","n/a","n/a", + "GPPC_B13","HS_UART0_TXD","n/a","1P8_VISA_CH0_D6","1P8_PTI_DATA6","n/a","n/a","n/a","n/a", + "GPPC_B14","HS_UART0_RTS_N","n/a","1P8_VISA_CH0_D7","1P8_PTI_DATA7","n/a","n/a","n/a","n/a", + "GPPC_B15","HS_UART0_CTS_N","n/a","1P8_VISA_CH1_D0","1P8_PTI_DATA8","n/a","n/a","n/a","n/a", + "GPPC_B16","HS_UART1_RXD","n/a","1P8_VISA_CH1_D1","1P8_PTI_DATA9","n/a","n/a","n/a","n/a", + "GPPC_B17","HS_UART1_TXD","n/a","1P8_VISA_CH1_D2","1P8_PTI_DATA10","n/a","n/a","n/a","n/a", + "GPPC_B18","HS_UART1_RTX_N","n/a","1P8_VISA_CH1_D3","1P8_PTI_DATA11","n/a","n/a","n/a","n/a", + "GPPC_B19","HS_UART1_CTS_N","n/a","1P8_VISA_CH1_D4","1P8_PTI_DATA12","n/a","n/a","SBK0","BK0", + "GPPC_B20","n/a","n/a","1P8_VISA_CH1_D5","1P8_PTI_DATA13","n/a","n/a","SBK1","BK1", + "GPPC_B21","n/a","n/a","1P8_VISA_CH1_D6","1P8_PTI_DATA14","n/a","n/a","SBK2","BK2", + "GPPC_B22","n/a","n/a","1P8_VISA_CH1_D7","1P8_PTI_DATA15","n/a","n/a","SBK3","BK3", + "GPPC_B23","PS_ONB","n/a","1P8_VISA_CH1_CLK","n/a","n/a","GPPB_EC_23","SBK4","BK4", +}; + +static const char *const emmitsburg_group_s_names[] = { + "GPPC_S0","TIME_SYNC_0","n/a", + "GPPC_S1","SPRK","TIME_SYNC_1", + "GPPC_S2","CPU_GP_0","n/a", + "GPPC_S3","CPU_GP_1","n/a", + "GPPC_S4","CPU_GP_2","n/a", + "GPPC_S5","CPU_GP_3","n/a", + "GPPC_S6","SUSWARN_N_SUSWRDNACK","n/a", + "GPPC_S7","SUSACK_N","n/a", + "GPPC_S8","NMI_N","n/a", + "GPPC_S9","SMI_N","n/a", + "GPPC_S10","n/a","n/a", + "GPPC_S11","n/a","n/a", + "SPI_CLK_LOOPBK", "n/a", "n/a", +}; + +static const struct gpio_group emmitsburg_group_a = { + .display = "------- GPIO Group GPPC_A -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_a_names) / 3, + .func_count = 3, + .pad_names = emmitsburg_group_a_names, +}; + +static const struct gpio_group emmitsburg_group_b = { + .display = "------- GPIO Group GPPC_B -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_b_names) / 9, + .func_count = 9, + .pad_names = emmitsburg_group_b_names, +}; + +static const struct gpio_group emmitsburg_group_s = { + .display = "------- GPIO Group GPPC_S -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_s_names) / 3, + .func_count = 3, + .pad_offset = 0xA50, + .pad_names = emmitsburg_group_s_names, +}; + +static const struct gpio_group *const emmitsburg_community0_abs_groups[] = { + &emmitsburg_group_a, + &emmitsburg_group_b, + &emmitsburg_group_s, +}; + +static const struct gpio_community emmitsburg_community0_abs = { + .name = "------- GPIO Community 0 -------", + .pcr_port_id = 0x6e, + .group_count = ARRAY_SIZE(emmitsburg_community0_abs_groups), + .groups = emmitsburg_community0_abs_groups, +}; + +static const char *const emmitsburg_group_c_names[] = { + "GPPC_C0", "ME_SML0CLK", + "GPPC_C1", "ME_SML0DATA", + "GPPC_C2", "ME_SML0ALERT_N", + "GPPC_C3", "ME_SML0BDATA", + "GPPC_C4", "ME_SML0BCLK", + "GPPC_C5", "ME_SML0BALART_N", + "GPPC_C6", "ME_SML1CLK", + "GPPC_C7", "ME_SML1DATA", + "GPPC_C8", "ME_SML1ALERT_N", + "GPPC_C9", "ME_SML2CLK", + "GPPC_C10", "ME_SML2DATA", + "GPPC_C11", "ME_SML2ALERT_N", + "GPPC_C12", "ME_SML3CLK", + "GPPC_C13", "ME_SML3DATA", + "GPPC_C14", "ME_SML3ALERT_N", + "GPPC_C15", "ME_SML4CLK", + "GPPC_C16", "ME_SML4DATA", + "GPPC_C17", "ME_SML4ALERT_N", + "GPPC_C18", "n/a", + "GPPC_C19", "MC_SMBCLK", + "GPPC_C20", "MC_SMBDATA", + "GPPC_C21", "MC_SMBALERT_N", +}; + +static const struct gpio_group emmitsburg_group_c = { + .display = "------- GPIO Group GPPC_C -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_c_names) / 2, + .func_count = 2, + .pad_names = emmitsburg_group_c_names, +}; + +static const struct gpio_group *const emmitsburg_community1_c_groups[] = { + &emmitsburg_group_c, +}; + +static const char *const emmitsburg_group_d_names[] = { + "GPP_D0", "HS_SMBCLK", + "GPP_D1", "HS_SMBDATA", + "GPP_D2", "HS_SMBALERT_N", + "GPP_D3", "n/a", // Not described in EDS, add here to take space + "GPP_D4", "n/a", // Not described in EDS, add here to take space + "GPP_D5", "n/a", // Not described in EDS, add here to take space + "GPP_D6", "n/a", + "GPP_D7", "n/a", + "GPP_D8", "CRASHLOG_TRIG_N", + "GPP_D9", "PME_N", + "GPP_D10", "BM_BUSY_N", + "GPP_D11", "PLTRST_N", + "GPP_D12", "PCHHOT_N", + "GPP_D13", "ADR_COMPLETE", + "GPP_D14", "ADR_TRIGGER", + "GPP_D15", "VRALERT_N", + "GPP_D16", "ADR_ACK", + "GPP_D17", "THERMTRIP_N", + "GPP_D18", "MEMTRIP_N", + "GPP_D19", "MSMI_N", + "GPP_D20", "CATERR_N", + "GPP_D21", "GLB_RST_WARN_N", + "GPP_D22", "USB2_OCB_7", + "GPP_D23", "n/a", +}; + +static const struct gpio_group emmitsburg_group_d = { + .display = "------- GPIO Group GPP_D -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_d_names) / 2, + .func_count = 2, + .pad_names = emmitsburg_group_d_names, +}; + +static const struct gpio_group *const emmitsburg_community1_cd_groups[] = { + &emmitsburg_group_c, + &emmitsburg_group_d, +}; + +static const struct gpio_community emmitsburg_community1_cd = { + .name = "------- GPIO Community 1 -------", + .pcr_port_id = 0x6d, + .group_count = ARRAY_SIZE(emmitsburg_community1_cd_groups), + .groups = emmitsburg_community1_cd_groups, +}; + +static const char *const emmitsburg_group_e_names[] = { + "GPP_E0", "SATA1_XPCIE_0", "n/a", + "GPP_E1", "SATA1_XPCIE_1", "n/a", + "GPP_E2", "SATA1_XPCIE_2", "n/a", + "GPP_E3", "SATA1_XPCIE_3", "n/a", + "GPP_E4", "SATA0_XPCIE_2", "n/a", + "GPP_E5", "SATA0_XPCIE_1", "n/a", + "GPP_E6", "SATA0_USB3_XPCIE_0", "n/a", + "GPP_E7", "SATA0_USB3_XPCIE_1", "n/a", + "GPP_E8", "SATA0_SCLOCK", "SATA0_LED_N", + "GPP_E9", "SATA0_SLOAD", "SATA0_DEVSLP", + "GPP_E10", "SATA0_SDATAOUT", "SATA1_GP", + "GPP_E11", "SATA1_SCLOCK", "SATA1_LED_N", + "GPP_E12", "SATA1_SLOAD", "SATA1_GP", + "GPP_E13", "SATA1_SDATAOUT", "SATA1_DEVSLP", + "GPP_E14", "SATA2_SCLOCK", "SATA2_LED_N", + "GPP_E15", "SATA2_SLOAD", "SATA2_GP", + "GPP_E16", "SATA2_SDATAOUT", "SATA2_DEVSLP", + "GPP_E17", "n/a", "ERR0_N", + "GPP_E18", "n/a", "ERR1_N", + "GPP_E19", "n/a", "ERR2_N", +}; + +static const struct gpio_group emmitsburg_group_e = { + .display = "------- GPIO Group GPP_E -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_e_names) / 3, + .func_count = 3, + .pad_names = emmitsburg_group_e_names, +}; + +static const char *const emmitsburg_group_jtag_names[] = { + "JTAG_0", + "JTAG_1", + "JTAG_2", + "JTAG_3", + "JTAG_4", + "JTAG_5", + "JTAG_6", + "JTAG_7", + "JTAG_8", + "JTAG_9", +}; + +static const struct gpio_group emmitsburg_group_jtag = { + .display = "------- GPIO Group JTAG -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_jtag_names) / 1, + .func_count = 1, + .pad_offset = 0x880, + .pad_names = emmitsburg_group_jtag_names, +}; + +static const struct gpio_group *const emmitsburg_community3_e_jtag_groups[] = { + &emmitsburg_group_e, + &emmitsburg_group_jtag, +}; + +static const struct gpio_community emmitsburg_community3_e_jtag = { + .name = "------- GPIO Community 3 -------", + .pcr_port_id = 0x6b, + .group_count = ARRAY_SIZE(emmitsburg_community3_e_jtag_groups), + .groups = emmitsburg_community3_e_jtag_groups, +}; + +static const char *const emmitsburg_group_h_names[] = { + "GPPC_H0", "n/a", "n/a", + "GPPC_H1", "n/a", "n/a", + "GPPC_H2", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H3", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H4", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H5", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H6", "n/a", "n/a", + "GPPC_H7", "n/a", "n/a", + "GPPC_H8", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H9", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H10", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H11", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H12", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H13", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H14", "n/a", "n/a", // Not described in EDS, add here to take space + "GPPC_H15", "n/a", "ISCLK_CLK_OUT_0", + "GPPC_H16", "n/a", "ISCLK_CLK_OUT_1", + "GPPC_H17", "n/a", "ISCLK_CLK_OUT_2", + "GPPC_H18", "n/a", "PMCALERT_N", + "GPPC_H19", "n/a", "n/a", +}; + +static const struct gpio_group emmitsburg_group_h = { + .display = "------- GPIO Group GPPC_H -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_h_names) / 3, + .func_count = 3, + .pad_names = emmitsburg_group_h_names, +}; + +static const char *const emmitsburg_group_j_names[] = { + "GPPC_J0", "CPUPWRGD", + "GPPC_J1", "CPU_THRMTRIP_N", + "GPPC_J2", "PLTRST_CPU_N", + "GPPC_J3", "TRIGGER0_N", + "GPPC_J4", "TRIGGER1_N", + "GPPC_J5", "CPU_PWER_DEBUG_N", + "GPPC_J6", "CPU_MEMTRIP_N", + "GPPC_J7", "CPU_MSMI_N", + "GPPC_J8", "ME_PECI", + "GPPC_J9", "n/a", // Not described in EDS, add here to take space + "GPPC_J10", "n/a", // Not described in EDS, add here to take space + "GPPC_J11", "n/a", // Not described in EDS, add here to take space + "GPPC_J12", "CPU_ERR0_N", + "GPPC_J13", "CPU_CATERR_N", + "GPPC_J14", "CPU_ERR1_N", + "GPPC_J15", "CPU_ERR2_N", +}; + +static const struct gpio_group emmitsburg_group_j = { + .display = "------- GPIO Group GPP_J -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_j_names) / 2, + .func_count = 2, + .pad_names = emmitsburg_group_j_names, +}; + +static const struct gpio_group *const emmitsburg_community4_hj_groups[] = { + &emmitsburg_group_h, + &emmitsburg_group_j, +}; + +static const struct gpio_community emmitsburg_community4_hj = { + .name = "------- GPIO Community 4 -------", + .pcr_port_id = 0x6a, + .group_count = ARRAY_SIZE(emmitsburg_community4_hj_groups), + .groups = emmitsburg_community4_hj_groups, +}; + +static const char *const emmitsburg_group_i_names[] = { + "GPP_I0", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I1", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I2", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I3", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I4", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I5", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I6", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I7", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I8", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I9", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I10", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I11", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I12", "n/a", "HDA_BCLK", + "GPP_I13", "n/a", "HDA_RST_N", + "GPP_I14", "n/a", "HDA_SYNC", + "GPP_I15", "n/a", "HDA_SDO", + "GPP_I16", "n/a", "HDA_SDI_0", + "GPP_I17", "n/a", "HDA_SDI_1", + "GPP_I18", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I19", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I20", "n/a", "n/a", // Not described in EDS, add here to take space + "GPP_I21", "n/a", "n/a", + "GPP_I22", "n/a", "n/a", + "GPP_I23", "n/a", "n/a", +}; + +static const struct gpio_group emmitsburg_group_i = { + .display = "------- GPIO Group GPP_I -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_i_names) / 3, + .func_count = 3, + .pad_names = emmitsburg_group_i_names, +}; + +static const char *const emmitsburg_group_l_names[] = { + "GPP_L0", "PM_SYNC_0", + "GPP_L1", "PM_DOWN_0", + "GPP_L2", "SUSCLK_CPU", + "GPP_L3", "n/a", + "GPP_L4", "n/a", + "GPP_L5", "n/a", + "GPP_L6", "n/a", + "GPP_L7", "n/a", + "GPP_L8", "n/a", +}; + +static const struct gpio_group emmitsburg_group_l = { + .display = "------- GPIO Group GPP_L -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_l_names) / 2, + .func_count = 2, + .pad_names = emmitsburg_group_l_names, +}; + +static const char *const emmitsburg_group_m_names[] = { + "GPP_M0", + "GPP_M1", + "GPP_M2", + "GPP_M3", + "GPP_M4", + "GPP_M5", + "GPP_M6", + "GPP_M7", + "GPP_M8", + "GPP_M9", + "GPP_M10", + "GPP_M11", + "GPP_M12", + "GPP_M13", + "GPP_M14", + "GPP_M15", + "GPP_M16", + "GPP_M17", +}; + +static const struct gpio_group emmitsburg_group_m = { + .display = "------- GPIO Group GPP_M -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_m_names) / 1, + .func_count = 1, + .pad_offset = 0x9A0, + .pad_names = emmitsburg_group_m_names, +}; + +static const char *const emmitsburg_group_n_names[] = { + "GPP_N0", + "GPP_N1", + "GPP_N2", + "GPP_N3", + "GPP_N4", +}; + +static const struct gpio_group emmitsburg_group_n = { + .display = "------- GPIO Group GPP_N -------", + .pad_count = ARRAY_SIZE(emmitsburg_group_n_names) / 1, + .func_count = 1, + .pad_names = emmitsburg_group_n_names, +}; + +static const struct gpio_group *const emmitsburg_community5_ilmn_groups[] = { + &emmitsburg_group_i, + &emmitsburg_group_l, + &emmitsburg_group_m, + &emmitsburg_group_n, +}; + +static const struct gpio_community emmitsburg_community5_ilmn = { + .name = "------- GPIO Community 5 -------", + .pcr_port_id = 0x69, + .group_count = ARRAY_SIZE(emmitsburg_community5_ilmn_groups), + .groups = emmitsburg_community5_ilmn_groups, +}; + +static const struct gpio_community *const emmitsburg_communities[] = { + &emmitsburg_community0_abs, + &emmitsburg_community1_cd, + &emmitsburg_community3_e_jtag, + &emmitsburg_community4_hj, + &emmitsburg_community5_ilmn, +}; + +#endif diff --git a/util/inteltool/gpio_names/gpio_groups.h b/util/inteltool/gpio_names/gpio_groups.h index 711b298bd3..9ae2a8f7f0 100644 --- a/util/inteltool/gpio_names/gpio_groups.h +++ b/util/inteltool/gpio_names/gpio_groups.h @@ -5,6 +5,11 @@ struct gpio_group { const char *display; size_t pad_count; size_t func_count; + /* + * This field is necessary for EBG, since the pad configuration registers + * within a community are no longer contiguous. + */ + uint32_t pad_offset; const char *const *pad_names; /* indexed by 'pad * func_count + func' */ }; diff --git a/util/inteltool/pcr.c b/util/inteltool/pcr.c index f487683011..d1c5b276d0 100644 --- a/util/inteltool/pcr.c +++ b/util/inteltool/pcr.c @@ -154,6 +154,7 @@ void pcr_init(struct pci_dev *const sb) case PCI_DEVICE_ID_INTEL_ADL_M: case PCI_DEVICE_ID_INTEL_RPL_P: case PCI_DEVICE_ID_INTEL_EHL: + case PCI_DEVICE_ID_INTEL_EBG: sbbar_phys = 0xfd000000; use_p2sb = false; break; |