Kernel - Fixed PCI bus enumeration bug, switched x86 serial debug to 115200baud
authorJohn Hodge <[email protected]>
Tue, 27 Mar 2012 02:00:00 +0000 (10:00 +0800)
committerJohn Hodge <[email protected]>
Tue, 27 Mar 2012 02:00:00 +0000 (10:00 +0800)
- PCI wasn't enumuerating extra busses located

KernelLand/Kernel/arch/x86/lib.c
KernelLand/Kernel/drv/pci.c

index 175f9a5..6b3d722 100644 (file)
@@ -177,8 +177,8 @@ void Debug_PutCharDebug(char ch)
        if(!gbDebug_SerialSetup) {
                outb(SERIAL_PORT + 1, 0x00);    // Disable all interrupts
                outb(SERIAL_PORT + 3, 0x80);    // Enable DLAB (set baud rate divisor)
-               outb(SERIAL_PORT + 0, 0x0C);    // Set divisor to 12 (lo byte) 9600 baud
-               outb(SERIAL_PORT + 1, 0x00);    //                   (hi byte)
+               outb(SERIAL_PORT + 0, 0x01);    // Set divisor to 1 (lo byte) - 115200 baud
+               outb(SERIAL_PORT + 1, 0x00);    //                  (hi byte)
                outb(SERIAL_PORT + 3, 0x03);    // 8 bits, no parity, one stop bit
                outb(SERIAL_PORT + 2, 0xC7);    // Enable FIFO with 14-byte threshold and clear it
                outb(SERIAL_PORT + 4, 0x0B);    // IRQs enabled, RTS/DSR set
index 327d651..2c01b96 100644 (file)
@@ -73,7 +73,7 @@ Uint32        gaPCI_BusBitmap[256/32];
  */\r
 int PCI_Install(char **Arguments)\r
 {\r
-        int    i;\r
+        int    i, ret, bus;\r
        void    *tmpPtr;\r
        \r
        // Build Portmap\r
@@ -89,8 +89,11 @@ int PCI_Install(char **Arguments)
                gaPCI_PortBitmap[MAX_RESERVED_PORT / 32] = 1 << i;\r
        \r
        // Scan Bus (Bus 0, Don't fill gPCI_Devices)\r
-       i = PCI_ScanBus(0, 0);\r
-       if(i != MODULE_ERR_OK)  return i;\r
+       for( bus = 0; bus < giPCI_BusCount; bus ++ )\r
+       {\r
+               ret = PCI_ScanBus(bus, 0);\r
+               if(ret != MODULE_ERR_OK)        return i;\r
+       }\r
                \r
        if(giPCI_DeviceCount == 0) {\r
                Log_Notice("PCI", "No devices were found");\r
@@ -109,10 +112,13 @@ int PCI_Install(char **Arguments)
        \r
        // Reset counts\r
        giPCI_DeviceCount = 0;\r
-       giPCI_BusCount = 0;\r
+       giPCI_BusCount = 1;\r
        memset(gaPCI_BusBitmap, 0, sizeof(gaPCI_BusBitmap));\r
        // Rescan, filling the PCI device array\r
-       PCI_ScanBus(0, 1);\r
+       for( bus = 0; bus < giPCI_BusCount; bus ++ )\r
+       {\r
+               PCI_ScanBus(bus, 1);\r
+       }\r
        \r
        // Complete Driver Structure\r
        gPCI_DriverStruct.RootNode.Size = giPCI_DeviceCount;\r

UCC git Repository :: git.ucc.asn.au