Re: [U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

2010-06-24 Thread Steve Sakoman
On Thu, May 6, 2010 at 3:22 PM, Wolfgang Denk  wrote:
> Dear Terry Lv,
>
> In message <12730401491046-git-send-email-r65...@freescale.com> you wrote:
>> This patch is to save environment data to mmc card.
>> It uses interfaces defined in generic mmc.



>> diff --git a/common/env_mmc.c b/common/env_mmc.c
>> new file mode 100644
>> index 000..c9a9415
>> --- /dev/null
>> +++ b/common/env_mmc.c
>
> Hm... I see a tendency to add more and more such files that all deal
> with one sort of a block oriented storage device or another.  Should
> we not try to generalize this?

Has there been any further work on this patch (taking into account
Wolfgang's comments)?

I'll need to do something similar for saving the OMAP4430 SDP
environment to emmc, so I can help out with testing on another
platform.

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


Re: [U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

2010-06-22 Thread Wolfgang Denk
Dear "Lv Terry-R65388",

Please stop top posting / full quoting.

This style of replying to messages ios a major PITA to deal with :-(

In message 
<1ae74f652ecb1440b73dd7c2c20842d1b3a...@zch01exm27.fsl.freescale.net> you wrote:
>
>   Though a block offset macros is more suitable for a block device,
>   block size can be changed.
>   Thus I think a size offset is better to describe the offset.
>
>   What do you think?

I think you either did not read or understand what I wrote:

> Hm... I see a tendency to add more and more such files that all deal
> with one sort of a block oriented storage device or another.  Should
> we not try to generalize this?

I was talking about a more generic support layer for block oriented
storage devices. In Unix, this is typically called a "block device",
but we probably don't have to go that far.

What are all these env_*.c files doing? Reading or writing one or
several blocks of data from a storage device and handing it over to
the environment code.

Maybe we can use a single generic file where each used driver
registers it's block read / block write functions?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
In the strict scientific sense we all feed on death -- even
vegetarians.
-- Spock, "Wolf in the Fold", stardate 3615.4
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

2010-05-06 Thread Lv Terry-R65388
Hi Wolfgang Denk,

Though a block offset macros is more suitable for a block device, block 
size can be changed.
Thus I think a size offset is better to describe the offset.

What do you think?

Thanks~~

Yours
Terry 

-Original Message-
From: Wolfgang Denk [mailto:w...@denx.de] 
Sent: 2010年5月7日 6:22
To: Lv Terry-R65388
Cc: u-boot@lists.denx.de
Subject: Re: [U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

Dear Terry Lv,

In message <12730401491046-git-send-email-r65...@freescale.com> you wrote:
> This patch is to save environment data to mmc card.
> It uses interfaces defined in generic mmc.
> 
> Signed-off-by: Terry Lv 
> ---
>  arch/arm/lib/board.c |   14 +++--
>  arch/powerpc/lib/board.c |   16 +++--
>  common/Makefile  |1 +
>  common/cmd_nvedit.c  |3 +-
>  common/env_mmc.c |  154 
> ++
>  5 files changed, 176 insertions(+), 12 deletions(-)  create mode 
> 100644 common/env_mmc.c
> 
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 
> f5660a9..b7174ea 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -347,6 +347,15 @@ void start_armboot (void)
>   dataflash_print_info();
>  #endif
>  
> +#ifdef CONFIG_GENERIC_MMC
> +/* MMC initialization is called before relocating env.
> +   Thus It is required that operations like pin multiplexer 
> +   be put in board_init.
> +*/

Incorrect multiline comment style. Please fix globally.


> diff --git a/common/env_mmc.c b/common/env_mmc.c new file mode 100644 
> index 000..c9a9415
> --- /dev/null
> +++ b/common/env_mmc.c

Hm... I see a tendency to add more and more such files that all deal
with one sort of a block oriented storage device or another.  Should
we not try to generalize this?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
My play was a complete success.  The audience was a failure.

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


Re: [U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

2010-05-06 Thread Wolfgang Denk
Dear Terry Lv,

In message <12730401491046-git-send-email-r65...@freescale.com> you wrote:
> This patch is to save environment data to mmc card.
> It uses interfaces defined in generic mmc.
> 
> Signed-off-by: Terry Lv 
> ---
>  arch/arm/lib/board.c |   14 +++--
>  arch/powerpc/lib/board.c |   16 +++--
>  common/Makefile  |1 +
>  common/cmd_nvedit.c  |3 +-
>  common/env_mmc.c |  154 
> ++
>  5 files changed, 176 insertions(+), 12 deletions(-)
>  create mode 100644 common/env_mmc.c
> 
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index f5660a9..b7174ea 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -347,6 +347,15 @@ void start_armboot (void)
>   dataflash_print_info();
>  #endif
>  
> +#ifdef CONFIG_GENERIC_MMC
> +/* MMC initialization is called before relocating env.
> +   Thus It is required that operations like pin multiplexer 
> +   be put in board_init.
> +*/

Incorrect multiline comment style. Please fix globally.


> diff --git a/common/env_mmc.c b/common/env_mmc.c
> new file mode 100644
> index 000..c9a9415
> --- /dev/null
> +++ b/common/env_mmc.c

Hm... I see a tendency to add more and more such files that all deal
with one sort of a block oriented storage device or another.  Should
we not try to generalize this?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
My play was a complete success.  The audience was a failure.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] [PATCH V4]Save environment data to mmc.

2010-05-04 Thread Terry Lv
This patch is to save environment data to mmc card.
It uses interfaces defined in generic mmc.

Signed-off-by: Terry Lv 
---
 arch/arm/lib/board.c |   14 +++--
 arch/powerpc/lib/board.c |   16 +++--
 common/Makefile  |1 +
 common/cmd_nvedit.c  |3 +-
 common/env_mmc.c |  154 ++
 5 files changed, 176 insertions(+), 12 deletions(-)
 create mode 100644 common/env_mmc.c

diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index f5660a9..b7174ea 100644
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -347,6 +347,15 @@ void start_armboot (void)
dataflash_print_info();
 #endif
 
+#ifdef CONFIG_GENERIC_MMC
+/* MMC initialization is called before relocating env.
+   Thus It is required that operations like pin multiplexer 
+   be put in board_init.
+*/
+   puts ("MMC:   ");
+   mmc_initialize (gd->bd);
+#endif
+
/* initialize environment */
env_relocate ();
 
@@ -419,11 +428,6 @@ extern void davinci_eth_set_mac_addr (const u_int8_t 
*addr);
board_late_init ();
 #endif
 
-#ifdef CONFIG_GENERIC_MMC
-   puts ("MMC:   ");
-   mmc_initialize (gd->bd);
-#endif
-
 #ifdef CONFIG_BITBANGMII
bb_miiphy_init();
 #endif
diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c
index 7b09fb5..6e51442 100644
--- a/arch/powerpc/lib/board.c
+++ b/arch/powerpc/lib/board.c
@@ -783,6 +783,16 @@ void board_init_r (gd_t *id, ulong dest_addr)
nand_init();/* go init the NAND */
 #endif
 
+#ifdef CONFIG_GENERIC_MMC
+/* MMC initialization is called before relocating env.
+   Thus It is required that operations like pin multiplexer 
+   be put in board_init.
+*/
+   WATCHDOG_RESET ();
+   puts ("MMC:  ");
+   mmc_initialize (bd);
+#endif
+
/* relocate environment function pointers etc. */
env_relocate ();
 
@@ -939,12 +949,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
scsi_init ();
 #endif
 
-#ifdef CONFIG_GENERIC_MMC
-   WATCHDOG_RESET ();
-   puts ("MMC:  ");
-   mmc_initialize (bd);
-#endif
-
 #if defined(CONFIG_CMD_DOC)
WATCHDOG_RESET ();
puts ("DOC:   ");
diff --git a/common/Makefile b/common/Makefile
index dbf7a05..2c37073 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -58,6 +58,7 @@ COBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_embedded.o
 COBJS-$(CONFIG_ENV_IS_IN_NVRAM) += env_embedded.o
 COBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_flash.o
 COBJS-$(CONFIG_ENV_IS_IN_MG_DISK) += env_mgdisk.o
+COBJS-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
 COBJS-$(CONFIG_ENV_IS_IN_NAND) += env_nand.o
 COBJS-$(CONFIG_ENV_IS_IN_NVRAM) += env_nvram.o
 COBJS-$(CONFIG_ENV_IS_IN_ONENAND) += env_onenand.o
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index eb89e9e..57dc288 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -59,13 +59,14 @@ DECLARE_GLOBAL_DATA_PTR;
 !defined(CONFIG_ENV_IS_IN_FLASH)   && \
 !defined(CONFIG_ENV_IS_IN_DATAFLASH)   && \
 !defined(CONFIG_ENV_IS_IN_MG_DISK) && \
+!defined(CONFIG_ENV_IS_IN_MMC)  && \
 !defined(CONFIG_ENV_IS_IN_NAND)&& \
 !defined(CONFIG_ENV_IS_IN_NVRAM)   && \
 !defined(CONFIG_ENV_IS_IN_ONENAND) && \
 !defined(CONFIG_ENV_IS_IN_SPI_FLASH)   && \
 !defined(CONFIG_ENV_IS_NOWHERE)
 # error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|DATAFLASH|ONENAND|\
-SPI_FLASH|MG_DISK|NVRAM|NOWHERE}
+SPI_FLASH|MG_DISK|NVRAM|MMC|NOWHERE}
 #endif
 
 #define XMK_STR(x) #x
diff --git a/common/env_mmc.c b/common/env_mmc.c
new file mode 100644
index 000..c9a9415
--- /dev/null
+++ b/common/env_mmc.c
@@ -0,0 +1,154 @@
+/*
+ * (C) Copyright 2008-2010 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/* #define DEBUG */
+
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+/* references to names in env_common.c */
+extern uchar default_environment[];
+
+char *env_name_spec = "MMC";
+
+#ifdef ENV_IS_EMBEDDED
+extern uchar environment[];
+env_t *env_ptr = (env_t *)(&environment[0]);
+#else /* ! ENV_IS_EMBEDDED */
+env_t *env_ptr = NULL;
+#endif /* ENV_IS_EMBEDDED */
+
+/* local functions */
+#if !defined(ENV_IS_EMBEDDED)
+static void