Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Oct 2013 02:14:50 +0200
From:      Zbigniew Bodek <zbb@freebsd.org>
To:        "freebsd-embedded@freebsd.org" <freebsd-embedded@freebsd.org>
Cc:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>, freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: Changes to UART ns8250
Message-ID:  <CALF_Tx=9-s2emKfFR8f_CtzHYZ9qUAX31rhSU0%2BZMNyboPiw2g@mail.gmail.com>
In-Reply-To: <CALF_TxnESbdw_jfbut3toJFH0F96RFiSLb8EPd_t0d5UojGHCQ@mail.gmail.com>
References:  <CALF_Tx=AwVnr0d75-K-yu97iVgmTJC7aaABoix73zHD%2B5eKJnQ@mail.gmail.com> <CAGtf9xNZekmye4=JuYmEct-h9CG4ckHWihfCKJrmroK3Sb3jDQ@mail.gmail.com> <CAGtf9xNnBc1=oTxFv_sEXJRsnWYEV6aQ=xr1V0-YwHXcQRuJ0g@mail.gmail.com> <CALF_TxnESbdw_jfbut3toJFH0F96RFiSLb8EPd_t0d5UojGHCQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--089e013cbfea6b0db604e999c193
Content-Type: text/plain; charset=ISO-8859-1

Hello Everyone,

I'm attaching the newest version of the ns8250 UART patch.
After some discussions I decided to go with busy-wait + timeout solution.
The applied delay should handle exotic corner cases (please notice
that we can't use ns8250_delay()
to get the actual single transmission time since we know that LCR is locked).

If there are no objections then I would like to commit this soon.

Best regards
Zbigniew Bodek

2013/10/9 Zbigniew Bodek <zbb@freebsd.org>:
> Hello Ganbold.
>
> Thank you for testing the patch and pointing those issue out.
> My detection log from Armada XP:
>
> uart0: <16550 or compatible> mem 0xd0012000-0xd001201f irq 41 on simplebus0
> uart0: console (115200,n,8,1)
> uart1: <16550 or compatible> mem 0xd0012100-0xd001211f irq 42 on simplebus0
> uart2: <16550 or compatible> mem 0xd0012200-0xd001221f irq 43 on simplebus0
> uart3: <16550 or compatible> mem 0xd0012300-0xd001231f irq 44 on simplebus0
>
> Is there a possibility to download a datasheet for RK30xx so that I could
> verify what is required for it's UART?
> The patch is causing that we only wait until UART is not busy anymore. I
> can't find why would that cause problems
> if your UART requires busy detection anyway.
>
> Best regards
> Zbigniew Bodek
>
>
>
> 2013/10/9 Ganbold Tsagaankhuu <ganbold@gmail.com>
>>
>>
>>
>>
>> On Tue, Oct 8, 2013 at 9:58 AM, Ganbold Tsagaankhuu <ganbold@gmail.com>
>> wrote:
>>>
>>> Zbigniew,
>>>
>>>
>>> On Tue, Oct 8, 2013 at 3:54 AM, Zbigniew Bodek <zbb@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.
>>>
>>>
>>> I'm trying your patch on r254983.
>>> Tried on 2 boards (Cubieboard2 (Allwinner A20 SoC - dual Cortex A7) and
>>> Radxa Rock (Rockchip RK3188 - Quad Cortex A9)). Both seem to have some sort
>>> of DesignWare uart.
>>>
>>> 1. It works fine on Cubieboard2. Uart dmesg is like:
>>>
>>> uart0: <16750 or compatible> mem 0x1c28000-0x1c283ff irq 33 on simplebus0
>>> uart0: console (115200,n,8,1)
>>>
>>> 2. No any printing on screen in case of Radxa Rock. Without your patch
>>> uart dmesg is like:
>>>
>>> uart0: <16650 or compatible> mem 0x20064000-0x200643ff irq 68 on
>>> simplebus0
>>> uart0: console (115200,n,8,1)
>>>
>>> In case of RK3188 SoC, it seems booting FreeBSD kernel seems very
>>> fragile, not sure yet what is causing the problem.
>>> Even with stock ns8250 some version later than r254983 didn't show/print
>>> anything on serial console few days ago.
>>> Only thing so far I know is this r254983 (with some patch) works in my
>>> case on RK3188 SoC based board.
>>
>>
>>
>> Zbigniew,
>>
>> Just tried again your patch on RK30xx board. I was able to see boot
>> messages on screen.
>> This uart detected as:
>> ...
>> uart0: <16650 or compatible> mem 0x20064000-0x200643ff irq 68 on
>> simplebus0
>> uart0: console (115200,n,8,1)
>> uart0: fast interrupt
>> ...
>> Can you show me your uart detection log?
>> It seems this DW uart of RK30xx is different than DW uart of A10/A20.
>> Boot simply stops printing "start_init: trying /sbin/init".
>>
>> thanks,
>>
>> Ganbold
>>
>>
>>>
>>>
>>> thanks,
>>>
>>> Ganbold
>>>
>>>
>>>
>>>>
>>>>
>>>> Best regards
>>>> Zbigniew Bodek
>>>>
>>>> _______________________________________________
>>>> freebsd-current@freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>>>> To unsubscribe, send any mail to
>>>> "freebsd-current-unsubscribe@freebsd.org"
>>>
>>>
>>
>

--089e013cbfea6b0db604e999c193
Content-Type: application/octet-stream; 
	name="0001-Wait-for-DesignWare-UART-transfers-completion-before.patch"
Content-Disposition: attachment; 
	filename="0001-Wait-for-DesignWare-UART-transfers-completion-before.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hn83jw4x0

RnJvbSAwYjIxZTI2MDYwZmM5Y2RmMjNlMTBmZDFiMWJlNTY2YjVjNzM4ZjJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBaYmlnbmlldyBCb2RlayA8emJiQHNlbWloYWxmLmNvbT4KRGF0
ZTogU2F0LCA1IE9jdCAyMDEzIDAyOjI1OjIzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gV2FpdCBm
b3IgRGVzaWduV2FyZSBVQVJUIHRyYW5zZmVycyBjb21wbGV0aW9uIGJlZm9yZQogYWNjZXNzaW5n
IGxpbmUgY29udHJvbAoKV2hlbiB1c2luZyBEVyBVQVJUIHdpdGggQlVTWSBkZXRlY3Rpb24gaXQg
aXMgbmVjZXNzYXJ5IHRvIHdhaXQKdW50aWwgYWxsIHNlcmlhbCB0cmFuc2ZlcnMgYXJlIGZpbmlz
aGVkIGJlZm9yZSBtYW5pcHVsYXRpbmcgdGhlCmxpbmUgY29udHJvbC4gTENSIHdpbGwgbm90IGJl
IGFmZmVjdGVkIHdoZW4gVUFSVCBpcyBidXN5LgpJbiBhZGRpdGlvbiwgaWYgRGl2aXNvciBMYXRj
aCBBY2Nlc3MgQml0IGlzIGJlaW5nIHNldCBpbiBvcmRlciB0bwptb2RpZnkgVUFSVCBkaXZpc29y
czoKMS4gV2Ugd2lsbCBnZXQgQlVTWSBpbnRlcnJ1cHQgaWYgaW50ZXJydXB0cyBhcmUgZW5hYmxl
ZC4KMi4gQmVjYXVzZSBMQ1Igd2lsbCBub3QgYmUgYWZmZWN0ZWQgdGhlIFRIUiBhbmQgKGV2ZW4g
d29yc2UpIElFUgogICBjb250ZW50cyB3aWxsIGJlIGNvcnJ1cHRlZC4gVGhpcyB3aWxsIGxlYWQg
dG8gY29uc29sZSBoYW5nLgoKQXBwcm92ZWQgYnk6CWNvZ25ldCAobWVudG9yKQotLS0KIHN5cy9k
ZXYvaWMvbnMxNjU1MC5oICAgICAgICAgICB8ICAxICsKIHN5cy9kZXYvdWFydC91YXJ0X2Rldl9u
czgyNTAuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQs
IDI2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zeXMvZGV2L2lj
L25zMTY1NTAuaCBiL3N5cy9kZXYvaWMvbnMxNjU1MC5oCmluZGV4IDY1OWY1OTEuLjMzYTdkZDEg
MTAwNjQ0Ci0tLSBhL3N5cy9kZXYvaWMvbnMxNjU1MC5oCisrKyBiL3N5cy9kZXYvaWMvbnMxNjU1
MC5oCkBAIC0xODUsNiArMTg1LDcgQEAKICNkZWZpbmUgRFdfUkVHX1VTUgkzMQkvKiBEZXNpZ25X
YXJlIGRlcml2ZWQgVWFydCBTdGF0dXMgUmVnICovCiAjZGVmaW5lIGNvbV91c3IJCTM5CS8qIE9j
dGVvbiAxNjc1MC8xNjU1MCBVYXJ0IFN0YXR1cyBSZWcgKi8KICNkZWZpbmUgUkVHX1VTUgkJY29t
X3VzcgorI2RlZmluZSBVU1JfQlVTWQkxCS8qIFVhcnQgQnVzeS4gU2VyaWFsIHRyYW5zZmVyIGlu
IHByb2dyZXNzICovCiAjZGVmaW5lIFVTUl9UWEZJRk9fTk9URlVMTCAyICAgIC8qIFVhcnQgVFgg
RklGTyBOb3QgZnVsbCAqLwogCiAvKiAxNjk1MCByZWdpc3RlciAjMS4gIEFjY2VzcyBlbmFibGVk
IGJ5IEFDUls3XS4gIEFsc28gcmVxdWlyZXMgIUxDUls3XS4gKi8KZGlmZiAtLWdpdCBhL3N5cy9k
ZXYvdWFydC91YXJ0X2Rldl9uczgyNTAuYyBiL3N5cy9kZXYvdWFydC91YXJ0X2Rldl9uczgyNTAu
YwppbmRleCAyMTFkMTEzLi4yNDliZTRjIDEwMDY0NAotLS0gYS9zeXMvZGV2L3VhcnQvdWFydF9k
ZXZfbnM4MjUwLmMKKysrIGIvc3lzL2Rldi91YXJ0L3VhcnRfZGV2X25zODI1MC5jCkBAIC02NDcs
MTEgKzY0NywzNSBAQCBpbnQKIG5zODI1MF9idXNfcGFyYW0oc3RydWN0IHVhcnRfc29mdGMgKnNj
LCBpbnQgYmF1ZHJhdGUsIGludCBkYXRhYml0cywKICAgICBpbnQgc3RvcGJpdHMsIGludCBwYXJp
dHkpCiB7CisJc3RydWN0IG5zODI1MF9zb2Z0YyAqbnM4MjUwOwogCXN0cnVjdCB1YXJ0X2JhcyAq
YmFzOwotCWludCBlcnJvcjsKKwlpbnQgZXJyb3IsIGxpbWl0OwogCisJbnM4MjUwID0gKHN0cnVj
dCBuczgyNTBfc29mdGMqKXNjOwogCWJhcyA9ICZzYy0+c2NfYmFzOwogCXVhcnRfbG9jayhzYy0+
c2NfaHdtdHgpOworCS8qCisJICogV2hlbiB1c2luZyBEVyBVQVJUIHdpdGggQlVTWSBkZXRlY3Rp
b24gaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQKKwkgKiB1bnRpbCBhbGwgc2VyaWFsIHRyYW5zZmVy
cyBhcmUgZmluaXNoZWQgYmVmb3JlIG1hbmlwdWxhdGluZyB0aGUKKwkgKiBsaW5lIGNvbnRyb2wu
IExDUiB3aWxsIG5vdCBiZSBhZmZlY3RlZCB3aGVuIFVBUlQgaXMgYnVzeS4KKwkgKi8KKwlpZiAo
bnM4MjUwLT5idXN5X2RldGVjdCAhPSAwKSB7CisJCS8qCisJCSAqIFBpY2sgYW4gYXJiaXRyYXJ5
IGhpZ2ggbGltaXQgdG8gYXZvaWQgZ2V0dGluZyBzdHVjayBpbgorCQkgKiBhbiBpbmZpbml0ZSBs
b29wIGluIGNhc2Ugd2hlbiB0aGUgaGFyZHdhcmUgaXMgYnJva2VuLgorCQkgKi8KKwkJbGltaXQg
PSAxMCAqIDEwMjQ7CisJCXdoaWxlICgoKHVhcnRfZ2V0cmVnKGJhcywgRFdfUkVHX1VTUikgJiBV
U1JfQlVTWSkgIT0gMCkgJiYKKwkJICAgIC0tbGltaXQpCisJCQlERUxBWSg0KTsKKworCQlpZiAo
bGltaXQgPD0gMCkgeworCQkJLyogVUFSVCBhcHBlYXJzIHRvIGJlIHN0dWNrICovCisJCQl1YXJ0
X3VubG9jayhzYy0+c2NfaHdtdHgpOworCQkJcmV0dXJuIChFSU8pOworCQl9CisJfQorCiAJZXJy
b3IgPSBuczgyNTBfcGFyYW0oYmFzLCBiYXVkcmF0ZSwgZGF0YWJpdHMsIHN0b3BiaXRzLCBwYXJp
dHkpOwogCXVhcnRfdW5sb2NrKHNjLT5zY19od210eCk7CiAJcmV0dXJuIChlcnJvcik7Ci0tIAox
LjguNAoK
--089e013cbfea6b0db604e999c193--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALF_Tx=9-s2emKfFR8f_CtzHYZ9qUAX31rhSU0%2BZMNyboPiw2g>