dm: core: Allow sequence alias support to be removed for SPL
authorSimon Glass <sjg@chromium.org>
Sat, 28 Feb 2015 05:06:30 +0000 (22:06 -0700)
committerSimon Glass <sjg@chromium.org>
Thu, 23 Apr 2015 15:05:51 +0000 (09:05 -0600)
In many cases SPL only uses a single serial port and there is no need for
alias sequence support. We will just use the serial port pointed to by
stdout-path in the /chosen node.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/core/Kconfig
drivers/core/device.c
include/config_uncmd_spl.h

index 75d182d27f7e14bf41a962337d70cf9df5f03dee..2861b4307955854ef1b0b5f51b7beedffd7e4fa9 100644 (file)
@@ -46,3 +46,12 @@ config DM_STDIO
          Normally serial drivers register with stdio so that they can be used
          as normal output devices. In SPL we don't normally use stdio, so
          we can omit this feature.
+
+config DM_SEQ_ALIAS
+       bool "Support numbered aliases in device tree"
+       depends on DM
+       default y
+       help
+         Most boards will have a '/aliases' node containing the path to
+         numbered devices (e.g. serial0 = &serial0). This feature can be
+         disabled if it is not required, to save code space in SPL.
index df81b8e63d2f0d2935e1efd8589c81cf8dc9186d..7f24243fd7feca1093d3bbfaf164c3a546e1a694 100644 (file)
@@ -56,21 +56,23 @@ int device_bind(struct udevice *parent, const struct driver *drv,
 
        dev->seq = -1;
        dev->req_seq = -1;
-#ifdef CONFIG_OF_CONTROL
-       /*
-        * Some devices, such as a SPI bus, I2C bus and serial ports are
-        * numbered using aliases.
-        *
-        * This is just a 'requested' sequence, and will be
-        * resolved (and ->seq updated) when the device is probed.
-        */
-       if (uc->uc_drv->flags & DM_UC_FLAG_SEQ_ALIAS) {
-               if (uc->uc_drv->name && of_offset != -1) {
-                       fdtdec_get_alias_seq(gd->fdt_blob, uc->uc_drv->name,
-                                            of_offset, &dev->req_seq);
+       if (IS_ENABLED(CONFIG_OF_CONTROL) && IS_ENABLED(CONFIG_DM_SEQ_ALIAS)) {
+               /*
+               * Some devices, such as a SPI bus, I2C bus and serial ports
+               * are numbered using aliases.
+               *
+               * This is just a 'requested' sequence, and will be
+               * resolved (and ->seq updated) when the device is probed.
+               */
+               if (uc->uc_drv->flags & DM_UC_FLAG_SEQ_ALIAS) {
+                       if (uc->uc_drv->name && of_offset != -1) {
+                               fdtdec_get_alias_seq(gd->fdt_blob,
+                                               uc->uc_drv->name, of_offset,
+                                               &dev->req_seq);
+                       }
                }
        }
-#endif
+
        if (!dev->platdata && drv->platdata_auto_alloc_size) {
                dev->flags |= DM_FLAG_ALLOC_PDATA;
                dev->platdata = calloc(1, drv->platdata_auto_alloc_size);
index a9106f4f3b7eb072239dbf2545bd4ac2f057a03d..38cb0e8abac9378c375cb4162454b6cc6923b2c8 100644 (file)
@@ -31,6 +31,7 @@
 
 #undef CONFIG_DM_WARN
 #undef CONFIG_DM_DEVICE_REMOVE
+#undef CONFIG_DM_SEQ_ALIAS
 #undef CONFIG_DM_STDIO
 
 #endif /* CONFIG_SPL_BUILD */