summaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/block')
-rw-r--r--src/soc/intel/common/block/cnvi/Kconfig4
-rw-r--r--src/soc/intel/common/block/cnvi/Makefile.inc1
-rw-r--r--src/soc/intel/common/block/cnvi/cnvi.c74
3 files changed, 79 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/cnvi/Kconfig b/src/soc/intel/common/block/cnvi/Kconfig
new file mode 100644
index 0000000000..21402ab6a5
--- /dev/null
+++ b/src/soc/intel/common/block/cnvi/Kconfig
@@ -0,0 +1,4 @@
+config SOC_INTEL_COMMON_BLOCK_CNVI
+ bool
+ help
+ Common CNVI module for Intel PCH
diff --git a/src/soc/intel/common/block/cnvi/Makefile.inc b/src/soc/intel/common/block/cnvi/Makefile.inc
new file mode 100644
index 0000000000..01b9d1d0e9
--- /dev/null
+++ b/src/soc/intel/common/block/cnvi/Makefile.inc
@@ -0,0 +1 @@
+ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_CNVI) += cnvi.c
diff --git a/src/soc/intel/common/block/cnvi/cnvi.c b/src/soc/intel/common/block/cnvi/cnvi.c
new file mode 100644
index 0000000000..0dafb82fa3
--- /dev/null
+++ b/src/soc/intel/common/block/cnvi/cnvi.c
@@ -0,0 +1,74 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <acpi/acpi_device.h>
+#include <device/device.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+
+static const char *cnvi_wifi_acpi_name(const struct device *dev)
+{
+ return "CNVW";
+}
+
+static struct device_operations cnvi_wifi_ops = {
+ .read_resources = pci_dev_read_resources,
+ .set_resources = pci_dev_set_resources,
+ .enable_resources = pci_dev_enable_resources,
+ .ops_pci = &pci_dev_ops_pci,
+ .scan_bus = scan_static_bus,
+ .acpi_name = cnvi_wifi_acpi_name,
+ .acpi_fill_ssdt = acpi_device_write_pci_dev,
+};
+
+static const unsigned short wifi_pci_device_ids[] = {
+ PCI_DEVICE_ID_INTEL_CML_LP_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_CML_H_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_CNL_LP_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_CNL_H_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_GLK_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_ICL_CNVI_WIFI,
+ PCI_DEVICE_ID_INTEL_JSL_CNVI_WIFI_0,
+ PCI_DEVICE_ID_INTEL_JSL_CNVI_WIFI_1,
+ PCI_DEVICE_ID_INTEL_JSL_CNVI_WIFI_2,
+ PCI_DEVICE_ID_INTEL_JSL_CNVI_WIFI_3,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_WIFI_0,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_WIFI_1,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_WIFI_2,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_WIFI_3,
+ 0
+};
+
+static const struct pci_driver pch_cnvi_wifi __pci_driver = {
+ .ops = &cnvi_wifi_ops,
+ .vendor = PCI_VENDOR_ID_INTEL,
+ .devices = wifi_pci_device_ids,
+};
+
+static const char *cnvi_bt_acpi_name(const struct device *dev)
+{
+ return "CNVB";
+}
+
+static struct device_operations cnvi_bt_ops = {
+ .read_resources = pci_dev_read_resources,
+ .set_resources = pci_dev_set_resources,
+ .enable_resources = pci_dev_enable_resources,
+ .ops_pci = &pci_dev_ops_pci,
+ .scan_bus = scan_static_bus,
+ .acpi_name = cnvi_bt_acpi_name,
+ .acpi_fill_ssdt = acpi_device_write_pci_dev,
+};
+
+static const unsigned short bt_pci_device_ids[] = {
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_BT_0,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_BT_1,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_BT_2,
+ PCI_DEVICE_ID_INTEL_TGL_CNVI_BT_3,
+ 0
+};
+
+static const struct pci_driver pch_cnvi_bt __pci_driver = {
+ .ops = &cnvi_bt_ops,
+ .vendor = PCI_VENDOR_ID_INTEL,
+ .devices = bt_pci_device_ids,
+};