From 3a14338625d6ae7c6c4e8ee0b1e9be285593b3a6 Mon Sep 17 00:00:00 2001 From: Aamir Bohra Date: Wed, 11 Jul 2018 12:07:51 +0530 Subject: mb/google/dragonegg: Add initial mainboard code support This patch includes support for both ICL ES0 and ES1 samples. Detailed document is here: Documentation/soc/intel/icelake/iceLake_coreboot_development.md TEST=Able to build and boot dragonegg. Change-Id: I2cc269cb0050bf5b031f48cfe114485c55ab8fa9 Signed-off-by: Aamir Bohra Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/29749 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- .../google/dragonegg/variants/baseboard/gpio.c | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/mainboard/google/dragonegg/variants/baseboard/gpio.c (limited to 'src/mainboard/google/dragonegg/variants/baseboard/gpio.c') diff --git a/src/mainboard/google/dragonegg/variants/baseboard/gpio.c b/src/mainboard/google/dragonegg/variants/baseboard/gpio.c new file mode 100644 index 0000000000..f1752b9b4d --- /dev/null +++ b/src/mainboard/google/dragonegg/variants/baseboard/gpio.c @@ -0,0 +1,88 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2018 Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include + +/* Pad configuration in ramstage*/ +static const struct pad_config gpio_table[] = { +/* I2S2_SCLK */ PAD_CFG_GPI(GPP_A7, NONE, PLTRST), +/* I2S2_RXD */ PAD_CFG_GPI(GPP_A10, NONE, PLTRST), +/* ONBOARD_X4_PCIE_SLOT1_PWREN_N */ PAD_CFG_GPO(GPP_A14, 0, DEEP), +/* USB_OC_ODL */ PAD_CFG_NF(GPP_A15, NONE, DEEP, NF1), +/* WLAN_PCIE_WAKE_L */ PAD_CFG_GPI_SCI(GPP_B6, NONE, DEEP, EDGE_SINGLE, + INVERT), +/* PCH_WP_OD */ PAD_CFG_GPI(GPP_B7, UP_20K, DEEP), +/* PCH_SPI_FPMCU_F7_CS_L */ PAD_CFG_NF(GPP_B23, NONE, DEEP, NF1), +/* PEN_INT_ODL */ PAD_CFG_GPI(GPP_C2, NONE, PLTRST), +/* GPP_C5_STRAP */ PAD_CFG_GPO(GPP_C5, 1, DEEP), +/* TCH_INT_ODL */ PAD_CFG_GPI(GPP_C10, NONE, PLTRST), +/* TCH_RST_ODL */ PAD_CFG_GPO(GPP_C11, 0, PLTRST), +/* M2_SHUTDOWN+L */ PAD_CFG_GPO(GPP_C12, 1, PLTRST), +/* M2_RESET_L */ PAD_CFG_GPO(GPP_C13, 1, PLTRST), +/* M2_INT_L */ PAD_CFG_GPI(GPP_C14, NONE, PLTRST), +/* HP_INT_L */ PAD_CFG_GPI(GPP_C15, NONE, PLTRST), +/* PCH_DEV_INT_ODL */ PAD_CFG_GPI(GPP_C22, NONE, PLTRST), +/* PCH_DEV_RESET_L */ PAD_CFG_GPO(GPP_C23, 0, PLTRST), +/* PCI_NVME_CLKREQ_ODL */ PAD_CFG_NF(GPP_D7, UP_20K, PWROK, NF1), +/* H1_PCH_INT_ODL */ PAD_CFG_GPI_APIC(GPP_D16, UP_20K, PLTRST, LEVEL, + INVERT), +/* GPP_E6_STRAP */ PAD_CFG_GPO(GPP_E6, 1, DEEP), +/* USB_C0_SBU_1_DC */ PAD_CFG_GPO(GPP_E22, 1, PLTRST), +/* USB_C0_SBU_2_DC */ PAD_CFG_GPO(GPP_E23, 0, DEEP), +/* CNV_RF_RESET_N */ PAD_CFG_NF(GPP_F4, DN_20K, PWROK, NF1), +/* CNV_CLKREQ0 */ PAD_CFG_NF(GPP_F5, DN_20K, PWROK, NF2), +/* SD_CD# */ PAD_CFG_GPI_GPIO_DRIVER(GPP_G5, UP_20K, DEEP), +/* SD_WP */ PAD_CFG_NF(GPP_G7, DN_20K, DEEP, NF1), +/* PCH_MEM_STRAP0 */ PAD_CFG_GPI(GPP_H12, DN_20K, PLTRST), +/* PCH_MEM_STRAP1 */ PAD_CFG_GPI(GPP_H13, DN_20K, PLTRST), +/* PCH_MEM_STRAP2 */ PAD_CFG_GPI(GPP_H14, DN_20K, PLTRST), +/* PCH_MEM_STRAP3 */ PAD_CFG_GPI(GPP_H15, DN_20K, PLTRST), +}; +/* Early pad configuration in bootblock */ +static const struct pad_config early_gpio_table[] = { +/* PCH_WP_OD */ PAD_CFG_GPI(GPP_B7, UP_20K, DEEP), +/* GSPI0_CS# */ PAD_CFG_NF(GPP_B15, NONE, DEEP, NF1), +/* GSPI0_CLK */ PAD_CFG_NF(GPP_B16, NONE, DEEP, NF1), +/* GSPI0_MISO */ PAD_CFG_NF(GPP_B17, NONE, DEEP, NF1), +/* GSPI0_MOSI */ PAD_CFG_NF(GPP_B18, NONE, DEEP, NF1), +/* H1_PCH_INT_ODL */ PAD_CFG_GPI_APIC(GPP_D16, UP_20K, PLTRST, LEVEL, + INVERT), +}; + +const struct pad_config *__attribute__((weak)) variant_gpio_table(size_t *num) +{ + *num = ARRAY_SIZE(gpio_table); + return gpio_table; +} + +const struct pad_config *__attribute__((weak)) + variant_early_gpio_table(size_t *num) +{ + *num = ARRAY_SIZE(early_gpio_table); + return early_gpio_table; +} + +static const struct cros_gpio cros_gpios[] = { + CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, CROS_GPIO_DEVICE_NAME), + CROS_GPIO_WP_AH(39, CROS_GPIO_DEVICE_NAME), +}; + +const struct cros_gpio *__attribute__((weak)) variant_cros_gpios(size_t *num) +{ + *num = ARRAY_SIZE(cros_gpios); + return cros_gpios; +} -- cgit v1.2.3