Merge branch 'master' of git://git.denx.de/u-boot-x86
[oweals/u-boot.git] / common / env_mgdisk.c
index b9de1ed0d38d0b117ddfb050109f5c2ce04e555c..d00e141d5b7a3c5bef10630cd102718d7e9690e6 100644 (file)
 #include <linux/stddef.h>
 #include <mg_disk.h>
 
-/* references to names in env_common.c */
-extern uchar default_environment[];
+char *env_name_spec = "MG_DISK";
 
-char * env_name_spec = "MG_DISK";
-
-env_t *env_ptr = 0;
+env_t *env_ptr;
 
 DECLARE_GLOBAL_DATA_PTR;
 
-uchar env_get_char_spec(int index)
-{
-       return (*((uchar *) (gd->env_addr + index)));
-}
-
 void env_relocate_spec(void)
 {
-       unsigned int err;
+       char buf[CONFIG_ENV_SIZE];
+       unsigned int err, rc;
 
        err = mg_disk_init();
        if (err) {
-               puts ("*** Warning - mg_disk_init error");
-               goto OUT;
-       }
-       err = mg_disk_read(CONFIG_ENV_ADDR, (u_char *)env_ptr, CONFIG_ENV_SIZE);
-       if (err) {
-               puts ("*** Warning - mg_disk_read error");
-               goto OUT;
+               set_default_env("!mg_disk_init error");
+               return;
        }
 
-       if (crc32(0, env_ptr->data, ENV_SIZE) != env_ptr->crc) {
-               puts ("*** Warning - CRC error");
-               goto OUT;
+       err = mg_disk_read(CONFIG_ENV_ADDR, buf, CONFIG_ENV_SIZE);
+       if (err) {
+               set_default_env("!mg_disk_read error");
+               return;
        }
 
-       return;
-
-OUT:
-       printf (", using default environment\n\n");
-       set_default_env();
+       env_import(buf, 1);
 }
 
 int saveenv(void)
@@ -76,7 +61,7 @@ int saveenv(void)
        err = mg_disk_write(CONFIG_ENV_ADDR, (u_char *)env_ptr,
                        CONFIG_ENV_SIZE);
        if (err)
-               puts ("*** Warning - mg_disk_write error\n\n");
+               puts("*** Warning - mg_disk_write error\n\n");
 
        return err;
 }
@@ -84,7 +69,7 @@ int saveenv(void)
 int env_init(void)
 {
        /* use default */
-       gd->env_addr = (ulong) & default_environment[0];
+       gd->env_addr = (ulong)&default_environment[0];
        gd->env_valid = 1;
 
        return 0;