From: Donghwa Lee <dh09....@samsung.com>

I modified fw_printenv tools to use /dev/mmcblk0 node. Original fw_printenv tool
can be access MTD devices, but, in some cases, environment variables can be 
stored
other memory devices, for example, mmc devices.
So, I modified a few code to use /dev/mmcblk0.

Signed-off-by: Donghwa Lee <dh09....@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com>

---
 tools/env/fw_env.c      |   13 ++++++++++---
 tools/env/fw_env.config |    7 +++++--
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index 8ff7052..5a707f6 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -855,6 +855,7 @@ static int flash_write_buf (int dev, int fd, void *buf, 
size_t count,
                }
 
                erase.start = blockstart;
+#ifndef CONFIG_ENV_IS_IN_MMC
                ioctl (fd, MEMUNLOCK, &erase);
 
                if (ioctl (fd, MEMERASE, &erase) != 0) {
@@ -863,7 +864,7 @@ static int flash_write_buf (int dev, int fd, void *buf, 
size_t count,
                                 strerror (errno));
                        return -1;
                }
-
+#endif
                if (lseek (fd, blockstart, SEEK_SET) == -1) {
                        fprintf (stderr,
                                 "Seek error on %s: %s\n",
@@ -880,8 +881,9 @@ static int flash_write_buf (int dev, int fd, void *buf, 
size_t count,
                        return -1;
                }
 
+#ifndef CONFIG_ENV_IS_IN_MMC
                ioctl (fd, MEMLOCK, &erase);
-
+#endif
                processed  += blocklen;
                block_seek = 0;
                blockstart += blocklen;
@@ -964,9 +966,10 @@ static int flash_write (int fd_current, int fd_target, int 
dev_target)
 
 static int flash_read (int fd)
 {
-       struct mtd_info_user mtdinfo;
        int rc;
 
+#ifndef CONFIG_ENV_IS_IN_MMC
+       struct mtd_info_user mtdinfo;
        rc = ioctl (fd, MEMGETINFO, &mtdinfo);
        if (rc < 0) {
                perror ("Cannot get MTD information");
@@ -982,6 +985,10 @@ static int flash_read (int fd)
 
        rc = flash_read_buf (dev_current, fd, environment.image, 
CONFIG_ENV_SIZE,
                             DEVOFFSET (dev_current), mtdinfo.type);
+#else
+       rc = flash_read_buf (dev_current, fd, environment.image, 
CONFIG_ENV_SIZE,
+                            DEVOFFSET (dev_current), 0);
+#endif
 
        return (rc != CONFIG_ENV_SIZE) ? -1 : 0;
 }
diff --git a/tools/env/fw_env.config b/tools/env/fw_env.config
index c8f12cf..228ded8 100644
--- a/tools/env/fw_env.config
+++ b/tools/env/fw_env.config
@@ -4,8 +4,11 @@
 # Notice, that the "Number of sectors" is ignored on NOR.
 
 # MTD device name      Device offset   Env. size       Flash sector size       
Number of sectors
-/dev/mtd1              0x0000          0x4000          0x4000
-/dev/mtd2              0x0000          0x4000          0x4000
+#/dev/mtd1             0x0000          0x4000          0x4000
+#/dev/mtd2             0x0000          0x4000          0x4000
 
 # NAND example
 #/dev/mtd0             0x4000          0x4000          0x20000                 
2
+
+# MMC device name      Device offset   Env. size       Flash sector size       
Number of sectors
+/dev/mmcblk0           0x7000          0x1000          0x1000
-- 
1.6.0.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to