Changes to UART ns8250

Zbigniew Bodek zbb at freebsd.org
Mon Oct 7 20:36:19 UTC 2013


Hello Adrian,

Thank you for your remarks.
Please check my answers in-line.

Best regards
Zbigniew Bodek


2013/10/7 Adrian Chadd <adrian at freebsd.org>

> Hi,
>
> You should add:
>
> * a loop counter, to break out after a while;
>
[ZBB] In general as long as UART is busy we cannot proceed but if the
timeout occurs we could return an error. Do you agree?

> * a DELAY(1) or something.
>
[ZBB] DELAY is also a busy wait after all. The reasonable solution might be
to use ns8250_delay() to get the transmission time and use it for timeout
from the first point. I would DELAY(1) in each loop and decrement value
acquired from ns8250_delay(). The loop should break during that time or we
return an error. What do you think?


>
>
>
> -adrian
>
>
>
> On 7 October 2013 12:54, Zbigniew Bodek <zbb at freebsd.org> wrote:
>
>> Hello.
>>
>> I would like to present a patch for ns8250 serial that I would like to
>> commit in the near future (if there are no objections).
>>
>> The patch is fixing newest DesignWare UART with busy detection.
>> During frequency divisors configuration when UART is busy transferring or
>> receiving data, line control register manipulation will not take effect.
>> Therefore, we will not set divisor latch access bit and we will corrupt
>> LCR
>> instead of configuring divisors.
>> It is necessary to wait until UART finishes all transfers to proceed with
>> the configuration.
>>
>> This was detected on Armada XP as UART fails on this issue 100/100
>> attempts.
>> The patch was tested by kevlo@ and me and it works on our Armada XP -
>> based
>> systems.
>>
>> Please send your comment or remarks if there are any.
>>
>> Best regards
>> Zbigniew Bodek
>>
>> _______________________________________________
>> freebsd-current at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org
>> "
>>
>
>


More information about the freebsd-current mailing list