[prev in list] [next in list] [prev in thread] [next in thread]
List: haiku-commits
Subject: [haiku-commits] Change in haiku[master]: kernel/uart: fix GetChar for PL011
From: Gerrit <review () review ! haiku-os ! org>
Date: 2021-11-24 13:34:35
Message-ID: gerrit.1637760873000.I47762de387b07c4fed46cc192cd3b81fdabfb270 () review ! haiku-os ! org
[Download RAW message or body]
From <karolyd577@gmail.com>:
karolyd577@gmail.com has uploaded this change for review. ( \
https://review.haiku-os.org/c/haiku/+/4732 )
Change subject: kernel/uart: fix GetChar for PL011
......................................................................
kernel/uart: fix GetChar for PL011
Check RX buffer status when GetChar is called in no-wait mode.
This fixes an 'infinite keypress' issue that used to occur
after 16 keypresses.
Change-Id: I47762de387b07c4fed46cc192cd3b81fdabfb270
---
M src/system/kernel/arch/arm/arch_uart_pl011.cpp
1 file changed, 5 insertions(+), 1 deletion(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/32/4732/1
diff --git a/src/system/kernel/arch/arm/arch_uart_pl011.cpp \
b/src/system/kernel/arch/arm/arch_uart_pl011.cpp index b2f2388..194c6a1 100644
--- a/src/system/kernel/arch/arm/arch_uart_pl011.cpp
+++ b/src/system/kernel/arch/arm/arch_uart_pl011.cpp
@@ -289,10 +289,14 @@
ArchUARTPL011::GetChar(bool wait)
{
if (Enabled() == true) {
- // Wait until a character is received?
if (wait) {
+ // Wait until a character is received
while ((In32(PL01x_FR) & PL01x_FR_RXFE) != 0)
Barrier();
+ } else {
+ // Check if there is any data available in RX fifo
+ if ((In32(PL01x_FR) & PL01x_FR_RXFE) != 0)
+ return -1;
}
return In32(PL01x_DR);
}
--
To view, visit https://review.haiku-os.org/c/haiku/+/4732
To unsubscribe, or for help writing mail filters, visit \
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I47762de387b07c4fed46cc192cd3b81fdabfb270
Gerrit-Change-Number: 4732
Gerrit-PatchSet: 1
Gerrit-Owner: karolyd577@gmail.com
Gerrit-MessageType: newchange
[Attachment #3 (text/html)]
<p>karolyd577@gmail.com has uploaded this change for \
<strong>review</strong>.</p><p><a \
href="https://review.haiku-os.org/c/haiku/+/4732">View Change</a></p><pre \
style="font-family: monospace,monospace; white-space: pre-wrap;">kernel/uart: fix \
GetChar for PL011<br><br>Check RX buffer status when GetChar is called in no-wait \
mode.<br>This fixes an 'infinite keypress' issue that used to occur<br>after \
16 keypresses.<br><br>Change-Id: \
I47762de387b07c4fed46cc192cd3b81fdabfb270<br>---<br>M \
src/system/kernel/arch/arm/arch_uart_pl011.cpp<br>1 file changed, 5 insertions(+), 1 \
deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: \
pre-wrap;">git pull ssh://git.haiku-os.org:22/haiku refs/changes/32/4732/1</pre><pre \
style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git \
a/src/system/kernel/arch/arm/arch_uart_pl011.cpp \
b/src/system/kernel/arch/arm/arch_uart_pl011.cpp</span><br><span>index \
b2f2388..194c6a1 100644</span><br><span>--- \
a/src/system/kernel/arch/arm/arch_uart_pl011.cpp</span><br><span>+++ \
b/src/system/kernel/arch/arm/arch_uart_pl011.cpp</span><br><span>@@ -289,10 +289,14 \
@@</span><br><span> ArchUARTPL011::GetChar(bool wait)</span><br><span> \
{</span><br><span> if (Enabled() == true) {</span><br><span style="color: hsl(0, \
100%, 40%);">- // Wait until a character is received?</span><br><span> if (wait) \
{</span><br><span style="color: hsl(120, 100%, 40%);">+ // Wait until a character \
is received</span><br><span> while ((In32(PL01x_FR) & PL01x_FR_RXFE) != \
0)</span><br><span> Barrier();</span><br><span style="color: hsl(120, 100%, \
40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ // Check \
if there is any data available in RX fifo</span><br><span style="color: hsl(120, \
100%, 40%);">+ if ((In32(PL01x_FR) & PL01x_FR_RXFE) != 0)</span><br><span \
style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span> \
}</span><br><span> return In32(PL01x_DR);</span><br><span> \
}</span><br><span></span><br></pre><p>To view, visit <a \
href="https://review.haiku-os.org/c/haiku/+/4732">change 4732</a>. To unsubscribe, or \
for help writing mail filters, visit <a \
href="https://review.haiku-os.org/settings">settings</a>.</p><div itemscope \
itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" \
itemtype="http://schema.org/ViewAction"><link itemprop="url" \
href="https://review.haiku-os.org/c/haiku/+/4732"/><meta itemprop="name" \
content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: haiku </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: \
I47762de387b07c4fed46cc192cd3b81fdabfb270 </div> <div style="display:none"> \
Gerrit-Change-Number: 4732 </div> <div style="display:none"> Gerrit-PatchSet: 1 \
</div> <div style="display:none"> Gerrit-Owner: karolyd577@gmail.com </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic