feat: intel wi-fi (AX211) driver with network scanning
This commit is contained in:
1 parent
75d92d560c
commit
a01e63c717
21 files changed
+5649
-4
No files matched your search
@@ -9,6 +9,7 @@
|
||||
#include <Drivers/Graphics/IntelGPU.hpp>
|
||||
#include <Drivers/Net/E1000.hpp>
|
||||
#include <Drivers/Net/E1000E.hpp>
|
||||
#include <Drivers/Net/Wifi/Wifi.hpp>
|
||||
#include <Drivers/USB/Xhci.hpp>
|
||||
#include <Drivers/Storage/Ahci.hpp>
|
||||
#include <Drivers/Storage/Nvme.hpp>
|
||||
@@ -43,6 +44,18 @@ namespace Drivers {
|
||||
0x1A1F,
|
||||
};
|
||||
|
||||
// Intel AX210-family Wi-Fi (CNVi and discrete). The driver additionally
|
||||
// checks CSR_HW_RF_ID at probe time and only claims RF type GF (AX211),
|
||||
// which is the firmware image shipped on the ramdisk.
|
||||
static constexpr uint16_t g_intelWifiIds[] = {
|
||||
0x2725, // AX210 (discrete)
|
||||
0x2726, // AX211 (discrete, GF2)
|
||||
0x51f0, 0x51f1, 0x54f0, // AlderLake CNVi
|
||||
0x7a70, 0x7af0, // RaptorLake / AlderLake-P CNVi
|
||||
0x7e40, // MeteorLake CNVi
|
||||
0x7f70, // RaptorLake-S CNVi
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Probe wrappers (adapt namespace::Probe to PciProbeFunc signature)
|
||||
// -------------------------------------------------------------------------
|
||||
@@ -63,6 +76,10 @@ namespace Drivers {
|
||||
return Net::E1000E::Probe(dev);
|
||||
}
|
||||
|
||||
static bool ProbeWifi(const Pci::PciDevice& dev) {
|
||||
return Net::Wifi::Probe(dev);
|
||||
}
|
||||
|
||||
static bool ProbeAhci(const Pci::PciDevice& dev) {
|
||||
return Storage::Ahci::Probe(dev);
|
||||
}
|
||||
@@ -124,7 +141,20 @@ namespace Drivers {
|
||||
Pci::ProbePhase::Normal,
|
||||
ProbeE1000E,
|
||||
},
|
||||
// Order 5: AHCI — Normal phase, match class=0x01/0x06/0x01 (SATA AHCI)
|
||||
// Order 5: Intel Wi-Fi — Normal phase, vendor=0x8086 + deviceIds list.
|
||||
// These are the AX210-family (CNVi "So") parts; the probe
|
||||
// rejects anything whose RF type is not GF, since only the
|
||||
// AX211 firmware image is bundled.
|
||||
{
|
||||
"IntelWiFi",
|
||||
0x8086,
|
||||
0xFF, 0xFF, 0xFF,
|
||||
g_intelWifiIds,
|
||||
sizeof(g_intelWifiIds) / sizeof(g_intelWifiIds[0]),
|
||||
Pci::ProbePhase::Normal,
|
||||
ProbeWifi,
|
||||
},
|
||||
// Order 6: AHCI — Normal phase, match class=0x01/0x06/0x01 (SATA AHCI)
|
||||
{
|
||||
"AHCI",
|
||||
0, // VendorId (any)
|
||||
@@ -136,7 +166,7 @@ namespace Drivers {
|
||||
Pci::ProbePhase::Normal,
|
||||
ProbeAhci,
|
||||
},
|
||||
// Order 6: NVMe — Normal phase, match class=0x01/0x08/0x02 (NVM Express)
|
||||
// Order 7: NVMe — Normal phase, match class=0x01/0x08/0x02 (NVM Express)
|
||||
{
|
||||
"NVMe",
|
||||
0, // VendorId (any)
|
||||
@@ -148,7 +178,7 @@ namespace Drivers {
|
||||
Pci::ProbePhase::Normal,
|
||||
ProbeNvme,
|
||||
},
|
||||
// Order 7: Intel HDA — Normal phase, match vendor=0x8086 + class=0x04 (Multimedia)
|
||||
// Order 8: Intel HDA — Normal phase, match vendor=0x8086 + class=0x04 (Multimedia)
|
||||
// SubClass 0x03 = "Audio device" (plain HD Audio controller).
|
||||
// SubClass 0x01 = "Multimedia audio controller": on modern
|
||||
// laptops this is the SAME HDA controller enumerated with the
|
||||
|
||||
Reference in new issue
Block a user