mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 22:51:37 +00:00
Added CONFIG_ options for bd_t and env in flat dev tree
CONFIG_OF_HAS_BD_T will put a copy of the bd_t into the resulting flat device tree. CONFIG_OF_HAS_UBOOT_ENV will copy the environment variables from u-boot into the flat device tree Patch by Kumar Gala 11 Jan 2006
This commit is contained in:
parent
c7428d49ac
commit
e4f880eddd
4 changed files with 45 additions and 7 deletions
10
CHANGELOG
10
CHANGELOG
|
@ -2,6 +2,16 @@
|
||||||
Changes since U-Boot 1.1.4:
|
Changes since U-Boot 1.1.4:
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
* Added CONFIG_ options for bd_t and env in flat dev tree
|
||||||
|
|
||||||
|
CONFIG_OF_HAS_BD_T will put a copy of the bd_t
|
||||||
|
into the resulting flat device tree.
|
||||||
|
|
||||||
|
CONFIG_OF_HAS_UBOOT_ENV will copy the environment
|
||||||
|
variables from u-boot into the flat device tree
|
||||||
|
|
||||||
|
Patch by Kumar Gala 11 Jan 2006
|
||||||
|
|
||||||
* Add support for 28F256J3A flah (=> 64 MB) on PM520 board
|
* Add support for 28F256J3A flah (=> 64 MB) on PM520 board
|
||||||
|
|
||||||
* Fix compiler problem with at91rm9200dk board.
|
* Fix compiler problem with at91rm9200dk board.
|
||||||
|
|
10
README
10
README
|
@ -413,6 +413,16 @@ The following options need to be configured:
|
||||||
OF_CPU - The proper name of the cpus node.
|
OF_CPU - The proper name of the cpus node.
|
||||||
OF_TBCLK - The timebase frequency.
|
OF_TBCLK - The timebase frequency.
|
||||||
|
|
||||||
|
CONFIG_OF_HAS_BD_T
|
||||||
|
|
||||||
|
The resulting flat device tree will have a copy of the bd_t.
|
||||||
|
Space should be pre-allocated in the dts for the bd_t.
|
||||||
|
|
||||||
|
CONFIG_OF_HAS_UBOOT_ENV
|
||||||
|
|
||||||
|
The resulting flat device tree will have a copy of u-boot's
|
||||||
|
environment variables
|
||||||
|
|
||||||
- Serial Ports:
|
- Serial Ports:
|
||||||
CFG_PL010_SERIAL
|
CFG_PL010_SERIAL
|
||||||
|
|
||||||
|
|
|
@ -529,6 +529,7 @@ extern uchar(*env_get_char) (int);
|
||||||
|
|
||||||
#define BDM(x) { .name = #x, .offset = offsetof(bd_t, bi_ ##x ) }
|
#define BDM(x) { .name = #x, .offset = offsetof(bd_t, bi_ ##x ) }
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF_HAS_BD_T
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *name;
|
const char *name;
|
||||||
int offset;
|
int offset;
|
||||||
|
@ -574,19 +575,24 @@ static const struct {
|
||||||
#endif
|
#endif
|
||||||
BDM(baudrate),
|
BDM(baudrate),
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void ft_setup(void *blob, int size, bd_t * bd)
|
void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
{
|
{
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
|
||||||
u8 *end;
|
|
||||||
u32 *p;
|
u32 *p;
|
||||||
int len;
|
int len;
|
||||||
struct ft_cxt cxt;
|
struct ft_cxt cxt;
|
||||||
int i, k, nxt;
|
|
||||||
static char tmpenv[256];
|
|
||||||
char *s, *lval, *rval;
|
|
||||||
ulong clock;
|
ulong clock;
|
||||||
uint32_t v;
|
#if defined(CONFIG_OF_HAS_UBOOT_ENV)
|
||||||
|
int k, nxt;
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OF_HAS_BD_T)
|
||||||
|
u8 *end;
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OF_HAS_UBOOT_ENV) || defined(CONFIG_OF_HAS_BD_T)
|
||||||
|
int i;
|
||||||
|
static char tmpenv[256];
|
||||||
|
#endif
|
||||||
|
|
||||||
/* disable OF tree; booting old kernel */
|
/* disable OF tree; booting old kernel */
|
||||||
if (getenv("disable_of") != NULL) {
|
if (getenv("disable_of") != NULL) {
|
||||||
|
@ -610,9 +616,12 @@ void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
/* back into root */
|
/* back into root */
|
||||||
ft_backtrack_node(&cxt);
|
ft_backtrack_node(&cxt);
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF_HAS_UBOOT_ENV
|
||||||
ft_begin_node(&cxt, "u-boot-env");
|
ft_begin_node(&cxt, "u-boot-env");
|
||||||
|
|
||||||
for (i = 0; env_get_char(i) != '\0'; i = nxt + 1) {
|
for (i = 0; env_get_char(i) != '\0'; i = nxt + 1) {
|
||||||
|
char *s, *lval, *rval;
|
||||||
|
|
||||||
for (nxt = i; env_get_char(nxt) != '\0'; ++nxt) ;
|
for (nxt = i; env_get_char(nxt) != '\0'; ++nxt) ;
|
||||||
s = tmpenv;
|
s = tmpenv;
|
||||||
for (k = i; k < nxt && s < &tmpenv[sizeof(tmpenv) - 1]; ++k)
|
for (k = i; k < nxt && s < &tmpenv[sizeof(tmpenv) - 1]; ++k)
|
||||||
|
@ -629,6 +638,7 @@ void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
}
|
}
|
||||||
|
|
||||||
ft_end_node(&cxt);
|
ft_end_node(&cxt);
|
||||||
|
#endif
|
||||||
|
|
||||||
ft_begin_node(&cxt, "chosen");
|
ft_begin_node(&cxt, "chosen");
|
||||||
|
|
||||||
|
@ -647,14 +657,19 @@ void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
ft_dump_blob(blob);
|
ft_dump_blob(blob);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF_HAS_BD_T
|
||||||
/* paste the bd_t at the end of the flat tree */
|
/* paste the bd_t at the end of the flat tree */
|
||||||
end = (char *)blob +
|
end = (char *)blob +
|
||||||
be32_to_cpu(((struct boot_param_header *)blob)->totalsize);
|
be32_to_cpu(((struct boot_param_header *)blob)->totalsize);
|
||||||
memcpy(end, bd, sizeof(*bd));
|
memcpy(end, bd, sizeof(*bd));
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PPC
|
#ifdef CONFIG_PPC
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF_HAS_BD_T
|
||||||
for (i = 0; i < sizeof(bd_map)/sizeof(bd_map[0]); i++) {
|
for (i = 0; i < sizeof(bd_map)/sizeof(bd_map[0]); i++) {
|
||||||
|
uint32_t v;
|
||||||
|
|
||||||
sprintf(tmpenv, "/bd_t/%s", bd_map[i].name);
|
sprintf(tmpenv, "/bd_t/%s", bd_map[i].name);
|
||||||
v = *(uint32_t *)((char *)bd + bd_map[i].offset);
|
v = *(uint32_t *)((char *)bd + bd_map[i].offset);
|
||||||
|
|
||||||
|
@ -670,6 +685,7 @@ void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
p = ft_get_prop(blob, "/bd_t/ethspeed", &len);
|
p = ft_get_prop(blob, "/bd_t/ethspeed", &len);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
*p = cpu_to_be32((uint32_t) bd->bi_ethspeed);
|
*p = cpu_to_be32((uint32_t) bd->bi_ethspeed);
|
||||||
|
#endif
|
||||||
|
|
||||||
clock = bd->bi_intfreq;
|
clock = bd->bi_intfreq;
|
||||||
p = ft_get_prop(blob, "/cpus/" OF_CPU "/clock-frequency", &len);
|
p = ft_get_prop(blob, "/cpus/" OF_CPU "/clock-frequency", &len);
|
||||||
|
@ -680,7 +696,7 @@ void ft_setup(void *blob, int size, bd_t * bd)
|
||||||
clock = OF_TBCLK;
|
clock = OF_TBCLK;
|
||||||
p = ft_get_prop(blob, "/cpus/" OF_CPU "/timebase-frequency", &len);
|
p = ft_get_prop(blob, "/cpus/" OF_CPU "/timebase-frequency", &len);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
*p = cpu_to_be32(OF_TBCLK);
|
*p = cpu_to_be32(clock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __powerpc__ */
|
#endif /* __powerpc__ */
|
||||||
|
|
|
@ -584,5 +584,7 @@ typedef unsigned int led_id_t;
|
||||||
|
|
||||||
#define OF_CPU "PowerPC,MPC870@0"
|
#define OF_CPU "PowerPC,MPC870@0"
|
||||||
#define OF_TBCLK (MPC8XX_HZ / 16)
|
#define OF_TBCLK (MPC8XX_HZ / 16)
|
||||||
|
#define CONFIG_OF_HAS_BD_T 1
|
||||||
|
#define CONFIG_OF_HAS_UBOOT_ENV 1
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue