ar71xx: add RouterBoot related helper routines
SVN-Revision: 33347
This commit is contained in:
parent
2323120d5e
commit
ccabe4a1b4
8 changed files with 145 additions and 18 deletions
|
@ -83,6 +83,7 @@ CONFIG_ATH79_MACH_WZR_HP_G450H=y
|
|||
CONFIG_ATH79_MACH_ZCN_1523H=y
|
||||
CONFIG_ATH79_NVRAM=y
|
||||
CONFIG_ATH79_PCI_ATH9K_FIXUP=y
|
||||
# CONFIG_ATH79_ROUTERBOOT is not set
|
||||
# CONFIG_ATH79_WDT is not set
|
||||
CONFIG_BCMA_POSSIBLE=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
|
100
target/linux/ar71xx/files/arch/mips/ath79/routerboot.c
Normal file
100
target/linux/ar71xx/files/arch/mips/ath79/routerboot.c
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* RouterBoot helper routines
|
||||
*
|
||||
* Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/routerboot.h>
|
||||
|
||||
#include "routerboot.h"
|
||||
|
||||
static u32 get_u32(void *buf)
|
||||
{
|
||||
u8 *p = buf;
|
||||
|
||||
return ((u32) p[3] + ((u32) p[2] << 8) + ((u32) p[1] << 16) +
|
||||
((u32) p[0] << 24));
|
||||
}
|
||||
|
||||
static u16 get_u16(void *buf)
|
||||
{
|
||||
u8 *p = buf;
|
||||
|
||||
return (u16) p[1] + ((u16) p[0] << 8);
|
||||
}
|
||||
|
||||
__init int
|
||||
routerboot_find_tag(u8 *buf, unsigned int buflen, u16 tag_id,
|
||||
u8 **tag_data, u16 *tag_len)
|
||||
{
|
||||
uint32_t magic;
|
||||
int ret;
|
||||
|
||||
if (buflen < 4)
|
||||
return -EINVAL;
|
||||
|
||||
magic = get_u32(buf);
|
||||
switch (magic) {
|
||||
case RB_MAGIC_HARD:
|
||||
/* skip magic value */
|
||||
buf += 4;
|
||||
buflen -= 4;
|
||||
break;
|
||||
|
||||
case RB_MAGIC_SOFT:
|
||||
if (buflen < 8)
|
||||
return -EINVAL;
|
||||
|
||||
/* skip magic and CRC value */
|
||||
buf += 8;
|
||||
buflen -= 8;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = -ENOENT;
|
||||
while (buflen > 2) {
|
||||
u16 id;
|
||||
u16 len;
|
||||
|
||||
len = get_u16(buf);
|
||||
buf += 2;
|
||||
buflen -= 2;
|
||||
|
||||
if (buflen < 2)
|
||||
break;
|
||||
|
||||
id = get_u16(buf);
|
||||
buf += 2;
|
||||
buflen -= 2;
|
||||
|
||||
if (id == RB_ID_TERMINATOR)
|
||||
break;
|
||||
|
||||
if (buflen < len)
|
||||
break;
|
||||
|
||||
if (id == tag_id) {
|
||||
if (tag_len)
|
||||
*tag_len = len;
|
||||
if (tag_data)
|
||||
*tag_data = buf;
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
buf += len;
|
||||
buflen -= len;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
26
target/linux/ar71xx/files/arch/mips/ath79/routerboot.h
Normal file
26
target/linux/ar71xx/files/arch/mips/ath79/routerboot.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* RouterBoot definitions
|
||||
*
|
||||
* Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _ATH79_ROUTERBOOT_H_
|
||||
#define _ATH79_ROUTERBOOT_H_
|
||||
|
||||
#ifdef CONFIG_ATH79_ROUTERBOOT
|
||||
int routerboot_find_tag(u8 *buf, unsigned int buflen, u16 tag_id,
|
||||
u8 **tag_data, u16 *tag_len);
|
||||
#else
|
||||
static inline int
|
||||
routerboot_find_tag(u8 *buf, unsigned int buflen, u16 tag_id,
|
||||
u8 **tag_data, u16 *tag_len)
|
||||
{
|
||||
return -ENOENT;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ATH79_ROUTERBOOT_H_ */
|
|
@ -21,7 +21,7 @@
|
|||
config PCI_AR724X
|
||||
def_bool n
|
||||
|
||||
@@ -125,4 +139,10 @@ config ATH79_DEV_WMAC
|
||||
@@ -125,4 +139,13 @@ config ATH79_DEV_WMAC
|
||||
depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X || SOC_QCA955X)
|
||||
def_bool n
|
||||
|
||||
|
@ -30,11 +30,14 @@
|
|||
+
|
||||
+config ATH79_PCI_ATH9K_FIXUP
|
||||
+ def_bool n
|
||||
+
|
||||
+config ATH79_ROUTERBOOT
|
||||
+ def_bool n
|
||||
+
|
||||
endif
|
||||
--- a/arch/mips/ath79/Makefile
|
||||
+++ b/arch/mips/ath79/Makefile
|
||||
@@ -17,13 +17,23 @@ obj-$(CONFIG_PCI) += pci.o
|
||||
@@ -17,13 +17,24 @@ obj-$(CONFIG_PCI) += pci.o
|
||||
# Devices
|
||||
#
|
||||
obj-y += dev-common.o
|
||||
|
@ -53,6 +56,7 @@
|
|||
+#
|
||||
+obj-$(CONFIG_ATH79_NVRAM) += nvram.o
|
||||
+obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o
|
||||
+obj-$(CONFIG_ATH79_ROUTERBOOT) += routerboot.o
|
||||
+
|
||||
+#
|
||||
# Machines
|
||||
|
|
|
@ -670,8 +670,8 @@
|
|||
def_bool n
|
||||
|
||||
config ATH79_DEV_GPIO_BUTTONS
|
||||
@@ -153,4 +667,7 @@ config ATH79_NVRAM
|
||||
config ATH79_PCI_ATH9K_FIXUP
|
||||
@@ -156,4 +670,7 @@ config ATH79_PCI_ATH9K_FIXUP
|
||||
config ATH79_ROUTERBOOT
|
||||
def_bool n
|
||||
|
||||
+config PCI_AR724X
|
||||
|
@ -680,7 +680,7 @@
|
|||
endif
|
||||
--- a/arch/mips/ath79/Makefile
|
||||
+++ b/arch/mips/ath79/Makefile
|
||||
@@ -36,9 +36,62 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
|
||||
@@ -37,9 +37,62 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route
|
||||
#
|
||||
# Machines
|
||||
#
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
select SOC_AR71XX
|
||||
--- a/arch/mips/ath79/Makefile
|
||||
+++ b/arch/mips/ath79/Makefile
|
||||
@@ -67,6 +67,7 @@ obj-$(CONFIG_ATH79_MACH_RB750) += mach-
|
||||
@@ -68,6 +68,7 @@ obj-$(CONFIG_ATH79_MACH_RB750) += mach-
|
||||
obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o
|
||||
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
||||
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
select SOC_AR724X
|
||||
--- a/arch/mips/ath79/Makefile
|
||||
+++ b/arch/mips/ath79/Makefile
|
||||
@@ -39,6 +39,7 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
|
||||
@@ -40,6 +40,7 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += route
|
||||
obj-$(CONFIG_ATH79_MACH_ALFA_AP96) += mach-alfa-ap96.o
|
||||
obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o
|
||||
obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--- a/arch/mips/ath79/Kconfig
|
||||
+++ b/arch/mips/ath79/Kconfig
|
||||
@@ -333,6 +333,11 @@ config ATH79_MACH_RB750
|
||||
select ATH79_DEV_AP9X_PCI if PCI
|
||||
@@ -334,6 +334,11 @@ config ATH79_MACH_RB750
|
||||
select ATH79_DEV_USB
|
||||
select RLE_DECOMPRESS
|
||||
|
||||
+config ATH79_MACH_RB2011
|
||||
+ bool "MikroTik RouterBOARD 2011 support"
|
||||
|
@ -22,11 +22,9 @@
|
|||
ATH79_MACH_RW2458N, /* Redwave RW2458N */
|
||||
ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
|
||||
ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */
|
||||
Index: linux-3.3.8/arch/mips/ath79/Makefile
|
||||
===================================================================
|
||||
--- linux-3.3.8.orig/arch/mips/ath79/Makefile
|
||||
+++ linux-3.3.8/arch/mips/ath79/Makefile
|
||||
@@ -65,6 +65,7 @@ obj-$(CONFIG_ATH79_MACH_PB44) += mach-p
|
||||
--- a/arch/mips/ath79/Makefile
|
||||
+++ b/arch/mips/ath79/Makefile
|
||||
@@ -66,6 +66,7 @@ obj-$(CONFIG_ATH79_MACH_PB44) += mach-p
|
||||
obj-$(CONFIG_ATH79_MACH_PB92) += mach-pb92.o
|
||||
obj-$(CONFIG_ATH79_MACH_RB4XX) += mach-rb4xx.o
|
||||
obj-$(CONFIG_ATH79_MACH_RB750) += mach-rb750.o
|
||||
|
@ -34,10 +32,8 @@ Index: linux-3.3.8/arch/mips/ath79/Makefile
|
|||
obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o
|
||||
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
||||
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
||||
Index: linux-3.3.8/arch/mips/ath79/prom.c
|
||||
===================================================================
|
||||
--- linux-3.3.8.orig/arch/mips/ath79/prom.c
|
||||
+++ linux-3.3.8/arch/mips/ath79/prom.c
|
||||
--- a/arch/mips/ath79/prom.c
|
||||
+++ b/arch/mips/ath79/prom.c
|
||||
@@ -181,7 +181,8 @@ void __init prom_init(void)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue