soc/amd: introduce and use common amd_cpu_bus_ops struct

The device operations for the CPU bus are identical for all AMD SoCs, so
introduce a common device operations struct for this and use it in all
AMD SoC's chipset devicetrees as ops for the CPU cluster.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: Id32f89b8a33db8dbb747b917eeac3009fbae6631
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71998
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
diff --git a/src/soc/amd/cezanne/chip.c b/src/soc/amd/cezanne/chip.c
index efef2f1..d480cc5 100644
--- a/src/soc/amd/cezanne/chip.c
+++ b/src/soc/amd/cezanne/chip.c
@@ -12,13 +12,6 @@
 #include <types.h>
 #include "chip.h"
 
-struct device_operations cezanne_cpu_bus_ops = {
-	.read_resources	= noop_read_resources,
-	.set_resources	= noop_set_resources,
-	.init		= mp_cpu_bus_init,
-	.acpi_fill_ssdt	= generate_cpu_entries,
-};
-
 static const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/cezanne/chipset.cb b/src/soc/amd/cezanne/chipset.cb
index f0a3d86..691153f 100644
--- a/src/soc/amd/cezanne/chipset.cb
+++ b/src/soc/amd/cezanne/chipset.cb
@@ -1,6 +1,6 @@
 chip soc/amd/cezanne
 	device cpu_cluster 0 on
-		ops cezanne_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops cezanne_pci_domain_ops
diff --git a/src/soc/amd/common/block/cpu/cpu.c b/src/soc/amd/common/block/cpu/cpu.c
index 7c1daf9..1e1915f 100644
--- a/src/soc/amd/common/block/cpu/cpu.c
+++ b/src/soc/amd/common/block/cpu/cpu.c
@@ -1,9 +1,18 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
+#include <acpi/acpi.h>
 #include <amdblocks/cpu.h>
 #include <cpu/cpu.h>
+#include <device/device.h>
 
 int get_cpu_count(void)
 {
 	return 1 + (cpuid_ecx(0x80000008) & 0xff);
 }
+
+struct device_operations amd_cpu_bus_ops = {
+	.read_resources	= noop_read_resources,
+	.set_resources	= noop_set_resources,
+	.init		= mp_cpu_bus_init,
+	.acpi_fill_ssdt	= generate_cpu_entries,
+};
diff --git a/src/soc/amd/glinda/chip.c b/src/soc/amd/glinda/chip.c
index 9e9ee9e..65c9e19 100644
--- a/src/soc/amd/glinda/chip.c
+++ b/src/soc/amd/glinda/chip.c
@@ -14,13 +14,6 @@
 #include <types.h>
 #include "chip.h"
 
-struct device_operations glinda_cpu_bus_ops = {
-	.read_resources	= noop_read_resources,
-	.set_resources	= noop_set_resources,
-	.init		= mp_cpu_bus_init,
-	.acpi_fill_ssdt	= generate_cpu_entries,
-};
-
 static const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/glinda/chipset.cb b/src/soc/amd/glinda/chipset.cb
index 3b095aa..d54bae0 100644
--- a/src/soc/amd/glinda/chipset.cb
+++ b/src/soc/amd/glinda/chipset.cb
@@ -2,7 +2,7 @@
 
 chip soc/amd/glinda
 	device cpu_cluster 0 on
-		ops glinda_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops glinda_pci_domain_ops
diff --git a/src/soc/amd/mendocino/chip.c b/src/soc/amd/mendocino/chip.c
index 83a485f..fee49a8 100644
--- a/src/soc/amd/mendocino/chip.c
+++ b/src/soc/amd/mendocino/chip.c
@@ -14,13 +14,6 @@
 #include <types.h>
 #include "chip.h"
 
-struct device_operations mendocino_cpu_bus_ops = {
-	.read_resources	= noop_read_resources,
-	.set_resources	= noop_set_resources,
-	.init		= mp_cpu_bus_init,
-	.acpi_fill_ssdt	= generate_cpu_entries,
-};
-
 static const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/mendocino/chipset_mendocino.cb b/src/soc/amd/mendocino/chipset_mendocino.cb
index 2900279..2ecb2405 100644
--- a/src/soc/amd/mendocino/chipset_mendocino.cb
+++ b/src/soc/amd/mendocino/chipset_mendocino.cb
@@ -1,6 +1,6 @@
 chip soc/amd/mendocino
 	device cpu_cluster 0 on
-		ops mendocino_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops mendocino_pci_domain_ops
diff --git a/src/soc/amd/mendocino/chipset_rembrandt.cb b/src/soc/amd/mendocino/chipset_rembrandt.cb
index 2900279..2ecb2405 100644
--- a/src/soc/amd/mendocino/chipset_rembrandt.cb
+++ b/src/soc/amd/mendocino/chipset_rembrandt.cb
@@ -1,6 +1,6 @@
 chip soc/amd/mendocino
 	device cpu_cluster 0 on
-		ops mendocino_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops mendocino_pci_domain_ops
diff --git a/src/soc/amd/phoenix/chip.c b/src/soc/amd/phoenix/chip.c
index 7f0b93f..ee2c7cc 100644
--- a/src/soc/amd/phoenix/chip.c
+++ b/src/soc/amd/phoenix/chip.c
@@ -14,13 +14,6 @@
 #include <types.h>
 #include "chip.h"
 
-struct device_operations phoenix_cpu_bus_ops = {
-	.read_resources	= noop_read_resources,
-	.set_resources	= noop_set_resources,
-	.init		= mp_cpu_bus_init,
-	.acpi_fill_ssdt	= generate_cpu_entries,
-};
-
 static const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/phoenix/chipset.cb b/src/soc/amd/phoenix/chipset.cb
index 0e01439..5c341c8 100644
--- a/src/soc/amd/phoenix/chipset.cb
+++ b/src/soc/amd/phoenix/chipset.cb
@@ -2,7 +2,7 @@
 
 chip soc/amd/phoenix
 	device cpu_cluster 0 on
-		ops phoenix_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops phoenix_pci_domain_ops
diff --git a/src/soc/amd/picasso/chip.c b/src/soc/amd/picasso/chip.c
index fc30af9..782c1c3 100644
--- a/src/soc/amd/picasso/chip.c
+++ b/src/soc/amd/picasso/chip.c
@@ -13,13 +13,6 @@
 #include "chip.h"
 #include <fsp/api.h>
 
-struct device_operations picasso_cpu_bus_ops = {
-	.read_resources	  = noop_read_resources,
-	.set_resources	  = noop_set_resources,
-	.init		  = mp_cpu_bus_init,
-	.acpi_fill_ssdt   = generate_cpu_entries,
-};
-
 static const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/picasso/chipset.cb b/src/soc/amd/picasso/chipset.cb
index 99b025e..6d6177f 100644
--- a/src/soc/amd/picasso/chipset.cb
+++ b/src/soc/amd/picasso/chipset.cb
@@ -2,7 +2,7 @@
 
 chip soc/amd/picasso
 	device cpu_cluster 0 on
-		ops picasso_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops picasso_pci_domain_ops
diff --git a/src/soc/amd/stoneyridge/chip.c b/src/soc/amd/stoneyridge/chip.c
index d8ce224..60bc921 100644
--- a/src/soc/amd/stoneyridge/chip.c
+++ b/src/soc/amd/stoneyridge/chip.c
@@ -18,13 +18,6 @@
 
 #include "chip.h"
 
-struct device_operations stoneyridge_cpu_bus_ops = {
-	.read_resources	  = noop_read_resources,
-	.set_resources	  = noop_set_resources,
-	.init		  = mp_cpu_bus_init,
-	.acpi_fill_ssdt   = generate_cpu_entries,
-};
-
 const char *soc_acpi_name(const struct device *dev)
 {
 	if (dev->path.type == DEVICE_PATH_DOMAIN)
diff --git a/src/soc/amd/stoneyridge/chipset_cz.cb b/src/soc/amd/stoneyridge/chipset_cz.cb
index dbbbd4d..a3bd85c 100644
--- a/src/soc/amd/stoneyridge/chipset_cz.cb
+++ b/src/soc/amd/stoneyridge/chipset_cz.cb
@@ -2,7 +2,7 @@
 
 chip soc/amd/stoneyridge
 	device cpu_cluster 0 on
-		ops stoneyridge_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops stoneyridge_pci_domain_ops
diff --git a/src/soc/amd/stoneyridge/chipset_st.cb b/src/soc/amd/stoneyridge/chipset_st.cb
index 4c244d0..c78da61 100644
--- a/src/soc/amd/stoneyridge/chipset_st.cb
+++ b/src/soc/amd/stoneyridge/chipset_st.cb
@@ -2,7 +2,7 @@
 
 chip soc/amd/stoneyridge
 	device cpu_cluster 0 on
-		ops stoneyridge_cpu_bus_ops
+		ops amd_cpu_bus_ops
 	end
 	device domain 0 on
 		ops stoneyridge_pci_domain_ops