aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/boot/44x.h2
-rw-r--r--arch/powerpc/boot/Makefile4
-rw-r--r--arch/powerpc/boot/bamboo.c8
-rw-r--r--arch/powerpc/boot/cuboot-bamboo.c30
-rw-r--r--arch/powerpc/boot/treeboot-bamboo.c22
5 files changed, 57 insertions, 9 deletions
diff --git a/arch/powerpc/boot/44x.h b/arch/powerpc/boot/44x.h
index ad33dcc95ae5..02563443788a 100644
--- a/arch/powerpc/boot/44x.h
+++ b/arch/powerpc/boot/44x.h
@@ -11,6 +11,6 @@
11#define _PPC_BOOT_44X_H_ 11#define _PPC_BOOT_44X_H_
12 12
13void ebony_init(void *mac0, void *mac1); 13void ebony_init(void *mac0, void *mac1);
14void bamboo_init(void); 14void bamboo_init(void *mac0, void *mac1);
15 15
16#endif /* _PPC_BOOT_44X_H_ */ 16#endif /* _PPC_BOOT_44X_H_ */
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index cffef147e042..c1582b62911c 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -49,7 +49,7 @@ src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \
49src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \ 49src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
50 cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ 50 cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
51 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ 51 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
52 cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c 52 cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c
53src-boot := $(src-wlib) $(src-plat) empty.c 53src-boot := $(src-wlib) $(src-plat) empty.c
54 54
55src-boot := $(addprefix $(obj)/, $(src-boot)) 55src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -146,7 +146,7 @@ image-$(CONFIG_8260) += cuImage.pq2
146image-$(CONFIG_PPC_83xx) += cuImage.83xx 146image-$(CONFIG_PPC_83xx) += cuImage.83xx
147image-$(CONFIG_PPC_85xx) += cuImage.85xx 147image-$(CONFIG_PPC_85xx) += cuImage.85xx
148image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony 148image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
149image-$(CONFIG_BAMBOO) += treeImage.bamboo 149image-$(CONFIG_BAMBOO) += treeImage.bamboo cuImage.bamboo
150image-$(CONFIG_SEQUOIA) += cuImage.sequoia 150image-$(CONFIG_SEQUOIA) += cuImage.sequoia
151image-$(CONFIG_WALNUT) += treeImage.walnut 151image-$(CONFIG_WALNUT) += treeImage.walnut
152endif 152endif
diff --git a/arch/powerpc/boot/bamboo.c b/arch/powerpc/boot/bamboo.c
index bc097694b445..f61fcdab1c7c 100644
--- a/arch/powerpc/boot/bamboo.c
+++ b/arch/powerpc/boot/bamboo.c
@@ -24,8 +24,7 @@
24#include "4xx.h" 24#include "4xx.h"
25#include "44x.h" 25#include "44x.h"
26 26
27extern char _dtb_start[]; 27static u8 *bamboo_mac0, *bamboo_mac1;
28extern char _dtb_end[];
29 28
30static void bamboo_fixups(void) 29static void bamboo_fixups(void)
31{ 30{
@@ -34,12 +33,15 @@ static void bamboo_fixups(void)
34 ibm440ep_fixup_clocks(sysclk, 11059200); 33 ibm440ep_fixup_clocks(sysclk, 11059200);
35 ibm4xx_fixup_memsize(); 34 ibm4xx_fixup_memsize();
36 ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); 35 ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00);
36 dt_fixup_mac_addresses(bamboo_mac0, bamboo_mac1);
37} 37}
38 38
39void bamboo_init(void) 39void bamboo_init(void *mac0, void *mac1)
40{ 40{
41 platform_ops.fixups = bamboo_fixups; 41 platform_ops.fixups = bamboo_fixups;
42 platform_ops.exit = ibm44x_dbcr_reset; 42 platform_ops.exit = ibm44x_dbcr_reset;
43 bamboo_mac0 = mac0;
44 bamboo_mac1 = mac1;
43 ft_init(_dtb_start, 0, 32); 45 ft_init(_dtb_start, 0, 32);
44 serial_console_init(); 46 serial_console_init();
45} 47}
diff --git a/arch/powerpc/boot/cuboot-bamboo.c b/arch/powerpc/boot/cuboot-bamboo.c
new file mode 100644
index 000000000000..900c7ff2b7e9
--- /dev/null
+++ b/arch/powerpc/boot/cuboot-bamboo.c
@@ -0,0 +1,30 @@
1/*
2 * Old U-boot compatibility for Bamboo
3 *
4 * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com>
5 *
6 * Copyright 2007 IBM Corporation
7 *
8 * Based on cuboot-ebony.c
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License version 2 as published
12 * by the Free Software Foundation.
13 */
14
15#include "ops.h"
16#include "stdio.h"
17#include "44x.h"
18#include "cuboot.h"
19
20#define TARGET_44x
21#include "ppcboot.h"
22
23static bd_t bd;
24
25void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
26 unsigned long r6, unsigned long r7)
27{
28 CUBOOT_INIT();
29 bamboo_init(&bd.bi_enetaddr, &bd.bi_enet1addr);
30}
diff --git a/arch/powerpc/boot/treeboot-bamboo.c b/arch/powerpc/boot/treeboot-bamboo.c
index 1f1fe5aaac12..9eee48fc7114 100644
--- a/arch/powerpc/boot/treeboot-bamboo.c
+++ b/arch/powerpc/boot/treeboot-bamboo.c
@@ -12,16 +12,32 @@
12#include "ops.h" 12#include "ops.h"
13#include "stdio.h" 13#include "stdio.h"
14#include "44x.h" 14#include "44x.h"
15 15#include "stdlib.h"
16extern char _end[];
17 16
18BSS_STACK(4096); 17BSS_STACK(4096);
19 18
19#define PIBS_MAC0 0xfffc0400
20#define PIBS_MAC1 0xfffc0500
21char pibs_mac0[6];
22char pibs_mac1[6];
23
24static void read_pibs_mac(void)
25{
26 unsigned long long mac64;
27
28 mac64 = strtoull((char *)PIBS_MAC0, 0, 16);
29 memcpy(&pibs_mac0, (char *)&mac64+2, 6);
30
31 mac64 = strtoull((char *)PIBS_MAC1, 0, 16);
32 memcpy(&pibs_mac1, (char *)&mac64+2, 6);
33}
34
20void platform_init(void) 35void platform_init(void)
21{ 36{
22 unsigned long end_of_ram = 0x8000000; 37 unsigned long end_of_ram = 0x8000000;
23 unsigned long avail_ram = end_of_ram - (unsigned long)_end; 38 unsigned long avail_ram = end_of_ram - (unsigned long)_end;
24 39
25 simple_alloc_init(_end, avail_ram, 32, 64); 40 simple_alloc_init(_end, avail_ram, 32, 64);
26 bamboo_init(); 41 read_pibs_mac();
42 bamboo_init((u8 *)&pibs_mac0, (u8 *)&pibs_mac1);
27} 43}