From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 02/14] OMAP3: serial - allow platforms specify which UARTs to initialize
Date: Fri, 11 Dec 2009 15:52:41 -0800 [thread overview]
Message-ID: <20091211235241.3189.29246.stgit@localhost> (raw)
In-Reply-To: <20091211234919.3189.95607.stgit@localhost>
From: Mika Westerberg <ext-mika.1.westerberg@nokia.com>
This patch adds new function: omap_serial_init_port(port) that can be
used to initialize only selected UARTs as serial ports. Platforms can
then in their board files call this function instead of omap_serial_init()
if they don't want to use all UARTs as serial ports.
Signed-off-by: Mika Westerberg <ext-mika.1.westerberg@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
arch/arm/mach-omap2/serial.c | 70 ++++++++++++++++++++++++------
arch/arm/plat-omap/include/plat/serial.h | 1
2 files changed, 56 insertions(+), 15 deletions(-)
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 2e17b57..6278fe5 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -631,24 +631,64 @@ void __init omap_serial_early_init(void)
}
}
-void __init omap_serial_init(void)
+/**
+ * omap_serial_init_port() - initialize single serial port
+ * @port: serial port number (0-3)
+ *
+ * This function initialies serial driver for given @port only.
+ * Platforms can call this function instead of omap_serial_init()
+ * if they don't plan to use all available UARTs as serial ports.
+ *
+ * Don't mix calls to omap_serial_init_port() and omap_serial_init(),
+ * use only one of the two.
+ */
+void __init omap_serial_init_port(int port)
{
- int i;
+ struct omap_uart_state *uart;
+ struct platform_device *pdev;
+ struct device *dev;
- for (i = 0; i < ARRAY_SIZE(omap_uart); i++) {
- struct omap_uart_state *uart = &omap_uart[i];
- struct platform_device *pdev = &uart->pdev;
- struct device *dev = &pdev->dev;
+ BUG_ON(port < 0);
+ BUG_ON(port >= ARRAY_SIZE(omap_uart));
- omap_uart_reset(uart);
- omap_uart_idle_init(uart);
+ uart = &omap_uart[port];
+ pdev = &uart->pdev;
+ dev = &pdev->dev;
- if (WARN_ON(platform_device_register(pdev)))
- continue;
- if ((cpu_is_omap34xx() && uart->padconf) ||
- (uart->wk_en && uart->wk_mask)) {
- device_init_wakeup(dev, true);
- DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout);
- }
+ omap_uart_reset(uart);
+ omap_uart_idle_init(uart);
+
+ if (WARN_ON(platform_device_register(pdev)))
+ return;
+
+ if ((cpu_is_omap34xx() && uart->padconf) ||
+ (uart->wk_en && uart->wk_mask)) {
+ device_init_wakeup(dev, true);
+ DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout);
}
+
+ /* omap44xx: Never read empty UART fifo
+ * omap3xxx: Never read empty UART fifo on UARTs
+ * with IP rev >=0x52
+ */
+ if (cpu_is_omap44xx())
+ uart->p->serial_in = serial_in_override;
+ else if ((serial_read_reg(uart->p, UART_OMAP_MVER) & 0xFF)
+ >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)
+ uart->p->serial_in = serial_in_override;
+}
+
+/**
+ * omap_serial_init() - intialize all supported serial ports
+ *
+ * Initializes all available UARTs as serial ports. Platforms
+ * can call this function when they want to have default behaviour
+ * for serial ports (e.g initialize them all as serial ports).
+ */
+void __init omap_serial_init(void)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(omap_uart); i++)
+ omap_serial_init_port(i);
}
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h
index 9951345..f5a4a92 100644
--- a/arch/arm/plat-omap/include/plat/serial.h
+++ b/arch/arm/plat-omap/include/plat/serial.h
@@ -53,6 +53,7 @@
#ifndef __ASSEMBLER__
extern void __init omap_serial_early_init(void);
extern void omap_serial_init(void);
+extern void omap_serial_init_port(int port);
extern int omap_uart_can_sleep(void);
extern void omap_uart_check_wakeup(void);
extern void omap_uart_prepare_suspend(void);
next prev parent reply other threads:[~2009-12-11 23:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-11 23:52 [PATCH 00/14] Mostly fixes for 2.6.33 Tony Lindgren
2009-12-11 23:52 ` [PATCH 01/14] omap3: cm-t35: add mux initialization Tony Lindgren
2009-12-11 23:52 ` Tony Lindgren [this message]
2009-12-11 23:52 ` [PATCH 03/14] omap: Correcting GPMC_CONFIG1_DEVICETYPE_NAND Tony Lindgren
2009-12-11 23:53 ` [PATCH 04/14] omap: arch/arm/plat-omap/devices.c - sort alphabetically Tony Lindgren
2009-12-11 23:53 ` [PATCH 05/14] omap: header: remove unused data-type Tony Lindgren
2009-12-11 23:53 ` [PATCH 06/14] omap1: LCD_DMA: Use some define rather than a hexadecimal Tony Lindgren
2009-12-11 23:53 ` [PATCH 07/14] omap1: htcherald: Update defconfig to include mux support Tony Lindgren
2009-12-11 23:53 ` [PATCH 08/14] omap3: zoom2/3: make MMC slot work again Tony Lindgren
2009-12-11 23:54 ` [PATCH 09/14] omap3: rx51: Use wl1251 in SPI mode 3 Tony Lindgren
2009-12-11 23:54 ` [PATCH 10/14] omap3: id code detection 3525 vs 3515 Tony Lindgren
2009-12-11 23:54 ` [PATCH 11/14] omap3 : Enable TWL4030 Keypad for Zoom2 and Zoom3 boards Tony Lindgren
2009-12-11 23:54 ` [PATCH 12/14] omap3: Zoom2/3: Update hsmmc board config params Tony Lindgren
2009-12-12 0:09 ` [PATCH 13/14] omap: serial: fix non-empty uart fifo read abort Tony Lindgren
2009-12-12 0:10 ` [PATCH 14/14] omap3: Fix OMAP35XX_REV macros Tony Lindgren
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=20091211235241.3189.29246.stgit@localhost \
--to=tony@atomide.com \
--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).