mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-01 10:17:28 +03:00
ar71xx: add RouterBoot related helper routines
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33347 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
2622bc18da
commit
d0d14675bb
@ -83,6 +83,7 @@ CONFIG_ATH79_MACH_WZR_HP_G450H=y
|
|||||||
CONFIG_ATH79_MACH_ZCN_1523H=y
|
CONFIG_ATH79_MACH_ZCN_1523H=y
|
||||||
CONFIG_ATH79_NVRAM=y
|
CONFIG_ATH79_NVRAM=y
|
||||||
CONFIG_ATH79_PCI_ATH9K_FIXUP=y
|
CONFIG_ATH79_PCI_ATH9K_FIXUP=y
|
||||||
|
# CONFIG_ATH79_ROUTERBOOT is not set
|
||||||
# CONFIG_ATH79_WDT is not set
|
# CONFIG_ATH79_WDT is not set
|
||||||
CONFIG_BCMA_POSSIBLE=y
|
CONFIG_BCMA_POSSIBLE=y
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=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
|
config PCI_AR724X
|
||||||
def_bool n
|
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)
|
depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X || SOC_QCA955X)
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
@ -30,11 +30,14 @@
|
|||||||
+
|
+
|
||||||
+config ATH79_PCI_ATH9K_FIXUP
|
+config ATH79_PCI_ATH9K_FIXUP
|
||||||
+ def_bool n
|
+ def_bool n
|
||||||
|
+
|
||||||
|
+config ATH79_ROUTERBOOT
|
||||||
|
+ def_bool n
|
||||||
+
|
+
|
||||||
endif
|
endif
|
||||||
--- a/arch/mips/ath79/Makefile
|
--- a/arch/mips/ath79/Makefile
|
||||||
+++ b/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
|
# Devices
|
||||||
#
|
#
|
||||||
obj-y += dev-common.o
|
obj-y += dev-common.o
|
||||||
@ -53,6 +56,7 @@
|
|||||||
+#
|
+#
|
||||||
+obj-$(CONFIG_ATH79_NVRAM) += nvram.o
|
+obj-$(CONFIG_ATH79_NVRAM) += nvram.o
|
||||||
+obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o
|
+obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o
|
||||||
|
+obj-$(CONFIG_ATH79_ROUTERBOOT) += routerboot.o
|
||||||
+
|
+
|
||||||
+#
|
+#
|
||||||
# Machines
|
# Machines
|
||||||
|
@ -670,8 +670,8 @@
|
|||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
config ATH79_DEV_GPIO_BUTTONS
|
config ATH79_DEV_GPIO_BUTTONS
|
||||||
@@ -153,4 +667,7 @@ config ATH79_NVRAM
|
@@ -156,4 +670,7 @@ config ATH79_PCI_ATH9K_FIXUP
|
||||||
config ATH79_PCI_ATH9K_FIXUP
|
config ATH79_ROUTERBOOT
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
+config PCI_AR724X
|
+config PCI_AR724X
|
||||||
@ -680,7 +680,7 @@
|
|||||||
endif
|
endif
|
||||||
--- a/arch/mips/ath79/Makefile
|
--- a/arch/mips/ath79/Makefile
|
||||||
+++ b/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
|
# Machines
|
||||||
#
|
#
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
select SOC_AR71XX
|
select SOC_AR71XX
|
||||||
--- a/arch/mips/ath79/Makefile
|
--- a/arch/mips/ath79/Makefile
|
||||||
+++ b/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_RW2458N) += mach-rw2458n.o
|
||||||
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
||||||
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
select SOC_AR724X
|
select SOC_AR724X
|
||||||
--- a/arch/mips/ath79/Makefile
|
--- a/arch/mips/ath79/Makefile
|
||||||
+++ b/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_AP96) += mach-alfa-ap96.o
|
||||||
obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o
|
obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o
|
||||||
obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o
|
obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/arch/mips/ath79/Kconfig
|
--- a/arch/mips/ath79/Kconfig
|
||||||
+++ b/arch/mips/ath79/Kconfig
|
+++ b/arch/mips/ath79/Kconfig
|
||||||
@@ -333,6 +333,11 @@ config ATH79_MACH_RB750
|
@@ -334,6 +334,11 @@ config ATH79_MACH_RB750
|
||||||
select ATH79_DEV_AP9X_PCI if PCI
|
|
||||||
select ATH79_DEV_USB
|
select ATH79_DEV_USB
|
||||||
|
select RLE_DECOMPRESS
|
||||||
|
|
||||||
+config ATH79_MACH_RB2011
|
+config ATH79_MACH_RB2011
|
||||||
+ bool "MikroTik RouterBOARD 2011 support"
|
+ bool "MikroTik RouterBOARD 2011 support"
|
||||||
@ -22,11 +22,9 @@
|
|||||||
ATH79_MACH_RW2458N, /* Redwave RW2458N */
|
ATH79_MACH_RW2458N, /* Redwave RW2458N */
|
||||||
ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
|
ATH79_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
|
||||||
ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */
|
ATH79_MACH_TEW_673GRU, /* TRENDnet TEW-673GRU */
|
||||||
Index: linux-3.3.8/arch/mips/ath79/Makefile
|
--- a/arch/mips/ath79/Makefile
|
||||||
===================================================================
|
+++ b/arch/mips/ath79/Makefile
|
||||||
--- linux-3.3.8.orig/arch/mips/ath79/Makefile
|
@@ -66,6 +66,7 @@ obj-$(CONFIG_ATH79_MACH_PB44) += mach-p
|
||||||
+++ linux-3.3.8/arch/mips/ath79/Makefile
|
|
||||||
@@ -65,6 +65,7 @@ obj-$(CONFIG_ATH79_MACH_PB44) += mach-p
|
|
||||||
obj-$(CONFIG_ATH79_MACH_PB92) += mach-pb92.o
|
obj-$(CONFIG_ATH79_MACH_PB92) += mach-pb92.o
|
||||||
obj-$(CONFIG_ATH79_MACH_RB4XX) += mach-rb4xx.o
|
obj-$(CONFIG_ATH79_MACH_RB4XX) += mach-rb4xx.o
|
||||||
obj-$(CONFIG_ATH79_MACH_RB750) += mach-rb750.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_RW2458N) += mach-rw2458n.o
|
||||||
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
|
||||||
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
|
||||||
Index: linux-3.3.8/arch/mips/ath79/prom.c
|
--- a/arch/mips/ath79/prom.c
|
||||||
===================================================================
|
+++ b/arch/mips/ath79/prom.c
|
||||||
--- linux-3.3.8.orig/arch/mips/ath79/prom.c
|
|
||||||
+++ linux-3.3.8/arch/mips/ath79/prom.c
|
|
||||||
@@ -181,7 +181,8 @@ void __init prom_init(void)
|
@@ -181,7 +181,8 @@ void __init prom_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user