2014-11-07 11:47:12

by Alban

[permalink] [raw]
Subject: [PATCH 1/2] MIPS: ath79: Use the firmware lib to parse the kernel command line

No need to duplicate code that is available in the firmware library.
It also give us access to the firmware environment which is needed
to read the initrd address and size.

Signed-off-by: Alban Bedel <[email protected]>
---
arch/mips/ath79/prom.c | 30 ++----------------------------
1 file changed, 2 insertions(+), 28 deletions(-)

diff --git a/arch/mips/ath79/prom.c b/arch/mips/ath79/prom.c
index e9cbd7c..80a0bff 100644
--- a/arch/mips/ath79/prom.c
+++ b/arch/mips/ath79/prom.c
@@ -16,39 +16,13 @@

#include <asm/bootinfo.h>
#include <asm/addrspace.h>
+#include <asm/fw/fw.h>

#include "common.h"

-static inline int is_valid_ram_addr(void *addr)
-{
- if (((u32) addr > KSEG0) &&
- ((u32) addr < (KSEG0 + ATH79_MEM_SIZE_MAX)))
- return 1;
-
- if (((u32) addr > KSEG1) &&
- ((u32) addr < (KSEG1 + ATH79_MEM_SIZE_MAX)))
- return 1;
-
- return 0;
-}
-
-static __init void ath79_prom_init_cmdline(int argc, char **argv)
-{
- int i;
-
- if (!is_valid_ram_addr(argv))
- return;
-
- for (i = 0; i < argc; i++)
- if (is_valid_ram_addr(argv[i])) {
- strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline));
- strlcat(arcs_cmdline, argv[i], sizeof(arcs_cmdline));
- }
-}
-
void __init prom_init(void)
{
- ath79_prom_init_cmdline(fw_arg0, (char **)fw_arg1);
+ fw_init_cmdline();
}

void __init prom_free_prom_memory(void)
--
2.0.0


2014-11-07 11:48:22

by Alban

[permalink] [raw]
Subject: [PATCH 2/2] MIPS: ath79: Read the initrd address from the firmware environment

Allow loading an initrd passed by the firmware.

Signed-off-by: Alban Bedel <[email protected]>
---
arch/mips/ath79/prom.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/arch/mips/ath79/prom.c b/arch/mips/ath79/prom.c
index 80a0bff..e1fe630 100644
--- a/arch/mips/ath79/prom.c
+++ b/arch/mips/ath79/prom.c
@@ -13,6 +13,7 @@
#include <linux/init.h>
#include <linux/io.h>
#include <linux/string.h>
+#include <linux/initrd.h>

#include <asm/bootinfo.h>
#include <asm/addrspace.h>
@@ -23,6 +24,13 @@
void __init prom_init(void)
{
fw_init_cmdline();
+
+ /* Read the initrd address from the firmware environment */
+ initrd_start = fw_getenvl("initrd_start");
+ if (initrd_start) {
+ initrd_start = KSEG0ADDR(initrd_start);
+ initrd_end = initrd_start + fw_getenvl("initrd_size");
+ }
}

void __init prom_free_prom_memory(void)
--
2.0.0