summaryrefslogtreecommitdiff
path: root/src/mainboard/google/fatcat/variants
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2024-11-05 12:44:20 +0530
committerSubrata Banik <subratabanik@google.com>2024-11-09 06:50:46 +0000
commit7101c166fa68a66daf0894446170fe7535bc0a55 (patch)
tree4006ed9fd21237055f7e4501314b1d56eee5f575 /src/mainboard/google/fatcat/variants
parentcfe1e921dd5d358fec2b46f50e356839531d487f (diff)
mb/google/fatcat: Add ISH support with FW_CONFIG toggle
This patch adds support for the Integrated Sensor Hub (ISH) on the Fatcat mainboard. ISH can be enabled or disabled via FW_CONFIG bit 24. This allows for flexible configuration depending on the system requirements. The GPIO configuration for ISH is also updated based on CBI settings, ensuring correct initialization and communication. Verified that the device tree correctly probes ISH based on the FW_CONFIG setting: * FW_CONFIG with bit 24 set: ISH is probed successfully. * FW_CONFIG with bit 24 cleared: ISH is not probed. BUG=b:370984186 TEST=Verified ISH probing behavior with different FW_CONFIG settings using CBI. Change-Id: I1a9734139a49be982a7dd43d5afd92e7fea6b29c Signed-off-by: Subrata Banik <subratabanik@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/84998 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Diffstat (limited to 'src/mainboard/google/fatcat/variants')
-rw-r--r--src/mainboard/google/fatcat/variants/fatcat/fw_config.c23
-rw-r--r--src/mainboard/google/fatcat/variants/fatcat/gpio.c26
-rw-r--r--src/mainboard/google/fatcat/variants/fatcat/overridetree.cb12
3 files changed, 45 insertions, 16 deletions
diff --git a/src/mainboard/google/fatcat/variants/fatcat/fw_config.c b/src/mainboard/google/fatcat/variants/fatcat/fw_config.c
index 46ef6a8b83..f3fd5d2be5 100644
--- a/src/mainboard/google/fatcat/variants/fatcat/fw_config.c
+++ b/src/mainboard/google/fatcat/variants/fatcat/fw_config.c
@@ -453,6 +453,24 @@ static const struct pad_config touchpad_i2c_disable_pads[] = {
PAD_NC(GPP_F18, NONE),
};
+static const struct pad_config ish_disable_pads[] = {
+ /* GPP_D05: NC */
+ PAD_NC(GPP_D05, NONE),
+ /* GPP_D06: NC */
+ PAD_NC(GPP_D06, NONE),
+ /* GPP_E05: NC */
+ PAD_NC(GPP_E05, NONE),
+};
+
+static const struct pad_config ish_enable_pads[] = {
+ /* GPP_D05: ISH_UART0_RXD */
+ PAD_CFG_NF(GPP_D05, NONE, DEEP, NF2),
+ /* GPP_D06: ISH_UART0_TXD */
+ PAD_CFG_NF(GPP_D06, NONE, DEEP, NF2),
+ /* GPP_E05: ISH_GP_7_SNSR_HDR */
+ PAD_CFG_NF(GPP_E05, NONE, DEEP, NF4),
+};
+
void fw_config_configure_pre_mem_gpio(void)
{
if (!fw_config_is_provisioned()) {
@@ -578,6 +596,11 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table)
else
GPIO_PADBASED_OVERRIDE(padbased_table, touchscreen_disable_pads);
+ if (fw_config_probe(FW_CONFIG(ISH, ISH_DISABLE)))
+ GPIO_PADBASED_OVERRIDE(padbased_table, ish_disable_pads);
+ else
+ GPIO_PADBASED_OVERRIDE(padbased_table, ish_enable_pads);
+
/* NOTE: disable PEG (x8 slot) and x4 slot wake for now */
GPIO_PADBASED_OVERRIDE(padbased_table, peg_x4slot_wake_disable_pads);
}
diff --git a/src/mainboard/google/fatcat/variants/fatcat/gpio.c b/src/mainboard/google/fatcat/variants/fatcat/gpio.c
index b76db5a92a..7833fe8a1b 100644
--- a/src/mainboard/google/fatcat/variants/fatcat/gpio.c
+++ b/src/mainboard/google/fatcat/variants/fatcat/gpio.c
@@ -163,14 +163,10 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_GPO(GPP_D03, 1, PLTRST),
/* GPP_D04: IMGCLKOUT_0 */
PAD_CFG_NF(GPP_D04, NONE, DEEP, NF1),
- /* GPP_D05: ISH_SPI_CS_N_SNSR_HDR */
- PAD_CFG_NF(GPP_D05, NONE, DEEP, NF3),
- /* GPP_D06: ISH_SPI_CLK_SNSR_HDR */
- PAD_CFG_NF(GPP_D06, NONE, DEEP, NF3),
- /* GPP_D07: ISH_SPI_MISO_SNSR_HDR */
- PAD_CFG_NF(GPP_D07, NONE, DEEP, NF3),
- /* GPP_D08: ISH_SPI_MOSI_SNSR_HDR */
- PAD_CFG_NF(GPP_D08, NONE, DEEP, NF3),
+ /* GPP_D07: NC */
+ PAD_NC(GPP_D07, NONE),
+ /* GPP_D08: NC */
+ PAD_NC(GPP_D08, NONE),
/* GPP_D09: PEG_SLOT_RST_N */
PAD_CFG_GPO(GPP_D09, 1, PLTRST),
/* GPP_D10: HDA_BCLK */
@@ -212,8 +208,6 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_GPI_SCI_LOW(GPP_E02, NONE, DEEP, LEVEL),
/* GPP_E03: M2_GEN5_SSD_RESET_N */
PAD_CFG_GPO(GPP_E03, 1, PLTRST),
- /* GPP_E05: ISH_GP_7_SNSR_HDR */
- PAD_CFG_NF(GPP_E05, NONE, DEEP, NF4),
/* GPP_E06: SECURE_CAM_SW */
PAD_CFG_GPI_TRIG_OWN(GPP_E06, NONE, PLTRST, LEVEL, ACPI),
/* GPP_E07: Not used */
@@ -274,8 +268,8 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPP_F07, NONE, DEEP, NF2),
/* GPP_F08: TCH_PNL1_PWR_EN */
PAD_CFG_GPO(GPP_F08, 1, PLTRST),
- /* GPP_F09: ISH_INT_GP11_CVS */
- PAD_CFG_NF(GPP_F09, NONE, DEEP, NF4),
+ /* GPP_F09: NC */
+ PAD_NC(GPP_F09, NONE),
/* GPP_F10: PEG_SLOT_PWR_EN_N */
PAD_CFG_GPO(GPP_F10, 0, PLTRST),
/* GPP_F11: MOD_TCSS2_TYP_A_VBUS_EN */
@@ -329,10 +323,10 @@ static const struct pad_config gpio_table[] = {
PAD_CFG_NF(GPP_H11, NONE, DEEP, NF1),
/* GPP_H13: CPU_C10_GATE_N_R */
PAD_CFG_NF(GPP_H13, NONE, DEEP, NF1),
- /* GPP_H14: ISH_I3C1_SDA_SNSR_HDR */
- PAD_CFG_NF(GPP_H14, NONE, DEEP, NF4),
- /* GPP_H15: ISH_I3C1_SCL_SNSR_HDR */
- PAD_CFG_NF(GPP_H15, NONE, DEEP, NF4),
+ /* GPP_H14: NC */
+ PAD_NC(GPP_H14, NONE),
+ /* GPP_H15: NC */
+ PAD_NC(GPP_H15, NONE),
/* GPP_H16: WWAN_PWREN */
PAD_CFG_GPO(GPP_H16, 1, PLTRST),
/* GPP_H17: MIC MUTE LED */
diff --git a/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb b/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb
index efea05413a..bed928ead6 100644
--- a/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb
+++ b/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb
@@ -62,6 +62,10 @@ fw_config
option WFC_MIPI 1
option WFC_USB 2
end
+ field ISH 24
+ option ISH_DISABLE 0
+ option ISH_ENABLE 1
+ end
end
chip soc/intel/pantherlake
@@ -227,6 +231,14 @@ chip soc/intel/pantherlake
end
end
+ device ref ish on
+ probe ISH ISH_ENABLE
+ chip drivers/intel/ish
+ register "add_acpi_dma_property" = "true"
+ device generic 0 on end
+ end
+ end
+
device ref xhci on
chip drivers/usb/acpi
device ref xhci_root_hub on