Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Librem5
uboot-imx
Commits
0bc4a1ac
Commit
0bc4a1ac
authored
Sep 18, 2002
by
wdenk
Browse files
Initial revision
parent
ab255f26
Changes
2
Hide whitespace changes
Inline
Side-by-side
common/env_eeprom.c
0 → 100644
View file @
0bc4a1ac
/*
* (C) Copyright 2000-2002
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Andreas Heppel <aheppel@sysgo.de>
* 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
*/
#include
<common.h>
#if defined(CFG_ENV_IS_IN_EEPROM)
/* Environment is in EEPROM */
#include
<command.h>
#include
<environment.h>
#include
<cmd_nvedit.h>
#include
<linux/stddef.h>
#include
<malloc.h>
env_t
*
env_ptr
=
NULL
;
char
*
env_name_spec
=
"EEPROM"
;
extern
uchar
(
*
env_get_char
)(
int
);
extern
uchar
env_get_char_memory
(
int
index
);
uchar
env_get_char_spec
(
int
index
)
{
uchar
c
;
eeprom_read
(
CFG_DEF_EEPROM_ADDR
,
CFG_ENV_OFFSET
+
index
+
offsetof
(
env_t
,
data
),
&
c
,
1
);
return
(
c
);
}
void
env_relocate_spec
(
void
)
{
eeprom_read
(
CFG_DEF_EEPROM_ADDR
,
CFG_ENV_OFFSET
,
(
uchar
*
)
env_ptr
,
CFG_ENV_SIZE
);
}
int
saveenv
(
void
)
{
return
eeprom_write
(
CFG_DEF_EEPROM_ADDR
,
CFG_ENV_OFFSET
,
(
uchar
*
)
env_ptr
,
CFG_ENV_SIZE
);
}
/************************************************************************
* Initialize Environment use
*
* We are still running from ROM, so data use is limited
* Use a (moderately small) buffer on the stack
*/
int
env_init
(
void
)
{
DECLARE_GLOBAL_DATA_PTR
;
ulong
crc
,
len
,
new
;
unsigned
off
;
uchar
buf
[
64
];
eeprom_init
();
/* prepare for EEPROM read/write */
/* read old CRC */
eeprom_read
(
CFG_DEF_EEPROM_ADDR
,
CFG_ENV_OFFSET
+
offsetof
(
env_t
,
crc
),
(
uchar
*
)
&
crc
,
sizeof
(
ulong
));
new
=
0
;
len
=
ENV_SIZE
;
off
=
offsetof
(
env_t
,
data
);
while
(
len
>
0
)
{
int
n
=
(
len
>
sizeof
(
buf
))
?
sizeof
(
buf
)
:
len
;
eeprom_read
(
CFG_DEF_EEPROM_ADDR
,
CFG_ENV_OFFSET
+
off
,
buf
,
n
);
new
=
crc32
(
new
,
buf
,
n
);
len
-=
n
;
off
+=
n
;
}
if
(
crc
==
new
)
{
gd
->
env_addr
=
offsetof
(
env_t
,
data
);
gd
->
env_valid
=
1
;
}
else
{
gd
->
env_addr
=
0
;
gd
->
env_valid
=
0
;
}
return
(
0
);
}
#endif
/* CFG_ENV_IS_IN_EEPROM */
common/env_nowhere.c
0 → 100644
View file @
0bc4a1ac
/*
* (C) Copyright 2000-2002
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Andreas Heppel <aheppel@sysgo.de>
* 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
*/
#include
<common.h>
#if defined(CFG_ENV_IS_NOWHERE)
/* Environment is nowhere */
#include
<command.h>
#include
<environment.h>
#include
<linux/stddef.h>
#include
<malloc.h>
env_t
*
env_ptr
=
NULL
;
extern
uchar
default_environment
[];
extern
int
default_environment_size
;
void
env_relocate_spec
(
void
)
{
}
uchar
env_get_char_spec
(
int
index
)
{
DECLARE_GLOBAL_DATA_PTR
;
return
(
*
((
uchar
*
)(
gd
->
env_addr
+
index
))
);
}
/************************************************************************
* Initialize Environment use
*
* We are still running from ROM, so data use is limited
*/
int
env_init
(
void
)
{
DECLARE_GLOBAL_DATA_PTR
;
gd
->
env_addr
=
(
ulong
)
&
default_environment
[
0
];
gd
->
env_valid
=
0
;
return
(
0
);
}
#endif
/* CFG_ENV_IS_NOWHERE) */
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment