colibri_imx6: fix video stdout in default environment
[oweals/u-boot.git] / common / log.c
index d5f1cc50777d7618699166605c890fa1f50a460f..c5b9b489ca3775f2376a72fa8747e60b5cee1aa3 100644 (file)
@@ -1,10 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Logging support
  *
  * Copyright (c) 2017 Google, Inc
  * Written by Simon Glass <sjg@chromium.org>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -21,6 +20,7 @@ static const char *log_cat_name[LOGC_COUNT - LOGC_NONE] = {
        "core",
        "driver-model",
        "device-tree",
+       "efi",
 };
 
 static const char *log_level_name[LOGL_COUNT] = {
@@ -38,12 +38,16 @@ static const char *log_level_name[LOGL_COUNT] = {
 
 const char *log_get_cat_name(enum log_category_t cat)
 {
-       if (cat > LOGC_COUNT)
-               return "invalid";
+       const char *name;
+
+       if (cat < 0 || cat >= LOGC_COUNT)
+               return "<invalid>";
        if (cat >= LOGC_NONE)
                return log_cat_name[cat - LOGC_NONE];
 
-       return uclass_get_name((enum uclass_id)cat);
+       name = uclass_get_name((enum uclass_id)cat);
+
+       return name ? name : "<missing>";
 }
 
 enum log_category_t log_get_cat_by_name(const char *name)
@@ -223,20 +227,23 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
 {
        struct log_filter *filt;
        struct log_device *ldev;
+       int ret;
        int i;
 
        ldev = log_device_find_by_name(drv_name);
        if (!ldev)
                return -ENOENT;
-       filt = (struct log_filter *)calloc(1, sizeof(*filt));
+       filt = calloc(1, sizeof(*filt));
        if (!filt)
                return -ENOMEM;
 
        if (cat_list) {
                filt->flags |= LOGFF_HAS_CAT;
                for (i = 0; ; i++) {
-                       if (i == ARRAY_SIZE(filt->cat_list))
-                               return -ENOSPC;
+                       if (i == ARRAY_SIZE(filt->cat_list)) {
+                               ret = -ENOSPC;
+                               goto err;
+                       }
                        filt->cat_list[i] = cat_list[i];
                        if (cat_list[i] == LOGC_END)
                                break;
@@ -245,17 +252,19 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
        filt->max_level = max_level;
        if (file_list) {
                filt->file_list = strdup(file_list);
-               if (!filt->file_list)
-                       goto nomem;
+               if (!filt->file_list) {
+                       ret = ENOMEM;
+                       goto err;
+               }
        }
        filt->filter_num = ldev->next_filter_num++;
        list_add_tail(&filt->sibling_node, &ldev->filter_head);
 
        return filt->filter_num;
 
-nomem:
+err:
        free(filt);
-       return -ENOMEM;
+       return ret;
 }
 
 int log_remove_filter(const char *drv_name, int filter_num)
@@ -306,7 +315,9 @@ int log_init(void)
                drv++;
        }
        gd->flags |= GD_FLG_LOG_READY;
-       gd->default_log_level = LOGL_INFO;
+       if (!gd->default_log_level)
+               gd->default_log_level = CONFIG_LOG_DEFAULT_LEVEL;
+       gd->log_fmt = LOGF_DEFAULT;
 
        return 0;
 }