From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: PL011: add support for extended FIFO-size of PL011-r1p5
Date: Tue, 14 May 2013 22:59:58 -0600 [thread overview]
Message-ID: <5193164E.6050400@wwwdotorg.org> (raw)
In-Reply-To: <022d01ce5107$8bc668e0$a3533aa0$@lge.com>
On 05/14/2013 07:00 PM, Jongsung Kim wrote:
> Stephen Warren <swarren@wwwdotorg.org> :
>> Looking at BCM2835-ARM-Peripherals.pdf (i.e. the public documentation for
>> the BCM2835 chip), I see:
>>
>> =====
>> The UART provides:
>> * Separate 16x8 transmit and 16x12 receive FIFO memory.
>> ...
>> For the in-depth UART overview, please, refer to the ARM PrimeCell UART
>> (PL011) Revision: r1p5 Technical Reference Manual.
>> =====
>>
>> That seems to imply that not all r1p5 PL011s actually have a depth-32 FIFO.
>> Perhaps this is a configurable property of the IP block, not something that
>> all r1p5 have?
>
> All r1p5 have 32-byte FIFO depth and it's not configurable. From the PL011
> TRM:
>
> r1p4-r1p5 Contains the following differences in functionality:
> * The receive and transmit FIFOs are increased to a depth of 32.
> * The Revision field in the UARTPeriphID2 Register on page 3-24
> bits [7:4] now reads back as 0x3.
Well, that certainly isn't true in practice. I think we should revert
this commit until we can determine what the problem is.
I validated that the periphid register in HW contains the r1p5 revision
(3), and the pcellid register does indeed contain the expected
0xb105f00d value. However, if I run the following hacky code in U-Boot
to determine the FIFO depth, it comes out as 16, which explains the
symptoms I'm seeing:
void find_fifo_depth(void)
{
volatile u8 *uart = 0x20201000;
int depth = 0;
/* Wait for TX FIFO empty */
while (!(uart[0x18] & 0x80))
;
/* Disable UART */
uart[0x30] &= ~1;
/* Push chars into TX FIFO until full */
for (;;) {
uart[0] = 'A' + depth;
depth++;
/* Done if FIFO full */
if (uart[0x18] & 0x20)
break;
if (depth > 64) {
depth = -1;
break;
}
}
/* Re-enable UART */
uart[0x30] |= 1;
printf("FIFO depth: %d\n", depth);
}
next prev parent reply other threads:[~2013-05-15 4:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <007301ce375e$bcf6d6b0$36e48410$@lge.com>
2013-05-14 5:56 ` [PATCH] ARM: PL011: add support for extended FIFO-size of PL011-r1p5 Stephen Warren
2013-05-14 7:15 ` Jongsung Kim
2013-05-14 21:03 ` Stephen Warren
2013-05-14 22:50 ` Russell King - ARM Linux
2013-05-15 1:00 ` Jongsung Kim
2013-05-15 4:59 ` Stephen Warren [this message]
2013-05-15 9:37 ` Russell King - ARM Linux
2013-05-16 13:26 ` Jongsung Kim
2013-05-21 1:39 ` Jongsung Kim
2013-05-21 2:12 ` Stephen Warren
2013-05-21 6:02 ` [PATCH] ARM: bcm2835: override the HW UART periphid Jongsung Kim
2013-05-21 6:07 ` Jongsung Kim
2013-05-21 9:00 ` Gordon Hollingworth
2013-05-21 16:34 ` Stephen Warren
2013-05-22 1:43 ` Stephen Warren
2013-05-22 1:52 ` Jongsung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5193164E.6050400@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).