mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-27 14:02:19 +00:00
Driver work
This commit is contained in:
parent
b761ae352b
commit
7ace786eab
9 changed files with 76 additions and 46 deletions
|
|
@ -55,6 +55,7 @@
|
||||||
<Compile Include="Heap.cs" />
|
<Compile Include="Heap.cs" />
|
||||||
<Compile Include="IOGroup\Keyboard.cs" />
|
<Compile Include="IOGroup\Keyboard.cs" />
|
||||||
<Compile Include="IOGroup\PciBus.cs" />
|
<Compile Include="IOGroup\PciBus.cs" />
|
||||||
|
<Compile Include="IOGroup\PciDevice.cs" />
|
||||||
<Compile Include="IOGroup\PIC.cs" />
|
<Compile Include="IOGroup\PIC.cs" />
|
||||||
<Compile Include="INTs.cs" />
|
<Compile Include="INTs.cs" />
|
||||||
<Compile Include="IOGroup\IOGroup.cs" />
|
<Compile Include="IOGroup\IOGroup.cs" />
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Cosmos.Core {
|
namespace Cosmos.Core {
|
||||||
|
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple=true)]
|
||||||
public class DeviceIDAttribute : Attribute {
|
public class DeviceIDAttribute : Attribute {
|
||||||
public UInt16 VendorID;
|
public UInt16 VendorID;
|
||||||
public UInt16 DeviceID;
|
public UInt16 DeviceID;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Cosmos.Core.IOGroup {
|
||||||
|
public class PciDevice {
|
||||||
|
internal PciDevice() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,17 @@ using Cosmos.Common.Extensions;
|
||||||
|
|
||||||
namespace Cosmos.Core {
|
namespace Cosmos.Core {
|
||||||
public class PciBus {
|
public class PciBus {
|
||||||
|
public class PciInfo {
|
||||||
|
public readonly UInt16 VendorID;
|
||||||
|
public readonly UInt16 DeviceID;
|
||||||
|
|
||||||
|
public PciInfo(UInt16 aVendorID, UInt16 aDeviceID) {
|
||||||
|
VendorID = aVendorID;
|
||||||
|
DeviceID = aDeviceID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static public Action<PciInfo, IOGroup.PciDevice> OnPCIDeviceFound;
|
||||||
|
|
||||||
protected IOGroup.PciBus IO = new IOGroup.PciBus();
|
protected IOGroup.PciBus IO = new IOGroup.PciBus();
|
||||||
|
|
||||||
public PciBus() {
|
public PciBus() {
|
||||||
|
|
@ -50,7 +61,9 @@ namespace Cosmos.Core {
|
||||||
UInt16 xVendorID = (UInt16)(x & 0xFFFF);
|
UInt16 xVendorID = (UInt16)(x & 0xFFFF);
|
||||||
UInt16 xDeviceID = (UInt16)(x >> 16);
|
UInt16 xDeviceID = (UInt16)(x >> 16);
|
||||||
|
|
||||||
Global.Dbg.Send("PCI Ven:" + xVendorID.ToHex() + " Dev:" + xDeviceID.ToHex());
|
var xInfo = new PciInfo(xVendorID, xDeviceID);
|
||||||
|
var xIO = new IOGroup.PciDevice();
|
||||||
|
OnPCIDeviceFound(xInfo, xIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,51 +19,24 @@
|
||||||
<h3>
|
<h3>
|
||||||
VMWare Worksation</h3>
|
VMWare Worksation</h3>
|
||||||
<pre>Intel: 8086
|
<pre>Intel: 8086
|
||||||
PCI Ven:8086 Dev:7190
|
7190: 440BX/ZX AGPset Host Bridge
|
||||||
PCI Ven:8086 Dev:7191
|
7191: 440BX/ZX AGPset PCI-to-PCI bridge
|
||||||
PCI Ven:8086 Dev:7110
|
7110: PIIX4/4E/4M ISBridgeA
|
||||||
PCI Ven:8086 Dev:7111
|
7111: PIIX4/4E/4M IDE Controller 82371AB/EB/MB
|
||||||
PCI Ven:8086 Dev:7113
|
7113: PIIX4/4E/4M Power Management Controller
|
||||||
PCI Ven:8086 Dev:7112</pre>
|
7112: PIIX4/4E/4M USB Interface</pre>
|
||||||
<pre>PCI Ven:104b Dev:1040</pre>
|
<pre>Mylex / Buslogic: 104B
|
||||||
<pre>PCI Ven:1022 Dev:2000</pre>
|
1040: BT958 SCSI Host Adaptor</pre>
|
||||||
<pre>PCI Ven:1274 Dev:1371</pre>
|
<pre>Advanced Micro Devices: 1022
|
||||||
<pre>PCI Ven:15ad Dev:0740
|
2000: PCnet LANCE PCI Ethernet Controller Am79C970/1/2/3/5/6</pre>
|
||||||
PCI Ven:15ad Dev:0405
|
<pre>Ensoniq: 1274
|
||||||
PCI Ven:15ad Dev:0790
|
1371: AudioPCI ES 1371</pre>
|
||||||
PCI Ven:15ad Dev:07a0
|
<pre>VMWare: 15AD
|
||||||
PCI Ven:15ad Dev:07a0
|
0740: VMWare VMCI Bus Device
|
||||||
PCI Ven:15ad Dev:07a0
|
0405: NVIDIA 9500MGS Graphics
|
||||||
PCI Ven:15ad Dev:07a0
|
0790: PCI bridge
|
||||||
PCI Ven:15ad Dev:07a0
|
07A0: (32 instances) EHCI USB Controller
|
||||||
PCI Ven:15ad Dev:07a0
|
0770: Standard Enhanced PCI to USB Host Controller</pre>
|
||||||
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</pre>
|
|
||||||
<pre>
|
<pre>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,10 @@ using System.Text;
|
||||||
|
|
||||||
namespace Cosmos.Hardware {
|
namespace Cosmos.Hardware {
|
||||||
public class ATA {
|
public class ATA {
|
||||||
|
protected Core.IOGroup.PciDevice IO;
|
||||||
|
|
||||||
|
public ATA(Core.IOGroup.PciDevice aIO) {
|
||||||
|
IO = aIO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@
|
||||||
<None Include="Cosmos.snk" />
|
<None Include="Cosmos.snk" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="Drivers\ReadMe.html" />
|
||||||
<Content Include="Keyboard.html" />
|
<Content Include="Keyboard.html" />
|
||||||
<Content Include="TextScreen.html" />
|
<Content Include="TextScreen.html" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
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.</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -10,11 +10,20 @@ namespace Cosmos.Hardware {
|
||||||
static public Keyboard Keyboard = new Keyboard();
|
static public Keyboard Keyboard = new Keyboard();
|
||||||
static public PIT PIT = new PIT();
|
static public PIT PIT = new PIT();
|
||||||
static public TextScreen TextScreen = new TextScreen();
|
static public TextScreen TextScreen = new TextScreen();
|
||||||
|
static public ATA ATA;
|
||||||
|
|
||||||
static public void Init() {
|
static public void Init() {
|
||||||
Global.Dbg.Send("Cosmos.Hardware.Global.Init");
|
Global.Dbg.Send("Cosmos.Hardware.Global.Init");
|
||||||
|
Core.PciBus.OnPCIDeviceFound = PCIDeviceFound;
|
||||||
Cosmos.Core.Global.Init();
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue