2 * (c) Copyright 2011 by Tigris Elektronik GmbH
5 * Maximilian Schwerin <mvs@tigris.de>
7 * SPDX-License-Identifier: GPL-2.0+
13 #include <environment.h>
14 #include <linux/stddef.h>
20 char *env_name_spec
= "EXT4";
24 DECLARE_GLOBAL_DATA_PTR
;
29 gd
->env_addr
= (ulong
)&default_environment
[0];
35 #ifdef CONFIG_CMD_SAVEENV
41 block_dev_desc_t
*dev_desc
= NULL
;
42 int dev
= EXT4_ENV_DEVICE
;
43 int part
= EXT4_ENV_PART
;
46 res
= (char *)&env_new
.data
;
47 len
= hexport_r(&env_htab
, '\0', 0, &res
, ENV_SIZE
, 0, NULL
);
49 error("Cannot export environment: errno = %d\n", errno
);
53 dev_desc
= get_dev(EXT4_ENV_INTERFACE
, dev
);
54 if (dev_desc
== NULL
) {
55 printf("Failed to find %s%d\n",
56 EXT4_ENV_INTERFACE
, dev
);
60 err
= ext4_register_device(dev_desc
, part
);
62 printf("Failed to register %s%d:%d\n",
63 EXT4_ENV_INTERFACE
, dev
, part
);
67 env_new
.crc
= crc32(0, env_new
.data
, ENV_SIZE
);
68 err
= ext4fs_write(EXT4_ENV_FILE
, (void *)&env_new
, sizeof(env_t
));
71 printf("\n** Unable to write \"%s\" from %s%d:%d **\n",
72 EXT4_ENV_FILE
, EXT4_ENV_INTERFACE
, dev
, part
);
79 #endif /* CONFIG_CMD_SAVEENV */
81 void env_relocate_spec(void)
83 char buf
[CONFIG_ENV_SIZE
];
84 block_dev_desc_t
*dev_desc
= NULL
;
85 int dev
= EXT4_ENV_DEVICE
;
86 int part
= EXT4_ENV_PART
;
89 dev_desc
= get_dev(EXT4_ENV_INTERFACE
, dev
);
90 if (dev_desc
== NULL
) {
91 printf("Failed to find %s%d\n",
92 EXT4_ENV_INTERFACE
, dev
);
93 set_default_env(NULL
);
97 err
= ext4_register_device(dev_desc
, part
);
99 printf("Failed to register %s%d:%d\n",
100 EXT4_ENV_INTERFACE
, dev
, part
);
101 set_default_env(NULL
);
105 err
= ext4_read_file(EXT4_ENV_FILE
, (uchar
*)&buf
, 0, CONFIG_ENV_SIZE
);
109 printf("\n** Unable to read \"%s\" from %s%d:%d **\n",
110 EXT4_ENV_FILE
, EXT4_ENV_INTERFACE
, dev
, part
);
111 set_default_env(NULL
);