xref: /aosp_15_r20/external/coreboot/src/soc/intel/common/block/cnvi/cnvi.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <acpi/acpi_device.h>
4 #include <device/device.h>
5 #include <device/pci.h>
6 #include <device/pci_ids.h>
7 
cnvi_wifi_acpi_name(const struct device * dev)8 static const char *cnvi_wifi_acpi_name(const struct device *dev)
9 {
10 	return "CNVW";
11 }
12 
13 static struct device_operations cnvi_wifi_ops = {
14 	.read_resources		= pci_dev_read_resources,
15 	.set_resources		= pci_dev_set_resources,
16 	.enable_resources	= pci_dev_enable_resources,
17 	.ops_pci		= &pci_dev_ops_pci,
18 	.scan_bus		= scan_static_bus,
19 	.acpi_name		= cnvi_wifi_acpi_name,
20 	.acpi_fill_ssdt		= acpi_device_write_pci_dev,
21 };
22 
23 static const unsigned short wifi_pci_device_ids[] = {
24 	PCI_DID_INTEL_PTL_CNVI_WIFI_0,
25 	PCI_DID_INTEL_PTL_CNVI_WIFI_1,
26 	PCI_DID_INTEL_PTL_CNVI_WIFI_2,
27 	PCI_DID_INTEL_PTL_CNVI_WIFI_3,
28 	PCI_DID_INTEL_LNL_CNVI_WIFI_0,
29 	PCI_DID_INTEL_LNL_CNVI_WIFI_1,
30 	PCI_DID_INTEL_LNL_CNVI_WIFI_2,
31 	PCI_DID_INTEL_LNL_CNVI_WIFI_3,
32 	PCI_DID_INTEL_MTL_CNVI_WIFI_0,
33 	PCI_DID_INTEL_MTL_CNVI_WIFI_1,
34 	PCI_DID_INTEL_MTL_CNVI_WIFI_2,
35 	PCI_DID_INTEL_MTL_CNVI_WIFI_3,
36 	PCI_DID_INTEL_CML_LP_CNVI_WIFI,
37 	PCI_DID_INTEL_CML_H_CNVI_WIFI,
38 	PCI_DID_INTEL_CNL_LP_CNVI_WIFI,
39 	PCI_DID_INTEL_CNL_H_CNVI_WIFI,
40 	PCI_DID_INTEL_GLK_CNVI_WIFI,
41 	PCI_DID_INTEL_JSL_CNVI_WIFI_0,
42 	PCI_DID_INTEL_JSL_CNVI_WIFI_1,
43 	PCI_DID_INTEL_JSL_CNVI_WIFI_2,
44 	PCI_DID_INTEL_JSL_CNVI_WIFI_3,
45 	PCI_DID_INTEL_TGL_CNVI_WIFI_0,
46 	PCI_DID_INTEL_TGL_CNVI_WIFI_1,
47 	PCI_DID_INTEL_TGL_CNVI_WIFI_2,
48 	PCI_DID_INTEL_TGL_CNVI_WIFI_3,
49 	PCI_DID_INTEL_TGL_H_CNVI_WIFI_0,
50 	PCI_DID_INTEL_TGL_H_CNVI_WIFI_1,
51 	PCI_DID_INTEL_TGL_H_CNVI_WIFI_2,
52 	PCI_DID_INTEL_TGL_H_CNVI_WIFI_3,
53 	PCI_DID_INTEL_ADL_P_CNVI_WIFI_0,
54 	PCI_DID_INTEL_ADL_P_CNVI_WIFI_1,
55 	PCI_DID_INTEL_ADL_P_CNVI_WIFI_2,
56 	PCI_DID_INTEL_ADL_P_CNVI_WIFI_3,
57 	PCI_DID_INTEL_ADL_S_CNVI_WIFI_0,
58 	PCI_DID_INTEL_ADL_S_CNVI_WIFI_1,
59 	PCI_DID_INTEL_ADL_S_CNVI_WIFI_2,
60 	PCI_DID_INTEL_ADL_S_CNVI_WIFI_3,
61 	PCI_DID_INTEL_ADL_N_CNVI_WIFI_0,
62 	PCI_DID_INTEL_ADL_N_CNVI_WIFI_1,
63 	PCI_DID_INTEL_ADL_N_CNVI_WIFI_2,
64 	PCI_DID_INTEL_ADL_N_CNVI_WIFI_3,
65 	PCI_DID_INTEL_RPL_S_CNVI_WIFI_0,
66 	PCI_DID_INTEL_RPL_S_CNVI_WIFI_1,
67 	PCI_DID_INTEL_RPL_S_CNVI_WIFI_2,
68 	PCI_DID_INTEL_RPL_S_CNVI_WIFI_3,
69 	0
70 };
71 
72 static const struct pci_driver pch_cnvi_wifi __pci_driver = {
73 	.ops			= &cnvi_wifi_ops,
74 	.vendor			= PCI_VID_INTEL,
75 	.devices		= wifi_pci_device_ids,
76 };
77 
cnvi_bt_acpi_name(const struct device * dev)78 static const char *cnvi_bt_acpi_name(const struct device *dev)
79 {
80 	return "CNVB";
81 }
82 
83 static struct device_operations cnvi_bt_ops = {
84 	.read_resources		= pci_dev_read_resources,
85 	.set_resources		= pci_dev_set_resources,
86 	.enable_resources	= pci_dev_enable_resources,
87 	.ops_pci		= &pci_dev_ops_pci,
88 	.scan_bus		= scan_static_bus,
89 	.acpi_name		= cnvi_bt_acpi_name,
90 	.acpi_fill_ssdt		= acpi_device_write_pci_dev,
91 };
92 
93 static const unsigned short bt_pci_device_ids[] = {
94 	PCI_DID_INTEL_TGL_CNVI_BT_0,
95 	PCI_DID_INTEL_TGL_CNVI_BT_1,
96 	PCI_DID_INTEL_TGL_CNVI_BT_2,
97 	PCI_DID_INTEL_TGL_CNVI_BT_3,
98 	PCI_DID_INTEL_TGL_H_CNVI_BT_0,
99 	PCI_DID_INTEL_TGL_H_CNVI_BT_1,
100 	PCI_DID_INTEL_TGL_H_CNVI_BT_2,
101 	0
102 };
103 
104 static const struct pci_driver pch_cnvi_bt __pci_driver = {
105 	.ops			= &cnvi_bt_ops,
106 	.vendor			= PCI_VID_INTEL,
107 	.devices		= bt_pci_device_ids,
108 };
109