[U-Boot] [PATCH 2/3] drivers/serial/serial.c: code maintainability improvments.
Michael Zaidman
michael.zaidman at gmail.com
Thu Apr 1 19:19:45 CEST 2010
Signed-off-by: Michael Zaidman <michael.zaidman at gmail.com>
---
drivers/serial/serial.c | 31 +++++++++++++++++++++----------
1 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index dd5f332..8d78983 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -45,24 +45,27 @@ DECLARE_GLOBAL_DATA_PTR;
#else
#error "No console index specified."
#endif /* CONFIG_SERIAL_MULTI */
-#elif (CONFIG_CONS_INDEX < 1) || (CONFIG_CONS_INDEX > 4)
+#elif CONFIG_CONS_INDEX < 1
#error "Invalid console index value."
#endif
-#if CONFIG_CONS_INDEX == 1 && !defined(CONFIG_SYS_NS16550_COM1)
-#error "Console port 1 defined but not configured."
-#elif CONFIG_CONS_INDEX == 2 && !defined(CONFIG_SYS_NS16550_COM2)
-#error "Console port 2 defined but not configured."
-#elif CONFIG_CONS_INDEX == 3 && !defined(CONFIG_SYS_NS16550_COM3)
-#error "Console port 3 defined but not configured."
-#elif CONFIG_CONS_INDEX == 4 && !defined(CONFIG_SYS_NS16550_COM4)
-#error "Console port 4 defined but not configured."
+#define CONSOLE_PORT_SANITY_CHECK(port) \
+ CONFIG_CONS_INDEX == port && !defined(CONFIG_SYS_NS16550_COM##port)
+
+#if CONSOLE_PORT_SANITY_CHECK(1)
+#error Console port 1 defined but not configured.
+#elif CONSOLE_PORT_SANITY_CHECK(2)
+#error Console port 2 defined but not configured.
+#elif CONSOLE_PORT_SANITY_CHECK(3)
+#error Console port 3 defined but not configured.
+#elif CONSOLE_PORT_SANITY_CHECK(4)
+#error Console port 4 defined but not configured.
#endif
/* Note: The port number specified in the functions is 1 based.
* the array is 0 based.
*/
-static NS16550_t serial_ports[4] = {
+static NS16550_t serial_ports[] = {
#ifdef CONFIG_SYS_NS16550_COM1
(NS16550_t)CONFIG_SYS_NS16550_COM1,
#else
@@ -85,6 +88,14 @@ static NS16550_t serial_ports[4] = {
#endif
};
+#define MAX_SER_PORTS ((sizeof(serial_ports)/sizeof(NS16550_t)))
+
+static inline void sanity_check(void)
+{
+ /* This will fail to compile if CONFIG_CONS_INDEX > MAX_SER_DEV */
+ BUILD_BUG_ON(CONFIG_CONS_INDEX > MAX_SER_PORTS);
+}
+
#define PORT serial_ports[port-1]
#if defined(CONFIG_CONS_INDEX)
#define CONSOLE (serial_ports[CONFIG_CONS_INDEX-1])
--
1.6.3.3
More information about the U-Boot
mailing list