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