Ver código fonte

Kernel: Swap baud rate divisor registers in SerialDevice::set_baud

These were accidentally the wrong way around (LSB part of the divisor
into the MSB register, MSB part of the divisor into the LSB register)
as can be seen in the specification (and in the comments themselves)
Idan Horowitz 4 anos atrás
pai
commit
be57c424f3
1 arquivos alterados com 2 adições e 2 exclusões
  1. 2 2
      Kernel/Devices/SerialDevice.cpp

+ 2 - 2
Kernel/Devices/SerialDevice.cpp

@@ -87,8 +87,8 @@ void SerialDevice::set_baud(Baud baud)
     m_baud = baud;
     m_baud = baud;
 
 
     IO::out8(m_base_addr + 3, IO::in8(m_base_addr + 3) | 0x80); // turn on DLAB
     IO::out8(m_base_addr + 3, IO::in8(m_base_addr + 3) | 0x80); // turn on DLAB
-    IO::out8(m_base_addr + 0, ((u8)(baud)) >> 2);               // lower half of divisor
-    IO::out8(m_base_addr + 1, ((u8)(baud)) & 0xff);             // upper half of divisor
+    IO::out8(m_base_addr + 0, ((u8)(baud)) & 0xff);             // lower half of divisor
+    IO::out8(m_base_addr + 1, ((u8)(baud)) >> 2);               // upper half of divisor
     IO::out8(m_base_addr + 3, IO::in8(m_base_addr + 3) & 0x7f); // turn off DLAB
     IO::out8(m_base_addr + 3, IO::in8(m_base_addr + 3) & 0x7f); // turn off DLAB
 }
 }