X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=env%2Ffat.c;h=1836556f361d012e0bcd5ba54323475fe181e8a3;hb=d792b63febf492a07a106245e46532c0d43a7ecd;hp=abf6d115b7b99e7cfd3a7a06f2f7752c1938a642;hpb=4415f1d1f1c57d43f6bc8ff156554c2b2da45b52;p=oweals%2Fu-boot.git diff --git a/env/fat.c b/env/fat.c index abf6d115b7..1836556f36 100644 --- a/env/fat.c +++ b/env/fat.c @@ -1,16 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (c) Copyright 2011 by Tigris Elektronik GmbH * * Author: * Maximilian Schwerin - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include -#include +#include +#include #include #include #include @@ -31,25 +31,10 @@ # endif #endif -char *env_name_spec = "FAT"; - -env_t *env_ptr; - -DECLARE_GLOBAL_DATA_PTR; - -int env_init(void) -{ - /* use default */ - gd->env_addr = (ulong)&default_environment[0]; - gd->env_valid = ENV_VALID; - - return 0; -} - #ifdef CMD_SAVEENV -int saveenv(void) +static int env_fat_save(void) { - env_t env_new; + env_t __aligned(ARCH_DMA_MINALIGN) env_new; struct blk_desc *dev_desc = NULL; disk_partition_t info; int dev, part; @@ -68,7 +53,11 @@ int saveenv(void) dev = dev_desc->devnum; if (fat_set_blk_dev(dev_desc, &info) != 0) { - printf("\n** Unable to use %s %d:%d for saveenv **\n", + /* + * This printf is embedded in the messages from env_save that + * will calling it. The missing \n is intentional. + */ + printf("Unable to use %s %d:%d... ", CONFIG_ENV_FAT_INTERFACE, dev, part); return 1; } @@ -76,18 +65,21 @@ int saveenv(void) err = file_fat_write(CONFIG_ENV_FAT_FILE, (void *)&env_new, 0, sizeof(env_t), &size); if (err == -1) { - printf("\n** Unable to write \"%s\" from %s%d:%d **\n", + /* + * This printf is embedded in the messages from env_save that + * will calling it. The missing \n is intentional. + */ + printf("Unable to write \"%s\" from %s%d:%d... ", CONFIG_ENV_FAT_FILE, CONFIG_ENV_FAT_INTERFACE, dev, part); return 1; } - puts("done\n"); return 0; } #endif /* CMD_SAVEENV */ #ifdef LOADENV -void env_relocate_spec(void) +static int env_fat_load(void) { ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE); struct blk_desc *dev_desc = NULL; @@ -95,6 +87,11 @@ void env_relocate_spec(void) int dev, part; int err; +#ifdef CONFIG_MMC + if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "mmc")) + mmc_initialize(NULL); +#endif + part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE, CONFIG_ENV_FAT_DEVICE_AND_PART, &dev_desc, &info, 1); @@ -103,34 +100,42 @@ void env_relocate_spec(void) dev = dev_desc->devnum; if (fat_set_blk_dev(dev_desc, &info) != 0) { - printf("\n** Unable to use %s %d:%d for loading the env **\n", + /* + * This printf is embedded in the messages from env_save that + * will calling it. The missing \n is intentional. + */ + printf("Unable to use %s %d:%d... ", CONFIG_ENV_FAT_INTERFACE, dev, part); goto err_env_relocate; } err = file_fat_read(CONFIG_ENV_FAT_FILE, buf, CONFIG_ENV_SIZE); if (err == -1) { - printf("\n** Unable to read \"%s\" from %s%d:%d **\n", + /* + * This printf is embedded in the messages from env_save that + * will calling it. The missing \n is intentional. + */ + printf("Unable to read \"%s\" from %s%d:%d... ", CONFIG_ENV_FAT_FILE, CONFIG_ENV_FAT_INTERFACE, dev, part); goto err_env_relocate; } - env_import(buf, 1); - return; + return env_import(buf, 1); err_env_relocate: - set_default_env(NULL); + env_set_default(NULL, 0); + + return -EIO; } #endif /* LOADENV */ U_BOOT_ENV_LOCATION(fat) = { .location = ENVL_FAT, - .get_char = env_get_char_spec, + ENV_NAME("FAT") #ifdef LOADENV - .load = env_relocate_spec, + .load = env_fat_load, #endif #ifdef CMD_SAVEENV - .save = env_save_ptr(saveenv), + .save = env_save_ptr(env_fat_save), #endif - .init = env_init, };