]> git.sur5r.net Git - u-boot/commitdiff
dm: serial: Allow the UART driver to be dropped from the image
authorSimon Glass <sjg@chromium.org>
Mon, 14 Dec 2015 04:36:58 +0000 (21:36 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 12 Jan 2016 17:19:09 +0000 (10:19 -0700)
In very very space-constrained devices even the full UART driver is too
large. In this case the debug UART can still be used in some cases.

Add options to enable the UART driver in SPL and U-Boot proper. Enable both
options by default.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Thomas Chou <thomas@wytron.com.tw>
drivers/serial/Kconfig
drivers/serial/serial-uclass.c

index 1fc287ee98ec83c4e8c952d65e40578faa0619b0..04541c9ff33985ec93e14aaf88b3eda913a9824a 100644 (file)
@@ -15,6 +15,26 @@ config REQUIRE_SERIAL_CONSOLE
          during serial port initialization (default y). Set this to n on
          boards which have no debug serial port whatsoever.
 
+config SERIAL_PRESENT
+       bool "Provide a serial driver"
+       depends on DM_SERIAL
+       default y
+       help
+         In very space-constrained devices even the full UART driver is too
+         large. In this case the debug UART can still be used in some cases.
+         This option enables the full UART in U-Boot, so if is it disabled,
+         the full UART driver will be omitted, thus saving space.
+
+config SPL_SERIAL_PRESENT
+       bool "Provide a serial driver in SPL"
+       depends on DM_SERIAL
+       default y
+       help
+         In very space-constrained devices even the full UART driver is too
+         large. In this case the debug UART can still be used in some cases.
+         This option enables the full UART in SPL, so if is it disabled,
+         the full UART driver will be omitted, thus saving space.
+
 config DM_SERIAL
        bool "Enable Driver Model for serial drivers"
        depends on DM
index 4bf9a5c681f82750e1009fd3ed6a1bded5ea4785..1c447ff27aa17d12435c48b62df8e490dc55b1ae 100644 (file)
@@ -204,7 +204,7 @@ void serial_stdio_init(void)
 {
 }
 
-#ifdef CONFIG_DM_STDIO
+#if defined(CONFIG_DM_STDIO) && CONFIG_IS_ENABLED(SERIAL_PRESENT)
 static void serial_stub_putc(struct stdio_dev *sdev, const char ch)
 {
        _serial_putc(sdev->priv, ch);
@@ -287,6 +287,7 @@ static int on_baudrate(const char *name, const char *value, enum env_op op,
 }
 U_BOOT_ENV_CALLBACK(baudrate, on_baudrate);
 
+#if CONFIG_IS_ENABLED(SERIAL_PRESENT)
 static int serial_post_probe(struct udevice *dev)
 {
        struct dm_serial_ops *ops = serial_get_ops(dev);
@@ -356,3 +357,4 @@ UCLASS_DRIVER(serial) = {
        .pre_remove     = serial_pre_remove,
        .per_device_auto_alloc_size = sizeof(struct serial_dev_priv),
 };
+#endif