return ENVL_UNKNOWN;
}
-static struct env_driver *env_driver_lookup_default(void)
+struct env_driver *env_driver_lookup_default(void)
{
enum env_location loc = env_get_default_location();
struct env_driver *drv;
return drv;
}
-int env_get_char_new(int index)
+int env_get_char(int index)
{
struct env_driver *drv = env_driver_lookup_default();
int ret;
+ if (!gd->env_valid)
+ return default_environment[index];
if (!drv)
return -ENODEV;
if (!drv->get_char)
return -ENODEV;
if (!drv->load)
return 0;
- drv->load(); /* TODO(sjg@chromium.org): Make this return an error */
+ ret = drv->load();
if (ret) {
debug("%s: Environment failed to load (err=%d)\n", __func__,
ret);
return 0;
}
-int env_init_new(void)
+int env_init(void)
{
struct env_driver *drv = env_driver_lookup_default();
int ret = -ENOENT;
ret = drv->init();
if (ret == -ENOENT) {
gd->env_addr = (ulong)&default_environment[0];
- gd->env_valid = 0;
+ gd->env_valid = ENV_VALID;
return 0;
} else if (ret) {
return 0;
}
-
-unsigned char env_get_char_spec(int index)
-{
- return *(uchar *)(gd->env_addr + index);
-}
-
-void env_relocate_spec(void)
-{
- env_load();
-}
-
-int saveenv(void)
-{
- return env_save();
-}
-
-int env_init(void)
-{
- return env_init_new();
-}