From: "Jongsung Kim" <neidhard.kim@lge.com>
To: "Russell King" <linux@arm.linux.org.uk>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
<jslaby@suse.cz>
Cc: <linux-serial@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH] ARM: PL011: add support for extended FIFO-size of PL011-r1p5
Date: Fri, 12 Apr 2013 18:18:47 +0900 [thread overview]
Message-ID: <007301ce375e$bcf6d6b0$36e48410$@lge.com> (raw)
The latest r1p5-revision of the ARM PL011 UART has 32-byte FIFOs, while all
earlier ones have 16-byte FIFOs. This patch suggests a way to set the
FIFO-size correctly & flexibly by using a
function(vendor_data::get_fifosize) rather than using the
vendor_data::fifosize variable. The function takes the UARTPeriphID, and
returns the correct size.
Signed-off-by: Jongsung Kim <neidhard.kim@lge.com>
drivers/tty/serial/amba-pl011.c | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/tty/serial/amba-pl011.c
b/drivers/tty/serial/amba-pl011.c
index 3ea5408..22af0c8 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -72,32 +72,44 @@
/* There is by now at least one vendor with differing details, so handle it
*/
struct vendor_data {
unsigned int ifls;
- unsigned int fifosize;
unsigned int lcrh_tx;
unsigned int lcrh_rx;
bool oversampling;
bool dma_threshold;
bool cts_event_workaround;
+
+ unsigned int (*get_fifosize)(unsigned int periphid);
};
+static unsigned int get_fifosize_arm(unsigned int periphid)
+{
+ unsigned int rev = (periphid >> 20) & 0xf;
+ return rev < 3 ? 16 : 32;
+}
+
static struct vendor_data vendor_arm = {
.ifls = UART011_IFLS_RX4_8|UART011_IFLS_TX4_8,
- .fifosize = 16,
.lcrh_tx = UART011_LCRH,
.lcrh_rx = UART011_LCRH,
.oversampling = false,
.dma_threshold = false,
.cts_event_workaround = false,
+ .get_fifosize = get_fifosize_arm,
};
+static unsigned int get_fifosize_st(unsigned int periphid)
+{
+ return 64;
+}
+
static struct vendor_data vendor_st = {
.ifls = UART011_IFLS_RX_HALF|UART011_IFLS_TX_HALF,
- .fifosize = 64,
.lcrh_tx = ST_UART011_LCRH_TX,
.lcrh_rx = ST_UART011_LCRH_RX,
.oversampling = true,
.dma_threshold = true,
.cts_event_workaround = true,
+ .get_fifosize = get_fifosize_st,
};
static struct uart_amba_port *amba_ports[UART_NR];
@@ -2010,7 +2022,7 @@ static int pl011_probe(struct amba_device *dev, const
struct amba_id *id)
uap->lcrh_rx = vendor->lcrh_rx;
uap->lcrh_tx = vendor->lcrh_tx;
uap->old_cr = 0;
- uap->fifosize = vendor->fifosize;
+ uap->fifosize = vendor->get_fifosize(dev->periphid);
uap->port.dev = &dev->dev;
uap->port.mapbase = dev->res.start;
uap->port.membase = base;
next reply other threads:[~2013-04-12 9:18 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-12 9:18 Jongsung Kim [this message]
2013-04-19 12:58 ` [PATCH] ARM: PL011: add support for extended FIFO-size of PL011-r1p5 Russell King - ARM Linux
2013-05-14 5:56 ` 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
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='007301ce375e$bcf6d6b0$36e48410$@lge.com' \
--to=neidhard.kim@lge.com \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
/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