bootwrapper: Add support for the DINK firmware
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
@@ -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; +}
Quoted 16 lines · Mark A. Greer
This patch adds the firmware operations that support the DINK firmware from Freescale.
Signed-off-by Mark A. Greer <[email protected]>--
dink.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 56 insertions(+)--
arch/powerpc/boot/dink.c new file +0
-0
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
--
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
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
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.cis about the easiest one there will be.of.chas a slightly more complicatedfw_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
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.cis about the easiest one there will be.of.chas a slightly more complicatedfw_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.
Re: [PATCH 5/6] bootwrapper: Add simple memory allocator
In reply to Mark A. GreerThis 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
@@ -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 ; +}