summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2021-02-19 19:42:10 +0100
committerAngel Pons <th3fanbus@gmail.com>2021-03-01 19:37:56 +0000
commit98f672a5ea793a86e0f66317893a3706fbd66102 (patch)
treeeec3a9a25d8c8079cb17c45f58a4103ff0b87e57
parent6bd99f9ada29f199f9bf50f1cd6b37e24ee1eb7b (diff)
soc/intel: Factor out identical acpigen GPIO helpers
Change-Id: I27f198d403f6ba05ba72ae0652da224d4cbf323a Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/50938 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Michael Niewöhner <foss@mniewoehner.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/soc/intel/alderlake/Kconfig1
-rw-r--r--src/soc/intel/alderlake/acpi.c37
-rw-r--r--src/soc/intel/cannonlake/Kconfig1
-rw-r--r--src/soc/intel/cannonlake/acpi.c37
-rw-r--r--src/soc/intel/common/block/acpi/Kconfig3
-rw-r--r--src/soc/intel/common/block/acpi/Makefile.inc1
-rw-r--r--src/soc/intel/common/block/acpi/gpio.c40
-rw-r--r--src/soc/intel/elkhartlake/Kconfig1
-rw-r--r--src/soc/intel/elkhartlake/acpi.c37
-rw-r--r--src/soc/intel/jasperlake/Kconfig1
-rw-r--r--src/soc/intel/jasperlake/acpi.c37
-rw-r--r--src/soc/intel/skylake/Kconfig1
-rw-r--r--src/soc/intel/skylake/acpi.c37
-rw-r--r--src/soc/intel/tigerlake/Kconfig1
-rw-r--r--src/soc/intel/tigerlake/acpi.c37
15 files changed, 50 insertions, 222 deletions
diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig
index 916e5f38ee..3bcdb220d5 100644
--- a/src/soc/intel/alderlake/Kconfig
+++ b/src/soc/intel/alderlake/Kconfig
@@ -47,6 +47,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK
select SOC_INTEL_COMMON_BLOCK_ACPI
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_CAR
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
select SOC_INTEL_COMMON_BLOCK_CPU
diff --git a/src/soc/intel/alderlake/acpi.c b/src/soc/intel/alderlake/acpi.c
index 2eb6101e0c..db005e8bcf 100644
--- a/src/soc/intel/alderlake/acpi.c
+++ b/src/soc/intel/alderlake/acpi.c
@@ -301,40 +301,3 @@ int soc_madt_sci_irq_polarity(int sci)
{
return MP_IRQ_POLARITY_HIGH;
}
-
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}
diff --git a/src/soc/intel/cannonlake/Kconfig b/src/soc/intel/cannonlake/Kconfig
index dd7d69942b..187aed5fbe 100644
--- a/src/soc/intel/cannonlake/Kconfig
+++ b/src/soc/intel/cannonlake/Kconfig
@@ -87,6 +87,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_BLOCK
select SOC_INTEL_COMMON_BLOCK_ACPI
select SOC_INTEL_COMMON_BLOCK_ACPI_CPPC
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
select SOC_INTEL_COMMON_BLOCK_CNVI
diff --git a/src/soc/intel/cannonlake/acpi.c b/src/soc/intel/cannonlake/acpi.c
index 03bf3c8053..0bc4e63b6c 100644
--- a/src/soc/intel/cannonlake/acpi.c
+++ b/src/soc/intel/cannonlake/acpi.c
@@ -206,43 +206,6 @@ int soc_madt_sci_irq_polarity(int sci)
return MP_IRQ_POLARITY_HIGH;
}
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}
-
static unsigned long soc_fill_dmar(unsigned long current)
{
struct device *const igfx_dev = pcidev_path_on_root(SA_DEVFN_IGD);
diff --git a/src/soc/intel/common/block/acpi/Kconfig b/src/soc/intel/common/block/acpi/Kconfig
index 8912ff3105..6aa3abcad9 100644
--- a/src/soc/intel/common/block/acpi/Kconfig
+++ b/src/soc/intel/common/block/acpi/Kconfig
@@ -5,6 +5,9 @@ config SOC_INTEL_COMMON_BLOCK_ACPI
help
Intel Processor common code for ACPI
+config SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
+ bool
+
config SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
bool
depends on HAVE_ACPI_TABLES
diff --git a/src/soc/intel/common/block/acpi/Makefile.inc b/src/soc/intel/common/block/acpi/Makefile.inc
index 89565a6fd9..c78dbc0d84 100644
--- a/src/soc/intel/common/block/acpi/Makefile.inc
+++ b/src/soc/intel/common/block/acpi/Makefile.inc
@@ -1,4 +1,5 @@
ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI) += acpi.c
+ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_GPIO) += gpio.c
ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_ACPI_LPIT) += lpit.c
ramstage-$(CONFIG_ACPI_BERT) += acpi_bert.c
ramstage-$(CONFIG_SOC_INTEL_COMMON_ACPI_WAKE_SOURCE) += acpi_wake_source.c
diff --git a/src/soc/intel/common/block/acpi/gpio.c b/src/soc/intel/common/block/acpi/gpio.c
new file mode 100644
index 0000000000..99847c52aa
--- /dev/null
+++ b/src/soc/intel/common/block/acpi/gpio.c
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <acpi/acpigen.h>
+
+static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
+{
+ /* op (gpio_num) */
+ acpigen_emit_namestring(op);
+ acpigen_write_integer(gpio_num);
+ return 0;
+}
+
+static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
+{
+ /* Store (op (gpio_num), Local0) */
+ acpigen_write_store();
+ acpigen_soc_gpio_op(op, gpio_num);
+ acpigen_emit_byte(LOCAL0_OP);
+ return 0;
+}
+
+int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
+{
+ return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
+}
+
+int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
+{
+ return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
+}
+
+int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
+{
+ return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
+}
+
+int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
+{
+ return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
+}
diff --git a/src/soc/intel/elkhartlake/Kconfig b/src/soc/intel/elkhartlake/Kconfig
index 3b17a0ed88..b227ec2231 100644
--- a/src/soc/intel/elkhartlake/Kconfig
+++ b/src/soc/intel/elkhartlake/Kconfig
@@ -39,6 +39,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK
select SOC_INTEL_COMMON_BLOCK_ACPI
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
select SOC_INTEL_COMMON_BLOCK_CAR
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
diff --git a/src/soc/intel/elkhartlake/acpi.c b/src/soc/intel/elkhartlake/acpi.c
index 12706c90af..0006b5fb2e 100644
--- a/src/soc/intel/elkhartlake/acpi.c
+++ b/src/soc/intel/elkhartlake/acpi.c
@@ -269,40 +269,3 @@ int soc_madt_sci_irq_polarity(int sci)
{
return MP_IRQ_POLARITY_HIGH;
}
-
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}
diff --git a/src/soc/intel/jasperlake/Kconfig b/src/soc/intel/jasperlake/Kconfig
index 72912f7a64..d6281ec2a2 100644
--- a/src/soc/intel/jasperlake/Kconfig
+++ b/src/soc/intel/jasperlake/Kconfig
@@ -40,6 +40,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK
select SOC_INTEL_COMMON_BLOCK_ACPI
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
select SOC_INTEL_COMMON_BLOCK_CAR
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
diff --git a/src/soc/intel/jasperlake/acpi.c b/src/soc/intel/jasperlake/acpi.c
index f33bebd227..ebfa6685fe 100644
--- a/src/soc/intel/jasperlake/acpi.c
+++ b/src/soc/intel/jasperlake/acpi.c
@@ -296,40 +296,3 @@ int soc_madt_sci_irq_polarity(int sci)
{
return MP_IRQ_POLARITY_HIGH;
}
-
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}
diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig
index a7e25b126c..781cdbf98b 100644
--- a/src/soc/intel/skylake/Kconfig
+++ b/src/soc/intel/skylake/Kconfig
@@ -48,6 +48,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
select SOC_INTEL_COMMON_BLOCK_CAR
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
diff --git a/src/soc/intel/skylake/acpi.c b/src/soc/intel/skylake/acpi.c
index 100f16f7d1..c2eb9a8d36 100644
--- a/src/soc/intel/skylake/acpi.c
+++ b/src/soc/intel/skylake/acpi.c
@@ -657,40 +657,3 @@ const char *soc_acpi_name(const struct device *dev)
return NULL;
}
-
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}
diff --git a/src/soc/intel/tigerlake/Kconfig b/src/soc/intel/tigerlake/Kconfig
index 92c2955a96..bf204f5a9c 100644
--- a/src/soc/intel/tigerlake/Kconfig
+++ b/src/soc/intel/tigerlake/Kconfig
@@ -43,6 +43,7 @@ config CPU_SPECIFIC_OPTIONS
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
select SOC_INTEL_COMMON_BLOCK
select SOC_INTEL_COMMON_BLOCK_ACPI
+ select SOC_INTEL_COMMON_BLOCK_ACPI_GPIO
select SOC_INTEL_COMMON_BLOCK_ACPI_LPIT
select SOC_INTEL_COMMON_BLOCK_CAR
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
diff --git a/src/soc/intel/tigerlake/acpi.c b/src/soc/intel/tigerlake/acpi.c
index 17d8a34c52..c60bcaa468 100644
--- a/src/soc/intel/tigerlake/acpi.c
+++ b/src/soc/intel/tigerlake/acpi.c
@@ -296,40 +296,3 @@ int soc_madt_sci_irq_polarity(int sci)
{
return MP_IRQ_POLARITY_HIGH;
}
-
-static int acpigen_soc_gpio_op(const char *op, unsigned int gpio_num)
-{
- /* op (gpio_num) */
- acpigen_emit_namestring(op);
- acpigen_write_integer(gpio_num);
- return 0;
-}
-
-static int acpigen_soc_get_gpio_state(const char *op, unsigned int gpio_num)
-{
- /* Store (op (gpio_num), Local0) */
- acpigen_write_store();
- acpigen_soc_gpio_op(op, gpio_num);
- acpigen_emit_byte(LOCAL0_OP);
- return 0;
-}
-
-int acpigen_soc_read_rx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GRXS", gpio_num);
-}
-
-int acpigen_soc_get_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_get_gpio_state("\\_SB.PCI0.GTXS", gpio_num);
-}
-
-int acpigen_soc_set_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.STXS", gpio_num);
-}
-
-int acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
-{
- return acpigen_soc_gpio_op("\\_SB.PCI0.CTXS", gpio_num);
-}