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)
This commit is contained in:
Idan Horowitz 2021-05-15 00:36:13 +03:00 committed by Andreas Kling
parent 0e5aba16ef
commit be57c424f3
Notes: sideshowbarker 2024-07-18 17:57:18 +09:00

View file

@ -87,8 +87,8 @@ void SerialDevice::set_baud(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 + 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
}