Intel: 8086 -PCI Ven:8086 Dev:7190 -PCI Ven:8086 Dev:7191 -PCI Ven:8086 Dev:7110 -PCI Ven:8086 Dev:7111 -PCI Ven:8086 Dev:7113 -PCI Ven:8086 Dev:7112-
PCI Ven:104b Dev:1040-
PCI Ven:1022 Dev:2000-
PCI Ven:1274 Dev:1371-
PCI Ven:15ad Dev:0740 -PCI Ven:15ad Dev:0405 -PCI Ven:15ad Dev:0790 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:07a0 -PCI Ven:15ad Dev:0770+7190: 440BX/ZX AGPset Host Bridge +7191: 440BX/ZX AGPset PCI-to-PCI bridge +7110: PIIX4/4E/4M ISBridgeA +7111: PIIX4/4E/4M IDE Controller 82371AB/EB/MB +7113: PIIX4/4E/4M Power Management Controller +7112: PIIX4/4E/4M USB Interface +
Mylex / Buslogic: 104B +1040: BT958 SCSI Host Adaptor+
Advanced Micro Devices: 1022 +2000: PCnet LANCE PCI Ethernet Controller Am79C970/1/2/3/5/6+
Ensoniq: 1274 +1371: AudioPCI ES 1371+
VMWare: 15AD +0740: VMWare VMCI Bus Device +0405: NVIDIA 9500MGS Graphics +0790: PCI bridge +07A0: (32 instances) EHCI USB Controller +0770: Standard Enhanced PCI to USB Host Controller
diff --git a/source2/Kernel/System/Hardware/Cosmos.Hardware/ATA.cs b/source2/Kernel/System/Hardware/Cosmos.Hardware/ATA.cs index 9a1750db0..a3148e1f9 100644 --- a/source2/Kernel/System/Hardware/Cosmos.Hardware/ATA.cs +++ b/source2/Kernel/System/Hardware/Cosmos.Hardware/ATA.cs @@ -5,5 +5,10 @@ using System.Text; namespace Cosmos.Hardware { public class ATA { + protected Core.IOGroup.PciDevice IO; + + public ATA(Core.IOGroup.PciDevice aIO) { + IO = aIO; + } } } diff --git a/source2/Kernel/System/Hardware/Cosmos.Hardware/Cosmos.Hardware.csproj b/source2/Kernel/System/Hardware/Cosmos.Hardware/Cosmos.Hardware.csproj index 19fb25c76..251c690cf 100644 --- a/source2/Kernel/System/Hardware/Cosmos.Hardware/Cosmos.Hardware.csproj +++ b/source2/Kernel/System/Hardware/Cosmos.Hardware/Cosmos.Hardware.csproj @@ -74,6 +74,7 @@
+ Dynamically loaded drivers are contained in this folder. In the future they may + be in different assemblies which are loaded on demand. The drivers in the root + folder are not dynamic, and are drivers that are required for all systems, or + are common bases used by dynamic drivers. For example, ATA exists in the root, + but actual ATA chipsets should exist in this directory.
+ + + \ No newline at end of file diff --git a/source2/Kernel/System/Hardware/Cosmos.Hardware/Global.cs b/source2/Kernel/System/Hardware/Cosmos.Hardware/Global.cs index 033026919..dd179ff7b 100644 --- a/source2/Kernel/System/Hardware/Cosmos.Hardware/Global.cs +++ b/source2/Kernel/System/Hardware/Cosmos.Hardware/Global.cs @@ -10,11 +10,20 @@ namespace Cosmos.Hardware { static public Keyboard Keyboard = new Keyboard(); static public PIT PIT = new PIT(); static public TextScreen TextScreen = new TextScreen(); + static public ATA ATA; static public void Init() { Global.Dbg.Send("Cosmos.Hardware.Global.Init"); + Core.PciBus.OnPCIDeviceFound = PCIDeviceFound; Cosmos.Core.Global.Init(); } + static void PCIDeviceFound(Core.PciBus.PciInfo aInfo, Core.IOGroup.PciDevice aIO) { + // Later we need to dynamically load these, but we need to finish the design first. + if ((aInfo.VendorID == 0x8086) && (aInfo.DeviceID == 0x7111)) { + ATA = new ATA(aIO); + } + } + } }