
On Wed, 18 Feb 2009 12:02:02 -0800 (PST) Ron Madrid ron_madrid@sbcglobal.net wrote:
--- On Wed, 2/18/09, Kim Phillips kim.phillips@freescale.com wrote:
diff --git a/include/configs/SIMPC8313.h b/include/configs/SIMPC8313.h index f62a705..6219722 100644 --- a/include/configs/SIMPC8313.h +++ b/include/configs/SIMPC8313.h @@ -205,6 +205,7 @@ #define CONFIG_SYS_NS16550 #define CONFIG_SYS_NS16550_SERIAL #define CONFIG_SYS_NS16550_REG_SIZE 1 +#define CONFIG_SYS_NS16550_MIN_FUNCTIONS
If you case the CONFIG_SYS_NS16550_MIN_FUNCTIONS within a #ifdef CONFIG_NAND_SPL you don't need the following definitions.
+#ifndef CONFIG_SYS_NS16550_MIN_FUNCTIONS char NS16550_getc (NS16550_t com_port); int NS16550_tstc (NS16550_t com_port); void NS16550_reinit (NS16550_t com_port, int baud_divisor); +#else +#define NS16550_getc(com_port) 0 +#define NS16550_tstc(com_port) 0 +#define NS16550_reinit(com_port, baud_divisor) +#endif
I was going to send a patch after this one was accepted that takes care of the SIMPC8313 build. Should I have sent the two of them together? I thought that they would be considered too different. It would be this below.
diff --git a/include/configs/SIMPC8313.h b/include/configs/SIMPC8313.h index a616236..59e43be 100644 --- a/include/configs/SIMPC8313.h +++ b/include/configs/SIMPC8313.h @@ -212,6 +212,10 @@ #define CONFIG_SYS_NS16550_COM1 (CONFIG_SYS_IMMR+0x4500) #define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_IMMR+0x4600)
+#ifdef CONFIG_NAND_SPL +#define CONFIG_NS16550_MIN_FUNCTIONS
I think you're right - this really needs to be a CONFIG_ without SYS_. Sorry.
If you'd like, I can send this one now or you could put the new config option inside of a #ifdef CONFIG_NAND_SPL.
one more time:
From bcca1fb0b46c0b99c798fe5abbeaeb8cb4bbeccc Mon Sep 17 00:00:00 2001
From: Ron Madrid ron_madrid@sbcglobal.net Date: Tue, 17 Feb 2009 12:14:17 -0800 Subject: [PATCH] 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 which 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
fixed these compiler errors:
undefined reference to `NS16550_reinit' undefined reference to `NS16550_tstc' undefined reference to `NS16550_getc'
Signed-off-by: Kim Phillips kim.phillips@freescale.com --- README | 7 +++++++ drivers/serial/ns16550.c | 5 ++++- include/configs/SIMPC8313.h | 3 +++ include/ns16550.h | 2 ++ 4 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/README b/README index b64c159..48d3f6d 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 93c2243..25a0c5a 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) { @@ -75,5 +78,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 f62a705..bbe76df 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} diff --git a/include/ns16550.h b/include/ns16550.h index e6ade61..8f8fb01 100644 --- a/include/ns16550.h +++ b/include/ns16550.h @@ -154,6 +154,8 @@ typedef volatile struct NS16550 *NS16550_t;
void NS16550_init (NS16550_t com_port, int baud_divisor); void NS16550_putc (NS16550_t com_port, char c); +#ifndef CONFIG_NS16550_MIN_FUNCTIONS char NS16550_getc (NS16550_t com_port); int NS16550_tstc (NS16550_t com_port); void NS16550_reinit (NS16550_t com_port, int baud_divisor); +#endif