soc/intel/alderlake: add GPIO definitions for PCH-S

Add GPIO definitions for ADL-S, similarly to how TGL/TGL-H handles
the split.

Based on:
- Intel PCH-S EDS Vol2 (#621483)
- Alderlake-S FSP
- slimbootloader sources
- Linux alderlake-pinctrl driver

Change-Id: I0fd1dc645c19c33bf14424703f966271e884ed3d
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63467
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
Michał Kopeć
2022-04-07 14:14:31 +02:00
committed by Felix Held
parent 619bb07494
commit febaf2f413
9 changed files with 1160 additions and 12 deletions

View File

@@ -14,12 +14,10 @@ bootblock-y += bootblock/bootblock.c
bootblock-y += bootblock/pch.c
bootblock-y += bootblock/report_platform.c
bootblock-y += espi.c
bootblock-y += gpio.c
bootblock-y += p2sb.c
bootblock-$(CONFIG_ALDERLAKE_CONFIGURE_DESCRIPTOR) += bootblock/update_descriptor.c
romstage-y += espi.c
romstage-y += gpio.c
romstage-y += meminit.c
romstage-y += pcie_rp.c
romstage-y += reset.c
@@ -33,7 +31,6 @@ ramstage-y += elog.c
ramstage-y += espi.c
ramstage-y += finalize.c
ramstage-y += fsp_params.c
ramstage-y += gpio.c
ramstage-y += lockdown.c
ramstage-y += me.c
ramstage-y += p2sb.c
@@ -48,16 +45,27 @@ ramstage-y += vr_config.c
ramstage-y += xhci.c
ramstage-$(CONFIG_SOC_INTEL_CRASHLOG) += crashlog.c
verstage-y += gpio.c
smm-y += elog.c
smm-y += gpio.c
smm-y += p2sb.c
smm-y += pmutil.c
smm-y += smihandler.c
smm-y += uart.c
smm-y += xhci.c
ifeq ($(CONFIG_SOC_INTEL_ALDERLAKE_PCH_S),y)
bootblock-y += gpio_pch_s.c
romstage-y += gpio_pch_s.c
ramstage-y += gpio_pch_s.c
smm-y += gpio_pch_s.c
verstage-y += gpio_pch_s.c
else
bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-y += gpio.c
smm-y += gpio.c
verstage-y += gpio.c
endif
CPPFLAGS_common += -I$(src)/soc/intel/alderlake
CPPFLAGS_common += -I$(src)/soc/intel/alderlake/include

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <intelblocks/gpio.h>
#include <soc/gpio_defs.h>
#include <soc/gpio.h>
#include <soc/intel/common/acpi/gpio.asl>
#include <soc/intel/common/block/acpi/acpi/gpio_op.asl>
#include <soc/irq.h>

View File

@@ -18,7 +18,7 @@
#include <intelpch/lockdown.h>
#include <intelblocks/tcss.h>
#include <soc/cpu.h>
#include <soc/gpio_soc_defs.h>
#include <soc/gpio.h>
#include <soc/intel/common/vbt.h>
#include <soc/pci_devs.h>
#include <soc/pcie.h>

View File

@@ -0,0 +1,263 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <intelblocks/gpio.h>
#include <intelblocks/pcr.h>
#include <soc/pcr_ids.h>
#include <soc/pmc.h>
#define DEFAULT_VW_BASE 0x10
/*
* This file is created based on Intel Alder Lake Processor PCH-S Datasheet
*/
static const struct reset_mapping rst_map_gpp[] = {
{ .logical = PAD_RESET(RSMRST), .chipset = 0U << 30 },
{ .logical = PAD_RESET(DEEP), .chipset = 1U << 30 },
{ .logical = PAD_RESET(PLTRST), .chipset = 2U << 30 },
};
static const struct reset_mapping rst_map_gpd[] = {
{ .logical = PAD_RESET(PWROK), .chipset = 0U << 30 },
{ .logical = PAD_RESET(DEEP), .chipset = 1U << 30 },
{ .logical = PAD_RESET(PLTRST), .chipset = 2U << 30 },
{ .logical = PAD_RESET(RSMRST), .chipset = 3U << 30 },
};
/*
* The GPIO pinctrl driver for Alder Lake on Linux expects 32 GPIOs per pad
* group, regardless of whether or not there is a physical pad for each
* exposed GPIO number.
*
* This results in the OS having a sparse GPIO map, and devices that need
* to export an ACPI GPIO must use the OS expected number.
*
* Not all pins are usable as GPIO and those groups do not have a pad base.
*/
static const struct pad_group adl_community0_groups[] = {
INTEL_GPP_BASE(GPP_I0, GPP_I0, GPP_GSPI1_CLK_LOOPBK, 0), /* GPP_I */
INTEL_GPP_BASE(GPP_I0, GPP_R0, GPP_GSPI2_CLK_LOOPBK, 32), /* GPP_R */
INTEL_GPP_BASE(GPP_I0, GPP_J0, GPP_J11, 64), /* GPP_J */
INTEL_GPP_BASE(GPP_I0, VGPIO_0, VGPIO_37, 96), /* vGPIO */
INTEL_GPP_BASE(GPP_I0, VGPIO_USB_0, VGPIO_USB_11, 128), /* vGPIO_0 */
};
static const struct vw_entries adl_community0_vw[] = {
{GPP_I0, GPP_I14},
{GPP_R0, GPP_R19},
{GPP_J0, GPP_J9},
};
static const struct pad_group adl_community1_groups[] = {
INTEL_GPP_BASE(GPP_B0, GPP_B0, GPP_B23, 160), /* GPP_B */
INTEL_GPP_BASE(GPP_B0, GPP_G0, GPP_G7, 192), /* GPP_G */
INTEL_GPP_BASE(GPP_B0, GPP_H0, GPP_H23, 224), /* GPP_H */
};
static const struct vw_entries adl_community1_vw[] = {
{GPP_B0, GPP_B23},
{GPP_G0, GPP_G7},
{GPP_H0, GPP_H23},
};
/* This community is not visible to the OS */
static const struct pad_group adl_community2_groups[] = {
INTEL_GPP(GPD0, GPD0, GPD_DRAM_RESETB), /* GPD */
};
static const struct pad_group adl_community3_groups[] = {
INTEL_GPP(GPP_SPI0_IO_2, GPP_SPI0_IO_2, GPP_SPI0_CLK_LOOPBK), /* SPI0 */
INTEL_GPP_BASE(GPP_SPI0_IO_2, GPP_A0, GPP_ESPI_CLK_LOOPBK, 256), /* GPP_A */
INTEL_GPP_BASE(GPP_SPI0_IO_2, GPP_C0, GPP_C23, 288), /* GPP_C */
INTEL_GPP(GPP_SPI0_IO_2, VGPIO_PCIE_0, VGPIO_PCIE_83), /* vGPIO_3 */
};
static const struct vw_entries adl_community3_vw[] = {
{GPP_A0, GPP_A14},
{GPP_C0, GPP_C23},
};
static const struct pad_group adl_community4_groups[] = {
INTEL_GPP_BASE(GPP_S0, GPP_S0, GPP_S7, 320), /* GPP_S */
INTEL_GPP_BASE(GPP_S0, GPP_E0, GPP_SPI1_THC0_CLK_LOOPBK, 352), /* GPP_E */
INTEL_GPP_BASE(GPP_S0, GPP_K0, GPP_MLK_RSTB, 384), /* GPP_K */
INTEL_GPP_BASE(GPP_S0, GPP_F0, GPP_F23, 416), /* GPP_F */
};
static const struct vw_entries adl_community4_vw[] = {
{GPP_E0, GPP_E21},
{GPP_K0, GPP_K11},
{GPP_F0, GPP_F23},
};
static const struct pad_group adl_community5_groups[] = {
INTEL_GPP_BASE(GPP_D0, GPP_D0, GPP_GSPI3_THC1_CLK_LOOPBK, 448), /* GPP_D */
INTEL_GPP(GPP_D0, GPP_JTAG_TDO, GPP_CPU_TRSTB), /* JTAG */
INTEL_GPP(GPP_D0, GPP_HDACPU_SDI, GPP_C10_WAKE), /* CPU */
};
static const struct pad_community adl_communities[] = {
[COMM_0] = { /* GPP I, R, J, vGPIO. vGPIO_0 */
.port = PID_GPIOCOM0,
.cpu_port = PID_CPU_GPIOCOM0,
.first_pad = GPIO_COM0_START,
.last_pad = GPIO_COM0_END,
.num_gpi_regs = NUM_GPIO_COM0_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.pad_cfg_lock_offset = PAD_CFG_LOCK_OFFSET,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPP_IRJ",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpp,
.num_reset_vals = ARRAY_SIZE(rst_map_gpp),
.groups = adl_community0_groups,
.num_groups = ARRAY_SIZE(adl_community0_groups),
.vw_base = DEFAULT_VW_BASE,
.vw_entries = adl_community0_vw,
.num_vw_entries = ARRAY_SIZE(adl_community0_vw),
},
[COMM_1] = { /* GPP B, G, H */
.port = PID_GPIOCOM1,
.cpu_port = PID_CPU_GPIOCOM1,
.first_pad = GPIO_COM1_START,
.last_pad = GPIO_COM1_END,
.num_gpi_regs = NUM_GPIO_COM1_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.pad_cfg_lock_offset = PAD_CFG_LOCK_OFFSET,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPP_BGH",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpp,
.num_reset_vals = ARRAY_SIZE(rst_map_gpp),
.groups = adl_community1_groups,
.num_groups = ARRAY_SIZE(adl_community1_groups),
.vw_base = DEFAULT_VW_BASE,
.vw_entries = adl_community1_vw,
.num_vw_entries = ARRAY_SIZE(adl_community1_vw),
},
[COMM_2] = { /* GPD */
.port = PID_GPIOCOM2,
.first_pad = GPIO_COM2_START,
.last_pad = GPIO_COM2_END,
.num_gpi_regs = NUM_GPIO_COM2_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.pad_cfg_lock_offset = PAD_CFG_LOCK_OFFSET,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPD",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpd,
.num_reset_vals = ARRAY_SIZE(rst_map_gpd),
.groups = adl_community2_groups,
.num_groups = ARRAY_SIZE(adl_community2_groups),
},
[COMM_3] = { /* SPI0, GPP A, C */
.port = PID_GPIOCOM3,
.cpu_port = PID_CPU_GPIOCOM3,
.first_pad = GPIO_COM3_START,
.last_pad = GPIO_COM3_END,
.num_gpi_regs = NUM_GPIO_COM3_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPP_AC",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpp,
.num_reset_vals = ARRAY_SIZE(rst_map_gpp),
.groups = adl_community3_groups,
.num_groups = ARRAY_SIZE(adl_community3_groups),
.vw_base = DEFAULT_VW_BASE,
.vw_entries = adl_community3_vw,
.num_vw_entries = ARRAY_SIZE(adl_community3_vw),
},
[COMM_4] = { /* GPP S, E, K, F */
.port = PID_GPIOCOM4,
.cpu_port = PID_CPU_GPIOCOM4,
.first_pad = GPIO_COM4_START,
.last_pad = GPIO_COM4_END,
.num_gpi_regs = NUM_GPIO_COM4_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.pad_cfg_lock_offset = PAD_CFG_LOCK_OFFSET,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPP_SEKF",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpp,
.num_reset_vals = ARRAY_SIZE(rst_map_gpp),
.groups = adl_community4_groups,
.num_groups = ARRAY_SIZE(adl_community4_groups),
.vw_base = DEFAULT_VW_BASE,
.vw_entries = adl_community4_vw,
.num_vw_entries = ARRAY_SIZE(adl_community4_vw),
},
[COMM_5] = { /* GPP D, JTAG, CPU */
.port = PID_GPIOCOM5,
.cpu_port = PID_CPU_GPIOCOM5,
.first_pad = GPIO_COM5_START,
.last_pad = GPIO_COM5_END,
.num_gpi_regs = NUM_GPIO_COM5_GPI_REGS,
.pad_cfg_base = PAD_CFG_BASE,
.pad_cfg_lock_offset = PAD_CFG_LOCK_OFFSET,
.host_own_reg_0 = HOSTSW_OWN_REG_0,
.gpi_int_sts_reg_0 = GPI_INT_STS_0,
.gpi_int_en_reg_0 = GPI_INT_EN_0,
.gpi_smi_sts_reg_0 = GPI_SMI_STS_0,
.gpi_smi_en_reg_0 = GPI_SMI_EN_0,
.max_pads_per_group = GPIO_MAX_NUM_PER_GROUP,
.name = "GPP_D",
.acpi_path = "\\_SB.PCI0.GPIO",
.reset_map = rst_map_gpp,
.num_reset_vals = ARRAY_SIZE(rst_map_gpp),
.groups = adl_community5_groups,
.num_groups = ARRAY_SIZE(adl_community5_groups),
}
};
const struct pad_community *soc_gpio_get_community(size_t *num_communities)
{
*num_communities = ARRAY_SIZE(adl_communities);
return adl_communities;
}
const struct pmc_to_gpio_route *soc_pmc_gpio_routes(size_t *num)
{
static const struct pmc_to_gpio_route routes[] = {
{ PMC_GPP_I, GPP_I },
{ PMC_GPP_R, GPP_R },
{ PMC_GPP_J, GPP_J },
{ PMC_GPD, GPD },
{ PMC_GPP_D, GPP_D },
{ PMC_GPP_S, GPP_S },
{ PMC_GPP_E, GPP_E },
{ PMC_GPP_K, GPP_K },
{ PMC_GPP_F, GPP_F },
{ PMC_GPP_A, GPP_A },
{ PMC_GPP_C, GPP_C },
{ PMC_GPP_B, GPP_B },
{ PMC_GPP_G, GPP_G },
{ PMC_GPP_H, GPP_H },
};
*num = ARRAY_SIZE(routes);
return routes;
};

View File

@@ -3,17 +3,22 @@
#ifndef _SOC_ALDERLAKE_GPIO_H_
#define _SOC_ALDERLAKE_GPIO_H_
#if CONFIG(SOC_INTEL_ALDERLAKE_PCH_S)
#include <soc/gpio_defs_pch_s.h>
#define CROS_GPIO_NAME "INTC1056"
#define CROS_GPIO_DEVICE_NAME "INTC1056:00"
#elif CONFIG(SOC_INTEL_ALDERLAKE_PCH_N)
#include <soc/gpio_defs.h>
#include <intelblocks/gpio.h>
#if CONFIG(SOC_INTEL_ALDERLAKE_PCH_N)
#define CROS_GPIO_NAME "INTC1057"
#define CROS_GPIO_DEVICE_NAME "INTC1057:00"
#else
#include <soc/gpio_defs.h>
#define CROS_GPIO_NAME "INTC1055"
#define CROS_GPIO_DEVICE_NAME "INTC1055:00"
#endif
#include <intelblocks/gpio.h>
/* Enable GPIO community power management configuration */
#define MISCCFG_GPIO_PM_CONFIG_BITS (MISCCFG_GPVNNREQEN | \
MISCCFG_GPPGCBDPCGEN | MISCCFG_GPSIDEDPCGEN | \

View File

@@ -0,0 +1,330 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _SOC_ALDERLAKE_GPIO_DEFS_PCH_S_H_
#define _SOC_ALDERLAKE_GPIO_DEFS_PCH_S_H_
#ifndef __ACPI__
#include <stddef.h>
#endif
#include <soc/gpio_soc_defs_pch_s.h>
#define GPIO_NUM_PAD_CFG_REGS 4 /* DW0, DW1, DW2, DW3 */
#define NUM_GPIO_COMx_GPI_REGS(n) \
(ALIGN_UP((n), GPIO_MAX_NUM_PER_GROUP) / GPIO_MAX_NUM_PER_GROUP)
#define NUM_GPIO_COM0_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM0_PADS)
#define NUM_GPIO_COM1_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM1_PADS)
#define NUM_GPIO_COM2_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM2_PADS)
#define NUM_GPIO_COM3_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM3_PADS)
#define NUM_GPIO_COM4_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM4_PADS)
#define NUM_GPIO_COM5_GPI_REGS NUM_GPIO_COMx_GPI_REGS(NUM_GPIO_COM5_PADS)
#define NUM_GPI_STATUS_REGS \
((NUM_GPIO_COM0_GPI_REGS) +\
(NUM_GPIO_COM1_GPI_REGS) +\
(NUM_GPIO_COM2_GPI_REGS) +\
(NUM_GPIO_COM4_GPI_REGS) +\
(NUM_GPIO_COM5_GPI_REGS))
#define PAD_CFG_LOCK_OFFSET 0x110
/*
* IOxAPIC IRQs for the GPIOs
*/
/* Group I */
#define GPP_I0_IRQ 0x18
#define GPP_I1_IRQ 0x19
#define GPP_I2_IRQ 0x1A
#define GPP_I3_IRQ 0x1B
#define GPP_I4_IRQ 0x1C
#define GPP_I5_IRQ 0x1D
#define GPP_I6_IRQ 0x1E
#define GPP_I7_IRQ 0x20
#define GPP_I8_IRQ 0x21
#define GPP_I9_IRQ 0x22
#define GPP_I10_IRQ 0x23
#define GPP_I11_IRQ 0x24
#define GPP_I12_IRQ 0x25
#define GPP_I13_IRQ 0x26
#define GPP_I14_IRQ 0x27
#define GPP_I15_IRQ 0x28
#define GPP_I16_IRQ 0x29
#define GPP_I17_IRQ 0x2A
#define GPP_I18_IRQ 0x2B
#define GPP_I19_IRQ 0x2C
#define GPP_I20_IRQ 0x2D
#define GPP_I21_IRQ 0x2E
#define GPP_I22_IRQ 0x30
/* Group R */
#define GPP_R0_IRQ 0x31
#define GPP_R1_IRQ 0x32
#define GPP_R2_IRQ 0x33
#define GPP_R3_IRQ 0x34
#define GPP_R4_IRQ 0x35
#define GPP_R5_IRQ 0x36
#define GPP_R6_IRQ 0x37
#define GPP_R7_IRQ 0x38
#define GPP_R8_IRQ 0x39
#define GPP_R9_IRQ 0x3A
#define GPP_R10_IRQ 0x3B
#define GPP_R11_IRQ 0x3C
#define GPP_R12_IRQ 0x3D
#define GPP_R13_IRQ 0x3E
#define GPP_R14_IRQ 0x3F
#define GPP_R15_IRQ 0x40
#define GPP_R16_IRQ 0x41
#define GPP_R17_IRQ 0x42
#define GPP_R18_IRQ 0x43
#define GPP_R19_IRQ 0x44
#define GPP_R20_IRQ 0x45
#define GPP_R21_IRQ 0x46
/* Group J */
#define GPP_J0_IRQ 0x47
#define GPP_J1_IRQ 0x48
#define GPP_J2_IRQ 0x49
#define GPP_J3_IRQ 0x4A
#define GPP_J4_IRQ 0x4B
#define GPP_J5_IRQ 0x4C
#define GPP_J6_IRQ 0x4D
#define GPP_J7_IRQ 0x4E
#define GPP_J8_IRQ 0x50
#define GPP_J9_IRQ 0x51
#define GPP_J10_IRQ 0x52
#define GPP_J11_IRQ 0x53
/* Group B */
#define GPP_B0_IRQ 0x50
#define GPP_B1_IRQ 0x51
#define GPP_B2_IRQ 0x52
#define GPP_B3_IRQ 0x53
#define GPP_B4_IRQ 0x54
#define GPP_B5_IRQ 0x55
#define GPP_B6_IRQ 0x56
#define GPP_B7_IRQ 0x57
#define GPP_B8_IRQ 0x58
#define GPP_B9_IRQ 0x59
#define GPP_B10_IRQ 0x5A
#define GPP_B11_IRQ 0x5B
#define GPP_B12_IRQ 0x5C
#define GPP_B13_IRQ 0x5D
#define GPP_B14_IRQ 0x5E
#define GPP_B15_IRQ 0x5F
#define GPP_B16_IRQ 0x60
#define GPP_B17_IRQ 0x61
#define GPP_B18_IRQ 0x62
#define GPP_B19_IRQ 0x63
#define GPP_B20_IRQ 0x64
#define GPP_B21_IRQ 0x65
#define GPP_B22_IRQ 0x66
#define GPP_B23_IRQ 0x67
/* Group G */
#define GPP_G0_IRQ 0x68
#define GPP_G1_IRQ 0x69
#define GPP_G2_IRQ 0x6A
#define GPP_G3_IRQ 0x6B
#define GPP_G4_IRQ 0x6C
#define GPP_G5_IRQ 0x6D
#define GPP_G6_IRQ 0x6E
#define GPP_G7_IRQ 0x6F
/* Group H */
#define GPP_H0_IRQ 0x70
#define GPP_H1_IRQ 0x71
#define GPP_H2_IRQ 0x72
#define GPP_H3_IRQ 0x73
#define GPP_H4_IRQ 0x74
#define GPP_H5_IRQ 0x75
#define GPP_H6_IRQ 0x76
#define GPP_H7_IRQ 0x77
#define GPP_H8_IRQ 0x18
#define GPP_H9_IRQ 0x19
#define GPP_H10_IRQ 0x20
#define GPP_H11_IRQ 0x21
#define GPP_H12_IRQ 0x22
#define GPP_H13_IRQ 0x23
#define GPP_H14_IRQ 0x24
#define GPP_H15_IRQ 0x25
#define GPP_H16_IRQ 0x26
#define GPP_H17_IRQ 0x27
#define GPP_H18_IRQ 0x28
#define GPP_H19_IRQ 0x29
#define GPP_H20_IRQ 0x2A
#define GPP_H21_IRQ 0x2B
#define GPP_H22_IRQ 0x2C
#define GPP_H23_IRQ 0x2D
/* Group GPD */
#define GPD0_IRQ 0x60
#define GPD1_IRQ 0x61
#define GPD2_IRQ 0x62
#define GPD3_IRQ 0x63
#define GPD4_IRQ 0x64
#define GPD5_IRQ 0x65
#define GPD6_IRQ 0x66
#define GPD7_IRQ 0x67
#define GPD8_IRQ 0x68
#define GPD9_IRQ 0x69
#define GPD10_IRQ 0x6A
#define GPD11_IRQ 0x6B
#define GPD12_IRQ 0x6C
/* Group A */
#define GPP_A0_IRQ 0x18
#define GPP_A1_IRQ 0x19
#define GPP_A2_IRQ 0x20
#define GPP_A3_IRQ 0x21
#define GPP_A4_IRQ 0x22
#define GPP_A5_IRQ 0x23
#define GPP_A6_IRQ 0x24
#define GPP_A7_IRQ 0x25
#define GPP_A8_IRQ 0x26
#define GPP_A9_IRQ 0x27
#define GPP_A10_IRQ 0x28
#define GPP_A11_IRQ 0x29
#define GPP_A12_IRQ 0x2A
#define GPP_A13_IRQ 0x2B
#define GPP_A14_IRQ 0x2C
/* Group C */
#define GPP_C0_IRQ 0x2D
#define GPP_C1_IRQ 0x2E
#define GPP_C2_IRQ 0x2F
#define GPP_C3_IRQ 0x30
#define GPP_C4_IRQ 0x31
#define GPP_C5_IRQ 0x32
#define GPP_C6_IRQ 0x33
#define GPP_C7_IRQ 0x34
#define GPP_C8_IRQ 0x35
#define GPP_C9_IRQ 0x36
#define GPP_C10_IRQ 0x37
#define GPP_C11_IRQ 0x38
#define GPP_C12_IRQ 0x39
#define GPP_C13_IRQ 0x3A
#define GPP_C14_IRQ 0x3B
#define GPP_C15_IRQ 0x3C
#define GPP_C16_IRQ 0x3D
#define GPP_C17_IRQ 0x3E
#define GPP_C18_IRQ 0x3F
#define GPP_C19_IRQ 0x40
#define GPP_C20_IRQ 0x41
#define GPP_C21_IRQ 0x42
#define GPP_C22_IRQ 0x43
#define GPP_C23_IRQ 0x44
/* Group S */
#define GPP_S0_IRQ 0x30
#define GPP_S1_IRQ 0x31
#define GPP_S2_IRQ 0x32
#define GPP_S3_IRQ 0x33
#define GPP_S4_IRQ 0x34
#define GPP_S5_IRQ 0x35
#define GPP_S6_IRQ 0x36
#define GPP_S7_IRQ 0x37
/* Group E */
#define GPP_E0_IRQ 0x38
#define GPP_E1_IRQ 0x39
#define GPP_E2_IRQ 0x3A
#define GPP_E3_IRQ 0x3B
#define GPP_E4_IRQ 0x3C
#define GPP_E5_IRQ 0x3D
#define GPP_E6_IRQ 0x3E
#define GPP_E7_IRQ 0x3F
#define GPP_E8_IRQ 0x40
#define GPP_E9_IRQ 0x41
#define GPP_E10_IRQ 0x42
#define GPP_E11_IRQ 0x43
#define GPP_E12_IRQ 0x44
#define GPP_E13_IRQ 0x45
#define GPP_E14_IRQ 0x46
#define GPP_E15_IRQ 0x47
#define GPP_E16_IRQ 0x48
#define GPP_E17_IRQ 0x49
#define GPP_E18_IRQ 0x4A
#define GPP_E19_IRQ 0x4B
#define GPP_E20_IRQ 0x4C
#define GPP_E21_IRQ 0x4D
/* Group K */
#define GPP_K0_IRQ 0x4E
#define GPP_K1_IRQ 0x50
#define GPP_K2_IRQ 0x51
#define GPP_K3_IRQ 0x52
#define GPP_K4_IRQ 0x53
#define GPP_K5_IRQ 0x54
#define GPP_K6_IRQ 0x55
#define GPP_K7_IRQ 0x56
#define GPP_K8_IRQ 0x57
#define GPP_K9_IRQ 0x58
#define GPP_K10_IRQ 0x59
#define GPP_K11_IRQ 0x5A
/* Group F */
#define GPP_F0_IRQ 0x5B
#define GPP_F1_IRQ 0x5C
#define GPP_F2_IRQ 0x5D
#define GPP_F3_IRQ 0x5E
#define GPP_F4_IRQ 0x60
#define GPP_F5_IRQ 0x61
#define GPP_F6_IRQ 0x62
#define GPP_F7_IRQ 0x63
#define GPP_F8_IRQ 0x64
#define GPP_F9_IRQ 0x65
#define GPP_F10_IRQ 0x66
#define GPP_F11_IRQ 0x67
#define GPP_F12_IRQ 0x68
#define GPP_F13_IRQ 0x69
#define GPP_F14_IRQ 0x6A
#define GPP_F15_IRQ 0x6B
#define GPP_F16_IRQ 0x6C
#define GPP_F17_IRQ 0x6D
#define GPP_F18_IRQ 0x6E
#define GPP_F19_IRQ 0x6F
#define GPP_F20_IRQ 0x70
#define GPP_F21_IRQ 0x71
#define GPP_F22_IRQ 0x72
#define GPP_F23_IRQ 0x73
/* Group D */
#define GPP_D0_IRQ 0x70
#define GPP_D1_IRQ 0x71
#define GPP_D2_IRQ 0x72
#define GPP_D3_IRQ 0x73
#define GPP_D4_IRQ 0x74
#define GPP_D5_IRQ 0x75
#define GPP_D6_IRQ 0x76
#define GPP_D7_IRQ 0x77
#define GPP_D8_IRQ 0x18
#define GPP_D9_IRQ 0x19
#define GPP_D10_IRQ 0x20
#define GPP_D11_IRQ 0x21
#define GPP_D12_IRQ 0x22
#define GPP_D13_IRQ 0x23
#define GPP_D14_IRQ 0x24
#define GPP_D15_IRQ 0x25
#define GPP_D16_IRQ 0x26
#define GPP_D17_IRQ 0x27
#define GPP_D18_IRQ 0x28
#define GPP_D19_IRQ 0x29
#define GPP_D20_IRQ 0x2A
#define GPP_D21_IRQ 0x2B
#define GPP_D22_IRQ 0x2C
#define GPP_D23_IRQ 0x2D
/* Register defines. */
#define GPIO_MISCCFG 0x10
#define GPE_DW_SHIFT 8
#define GPE_DW_MASK 0xfff00
#define HOSTSW_OWN_REG_0 0x150
#define GPI_INT_STS_0 0x200
#define GPI_INT_EN_0 0x220
#define GPI_SMI_STS_0 0x280
#define GPI_SMI_EN_0 0x2A0
#define PAD_CFG_BASE 0x700
#endif

View File

@@ -0,0 +1,525 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _SOC_ALDERLAKE_GPIO_SOC_DEFS_PCH_S_H_
#define _SOC_ALDERLAKE_GPIO_SOC_DEFS_PCH_S_H_
#define INC(x) ((x) + 1)
/*
* Most of the fixed numbers and macros are based on the GPP groups.
* The GPIO groups are accessed through register blocks called
* communities.
*
* Refer to Alder Lake PCH-S EDS Chapter 26, MISCCFG register offset 0x10
* for each GPIO community to get GPIO group to GPE_DWx assignment.
*/
#define GPP_I 0x0
#define GPP_R INC(GPP_I)
#define GPP_J INC(GPP_R)
#define GPP_VPGIO INC(GPP_J)
#define GPD INC(GPP_VPGIO)
#define GPP_D INC(GPD)
#define GPP_S INC(GPP_D)
#define GPP_E INC(GPP_S)
#define GPP_K INC(GPP_E)
#define GPP_F INC(GPP_K)
#define GPP_A INC(GPP_F)
#define GPP_C INC(GPP_A)
#define GPP_B INC(GPP_C)
#define GPP_G INC(GPP_B)
#define GPP_H INC(GPP_G)
#define GPIO_MAX_NUM_PER_GROUP 26
#define COMM_0 0
#define COMM_1 INC(COMM_0)
#define COMM_2 INC(COMM_1)
#define COMM_3 INC(COMM_2)
#define COMM_4 INC(COMM_3)
#define COMM_5 INC(COMM_4)
/* Group I */
#define GPP_I0 0
#define GPP_I1 INC(GPP_I0)
#define GPP_I2 INC(GPP_I1)
#define GPP_I3 INC(GPP_I2)
#define GPP_I4 INC(GPP_I3)
#define GPP_I5 INC(GPP_I4)
#define GPP_I6 INC(GPP_I5)
#define GPP_I7 INC(GPP_I6)
#define GPP_I8 INC(GPP_I7)
#define GPP_I9 INC(GPP_I8)
#define GPP_I10 INC(GPP_I9)
#define GPP_I11 INC(GPP_I10)
#define GPP_I12 INC(GPP_I11)
#define GPP_I13 INC(GPP_I12)
#define GPP_I14 INC(GPP_I13)
#define GPP_I15 INC(GPP_I14)
#define GPP_I16 INC(GPP_I15)
#define GPP_I17 INC(GPP_I16)
#define GPP_I18 INC(GPP_I17)
#define GPP_I19 INC(GPP_I18)
#define GPP_I20 INC(GPP_I19)
#define GPP_I21 INC(GPP_I20)
#define GPP_I22 INC(GPP_I21)
#define GPP_GSPI0_CLK_LOOPBK INC(GPP_I22)
#define GPP_GSPI1_CLK_LOOPBK INC(GPP_GSPI0_CLK_LOOPBK)
/* Group R */
#define GPP_R0 INC(GPP_GSPI1_CLK_LOOPBK)
#define GPP_R1 INC(GPP_R0)
#define GPP_R2 INC(GPP_R1)
#define GPP_R3 INC(GPP_R2)
#define GPP_R4 INC(GPP_R3)
#define GPP_R5 INC(GPP_R4)
#define GPP_R6 INC(GPP_R5)
#define GPP_R7 INC(GPP_R6)
#define GPP_R8 INC(GPP_R7)
#define GPP_R9 INC(GPP_R8)
#define GPP_R10 INC(GPP_R9)
#define GPP_R11 INC(GPP_R10)
#define GPP_R12 INC(GPP_R11)
#define GPP_R13 INC(GPP_R12)
#define GPP_R14 INC(GPP_R13)
#define GPP_R15 INC(GPP_R14)
#define GPP_R16 INC(GPP_R15)
#define GPP_R17 INC(GPP_R16)
#define GPP_R18 INC(GPP_R17)
#define GPP_R19 INC(GPP_R18)
#define GPP_R20 INC(GPP_R19)
#define GPP_R21 INC(GPP_R20)
#define GPP_GSPI2_CLK_LOOPBK INC(GPP_R21)
/* Group J */
#define GPP_J0 INC(GPP_GSPI2_CLK_LOOPBK)
#define GPP_J1 INC(GPP_J0)
#define GPP_J2 INC(GPP_J1)
#define GPP_J3 INC(GPP_J2)
#define GPP_J4 INC(GPP_J3)
#define GPP_J5 INC(GPP_J4)
#define GPP_J6 INC(GPP_J5)
#define GPP_J7 INC(GPP_J6)
#define GPP_J8 INC(GPP_J7)
#define GPP_J9 INC(GPP_J8)
#define GPP_J10 INC(GPP_J9)
#define GPP_J11 INC(GPP_J10)
/* Group vGPIO */
#define VGPIO_0 INC(GPP_J11)
#define VGPIO_4 INC(VGPIO_0)
#define VGPIO_5 INC(VGPIO_4)
#define VGPIO_6 INC(VGPIO_5)
#define VGPIO_7 INC(VGPIO_6)
#define VGPIO_8 INC(VGPIO_7)
#define VGPIO_9 INC(VGPIO_8)
#define VGPIO_10 INC(VGPIO_9)
#define VGPIO_11 INC(VGPIO_10)
#define VGPIO_12 INC(VGPIO_11)
#define VGPIO_13 INC(VGPIO_12)
#define VGPIO_18 INC(VGPIO_13)
#define VGPIO_19 INC(VGPIO_18)
#define VGPIO_20 INC(VGPIO_19)
#define VGPIO_21 INC(VGPIO_20)
#define VGPIO_22 INC(VGPIO_21)
#define VGPIO_23 INC(VGPIO_22)
#define VGPIO_24 INC(VGPIO_23)
#define VGPIO_25 INC(VGPIO_24)
#define VGPIO_30 INC(VGPIO_25)
#define VGPIO_31 INC(VGPIO_30)
#define VGPIO_32 INC(VGPIO_31)
#define VGPIO_33 INC(VGPIO_32)
#define VGPIO_34 INC(VGPIO_33)
#define VGPIO_35 INC(VGPIO_34)
#define VGPIO_36 INC(VGPIO_35)
#define VGPIO_37 INC(VGPIO_36)
/* Group vGPIO_0 */
#define VGPIO_USB_0 INC(VGPIO_37)
#define VGPIO_USB_1 INC(VGPIO_USB_0)
#define VGPIO_USB_2 INC(VGPIO_USB_1)
#define VGPIO_USB_3 INC(VGPIO_USB_2)
#define VGPIO_USB_8 INC(VGPIO_USB_3)
#define VGPIO_USB_9 INC(VGPIO_USB_8)
#define VGPIO_USB_10 INC(VGPIO_USB_9)
#define VGPIO_USB_11 INC(VGPIO_USB_10)
#define GPIO_COM0_START GPP_I0
#define GPIO_COM0_END VGPIO_USB_11
#define NUM_GPIO_COM0_PADS (GPIO_COM0_END - GPIO_COM0_START + 1)
/* Group B */
#define GPP_B0 INC(VGPIO_USB_11)
#define GPP_B1 INC(GPP_B0)
#define GPP_B2 INC(GPP_B1)
#define GPP_B3 INC(GPP_B2)
#define GPP_B4 INC(GPP_B3)
#define GPP_B5 INC(GPP_B4)
#define GPP_B6 INC(GPP_B5)
#define GPP_B7 INC(GPP_B6)
#define GPP_B8 INC(GPP_B7)
#define GPP_B9 INC(GPP_B8)
#define GPP_B10 INC(GPP_B9)
#define GPP_B11 INC(GPP_B10)
#define GPP_B12 INC(GPP_B11)
#define GPP_B13 INC(GPP_B12)
#define GPP_B14 INC(GPP_B13)
#define GPP_B15 INC(GPP_B14)
#define GPP_B16 INC(GPP_B15)
#define GPP_B17 INC(GPP_B16)
#define GPP_B18 INC(GPP_B17)
#define GPP_B19 INC(GPP_B18)
#define GPP_B20 INC(GPP_B19)
#define GPP_B21 INC(GPP_B20)
#define GPP_B22 INC(GPP_B21)
#define GPP_B23 INC(GPP_B22)
/* Group G */
#define GPP_G0 INC(GPP_B23)
#define GPP_G1 INC(GPP_G0)
#define GPP_G2 INC(GPP_G1)
#define GPP_G3 INC(GPP_G2)
#define GPP_G4 INC(GPP_G3)
#define GPP_G5 INC(GPP_G4)
#define GPP_G6 INC(GPP_G5)
#define GPP_G7 INC(GPP_G6)
/* Group H */
#define GPP_H0 INC(GPP_G7)
#define GPP_H1 INC(GPP_H0)
#define GPP_H2 INC(GPP_H1)
#define GPP_H3 INC(GPP_H2)
#define GPP_H4 INC(GPP_H3)
#define GPP_H5 INC(GPP_H4)
#define GPP_H6 INC(GPP_H5)
#define GPP_H7 INC(GPP_H6)
#define GPP_H8 INC(GPP_H7)
#define GPP_H9 INC(GPP_H8)
#define GPP_H10 INC(GPP_H9)
#define GPP_H11 INC(GPP_H10)
#define GPP_H12 INC(GPP_H11)
#define GPP_H13 INC(GPP_H12)
#define GPP_H14 INC(GPP_H13)
#define GPP_H15 INC(GPP_H14)
#define GPP_H16 INC(GPP_H15)
#define GPP_H17 INC(GPP_H16)
#define GPP_H18 INC(GPP_H17)
#define GPP_H19 INC(GPP_H18)
#define GPP_H20 INC(GPP_H19)
#define GPP_H21 INC(GPP_H20)
#define GPP_H22 INC(GPP_H21)
#define GPP_H23 INC(GPP_H22)
#define GPIO_COM1_START GPP_B0
#define GPIO_COM1_END GPP_H23
#define NUM_GPIO_COM1_PADS (GPIO_COM1_END - GPIO_COM1_START + 1)
/* Group GPD */
#define GPD0 INC(GPP_H23)
#define GPD1 INC(GPD0)
#define GPD2 INC(GPD1)
#define GPD3 INC(GPD2)
#define GPD4 INC(GPD3)
#define GPD5 INC(GPD4)
#define GPD6 INC(GPD5)
#define GPD7 INC(GPD6)
#define GPD8 INC(GPD7)
#define GPD9 INC(GPD8)
#define GPD10 INC(GPD9)
#define GPD11 INC(GPD10)
#define GPD12 INC(GPD11)
#define GPD_SLP_LANB INC(GPD12)
#define GPD_SLP_SUSB INC(GPD_SLP_LANB)
#define GPD_WAKEB INC(GPD_SLP_SUSB)
#define GPD_DRAM_RESETB INC(GPD_WAKEB)
#define GPIO_COM2_START GPD0
#define GPIO_COM2_END GPD_DRAM_RESETB
#define NUM_GPIO_COM2_PADS (GPIO_COM2_END - GPIO_COM2_START + 1)
/* Group SPI */
#define GPP_SPI0_IO_2 INC(GPD_DRAM_RESETB)
#define GPP_SPI0_IO_3 INC(GPP_SPI0_IO_2)
#define GPP_SPI0_MOSI_IO_0 INC(GPP_SPI0_IO_3)
#define GPP_SPI0_MISO_IO_1 INC(GPP_SPI0_MOSI_IO_0)
#define GPP_SPI0_TPM_CSB INC(GPP_SPI0_MISO_IO_1)
#define GPP_SPI0_FLASH_0_CSB INC(GPP_SPI0_TPM_CSB)
#define GPP_SPI0_FLASH_1_CSB INC(GPP_SPI0_FLASH_0_CSB)
#define GPP_SPI0_CLK INC(GPP_SPI0_FLASH_1_CSB)
#define GPP_SPI0_CLK_LOOPBK INC(GPP_SPI0_CLK)
/* Group A */
#define GPP_A0 INC(GPP_SPI0_CLK_LOOPBK)
#define GPP_A1 INC(GPP_A0)
#define GPP_A2 INC(GPP_A1)
#define GPP_A3 INC(GPP_A2)
#define GPP_A4 INC(GPP_A3)
#define GPP_A5 INC(GPP_A4)
#define GPP_A6 INC(GPP_A5)
#define GPP_A7 INC(GPP_A6)
#define GPP_A8 INC(GPP_A7)
#define GPP_A9 INC(GPP_A8)
#define GPP_A10 INC(GPP_A9)
#define GPP_A11 INC(GPP_A10)
#define GPP_A12 INC(GPP_A11)
#define GPP_A13 INC(GPP_A12)
#define GPP_A14 INC(GPP_A13)
#define GPP_ESPI_CLK_LOOPBK INC(GPP_A14)
/* Group C */
#define GPP_C0 INC(GPP_ESPI_CLK_LOOPBK)
#define GPP_C1 INC(GPP_C0)
#define GPP_C2 INC(GPP_C1)
#define GPP_C3 INC(GPP_C2)
#define GPP_C4 INC(GPP_C3)
#define GPP_C5 INC(GPP_C4)
#define GPP_C6 INC(GPP_C5)
#define GPP_C7 INC(GPP_C6)
#define GPP_C8 INC(GPP_C7)
#define GPP_C9 INC(GPP_C8)
#define GPP_C10 INC(GPP_C9)
#define GPP_C11 INC(GPP_C10)
#define GPP_C12 INC(GPP_C11)
#define GPP_C13 INC(GPP_C12)
#define GPP_C14 INC(GPP_C13)
#define GPP_C15 INC(GPP_C14)
#define GPP_C16 INC(GPP_C15)
#define GPP_C17 INC(GPP_C16)
#define GPP_C18 INC(GPP_C17)
#define GPP_C19 INC(GPP_C18)
#define GPP_C20 INC(GPP_C19)
#define GPP_C21 INC(GPP_C20)
#define GPP_C22 INC(GPP_C21)
#define GPP_C23 INC(GPP_C22)
/* Group vGPIO_3 */
#define VGPIO_PCIE_0 INC(GPP_C23)
#define VGPIO_PCIE_1 INC(VGPIO_PCIE_0)
#define VGPIO_PCIE_2 INC(VGPIO_PCIE_1)
#define VGPIO_PCIE_3 INC(VGPIO_PCIE_2)
#define VGPIO_PCIE_4 INC(VGPIO_PCIE_3)
#define VGPIO_PCIE_5 INC(VGPIO_PCIE_4)
#define VGPIO_PCIE_6 INC(VGPIO_PCIE_5)
#define VGPIO_PCIE_7 INC(VGPIO_PCIE_6)
#define VGPIO_PCIE_8 INC(VGPIO_PCIE_7)
#define VGPIO_PCIE_9 INC(VGPIO_PCIE_8)
#define VGPIO_PCIE_10 INC(VGPIO_PCIE_9)
#define VGPIO_PCIE_11 INC(VGPIO_PCIE_10)
#define VGPIO_PCIE_12 INC(VGPIO_PCIE_11)
#define VGPIO_PCIE_13 INC(VGPIO_PCIE_12)
#define VGPIO_PCIE_14 INC(VGPIO_PCIE_13)
#define VGPIO_PCIE_15 INC(VGPIO_PCIE_14)
#define VGPIO_PCIE_16 INC(VGPIO_PCIE_15)
#define VGPIO_PCIE_17 INC(VGPIO_PCIE_16)
#define VGPIO_PCIE_18 INC(VGPIO_PCIE_17)
#define VGPIO_PCIE_19 INC(VGPIO_PCIE_18)
#define VGPIO_PCIE_20 INC(VGPIO_PCIE_19)
#define VGPIO_PCIE_21 INC(VGPIO_PCIE_20)
#define VGPIO_PCIE_22 INC(VGPIO_PCIE_21)
#define VGPIO_PCIE_23 INC(VGPIO_PCIE_22)
#define VGPIO_PCIE_24 INC(VGPIO_PCIE_23)
#define VGPIO_PCIE_25 INC(VGPIO_PCIE_24)
#define VGPIO_PCIE_26 INC(VGPIO_PCIE_25)
#define VGPIO_PCIE_27 INC(VGPIO_PCIE_26)
#define VGPIO_PCIE_28 INC(VGPIO_PCIE_27)
#define VGPIO_PCIE_29 INC(VGPIO_PCIE_28)
#define VGPIO_PCIE_30 INC(VGPIO_PCIE_29)
#define VGPIO_PCIE_31 INC(VGPIO_PCIE_30)
#define VGPIO_PCIE_32 INC(VGPIO_PCIE_31)
#define VGPIO_PCIE_33 INC(VGPIO_PCIE_32)
#define VGPIO_PCIE_34 INC(VGPIO_PCIE_33)
#define VGPIO_PCIE_35 INC(VGPIO_PCIE_34)
#define VGPIO_PCIE_36 INC(VGPIO_PCIE_35)
#define VGPIO_PCIE_37 INC(VGPIO_PCIE_36)
#define VGPIO_PCIE_38 INC(VGPIO_PCIE_37)
#define VGPIO_PCIE_39 INC(VGPIO_PCIE_38)
#define VGPIO_PCIE_40 INC(VGPIO_PCIE_39)
#define VGPIO_PCIE_41 INC(VGPIO_PCIE_40)
#define VGPIO_PCIE_42 INC(VGPIO_PCIE_41)
#define VGPIO_PCIE_43 INC(VGPIO_PCIE_42)
#define VGPIO_PCIE_44 INC(VGPIO_PCIE_43)
#define VGPIO_PCIE_45 INC(VGPIO_PCIE_44)
#define VGPIO_PCIE_46 INC(VGPIO_PCIE_45)
#define VGPIO_PCIE_47 INC(VGPIO_PCIE_46)
#define VGPIO_PCIE_48 INC(VGPIO_PCIE_47)
#define VGPIO_PCIE_49 INC(VGPIO_PCIE_48)
#define VGPIO_PCIE_50 INC(VGPIO_PCIE_49)
#define VGPIO_PCIE_51 INC(VGPIO_PCIE_50)
#define VGPIO_PCIE_52 INC(VGPIO_PCIE_51)
#define VGPIO_PCIE_53 INC(VGPIO_PCIE_52)
#define VGPIO_PCIE_54 INC(VGPIO_PCIE_53)
#define VGPIO_PCIE_55 INC(VGPIO_PCIE_54)
#define VGPIO_PCIE_56 INC(VGPIO_PCIE_55)
#define VGPIO_PCIE_57 INC(VGPIO_PCIE_56)
#define VGPIO_PCIE_58 INC(VGPIO_PCIE_57)
#define VGPIO_PCIE_59 INC(VGPIO_PCIE_58)
#define VGPIO_PCIE_60 INC(VGPIO_PCIE_59)
#define VGPIO_PCIE_61 INC(VGPIO_PCIE_60)
#define VGPIO_PCIE_62 INC(VGPIO_PCIE_61)
#define VGPIO_PCIE_63 INC(VGPIO_PCIE_62)
#define VGPIO_PCIE_64 INC(VGPIO_PCIE_63)
#define VGPIO_PCIE_65 INC(VGPIO_PCIE_64)
#define VGPIO_PCIE_66 INC(VGPIO_PCIE_65)
#define VGPIO_PCIE_67 INC(VGPIO_PCIE_66)
#define VGPIO_PCIE_68 INC(VGPIO_PCIE_67)
#define VGPIO_PCIE_69 INC(VGPIO_PCIE_68)
#define VGPIO_PCIE_70 INC(VGPIO_PCIE_69)
#define VGPIO_PCIE_71 INC(VGPIO_PCIE_70)
#define VGPIO_PCIE_72 INC(VGPIO_PCIE_71)
#define VGPIO_PCIE_73 INC(VGPIO_PCIE_72)
#define VGPIO_PCIE_74 INC(VGPIO_PCIE_73)
#define VGPIO_PCIE_75 INC(VGPIO_PCIE_74)
#define VGPIO_PCIE_76 INC(VGPIO_PCIE_75)
#define VGPIO_PCIE_77 INC(VGPIO_PCIE_76)
#define VGPIO_PCIE_78 INC(VGPIO_PCIE_77)
#define VGPIO_PCIE_79 INC(VGPIO_PCIE_78)
#define VGPIO_PCIE_80 INC(VGPIO_PCIE_79)
#define VGPIO_PCIE_81 INC(VGPIO_PCIE_80)
#define VGPIO_PCIE_82 INC(VGPIO_PCIE_81)
#define VGPIO_PCIE_83 INC(VGPIO_PCIE_82)
#define GPIO_COM3_START GPP_SPI0_IO_2
#define GPIO_COM3_END VGPIO_PCIE_83
#define NUM_GPIO_COM3_PADS (GPIO_COM3_END - GPIO_COM3_START + 1)
/* Group S */
#define GPP_S0 INC(VGPIO_PCIE_83)
#define GPP_S1 INC(GPP_S0)
#define GPP_S2 INC(GPP_S1)
#define GPP_S3 INC(GPP_S2)
#define GPP_S4 INC(GPP_S3)
#define GPP_S5 INC(GPP_S4)
#define GPP_S6 INC(GPP_S5)
#define GPP_S7 INC(GPP_S6)
/* Group E */
#define GPP_E0 INC(GPP_S7)
#define GPP_E1 INC(GPP_E0)
#define GPP_E2 INC(GPP_E1)
#define GPP_E3 INC(GPP_E2)
#define GPP_E4 INC(GPP_E3)
#define GPP_E5 INC(GPP_E4)
#define GPP_E6 INC(GPP_E5)
#define GPP_E7 INC(GPP_E6)
#define GPP_E8 INC(GPP_E7)
#define GPP_E9 INC(GPP_E8)
#define GPP_E10 INC(GPP_E9)
#define GPP_E11 INC(GPP_E10)
#define GPP_E12 INC(GPP_E11)
#define GPP_E13 INC(GPP_E12)
#define GPP_E14 INC(GPP_E13)
#define GPP_E15 INC(GPP_E14)
#define GPP_E16 INC(GPP_E15)
#define GPP_E17 INC(GPP_E16)
#define GPP_E18 INC(GPP_E17)
#define GPP_E19 INC(GPP_E18)
#define GPP_E20 INC(GPP_E19)
#define GPP_E21 INC(GPP_E20)
#define GPP_SPI1_THC0_CLK_LOOPBK INC(GPP_E21)
/* Group K */
#define GPP_K0 INC(GPP_SPI1_THC0_CLK_LOOPBK)
#define GPP_K1 INC(GPP_K0)
#define GPP_K2 INC(GPP_K1)
#define GPP_K3 INC(GPP_K2)
#define GPP_K4 INC(GPP_K3)
#define GPP_K5 INC(GPP_K4)
#define GPP_K6 INC(GPP_K5)
#define GPP_K7 INC(GPP_K6)
#define GPP_K8 INC(GPP_K7)
#define GPP_K9 INC(GPP_K8)
#define GPP_K10 INC(GPP_K9)
#define GPP_K11 INC(GPP_K10)
#define GPP_SYS_PWROK INC(GPP_K11)
#define GPP_SYS_RESETB INC(GPP_SYS_PWROK)
#define GPP_MLK_RSTB INC(GPP_SYS_RESETB)
/* Group F */
#define GPP_F0 INC(GPP_MLK_RSTB)
#define GPP_F1 INC(GPP_F0)
#define GPP_F2 INC(GPP_F1)
#define GPP_F3 INC(GPP_F2)
#define GPP_F4 INC(GPP_F3)
#define GPP_F5 INC(GPP_F4)
#define GPP_F6 INC(GPP_F5)
#define GPP_F7 INC(GPP_F6)
#define GPP_F8 INC(GPP_F7)
#define GPP_F9 INC(GPP_F8)
#define GPP_F10 INC(GPP_F9)
#define GPP_F11 INC(GPP_F10)
#define GPP_F12 INC(GPP_F11)
#define GPP_F13 INC(GPP_F12)
#define GPP_F14 INC(GPP_F13)
#define GPP_F15 INC(GPP_F14)
#define GPP_F16 INC(GPP_F15)
#define GPP_F17 INC(GPP_F16)
#define GPP_F18 INC(GPP_F17)
#define GPP_F19 INC(GPP_F18)
#define GPP_F20 INC(GPP_F19)
#define GPP_F21 INC(GPP_F20)
#define GPP_F22 INC(GPP_F21)
#define GPP_F23 INC(GPP_F22)
#define GPIO_COM4_START GPP_S0
#define GPIO_COM4_END GPP_F23
#define NUM_GPIO_COM4_PADS (GPIO_COM4_END - GPIO_COM4_START + 1)
/* Group D */
#define GPP_D0 INC(GPP_F23)
#define GPP_D1 INC(GPP_D0)
#define GPP_D2 INC(GPP_D1)
#define GPP_D3 INC(GPP_D2)
#define GPP_D4 INC(GPP_D3)
#define GPP_D5 INC(GPP_D4)
#define GPP_D6 INC(GPP_D5)
#define GPP_D7 INC(GPP_D6)
#define GPP_D8 INC(GPP_D7)
#define GPP_D9 INC(GPP_D8)
#define GPP_D10 INC(GPP_D9)
#define GPP_D11 INC(GPP_D10)
#define GPP_D12 INC(GPP_D11)
#define GPP_D13 INC(GPP_D12)
#define GPP_D14 INC(GPP_D13)
#define GPP_D15 INC(GPP_D14)
#define GPP_D16 INC(GPP_D15)
#define GPP_D17 INC(GPP_D16)
#define GPP_D18 INC(GPP_D17)
#define GPP_D19 INC(GPP_D18)
#define GPP_D20 INC(GPP_D19)
#define GPP_D21 INC(GPP_D20)
#define GPP_D22 INC(GPP_D21)
#define GPP_D23 INC(GPP_D22)
#define GPP_GSPI3_THC1_CLK_LOOPBK INC(GPP_D23)
/* Group JTAG */
#define GPP_JTAG_TDO INC(GPP_GSPI3_THC1_CLK_LOOPBK)
#define GPP_JTAGX INC(GPP_JTAG_TDO)
#define GPP_PRDYB INC(GPP_JTAGX)
#define GPP_PREQB INC(GPP_PRDYB)
#define GPP_JTAG_TDI INC(GPP_PREQB)
#define GPP_JTAG_TMS INC(GPP_JTAG_TDI)
#define GPP_JTAG_TCK INC(GPP_JTAG_TMS)
#define GPP_DBG_PMODE INC(GPP_JTAG_TCK)
#define GPP_CPU_TRSTB INC(GPP_DBG_PMODE)
/* Group CPU */
#define GPP_HDACPU_SDI INC(GPP_CPU_TRSTB)
#define GPP_HDACPU_SDO INC(GPP_HDACPU_SDI)
#define GPP_HDACPU_SCLK INC(GPP_HDACPU_SDO)
#define GPP_PM_SYNC INC(GPP_HDACPU_SCLK)
#define GPP_PECI INC(GPP_PM_SYNC)
#define GPP_CPUPWRGD INC(GPP_PECI)
#define GPP_THRMTRIPB INC(GPP_CPUPWRGD)
#define GPP_PLTRST_CPUB INC(GPP_THRMTRIPB)
#define GPP_PM_DOWN INC(GPP_PLTRST_CPUB)
#define GPP_TRIGGER_IN INC(GPP_PM_DOWN)
#define GPP_TRIGGER_OUT INC(GPP_TRIGGER_IN)
#define GPP_CLKOUT_CPURTC INC(GPP_TRIGGER_OUT)
#define GPP_VCCST_OVERRIDE INC(GPP_CLKOUT_CPURTC)
#define GPP_C10_WAKE INC(GPP_VCCST_OVERRIDE)
#define GPIO_COM5_START GPP_D0
#define GPIO_COM5_END GPP_C10_WAKE
#define NUM_GPIO_COM5_PADS (GPIO_COM5_END - GPIO_COM5_START + 1)
#define TOTAL_GPIO_COMM (COMM_5 + 1)
#define TOTAL_PADS (GPIO_COM5_END + 1)
#endif

View File

@@ -110,6 +110,22 @@ extern struct device_operations pmc_ops;
#define GPE0_DWX_MASK 0xf
#define GPE0_DW_SHIFT(x) (4*(x))
#if CONFIG(SOC_INTEL_ALDERLAKE_PCH_S)
#define PMC_GPP_I 0x0
#define PMC_GPP_R 0x1
#define PMC_GPP_J 0x2
#define PMC_GPD 0x4
#define PMC_GPP_D 0x5
#define PMC_GPP_S 0x6
#define PMC_GPP_E 0x7
#define PMC_GPP_K 0x8
#define PMC_GPP_F 0x9
#define PMC_GPP_A 0xA
#define PMC_GPP_C 0xB
#define PMC_GPP_B 0xC
#define PMC_GPP_G 0xD
#define PMC_GPP_H 0xE
#else
#define PMC_GPP_B 0x0
#define PMC_GPP_T 0x1
#define PMC_GPP_A 0x2
@@ -127,6 +143,7 @@ extern struct device_operations pmc_ops;
#define PMC_GPP_F 0xA
#define PMC_GPP_C 0xB
#define PMC_GPP_E 0xC
#endif
#define GBLRST_CAUSE0 0x1924
#define GBLRST_CAUSE0_THERMTRIP (1 << 5)

View File

@@ -11,7 +11,7 @@
#include <intelblocks/cpulib.h>
#include <intelblocks/pcie_rp.h>
#include <option.h>
#include <soc/gpio_soc_defs.h>
#include <soc/gpio.h>
#include <soc/iomap.h>
#include <soc/msr.h>
#include <soc/pci_devs.h>