summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Madrid <ron_madrid@sbcglobal.net>2009-02-18 14:30:44 -0800
committerWolfgang Denk <wd@denx.de>2009-02-19 00:34:51 +0100
commitf5675aa5ceeef30740970ab8ca0c8cbc324945cd (patch)
tree0ef4726c6591324c2bda00cbb956d8a97c7fe527
parent7b0bc0219db8981613259473cf19699ac259b4fb (diff)
Create configuration option for restricted ns16550 functions
This patch will create a configuration option for a minimum configuration for the ns16550 serial driver at drivers/serial/ns16550.c and will apply this new configuration option to the SIMPC8313.h config file in order to fix the NAND bootstrap build error. This option will exclude all functions with exception of NS16550_putc and NS16550_init. This will be used primarily to save space and remove unused code from builds in which space is limited. Signed-off-by: Ron Madrid <ron_madrid@sbcglobal.net>
-rw-r--r--README7
-rw-r--r--drivers/serial/ns16550.c4
-rw-r--r--include/configs/SIMPC8313.h3
3 files changed, 14 insertions, 0 deletions
diff --git a/README b/README
index b64c1596d11..48d3f6d200b 100644
--- a/README
+++ b/README
@@ -2458,6 +2458,13 @@ use the "saveenv" command to store a valid environment.
- CONFIG_SYS_64BIT_STRTOUL:
Adds simple_strtoull that returns a 64bit value
+- CONFIG_NS16550_MIN_FUNCTIONS:
+ Define this if you desire to only have use of the NS16550_init
+ and NS16550_putc functions for the serial driver located at
+ drivers/serial/ns16550.c. This option is useful for saving
+ space for already greatly restricted images, including but not
+ limited to NAND_SPL configurations.
+
Low Level (hardware related) configuration options:
---------------------------------------------------
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 93c2243d7d7..1b347e91ad0 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -39,6 +39,7 @@ void NS16550_init (NS16550_t com_port, int baud_divisor)
#endif
}
+#ifndef CONFIG_NS16550_MIN_FUNCTIONS
void NS16550_reinit (NS16550_t com_port, int baud_divisor)
{
com_port->ier = 0x00;
@@ -53,6 +54,7 @@ void NS16550_reinit (NS16550_t com_port, int baud_divisor)
com_port->dlm = (baud_divisor >> 8) & 0xff;
com_port->lcr = LCRVAL;
}
+#endif /* CONFIG_NS16550_MIN_FUNCTIONS */
void NS16550_putc (NS16550_t com_port, char c)
{
@@ -60,6 +62,7 @@ void NS16550_putc (NS16550_t com_port, char c)
com_port->thr = c;
}
+#ifndef CONFIG_NS16550_MIN_FUNCTIONS
char NS16550_getc (NS16550_t com_port)
{
while ((com_port->lsr & LSR_DR) == 0) {
@@ -76,4 +79,5 @@ int NS16550_tstc (NS16550_t com_port)
return ((com_port->lsr & LSR_DR) != 0);
}
+#endif /* CONFIG_NS16550_MIN_FUNCTIONS */
#endif
diff --git a/include/configs/SIMPC8313.h b/include/configs/SIMPC8313.h
index f62a7051958..b939cfa79f5 100644
--- a/include/configs/SIMPC8313.h
+++ b/include/configs/SIMPC8313.h
@@ -205,6 +205,9 @@
#define CONFIG_SYS_NS16550
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE 1
+#ifdef CONFIG_NAND_SPL
+#define CONFIG_NS16550_MIN_FUNCTIONS
+#endif
#define CONFIG_SYS_BAUDRATE_TABLE \
{300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200}