* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
@ 2010-12-16 1:20 y at samsung.com
0 siblings, 0 replies; 6+ messages in thread
From: y at samsung.com @ 2010-12-16 1:20 UTC (permalink / raw)
To: u-boot
From: Donghwa Lee <dh09.lee@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.lee@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
@ 2010-12-16 1:22 Donghwa Lee
2010-12-16 6:42 ` Stefano Babic
2010-12-16 18:45 ` Steve Sakoman
0 siblings, 2 replies; 6+ messages in thread
From: Donghwa Lee @ 2010-12-16 1:22 UTC (permalink / raw)
To: u-boot
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.lee@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
2010-12-16 1:22 [U-Boot] [PATCH] tools: fw_printenv supports mmc device Donghwa Lee
@ 2010-12-16 6:42 ` Stefano Babic
2010-12-17 2:34 ` Donghwa Lee
2010-12-16 18:45 ` Steve Sakoman
1 sibling, 1 reply; 6+ messages in thread
From: Stefano Babic @ 2010-12-16 6:42 UTC (permalink / raw)
To: u-boot
On 12/16/2010 02:22 AM, Donghwa Lee wrote:
> 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
Can we get rid of this #ifdef statement ? This does not allow to include
the binary in a distro, because it is decided at compile time where the
environment is stored.
We already check if we are using a flash device in fw_env.c, when we
call ioctl (fd, MEMGETINFO, &mtdinfo). At the moment, we set the
mtd_type field in the envdevices structure only with MTD_NORFLASH or
MTD_NANDFLASH. I think it should be better to improve the check to find
on which medium we store the environment and set the mtd_type according
to its result if a SD/MMC is found (with MTD_MMC, maybe ?).
> # 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
I do not see any change in these lines..
>
> # 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
Do we need Flash sector size for MMC ?
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
2010-12-16 1:22 [U-Boot] [PATCH] tools: fw_printenv supports mmc device Donghwa Lee
2010-12-16 6:42 ` Stefano Babic
@ 2010-12-16 18:45 ` Steve Sakoman
2010-12-17 2:58 ` Donghwa Lee
1 sibling, 1 reply; 6+ messages in thread
From: Steve Sakoman @ 2010-12-16 18:45 UTC (permalink / raw)
To: u-boot
On Wed, Dec 15, 2010 at 5:22 PM, Donghwa Lee <dh09.lee@samsung.com> wrote:
> 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.
I submitted a similar patch series from Lo?c Minier a couple of weeks ago:
http://old.nabble.com/-U-Boot---RFC-0-3--Enhance-env-tools-td30373328.html
I've been working a a v2 to address the comments received.
Do you think a variant of that patch series will work for you?
Perhaps we could combine efforts for a patch series to solve the mmc
and normal file write targets?
Steve
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
2010-12-16 6:42 ` Stefano Babic
@ 2010-12-17 2:34 ` Donghwa Lee
0 siblings, 0 replies; 6+ messages in thread
From: Donghwa Lee @ 2010-12-17 2:34 UTC (permalink / raw)
To: u-boot
On 2010-12-16 ?? 3:42 , Stefano Babic wrote:
> On 12/16/2010 02:22 AM, Donghwa Lee wrote:
>> 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
> Can we get rid of this #ifdef statement ? This does not allow to include
> the binary in a distro, because it is decided at compile time where the
> environment is stored.
>
> We already check if we are using a flash device in fw_env.c, when we
> call ioctl (fd, MEMGETINFO, &mtdinfo). At the moment, we set the
> mtd_type field in the envdevices structure only with MTD_NORFLASH or
> MTD_NANDFLASH. I think it should be better to improve the check to find
> on which medium we store the environment and set the mtd_type according
> to its result if a SD/MMC is found (with MTD_MMC, maybe ?).
>
I think SD/MMC may not use MEMGETINFO ioctl. If mmc device doesn't use MTD, use only one partition, it can not use MEMGETINFO ioctl?
Actually, environment variables are very small area in SD/MMC, it doesn't need to divide own partition.
But, I think my patch that uses #ifndef statement was wrong, it needs to change another way.
>> # 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
> I do not see any change in these lines..
>
yes, there is no change, i added avobe to tell that case of not using /dev/mtd# node.
>>
>> # 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
> Do we need Flash sector size for MMC ?
MMC doesn't need to flash sector size. MMC can overwrite.
> Best regards,
> Stefano Babic
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] tools: fw_printenv supports mmc device
2010-12-16 18:45 ` Steve Sakoman
@ 2010-12-17 2:58 ` Donghwa Lee
0 siblings, 0 replies; 6+ messages in thread
From: Donghwa Lee @ 2010-12-17 2:58 UTC (permalink / raw)
To: u-boot
On 2010-12-17 ?? 3:45 , Steve Sakoman wrote:
> On Wed, Dec 15, 2010 at 5:22 PM, Donghwa Lee <dh09.lee@samsung.com> wrote:
>> 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.
> I submitted a similar patch series from Lo?c Minier a couple of weeks ago:
>
> http://old.nabble.com/-U-Boot---RFC-0-3--Enhance-env-tools-td30373328.html
>
> I've been working a a v2 to address the comments received.
>
> Do you think a variant of that patch series will work for you?
>
> Perhaps we could combine efforts for a patch series to solve the mmc
> and normal file write targets?
>
> Steve
>
I think your ideas are quite similar to me. I tested your patch to my target.
In my kernel your patch can not recognize file type, but, when 'is_mtd' is 0, it work well.
Best regards,
Donghwa lee
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-12-17 2:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-16 1:22 [U-Boot] [PATCH] tools: fw_printenv supports mmc device Donghwa Lee
2010-12-16 6:42 ` Stefano Babic
2010-12-17 2:34 ` Donghwa Lee
2010-12-16 18:45 ` Steve Sakoman
2010-12-17 2:58 ` Donghwa Lee
-- strict thread matches above, loose matches on Subject: below --
2010-12-16 1:20 y at samsung.com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox