projects
/
platform
/
kernel
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.denx.de/u-boot-arm
[platform/kernel/u-boot.git]
/
common
/
env_onenand.c
diff --git
a/common/env_onenand.c
b/common/env_onenand.c
index
ad5b1d7
..
476fdbc
100644
(file)
--- a/
common/env_onenand.c
+++ b/
common/env_onenand.c
@@
-1,5
+1,5
@@
/*
/*
- * (C) Copyright 2005-200
7
Samsung Electronics
+ * (C) Copyright 2005-200
9
Samsung Electronics
* Kyungmin Park <kyungmin.park@samsung.com>
*
* See file CREDITS for list of people who contributed to this
* Kyungmin Park <kyungmin.park@samsung.com>
*
* See file CREDITS for list of people who contributed to this
@@
-22,9
+22,6
@@
*/
#include <common.h>
*/
#include <common.h>
-
-#if defined(CFG_ENV_IS_IN_ONENAND) /* Environment is in OneNAND */
-
#include <command.h>
#include <environment.h>
#include <linux/stddef.h>
#include <command.h>
#include <environment.h>
#include <linux/stddef.h>
@@
-40,15
+37,16
@@
extern struct onenand_chip onenand_chip;
/* References to names in env_common.c */
extern uchar default_environment[];
/* References to names in env_common.c */
extern uchar default_environment[];
-#define ONENAND_ENV_SIZE(mtd) (mtd.oobblock - ENV_HEADER_SIZE)
-
char *env_name_spec = "OneNAND";
char *env_name_spec = "OneNAND";
+#define ONENAND_MAX_ENV_SIZE 4096
+#define ONENAND_ENV_SIZE(mtd) (ONENAND_MAX_ENV_SIZE - ENV_HEADER_SIZE)
+
#ifdef ENV_IS_EMBEDDED
extern uchar environment[];
env_t *env_ptr = (env_t *) (&environment[0]);
#else /* ! ENV_IS_EMBEDDED */
#ifdef ENV_IS_EMBEDDED
extern uchar environment[];
env_t *env_ptr = (env_t *) (&environment[0]);
#else /* ! ENV_IS_EMBEDDED */
-static unsigned char onenand_env[
MAX_ONENAND_PAGE
SIZE];
+static unsigned char onenand_env[
ONENAND_MAX_ENV_
SIZE];
env_t *env_ptr = (env_t *) onenand_env;
#endif /* ENV_IS_EMBEDDED */
env_t *env_ptr = (env_t *) onenand_env;
#endif /* ENV_IS_EMBEDDED */
@@
-61,30
+59,29
@@
uchar env_get_char_spec(int index)
void env_relocate_spec(void)
{
void env_relocate_spec(void)
{
- unsigned long env_addr;
+ struct mtd_info *mtd = &onenand_mtd;
+ loff_t env_addr;
int use_default = 0;
size_t retlen;
int use_default = 0;
size_t retlen;
- env_addr = CFG_ENV_ADDR;
- env_addr -= (unsigned long) onenand_chip.base;
+ env_addr = CONFIG_ENV_ADDR;
/* Check OneNAND exist */
/* Check OneNAND exist */
- if (
onenand_mtd.oobblock
)
+ if (
mtd->writesize
)
/* Ignore read fail */
/* Ignore read fail */
-
onenand_read(&onenand_mtd, env_addr, onenand_mtd.oobblock
,
+
mtd->read(mtd, env_addr, ONENAND_MAX_ENV_SIZE
,
&retlen, (u_char *) env_ptr);
else
&retlen, (u_char *) env_ptr);
else
-
onenand_mtd.oobblock
= MAX_ONENAND_PAGESIZE;
+
mtd->writesize
= MAX_ONENAND_PAGESIZE;
- if (crc32(0, env_ptr->data, ONENAND_ENV_SIZE(onenand_mtd)) !=
- env_ptr->crc)
+ if (crc32(0, env_ptr->data, ONENAND_ENV_SIZE(mtd)) != env_ptr->crc)
use_default = 1;
if (use_default) {
memcpy(env_ptr->data, default_environment,
use_default = 1;
if (use_default) {
memcpy(env_ptr->data, default_environment,
- ONENAND_ENV_SIZE(
onenand_
mtd));
+ ONENAND_ENV_SIZE(mtd));
env_ptr->crc =
env_ptr->crc =
- crc32(0, env_ptr->data, ONENAND_ENV_SIZE(
onenand_
mtd));
+ crc32(0, env_ptr->data, ONENAND_ENV_SIZE(mtd));
}
gd->env_addr = (ulong) & env_ptr->data;
}
gd->env_addr = (ulong) & env_ptr->data;
@@
-93,28
+90,27
@@
void env_relocate_spec(void)
int saveenv(void)
{
int saveenv(void)
{
- unsigned long env_addr = CFG_ENV_ADDR;
+ struct mtd_info *mtd = &onenand_mtd;
+ loff_t env_addr = CONFIG_ENV_ADDR;
struct erase_info instr = {
.callback = NULL,
};
size_t retlen;
struct erase_info instr = {
.callback = NULL,
};
size_t retlen;
- instr.len = C
F
G_ENV_SIZE;
+ instr.len = C
ONFI
G_ENV_SIZE;
instr.addr = env_addr;
instr.addr = env_addr;
- instr.
addr -= (unsigned long)onenand_chip.base
;
- if (
onenand_erase(&onenand_
mtd, &instr)) {
+ instr.
mtd = mtd
;
+ if (
mtd->erase(
mtd, &instr)) {
printf("OneNAND: erase failed at 0x%08lx\n", env_addr);
return 1;
}
/* update crc */
printf("OneNAND: erase failed at 0x%08lx\n", env_addr);
return 1;
}
/* update crc */
- env_ptr->crc =
- crc32(0, env_ptr->data, ONENAND_ENV_SIZE(onenand_mtd));
+ env_ptr->crc = crc32(0, env_ptr->data, ONENAND_ENV_SIZE(mtd));
- env_addr -= (unsigned long)onenand_chip.base;
- if (onenand_write(&onenand_mtd, env_addr, onenand_mtd.oobblock, &retlen,
+ if (mtd->write(mtd, env_addr, ONENAND_MAX_ENV_SIZE, &retlen,
(u_char *) env_ptr)) {
(u_char *) env_ptr)) {
- printf("OneNAND: write failed at 0x%
08
x\n", instr.addr);
+ printf("OneNAND: write failed at 0x%
ll
x\n", instr.addr);
return 2;
}
return 2;
}
@@
-129,5
+125,3
@@
int env_init(void)
return 0;
}
return 0;
}
-
-#endif /* CFG_ENV_IS_IN_ONENAND */