Thread (14 messages) 14 messages, 5 authors, 2017-02-14

[PATCH 1/2] tty: pl011: Work around QDF2400 E44 stuck BUSY bit

From: Christopher Covington <hidden>
Date: 2017-02-14 23:43:12
Also in: linux-serial, lkml

On 02/08/2017 06:04 PM, Timur Tabi wrote:
On 02/08/2017 04:22 PM, Christopher Covington wrote:
quoted
quoted
quoted
quoted
quoted
-    while (pl011_read(uap, REG_FR) & uap->vendor->fr_busy)
+    while ((pl011_read(uap, REG_FR) ^ uap->vendor->inv_fr)
+                        & uap->vendor->fr_busy)
I really think the XOR logic needs to be documented wherever it's
used. It's just too confusing.
References such as the following for basic bit operations like
setting, clearing, and toggling are easy enough to come by.

http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c-c
I know what XOR does. I was thinking a more high-level comment would
be appropriate. With E44, we want to ignore the BUSY bit and use TXFE
instead. So was hoping to a comment that says that:

/* Normally, we poll until BUSY=0, but E44 says we should poll until
TXFE=1 instead. So with E44, we set fr_busy to TXFE, but we have to
invert it. */
Oh, yeah, that'd be good. I'll include better comments in v2.

Cheers,
Cov

-- 
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code
Aurora Forum, a Linux Foundation Collaborative Project.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help