arm: Remove aspenite board
[platform/kernel/u-boot.git] / common / stdio.c
index d67ea60..0f2eb6f 100644 (file)
@@ -19,7 +19,7 @@
 #include <serial.h>
 #include <splash.h>
 #include <i2c.h>
-
+#include <asm/global_data.h>
 #include <dm/device-internal.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -28,6 +28,20 @@ static struct stdio_dev devs;
 struct stdio_dev *stdio_devices[] = { NULL, NULL, NULL };
 char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" };
 
+int stdio_file_to_flags(const int file)
+{
+       switch (file) {
+       case stdin:
+               return DEV_FLAGS_INPUT;
+       case stdout:
+       case stderr:
+               return DEV_FLAGS_OUTPUT;
+       default:
+               return -EINVAL;
+       }
+}
+
+#if CONFIG_IS_ENABLED(SYS_DEVICE_NULLDEV)
 static void nulldev_putc(struct stdio_dev *dev, const char c)
 {
        /* nulldev is empty! */
@@ -44,6 +58,25 @@ static int nulldev_input(struct stdio_dev *dev)
        return 0;
 }
 
+static void nulldev_register(void)
+{
+       struct stdio_dev dev;
+
+       memset(&dev, '\0', sizeof(dev));
+
+       strcpy(dev.name, "nulldev");
+       dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT;
+       dev.putc = nulldev_putc;
+       dev.puts = nulldev_puts;
+       dev.getc = nulldev_input;
+       dev.tstc = nulldev_input;
+
+       stdio_register(&dev);
+}
+#else
+static inline void nulldev_register(void) {}
+#endif /* SYS_DEVICE_NULLDEV */
+
 static void stdio_serial_putc(struct stdio_dev *dev, const char c)
 {
        serial_putc(c);
@@ -83,18 +116,7 @@ static void drv_system_init (void)
        dev.tstc = stdio_serial_tstc;
        stdio_register (&dev);
 
-       if (CONFIG_IS_ENABLED(SYS_DEVICE_NULLDEV)) {
-               memset(&dev, '\0', sizeof(dev));
-
-               strcpy(dev.name, "nulldev");
-               dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT;
-               dev.putc = nulldev_putc;
-               dev.puts = nulldev_puts;
-               dev.getc = nulldev_input;
-               dev.tstc = nulldev_input;
-
-               stdio_register(&dev);
-       }
+       nulldev_register();
 }
 
 /**************************************************************************
@@ -181,7 +203,7 @@ struct stdio_dev *stdio_get_by_name(const char *name)
                 * 'stdout', which may include a list of devices separate by
                 * commas. Obviously this is not going to work, so we ignore
                 * that case. The call path in that case is
-                * console_init_r() -> search_device() -> stdio_get_by_name()
+                * console_init_r() -> console_search_dev() -> stdio_get_by_name()
                 */
                if (!strncmp(name, "vidconsole", 10) && !strchr(name, ',') &&
                    !stdio_probe_device(name, UCLASS_VIDEO, &sdev))
@@ -191,16 +213,15 @@ struct stdio_dev *stdio_get_by_name(const char *name)
        return NULL;
 }
 
-struct stdio_devstdio_clone(struct stdio_dev *dev)
+struct stdio_dev *stdio_clone(struct stdio_dev *dev)
 {
        struct stdio_dev *_dev;
 
-       if(!dev)
+       if (!dev)
                return NULL;
 
        _dev = calloc(1, sizeof(struct stdio_dev));
-
-       if(!_dev)
+       if (!_dev)
                return NULL;
 
        memcpy(_dev, dev, sizeof(struct stdio_dev));
@@ -213,7 +234,7 @@ int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp)
        struct stdio_dev *_dev;
 
        _dev = stdio_clone(dev);
-       if(!_dev)
+       if (!_dev)
                return -ENODEV;
        list_add_tail(&_dev->list, &devs.list);
        if (devp)
@@ -227,54 +248,39 @@ int stdio_register(struct stdio_dev *dev)
        return stdio_register_dev(dev, NULL);
 }
 
-/* deregister the device "devname".
- * returns 0 if success, -1 if device is assigned and 1 if devname not found
- */
 int stdio_deregister_dev(struct stdio_dev *dev, int force)
 {
-       int l;
        struct list_head *pos;
        char temp_names[3][16];
+       int i;
 
        /* get stdio devices (ListRemoveItem changes the dev list) */
-       for (l=0 ; l< MAX_FILES; l++) {
-               if (stdio_devices[l] == dev) {
+       for (i = 0 ; i < MAX_FILES; i++) {
+               if (stdio_devices[i] == dev) {
                        if (force) {
-                               strcpy(temp_names[l], "nulldev");
+                               strcpy(temp_names[i], "nulldev");
                                continue;
                        }
                        /* Device is assigned -> report error */
-                       return -1;
+                       return -EBUSY;
                }
-               memcpy (&temp_names[l][0],
-                       stdio_devices[l]->name,
-                       sizeof(temp_names[l]));
+               memcpy(&temp_names[i][0], stdio_devices[i]->name,
+                      sizeof(temp_names[i]));
        }
 
        list_del(&dev->list);
        free(dev);
 
-       /* reassign Device list */
+       /* reassign device list */
        list_for_each(pos, &devs.list) {
                dev = list_entry(pos, struct stdio_dev, list);
-               for (l=0 ; l< MAX_FILES; l++) {
-                       if(strcmp(dev->name, temp_names[l]) == 0)
-                               stdio_devices[l] = dev;
+               for (i = 0 ; i < MAX_FILES; i++) {
+                       if (strcmp(dev->name, temp_names[i]) == 0)
+                               stdio_devices[i] = dev;
                }
        }
-       return 0;
-}
 
-int stdio_deregister(const char *devname, int force)
-{
-       struct stdio_dev *dev;
-
-       dev = stdio_get_by_name(devname);
-
-       if (!dev) /* device not found */
-               return -ENODEV;
-
-       return stdio_deregister_dev(dev, force);
+       return 0;
 }
 
 int stdio_init_tables(void)
@@ -330,14 +336,14 @@ int stdio_add_devices(void)
                                       dev->name);
                }
        }
-#ifdef CONFIG_SYS_I2C
+#if CONFIG_IS_ENABLED(SYS_I2C_LEGACY)
        i2c_init_all();
 #endif
        if (IS_ENABLED(CONFIG_DM_VIDEO)) {
                /*
                 * If the console setting is not in environment variables then
                 * console_init_r() will not be calling iomux_doenv() (which
-                * calls search_device()). So we will not dynamically add
+                * calls console_search_dev()). So we will not dynamically add
                 * devices by calling stdio_probe_device().
                 *
                 * So just probe all video devices now so that whichever one is
@@ -361,7 +367,9 @@ int stdio_add_devices(void)
        } else {
                if (IS_ENABLED(CONFIG_LCD))
                        drv_lcd_init();
-               if (IS_ENABLED(CONFIG_VIDEO) || IS_ENABLED(CONFIG_CFB_CONSOLE))
+               if (IS_ENABLED(CONFIG_VIDEO) ||
+                   IS_ENABLED(CONFIG_CFB_CONSOLE) ||
+                   IS_ENABLED(CONFIG_VIDEO_VCXK))
                        drv_video_init();
        }