Commit | Line | Data |
---|---|---|
d4a67d9d GJ |
1 | /* |
2 | * Atheros AR71XX/AR724X/AR913X specific prom routines | |
3 | * | |
4 | * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> | |
5 | * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify it | |
8 | * under the terms of the GNU General Public License version 2 as published | |
9 | * by the Free Software Foundation. | |
10 | */ | |
11 | ||
12 | #include <linux/kernel.h> | |
13 | #include <linux/init.h> | |
14 | #include <linux/io.h> | |
15 | #include <linux/string.h> | |
16 | ||
17 | #include <asm/bootinfo.h> | |
18 | #include <asm/addrspace.h> | |
19 | ||
20 | #include "common.h" | |
21 | ||
22 | static inline int is_valid_ram_addr(void *addr) | |
23 | { | |
24 | if (((u32) addr > KSEG0) && | |
25 | ((u32) addr < (KSEG0 + ATH79_MEM_SIZE_MAX))) | |
26 | return 1; | |
27 | ||
28 | if (((u32) addr > KSEG1) && | |
29 | ((u32) addr < (KSEG1 + ATH79_MEM_SIZE_MAX))) | |
30 | return 1; | |
31 | ||
32 | return 0; | |
33 | } | |
34 | ||
35 | static __init void ath79_prom_init_cmdline(int argc, char **argv) | |
36 | { | |
37 | int i; | |
38 | ||
39 | if (!is_valid_ram_addr(argv)) | |
40 | return; | |
41 | ||
42 | for (i = 0; i < argc; i++) | |
43 | if (is_valid_ram_addr(argv[i])) { | |
44 | strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); | |
45 | strlcat(arcs_cmdline, argv[i], sizeof(arcs_cmdline)); | |
46 | } | |
47 | } | |
48 | ||
49 | void __init prom_init(void) | |
50 | { | |
51 | ath79_prom_init_cmdline(fw_arg0, (char **)fw_arg1); | |
52 | } | |
53 | ||
54 | void __init prom_free_prom_memory(void) | |
55 | { | |
56 | /* We do not have to prom memory to free */ | |
57 | } |