Skip to contentSkip to conversation

bootwrapper: Add support for the DINK firmware

PATCH In review Mark A. Greer 2 participants 7 messages Jul 19, 2006 – Sep 8, 2006 PowerPC

lore
Share & tools
lore
#0 lore raw

PATCH 5/6 bootwrapper: Add support for the DINK firmware

This patch adds the firmware operations that support the DINK firmware from Freescale.

--

 dink.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+)

--

arch/powerpc/boot/dink.c new file +56 -0
new file mode 100644
index 0000000..aa446e2
@@ -0,0 +1,56 @@
+/*
+ * Sandpoint specific fixups.
+ *
+ * Author: Mark A. Greer <[email protected]>
+ *
+ * 2006 (c) MontaVista, Software, Inc.  This file is licensed under
+ * the terms of the GNU General Public License version 2.  This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+#include <stdarg.h>
+#include <stddef.h>
+#include "types.h"
+#include "string.h"
+#include "stdio.h"
+#include "page.h"
+#include "ops.h"
+
+#define	MB	(1024*1024)
+
+extern char _end[];
+
+static u32	cur_base;
+static u32	end_of_ram = 32 * MB;
+
+static void *
+dink_malloc(u32 size)
+{
+	void *area = NULL;
+	static u8 first_time = 1;
+
+	if (first_time) {
+		cur_base = _ALIGN_UP((unsigned long)_end, MB);
+		first_time = 0;
+	}
+
+	if ((cur_base + size) < end_of_ram) {
+		area = (void *)cur_base;
+		cur_base += _ALIGN_UP(size, MB);
+	}
+
+	return area;
+}
+
+static struct fw_ops dink_fw_ops;
+
+struct fw_ops *
+dink_init(void)
+{
+	dink_fw_ops.malloc = dink_malloc;
+	dink_fw_ops.free = NULL;
+	dink_fw_ops.exit = NULL;
+
+	return &dink_fw_ops;
+}
#1 lore raw
Quoted 16 lines · Mark A. Greer

This patch adds the firmware operations that support the DINK firmware from Freescale.

--

 dink.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+)

--

arch/powerpc/boot/dink.c new file +0 -0
new file mode 100644
index 0000000..aa446e2

arch/powerpc/boot/dink.c line 2

Quoted 2 lines
arch/powerpc/boot/dink.c new file +2 -0
@@ -0,0 +1,56 @@
+/*
+ * Sandpoint specific fixups.

Obviously an incorrect comment. Will fix.

Mark
--

#2 lore raw
In reply to Mark A. Greer
Quoted 2 lines · Mark A. Greer

This patch adds the firmware operations that support the DINK firmware from Freescale.

This isn't really DINK support (which would mean actually talking back/with DINK, parsing the infos that it does pass along, and it does, iirc, but I don't recall if it's at all ever correct / useful :)) but just a, um, I suck at naming things (see arch/ppc/boot/simple) but non-nonsense, no help 'firmware' ops. Please think up a name that doesn't suck (as a name I would come up with would). Thanks!

Signature · 1 line
Tom Rini
#3 lore raw
Quoted 7 lines · Tom Rini
Quoted 2 lines · Mark A. Greer

This patch adds the firmware operations that support the DINK firmware from Freescale.

This isn't really DINK support (which would mean actually talking back/with DINK,

You seem to be thinking that this is the final, end-all solution to everything. It isn't. Its a step in the direction that we are trying go (IIUC). dink.c is about the easiest one there will be. of.c has a slightly more complicated fw_ops. We still need to figure out what uboot needs and what PIBS needs and what...

As things are added, it'll evolve.

Quoted 2 lines

parsing the infos that it does pass along, and it does, iirc,

Not that I know of.

Quoted 4 lines

but I don't recall if it's at all ever correct / useful :)) but just a, um, I suck at naming things (see arch/ppc/boot/simple) but non-nonsense, no help 'firmware' ops. Please think up a name that doesn't suck (as a name I would come up with would). Thanks!

Guess I suck too b/c I can't think of anything better. As things evolve, fw_ops may go away all together. The problem is, I'm not exactly sure where we're going to end up so this is the best that I can do with the info that I have.

Mark

#4 lore raw
Quoted 6 lines · Mark A. Greer
Quoted 5 lines · Tom Rini
Quoted 2 lines · Mark A. Greer

This patch adds the firmware operations that support the DINK firmware from Freescale.

Quoted 8 lines
Quoted 2 lines

This isn't really DINK support (which would mean actually talking back/with DINK,

You seem to be thinking that this is the final, end-all solution to everything. It isn't. Its a step in the direction that we are trying go (IIUC). dink.c is about the easiest one there will be. of.c has a slightly more complicated fw_ops. We still need to figure out what uboot needs and what PIBS needs and what...

Right. I'm just saying that unless you're planning on making this talk with / use DINK (I swear, the DINK manual talks about this a bit, but I'm too lazy to look just this second), this isn't the DINK one, this is the (will be needed and used) bare metal one.

Signature · 1 line
Tom Rini
#5 lore raw
Quoted 16 lines · Tom Rini
Quoted 6 lines · Mark A. Greer
Quoted 5 lines · Tom Rini
Quoted 2 lines · Mark A. Greer

This patch adds the firmware operations that support the DINK firmware from Freescale.

Quoted 8 lines
Quoted 2 lines

This isn't really DINK support (which would mean actually talking back/with DINK,

You seem to be thinking that this is the final, end-all solution to everything. It isn't. Its a step in the direction that we are trying go (IIUC). dink.c is about the easiest one there will be. of.c has a slightly more complicated fw_ops. We still need to figure out what uboot needs and what PIBS needs and what...

Quoted 4 lines

Right. I'm just saying that unless you're planning on making this talk with / use DINK (I swear, the DINK manual talks about this a bit, but I'm too lazy to look just this second), this isn't the DINK one, this is the (will be needed and used) bare metal one.

Ah, okay. Sure.

#6 lore raw

Re: [PATCH 5/6] bootwrapper: Add simple memory allocator

In reply to Mark A. Greer

This patch adds a simple memory allocator to the bootwrapper.

--

 simple_alloc.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+)

--

arch/powerpc/boot/simple_alloc.c new file +48 -0
new file mode 100644
index 0000000..ccf61b2
@@ -0,0 +1,48 @@
+/*
+ * Simple memory allocator.
+ *
+ * Author: Mark A. Greer <[email protected]>
+ *
+ * 2006 (c) MontaVista, Software, Inc.  This file is licensed under
+ * the terms of the GNU General Public License version 2.  This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+/* Some day, put in a real memory allocator */
+
+#include <stddef.h>
+#include "types.h"
+#include "page.h"
+#include "ops.h"
+
+#define	MB	(1024*1024)
+
+extern char _end[];
+
+static u32	cur_base;
+static u32	end_of_ram = 32 * MB;
+
+static void *simple_malloc(u32 size)
+{
+	void *area = NULL;
+	static u8 first_time = 1;
+
+	if (first_time) {
+		cur_base = _ALIGN_UP((unsigned long)_end, MB);
+		first_time = 0;
+	}
+
+	if ((cur_base + size) < end_of_ram) {
+		area = (void *)cur_base;
+		cur_base += _ALIGN_UP(size, MB);
+	}
+
+	return area;
+}
+
+void simple_alloc_init(void)
+{
+	platform_ops.malloc = simple_malloc;
+	platform_ops.free = NULL;
+}