Initial commit

This commit is contained in:
domenico
2025-06-24 13:14:22 +02:00
commit 4002f145fc
9002 changed files with 1731834 additions and 0 deletions

View File

@@ -0,0 +1,213 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2008-2011 OpenWrt.org
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
DEVICE_VARS += LOADER_TYPE LOADER_FLASH_OFFS
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
DEVICE_VARS += SERCOMM_HWNAME SERCOMM_HWID SERCOMM_HWVER SERCOMM_SWVER
DEVICE_VARS += SERCOMM_PAD JCG_MAXSIZE
loadaddr-y := 0x80000000
loadaddr-$(CONFIG_TARGET_ramips_rt288x) := 0x88000000
loadaddr-$(CONFIG_TARGET_ramips_mt7621) := 0x80001000
ldrplatform-y := ralink
ldrplatform-$(CONFIG_TARGET_ramips_mt7621) := mt7621
ldrflashstart-y := 0x1c000000
ldrflashstart-$(CONFIG_TARGET_ramips_mt7621) := 0x1fc00000
KERNEL_LOADADDR := $(loadaddr-y)
LOADER_PLATFORM := $(ldrplatform-y)
LOADER_FLASH_START := $(ldrflashstart-y)
KERNEL_DTB = kernel-bin | append-dtb | lzma
define Build/edimax-header
$(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o $@.new $(1)
@mv $@.new $@
endef
define Build/jcg-header
$(STAGING_DIR_HOST)/bin/jcgimage -v $(1) \
$(if $(JCG_MAXSIZE), -m $$(($(subst k, * 1024,$(JCG_MAXSIZE)))),) \
-u $@ -o $@.new
mv $@.new $@
endef
define Build/loader-common
rm -rf $@.src
$(MAKE) -C lzma-loader \
PKG_BUILD_DIR="$@.src" \
TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
BOARD="$(BOARDNAME)" PLATFORM="$(LOADER_PLATFORM)" \
LZMA_TEXT_START=0x81800000 LOADADDR=$(KERNEL_LOADADDR) \
$(1) compile loader.$(LOADER_TYPE)
mv "$@.$(LOADER_TYPE)" "$@"
rm -rf $@.src
endef
define Build/loader-kernel
$(call Build/loader-common,LOADER_DATA="$@")
endef
define Build/loader-okli-compile
$(call Build/loader-common, \
FLASH_START=$(LOADER_FLASH_START) \
FLASH_OFFS=$(LOADER_FLASH_OFFS) \
FLASH_MAX=0 \
)
endef
define Build/append-loader-okli
cat "$(KDIR)/loader-$(word 1,$(1)).$(LOADER_TYPE)" >> "$@"
endef
# combine kernel and rootfs into one image
# mkdlinkfw <type> <optional extra arguments to mkdlinkfw binary>
define Build/mkdlinkfw
-$(STAGING_DIR_HOST)/bin/mkdlinkfw \
-k $(IMAGE_KERNEL) \
-r $(IMAGE_ROOTFS) \
-o $@ \
$(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
-s $(DLINK_FIRMWARE_SIZE)
endef
define Build/mkdlinkfw-factory
-$(STAGING_DIR_HOST)/bin/mkdlinkfw \
-m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
-F $@ \
-o $@.new \
$(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
-s $(DLINK_FIRMWARE_SIZE)
mv $@.new $@
endef
define Build/netis-tail
echo -n $(1) >> $@
echo -n $(UIMAGE_NAME)-yun | $(MKHASH) md5 | \
sed 's/../\\\\x&/g' | xargs echo -ne >> $@
endef
define Build/poray-header
$(STAGING_DIR_HOST)/bin/mkporayfw $(1) -f $@ -o $@.new
mv $@.new $@
endef
define Build/relocate-kernel
rm -rf $@.relocate
$(CP) ../../generic/image/relocate $@.relocate
$(MAKE) -C $@.relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
( \
dd if=$@.relocate/loader.bin bs=32 conv=sync && \
perl -e '@s = stat("$@"); print pack("V", @s[7])' && \
cat $@ \
) > $@.new
mv $@.new $@
rm -rf $@.relocate
endef
define Build/sercom-footer
$(call Build/sercom-seal,-f)
endef
define Build/sercom-seal
$(STAGING_DIR_HOST)/bin/mksercommfw \
-i $@ \
-b $(SERCOMM_HWID) \
-r $(SERCOMM_HWVER) \
-v $(SERCOMM_SWVER) \
$(1)
endef
define Build/sign-dlink-ru
sign_dlink_ru $@ $1 $2
mv $@.new $@
endef
define Build/trx
$(STAGING_DIR_HOST)/bin/trx $(1) \
-o $@ \
-m $$(($(subst k, * 1024,$(IMAGE_SIZE)))) \
-f $(IMAGE_KERNEL) \
-a 4 -f $(IMAGE_ROOTFS)
endef
define Build/uimage-padhdr
uimage_padhdr $(if $(1),-l $(1)) -i $@ -o $@.new
mv $@.new $@
endef
define Build/uimage-sgehdr
uimage_sgehdr -i $@ -o $@.new -m $(DEVICE_MODEL) \
-h $(DEVICE_VARIANT) -s V1.00000
mv $@.new $@
endef
define Build/umedia-header
fix-u-media-header -T 0x46 -B $(1) -i $@ -o $@.new && mv $@.new $@
endef
define Build/wrg-header
mkwrgimg -i $@ -d "/dev/mtdblock/2" -s $(1) -o $@.new
mv $@.new $@
endef
define Build/zyimage
$(STAGING_DIR_HOST)/bin/zyimage $(1) $@
endef
define Device/Default
PROFILES = Default
KERNEL := $(KERNEL_DTB) | uImage lzma
SOC := $(DEFAULT_SOC)
DEVICE_DTS_DIR := ../dts
DEVICE_DTS = $$(SOC)_$(1)
IMAGES := sysupgrade.bin
COMPILE :=
sysupgrade_bin := append-kernel | append-rootfs | pad-rootfs
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | check-size | append-metadata
endef
define Device/netgear_sercomm_nor
BLOCKSIZE := 64k
DEVICE_VENDOR := NETGEAR
IMAGES += factory.img
IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
pad-rootfs
IMAGE/sysupgrade.bin := $$(IMAGE/default) | check-size | append-metadata
IMAGE/factory.img := pad-extra $$$$(SERCOMM_PAD) | $$(IMAGE/default) | \
pad-to $$$$(BLOCKSIZE) | sercom-footer | pad-to 128 | \
zip $$$$(SERCOMM_HWNAME).bin | sercom-seal
endef
define Device/seama
BLOCKSIZE := 64k
SEAMA_MTDBLOCK := 2
IMAGES += factory.bin
# 64 bytes offset:
# - 28 bytes seama_header
# - 36 bytes of META data (4-bytes aligned)
IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
IMAGE/sysupgrade.bin := \
$$(IMAGE/default) | seama | pad-rootfs | check-size | append-metadata
IMAGE/factory.bin := \
$$(IMAGE/default) | pad-rootfs -x 64 | seama | seama-seal | check-size
SEAMA_SIGNATURE :=
endef
define Device/uimage-lzma-loader
LOADER_TYPE := bin
KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | uImage none
endef
include $(SUBTARGET).mk
$(eval $(call BuildImage))

View File

@@ -0,0 +1,44 @@
DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD
DEVICE_VARS += TPLINK_HVERSION TPLINK_BOARD_ID TPLINK_HEADER_VERSION
define Device/tplink-v1
DEVICE_VENDOR := TP-Link
TPLINK_FLASHLAYOUT :=
TPLINK_HWID :=
TPLINK_HWREV := 0x1
TPLINK_HEADER_VERSION := 1
KERNEL := $(KERNEL_DTB)
KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v1-header -e -O
IMAGES += factory.bin
IMAGE/factory.bin := tplink-v1-image factory -e -O
IMAGE/sysupgrade.bin := tplink-v1-image sysupgrade -e -O | check-size | \
append-metadata
endef
define Device/tplink-v2
DEVICE_VENDOR := TP-Link
TPLINK_FLASHLAYOUT :=
TPLINK_HWID :=
TPLINK_HWREV := 0x1
TPLINK_HWREVADD := 0x0
TPLINK_HVERSION := 3
KERNEL := $(KERNEL_DTB)
KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header -e
IMAGES += factory.bin
IMAGE/factory.bin := tplink-v2-image -e
IMAGE/sysupgrade.bin := tplink-v2-image -s -e | check-size | \
append-metadata
endef
define Device/tplink-safeloader
DEVICE_VENDOR := TP-Link
TPLINK_BOARD_ID :=
TPLINK_HWID := 0x0
TPLINK_HWREV := 0x0
TPLINK_HEADER_VERSION := 1
KERNEL := $(KERNEL_DTB) | tplink-v1-header -e -O
IMAGES += factory.bin
IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade | \
check-size | append-metadata
IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
endef

View File

@@ -0,0 +1,68 @@
#
# Copyright (C) 2011 OpenWrt.org
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
LZMA_TEXT_START := 0x80a00000
LOADER := loader.bin
LOADER_NAME := $(basename $(notdir $(LOADER)))
LOADER_DATA :=
TARGET_DIR :=
FLASH_START :=
FLASH_OFFS :=
FLASH_MAX :=
BOARD :=
PLATFORM :=
ifeq ($(TARGET_DIR),)
TARGET_DIR := $(KDIR)
endif
LOADER_BIN := $(TARGET_DIR)/$(LOADER_NAME).bin
LOADER_GZ := $(TARGET_DIR)/$(LOADER_NAME).gz
LOADER_ELF := $(TARGET_DIR)/$(LOADER_NAME).elf
PKG_NAME := lzma-loader
PKG_BUILD_DIR := $(KDIR)/$(PKG_NAME)
.PHONY : loader-compile loader.bin loader.elf loader.gz
$(PKG_BUILD_DIR)/.prepared:
mkdir $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
touch $@
loader-compile: $(PKG_BUILD_DIR)/.prepared
$(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE="$(TARGET_CROSS)" \
LZMA_TEXT_START=$(LZMA_TEXT_START) \
LOADER_DATA=$(LOADER_DATA) \
FLASH_START=$(FLASH_START) \
FLASH_OFFS=$(FLASH_OFFS) \
FLASH_MAX=$(FLASH_MAX) \
BOARD="$(BOARD)" \
PLATFORM="$(PLATFORM)" \
clean all
loader.gz: $(PKG_BUILD_DIR)/loader.bin
gzip -nc9 $< > $(LOADER_GZ)
loader.elf: $(PKG_BUILD_DIR)/loader.elf
$(CP) $< $(LOADER_ELF)
loader.bin: $(PKG_BUILD_DIR)/loader.bin
$(CP) $< $(LOADER_BIN)
download:
prepare: $(PKG_BUILD_DIR)/.prepared
compile: loader-compile
install:
clean:
rm -rf $(PKG_BUILD_DIR)

View File

@@ -0,0 +1,584 @@
/*
LzmaDecode.c
LZMA Decoder (optimized for Speed version)
LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
http://www.7-zip.org/
LZMA SDK is licensed under two licenses:
1) GNU Lesser General Public License (GNU LGPL)
2) Common Public License (CPL)
It means that you can select one of these two licenses and
follow rules of that license.
SPECIAL EXCEPTION:
Igor Pavlov, as the author of this Code, expressly permits you to
statically or dynamically link your Code (or bind by name) to the
interfaces of this file without subjecting your linked Code to the
terms of the CPL or GNU LGPL. Any modifications or additions
to this file, however, are subject to the LGPL or CPL terms.
*/
#include "LzmaDecode.h"
#define kNumTopBits 24
#define kTopValue ((UInt32)1 << kNumTopBits)
#define kNumBitModelTotalBits 11
#define kBitModelTotal (1 << kNumBitModelTotalBits)
#define kNumMoveBits 5
#define RC_READ_BYTE (*Buffer++)
#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
{ int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
#ifdef _LZMA_IN_CB
#define RC_TEST { if (Buffer == BufferLim) \
{ SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
#else
#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
#endif
#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
{ UpdateBit0(p); mi <<= 1; A0; } else \
{ UpdateBit1(p); mi = (mi + mi) + 1; A1; }
#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)
#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
{ int i = numLevels; res = 1; \
do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
res -= (1 << numLevels); }
#define kNumPosBitsMax 4
#define kNumPosStatesMax (1 << kNumPosBitsMax)
#define kLenNumLowBits 3
#define kLenNumLowSymbols (1 << kLenNumLowBits)
#define kLenNumMidBits 3
#define kLenNumMidSymbols (1 << kLenNumMidBits)
#define kLenNumHighBits 8
#define kLenNumHighSymbols (1 << kLenNumHighBits)
#define LenChoice 0
#define LenChoice2 (LenChoice + 1)
#define LenLow (LenChoice2 + 1)
#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
#define kNumStates 12
#define kNumLitStates 7
#define kStartPosModelIndex 4
#define kEndPosModelIndex 14
#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
#define kNumPosSlotBits 6
#define kNumLenToPosStates 4
#define kNumAlignBits 4
#define kAlignTableSize (1 << kNumAlignBits)
#define kMatchMinLen 2
#define IsMatch 0
#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
#define IsRepG0 (IsRep + kNumStates)
#define IsRepG1 (IsRepG0 + kNumStates)
#define IsRepG2 (IsRepG1 + kNumStates)
#define IsRep0Long (IsRepG2 + kNumStates)
#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
#define LenCoder (Align + kAlignTableSize)
#define RepLenCoder (LenCoder + kNumLenProbs)
#define Literal (RepLenCoder + kNumLenProbs)
#if Literal != LZMA_BASE_SIZE
StopCompilingDueBUG
#endif
int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size)
{
unsigned char prop0;
if (size < LZMA_PROPERTIES_SIZE)
return LZMA_RESULT_DATA_ERROR;
prop0 = propsData[0];
if (prop0 >= (9 * 5 * 5))
return LZMA_RESULT_DATA_ERROR;
{
for (propsRes->pb = 0; prop0 >= (9 * 5); propsRes->pb++, prop0 -= (9 * 5));
for (propsRes->lp = 0; prop0 >= 9; propsRes->lp++, prop0 -= 9);
propsRes->lc = prop0;
/*
unsigned char remainder = (unsigned char)(prop0 / 9);
propsRes->lc = prop0 % 9;
propsRes->pb = remainder / 5;
propsRes->lp = remainder % 5;
*/
}
#ifdef _LZMA_OUT_READ
{
int i;
propsRes->DictionarySize = 0;
for (i = 0; i < 4; i++)
propsRes->DictionarySize += (UInt32)(propsData[1 + i]) << (i * 8);
if (propsRes->DictionarySize == 0)
propsRes->DictionarySize = 1;
}
#endif
return LZMA_RESULT_OK;
}
#define kLzmaStreamWasFinishedId (-1)
int LzmaDecode(CLzmaDecoderState *vs,
#ifdef _LZMA_IN_CB
ILzmaInCallback *InCallback,
#else
const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
#endif
unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed)
{
CProb *p = vs->Probs;
SizeT nowPos = 0;
Byte previousByte = 0;
UInt32 posStateMask = (1 << (vs->Properties.pb)) - 1;
UInt32 literalPosMask = (1 << (vs->Properties.lp)) - 1;
int lc = vs->Properties.lc;
#ifdef _LZMA_OUT_READ
UInt32 Range = vs->Range;
UInt32 Code = vs->Code;
#ifdef _LZMA_IN_CB
const Byte *Buffer = vs->Buffer;
const Byte *BufferLim = vs->BufferLim;
#else
const Byte *Buffer = inStream;
const Byte *BufferLim = inStream + inSize;
#endif
int state = vs->State;
UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
int len = vs->RemainLen;
UInt32 globalPos = vs->GlobalPos;
UInt32 distanceLimit = vs->DistanceLimit;
Byte *dictionary = vs->Dictionary;
UInt32 dictionarySize = vs->Properties.DictionarySize;
UInt32 dictionaryPos = vs->DictionaryPos;
Byte tempDictionary[4];
#ifndef _LZMA_IN_CB
*inSizeProcessed = 0;
#endif
*outSizeProcessed = 0;
if (len == kLzmaStreamWasFinishedId)
return LZMA_RESULT_OK;
if (dictionarySize == 0)
{
dictionary = tempDictionary;
dictionarySize = 1;
tempDictionary[0] = vs->TempDictionary[0];
}
if (len == kLzmaNeedInitId)
{
{
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
UInt32 i;
for (i = 0; i < numProbs; i++)
p[i] = kBitModelTotal >> 1;
rep0 = rep1 = rep2 = rep3 = 1;
state = 0;
globalPos = 0;
distanceLimit = 0;
dictionaryPos = 0;
dictionary[dictionarySize - 1] = 0;
#ifdef _LZMA_IN_CB
RC_INIT;
#else
RC_INIT(inStream, inSize);
#endif
}
len = 0;
}
while(len != 0 && nowPos < outSize)
{
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
len--;
}
if (dictionaryPos == 0)
previousByte = dictionary[dictionarySize - 1];
else
previousByte = dictionary[dictionaryPos - 1];
#else /* if !_LZMA_OUT_READ */
int state = 0;
UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
int len = 0;
const Byte *Buffer;
const Byte *BufferLim;
UInt32 Range;
UInt32 Code;
#ifndef _LZMA_IN_CB
*inSizeProcessed = 0;
#endif
*outSizeProcessed = 0;
{
UInt32 i;
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
for (i = 0; i < numProbs; i++)
p[i] = kBitModelTotal >> 1;
}
#ifdef _LZMA_IN_CB
RC_INIT;
#else
RC_INIT(inStream, inSize);
#endif
#endif /* _LZMA_OUT_READ */
while(nowPos < outSize)
{
CProb *prob;
UInt32 bound;
int posState = (int)(
(nowPos
#ifdef _LZMA_OUT_READ
+ globalPos
#endif
)
& posStateMask);
prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
IfBit0(prob)
{
int symbol = 1;
UpdateBit0(prob)
prob = p + Literal + (LZMA_LIT_SIZE *
(((
(nowPos
#ifdef _LZMA_OUT_READ
+ globalPos
#endif
)
& literalPosMask) << lc) + (previousByte >> (8 - lc))));
if (state >= kNumLitStates)
{
int matchByte;
#ifdef _LZMA_OUT_READ
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
matchByte = dictionary[pos];
#else
matchByte = outStream[nowPos - rep0];
#endif
do
{
int bit;
CProb *probLit;
matchByte <<= 1;
bit = (matchByte & 0x100);
probLit = prob + 0x100 + bit + symbol;
RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
}
while (symbol < 0x100);
}
while (symbol < 0x100)
{
CProb *probLit = prob + symbol;
RC_GET_BIT(probLit, symbol)
}
previousByte = (Byte)symbol;
outStream[nowPos++] = previousByte;
#ifdef _LZMA_OUT_READ
if (distanceLimit < dictionarySize)
distanceLimit++;
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#endif
if (state < 4) state = 0;
else if (state < 10) state -= 3;
else state -= 6;
}
else
{
UpdateBit1(prob);
prob = p + IsRep + state;
IfBit0(prob)
{
UpdateBit0(prob);
rep3 = rep2;
rep2 = rep1;
rep1 = rep0;
state = state < kNumLitStates ? 0 : 3;
prob = p + LenCoder;
}
else
{
UpdateBit1(prob);
prob = p + IsRepG0 + state;
IfBit0(prob)
{
UpdateBit0(prob);
prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
IfBit0(prob)
{
#ifdef _LZMA_OUT_READ
UInt32 pos;
#endif
UpdateBit0(prob);
#ifdef _LZMA_OUT_READ
if (distanceLimit == 0)
#else
if (nowPos == 0)
#endif
return LZMA_RESULT_DATA_ERROR;
state = state < kNumLitStates ? 9 : 11;
#ifdef _LZMA_OUT_READ
pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
previousByte = dictionary[pos];
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#else
previousByte = outStream[nowPos - rep0];
#endif
outStream[nowPos++] = previousByte;
#ifdef _LZMA_OUT_READ
if (distanceLimit < dictionarySize)
distanceLimit++;
#endif
continue;
}
else
{
UpdateBit1(prob);
}
}
else
{
UInt32 distance;
UpdateBit1(prob);
prob = p + IsRepG1 + state;
IfBit0(prob)
{
UpdateBit0(prob);
distance = rep1;
}
else
{
UpdateBit1(prob);
prob = p + IsRepG2 + state;
IfBit0(prob)
{
UpdateBit0(prob);
distance = rep2;
}
else
{
UpdateBit1(prob);
distance = rep3;
rep3 = rep2;
}
rep2 = rep1;
}
rep1 = rep0;
rep0 = distance;
}
state = state < kNumLitStates ? 8 : 11;
prob = p + RepLenCoder;
}
{
int numBits, offset;
CProb *probLen = prob + LenChoice;
IfBit0(probLen)
{
UpdateBit0(probLen);
probLen = prob + LenLow + (posState << kLenNumLowBits);
offset = 0;
numBits = kLenNumLowBits;
}
else
{
UpdateBit1(probLen);
probLen = prob + LenChoice2;
IfBit0(probLen)
{
UpdateBit0(probLen);
probLen = prob + LenMid + (posState << kLenNumMidBits);
offset = kLenNumLowSymbols;
numBits = kLenNumMidBits;
}
else
{
UpdateBit1(probLen);
probLen = prob + LenHigh;
offset = kLenNumLowSymbols + kLenNumMidSymbols;
numBits = kLenNumHighBits;
}
}
RangeDecoderBitTreeDecode(probLen, numBits, len);
len += offset;
}
if (state < 4)
{
int posSlot;
state += kNumLitStates;
prob = p + PosSlot +
((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
kNumPosSlotBits);
RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
if (posSlot >= kStartPosModelIndex)
{
int numDirectBits = ((posSlot >> 1) - 1);
rep0 = (2 | ((UInt32)posSlot & 1));
if (posSlot < kEndPosModelIndex)
{
rep0 <<= numDirectBits;
prob = p + SpecPos + rep0 - posSlot - 1;
}
else
{
numDirectBits -= kNumAlignBits;
do
{
RC_NORMALIZE
Range >>= 1;
rep0 <<= 1;
if (Code >= Range)
{
Code -= Range;
rep0 |= 1;
}
}
while (--numDirectBits != 0);
prob = p + Align;
rep0 <<= kNumAlignBits;
numDirectBits = kNumAlignBits;
}
{
int i = 1;
int mi = 1;
do
{
CProb *prob3 = prob + mi;
RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
i <<= 1;
}
while(--numDirectBits != 0);
}
}
else
rep0 = posSlot;
if (++rep0 == (UInt32)(0))
{
/* it's for stream version */
len = kLzmaStreamWasFinishedId;
break;
}
}
len += kMatchMinLen;
#ifdef _LZMA_OUT_READ
if (rep0 > distanceLimit)
#else
if (rep0 > nowPos)
#endif
return LZMA_RESULT_DATA_ERROR;
#ifdef _LZMA_OUT_READ
if (dictionarySize - distanceLimit > (UInt32)len)
distanceLimit += len;
else
distanceLimit = dictionarySize;
#endif
do
{
#ifdef _LZMA_OUT_READ
UInt32 pos = dictionaryPos - rep0;
if (pos >= dictionarySize)
pos += dictionarySize;
previousByte = dictionary[pos];
dictionary[dictionaryPos] = previousByte;
if (++dictionaryPos == dictionarySize)
dictionaryPos = 0;
#else
previousByte = outStream[nowPos - rep0];
#endif
len--;
outStream[nowPos++] = previousByte;
}
while(len != 0 && nowPos < outSize);
}
}
RC_NORMALIZE;
#ifdef _LZMA_OUT_READ
vs->Range = Range;
vs->Code = Code;
vs->DictionaryPos = dictionaryPos;
vs->GlobalPos = globalPos + (UInt32)nowPos;
vs->DistanceLimit = distanceLimit;
vs->Reps[0] = rep0;
vs->Reps[1] = rep1;
vs->Reps[2] = rep2;
vs->Reps[3] = rep3;
vs->State = state;
vs->RemainLen = len;
vs->TempDictionary[0] = tempDictionary[0];
#endif
#ifdef _LZMA_IN_CB
vs->Buffer = Buffer;
vs->BufferLim = BufferLim;
#else
*inSizeProcessed = (SizeT)(Buffer - inStream);
#endif
*outSizeProcessed = nowPos;
return LZMA_RESULT_OK;
}

View File

@@ -0,0 +1,113 @@
/*
LzmaDecode.h
LZMA Decoder interface
LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
http://www.7-zip.org/
LZMA SDK is licensed under two licenses:
1) GNU Lesser General Public License (GNU LGPL)
2) Common Public License (CPL)
It means that you can select one of these two licenses and
follow rules of that license.
SPECIAL EXCEPTION:
Igor Pavlov, as the author of this code, expressly permits you to
statically or dynamically link your code (or bind by name) to the
interfaces of this file without subjecting your linked code to the
terms of the CPL or GNU LGPL. Any modifications or additions
to this file, however, are subject to the LGPL or CPL terms.
*/
#ifndef __LZMADECODE_H
#define __LZMADECODE_H
#include "LzmaTypes.h"
/* #define _LZMA_IN_CB */
/* Use callback for input data */
/* #define _LZMA_OUT_READ */
/* Use read function for output data */
/* #define _LZMA_PROB32 */
/* It can increase speed on some 32-bit CPUs,
but memory usage will be doubled in that case */
/* #define _LZMA_LOC_OPT */
/* Enable local speed optimizations inside code */
#ifdef _LZMA_PROB32
#define CProb UInt32
#else
#define CProb UInt16
#endif
#define LZMA_RESULT_OK 0
#define LZMA_RESULT_DATA_ERROR 1
#ifdef _LZMA_IN_CB
typedef struct _ILzmaInCallback
{
int (*Read)(void *object, const unsigned char **buffer, SizeT *bufferSize);
} ILzmaInCallback;
#endif
#define LZMA_BASE_SIZE 1846
#define LZMA_LIT_SIZE 768
#define LZMA_PROPERTIES_SIZE 5
typedef struct _CLzmaProperties
{
int lc;
int lp;
int pb;
#ifdef _LZMA_OUT_READ
UInt32 DictionarySize;
#endif
}CLzmaProperties;
int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size);
#define LzmaGetNumProbs(Properties) (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((Properties)->lc + (Properties)->lp)))
#define kLzmaNeedInitId (-2)
typedef struct _CLzmaDecoderState
{
CLzmaProperties Properties;
CProb *Probs;
#ifdef _LZMA_IN_CB
const unsigned char *Buffer;
const unsigned char *BufferLim;
#endif
#ifdef _LZMA_OUT_READ
unsigned char *Dictionary;
UInt32 Range;
UInt32 Code;
UInt32 DictionaryPos;
UInt32 GlobalPos;
UInt32 DistanceLimit;
UInt32 Reps[4];
int State;
int RemainLen;
unsigned char TempDictionary[4];
#endif
} CLzmaDecoderState;
#ifdef _LZMA_OUT_READ
#define LzmaDecoderInit(vs) { (vs)->RemainLen = kLzmaNeedInitId; }
#endif
int LzmaDecode(CLzmaDecoderState *vs,
#ifdef _LZMA_IN_CB
ILzmaInCallback *inCallback,
#else
const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
#endif
unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed);
#endif

View File

@@ -0,0 +1,45 @@
/*
LzmaTypes.h
Types for LZMA Decoder
This file written and distributed to public domain by Igor Pavlov.
This file is part of LZMA SDK 4.40 (2006-05-01)
*/
#ifndef __LZMATYPES_H
#define __LZMATYPES_H
#ifndef _7ZIP_BYTE_DEFINED
#define _7ZIP_BYTE_DEFINED
typedef unsigned char Byte;
#endif
#ifndef _7ZIP_UINT16_DEFINED
#define _7ZIP_UINT16_DEFINED
typedef unsigned short UInt16;
#endif
#ifndef _7ZIP_UINT32_DEFINED
#define _7ZIP_UINT32_DEFINED
#ifdef _LZMA_UINT32_IS_ULONG
typedef unsigned long UInt32;
#else
typedef unsigned int UInt32;
#endif
#endif
/* #define _LZMA_NO_SYSTEM_SIZE_T */
/* You can use it, if you don't want <stddef.h> */
#ifndef _7ZIP_SIZET_DEFINED
#define _7ZIP_SIZET_DEFINED
#ifdef _LZMA_NO_SYSTEM_SIZE_T
typedef UInt32 SizeT;
#else
#include <stddef.h>
typedef size_t SizeT;
#endif
#endif
#endif

View File

@@ -0,0 +1,114 @@
#
# Makefile for the LZMA compressed kernel loader for
# Atheros AR7XXX/AR9XXX based boards
#
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
#
# Some parts of this file was based on the OpenWrt specific lzma-loader
# for the BCM47xx and ADM5120 based boards:
# Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
# Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
# Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
#
# 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.
#
LOADADDR :=
LZMA_TEXT_START := 0x80a00000
LOADER_DATA :=
BOARD :=
FLASH_START :=
FLASH_OFFS :=
FLASH_MAX :=
PLATFORM :=
CACHE_FLAGS :=
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
include $(PLATFORM).mk
BIN_FLAGS := -O binary -R .reginfo -R .note -R .comment -R .mdebug \
-R .MIPS.abiflags -S
CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
-fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \
-mno-abicalls -fno-pic -ffunction-sections -pipe -mlong-calls \
-fno-common -ffreestanding -fhonour-copts -nostartfiles \
-mabi=32 -march=mips32r2 \
-Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap
CFLAGS += -D_LZMA_PROB32
CFLAGS += -flto
CFLAGS += $(CACHE_FLAGS)
ASFLAGS = $(CFLAGS) -D__ASSEMBLY__
LDFLAGS = -static -Wl,--gc-sections -Wl,-no-warn-mismatch
LDFLAGS += -Wl,-e,startup -T loader.lds -Wl,-Ttext,$(LZMA_TEXT_START)
LDFLAGS += -flto -fwhole-program -Wl,-z,max-page-size=4096
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
OBJECTS := head.o loader.o cache.o board-$(PLATFORM).o printf.o LzmaDecode.o
ifneq ($(strip $(LOADER_DATA)),)
OBJECTS += data.o
CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR)
endif
ifneq ($(strip $(KERNEL_CMDLINE)),)
CFLAGS += -DCONFIG_KERNEL_CMDLINE='"$(KERNEL_CMDLINE)"'
endif
ifneq ($(strip $(FLASH_START)),)
CFLAGS += -DCONFIG_FLASH_START=$(FLASH_START)
endif
ifneq ($(strip $(FLASH_OFFS)),)
CFLAGS += -DCONFIG_FLASH_OFFS=$(FLASH_OFFS)
endif
ifneq ($(strip $(FLASH_MAX)),)
CFLAGS += -DCONFIG_FLASH_MAX=$(FLASH_MAX)
endif
all: loader.elf
# Don't build dependencies, this may die if $(CC) isn't gcc
dep:
install:
%.o : %.c
$(CC) $(CFLAGS) -c -o $@ $<
%.o : %.S
$(CC) $(ASFLAGS) -c -o $@ $<
data.o: $(LOADER_DATA)
$(LD) -r -b binary --oformat $(O_FORMAT) -T lzma-data.lds -o $@ $<
loader: $(OBJECTS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
loader.bin: loader
$(OBJCOPY) $(BIN_FLAGS) $< $@
loader2.o: loader.bin
$(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $<
loader.elf: loader2.o
$(LD) -e startup -T loader2.lds -Ttext $(LOADADDR) -z max-page-size=4096 -o $@ $<
mrproper: clean
clean:
rm -f loader *.elf *.bin *.o

View File

@@ -0,0 +1,39 @@
/*
* Arch specific code for mt7621 based boards, based on code for Ralink boards
*
* Copyright (C) 2018 Tobias Schramm <tobleminer@gmail.com>
*
* 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 <stddef.h>
#include <stdint.h>
#include "config.h"
#define READREG(r) *(volatile uint32_t *)(r)
#define WRITEREG(r,v) *(volatile uint32_t *)(r) = v
#define KSEG1ADDR(_x) (((_x) & 0x1fffffff) | 0xa0000000)
#define UART_BASE 0xBE000C00
#define UART_TBR_OFFSET 0x00
#define UART_LSR_OFFSET 0x14
#define UART_LSR_TEMT (1 << 6)
#define UART_READ(r) READREG(UART_BASE + (r))
#define UART_WRITE(r,v) WRITEREG(UART_BASE + (r), (v))
void board_putc(int ch)
{
while (((UART_READ(UART_LSR_OFFSET)) & UART_LSR_TEMT) == 0);
UART_WRITE(UART_TBR_OFFSET, ch);
while (((UART_READ(UART_LSR_OFFSET)) & UART_LSR_TEMT) == 0);
}
void board_init(void)
{
}

View File

@@ -0,0 +1,42 @@
/*
* Arch specific code for Ralink based boards
*
* Copyright (C) 2013 John Crispin <blogic@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 <stddef.h>
#include "config.h"
#define READREG(r) *(volatile unsigned int *)(r)
#define WRITEREG(r,v) *(volatile unsigned int *)(r) = v
#define KSEG1ADDR(_x) (((_x) & 0x1fffffff) | 0xa0000000)
#ifdef CONFIG_SOC_RT288X
#define UART_BASE 0xb0300c00
#else
#define UART_BASE 0xb0000c00
#endif
#define UART_TX 1
#define UART_LSR 7
#define UART_LSR_THRE 0x20
#define UART_READ(r) READREG(UART_BASE + 4 * (r))
#define UART_WRITE(r,v) WRITEREG(UART_BASE + 4 * (r), (v))
void board_putc(int ch)
{
while (((UART_READ(UART_LSR)) & UART_LSR_THRE) == 0);
UART_WRITE(UART_TX, ch);
while (((UART_READ(UART_LSR)) & UART_LSR_THRE) == 0);
}
void board_init(void)
{
}

View File

@@ -0,0 +1,43 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* The cache manipulation routine has been taken from the U-Boot project.
* (C) Copyright 2003
* Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
*
* 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 "cache.h"
#include "cacheops.h"
#include "config.h"
#define cache_op(op,addr) \
__asm__ __volatile__( \
" .set push \n" \
" .set noreorder \n" \
" .set mips3\n\t \n" \
" cache %0, %1 \n" \
" .set pop \n" \
: \
: "i" (op), "R" (*(unsigned char *)(addr)))
void flush_cache(unsigned long start_addr, unsigned long size)
{
unsigned long lsize = CONFIG_CACHELINE_SIZE;
unsigned long addr = start_addr & ~(lsize - 1);
unsigned long aend = (start_addr + size - 1) & ~(lsize - 1);
while (1) {
cache_op(Hit_Writeback_Inv_D, addr);
cache_op(Hit_Invalidate_I, addr);
if (addr == aend)
break;
addr += lsize;
}
}

View File

@@ -0,0 +1,17 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 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 __CACHE_H
#define __CACHE_H
void flush_cache(unsigned long start_addr, unsigned long size);
#endif /* __CACHE_H */

View File

@@ -0,0 +1,85 @@
/*
* Cache operations for the cache instruction.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* (C) Copyright 1996, 97, 99, 2002, 03 Ralf Baechle
* (C) Copyright 1999 Silicon Graphics, Inc.
*/
#ifndef __ASM_CACHEOPS_H
#define __ASM_CACHEOPS_H
/*
* Cache Operations available on all MIPS processors with R4000-style caches
*/
#define Index_Invalidate_I 0x00
#define Index_Writeback_Inv_D 0x01
#define Index_Load_Tag_I 0x04
#define Index_Load_Tag_D 0x05
#define Index_Store_Tag_I 0x08
#define Index_Store_Tag_D 0x09
#if defined(CONFIG_CPU_LOONGSON2)
#define Hit_Invalidate_I 0x00
#else
#define Hit_Invalidate_I 0x10
#endif
#define Hit_Invalidate_D 0x11
#define Hit_Writeback_Inv_D 0x15
/*
* R4000-specific cacheops
*/
#define Create_Dirty_Excl_D 0x0d
#define Fill 0x14
#define Hit_Writeback_I 0x18
#define Hit_Writeback_D 0x19
/*
* R4000SC and R4400SC-specific cacheops
*/
#define Index_Invalidate_SI 0x02
#define Index_Writeback_Inv_SD 0x03
#define Index_Load_Tag_SI 0x06
#define Index_Load_Tag_SD 0x07
#define Index_Store_Tag_SI 0x0A
#define Index_Store_Tag_SD 0x0B
#define Create_Dirty_Excl_SD 0x0f
#define Hit_Invalidate_SI 0x12
#define Hit_Invalidate_SD 0x13
#define Hit_Writeback_Inv_SD 0x17
#define Hit_Writeback_SD 0x1b
#define Hit_Set_Virtual_SI 0x1e
#define Hit_Set_Virtual_SD 0x1f
/*
* R5000-specific cacheops
*/
#define R5K_Page_Invalidate_S 0x17
/*
* RM7000-specific cacheops
*/
#define Page_Invalidate_T 0x16
/*
* R10000-specific cacheops
*
* Cacheops 0x02, 0x06, 0x0a, 0x0c-0x0e, 0x16, 0x1a and 0x1e are unused.
* Most of the _S cacheops are identical to the R4000SC _SD cacheops.
*/
#define Index_Writeback_Inv_S 0x03
#define Index_Load_Tag_S 0x07
#define Index_Store_Tag_S 0x0B
#define Hit_Invalidate_S 0x13
#define Cache_Barrier 0x14
#define Hit_Writeback_Inv_S 0x17
#define Index_Load_Data_I 0x18
#define Index_Load_Data_D 0x19
#define Index_Load_Data_S 0x1b
#define Index_Store_Data_I 0x1c
#define Index_Store_Data_D 0x1d
#define Index_Store_Data_S 0x1f
#endif /* __ASM_CACHEOPS_H */

View File

@@ -0,0 +1,27 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 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 _CONFIG_H_
#define _CONFIG_H_
#ifndef CONFIG_FLASH_OFFS
#define CONFIG_FLASH_OFFS 0
#endif
#ifndef CONFIG_FLASH_MAX
#define CONFIG_FLASH_MAX 0
#endif
#ifndef CONFIG_FLASH_STEP
#define CONFIG_FLASH_STEP 0x1000
#endif
#endif /* _CONFIG_H_ */

View File

@@ -0,0 +1,39 @@
/*
* Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001 by Ralf Baechle
*
* Copyright (C) 2001, Monta Vista Software
* Author: jsun@mvista.com or jsun@junsun.net
*/
#ifndef _cp0regdef_h_
#define _cp0regdef_h_
#define CP0_INDEX $0
#define CP0_RANDOM $1
#define CP0_ENTRYLO0 $2
#define CP0_ENTRYLO1 $3
#define CP0_CONTEXT $4
#define CP0_PAGEMASK $5
#define CP0_WIRED $6
#define CP0_BADVADDR $8
#define CP0_COUNT $9
#define CP0_ENTRYHI $10
#define CP0_COMPARE $11
#define CP0_STATUS $12
#define CP0_CAUSE $13
#define CP0_EPC $14
#define CP0_PRID $15
#define CP0_CONFIG $16
#define CP0_LLADDR $17
#define CP0_WATCHLO $18
#define CP0_WATCHHI $19
#define CP0_XCONTEXT $20
#define CP0_FRAMEMASK $21
#define CP0_DIAGNOSTIC $22
#define CP0_PERFORMANCE $25
#define CP0_ECC $26
#define CP0_CACHEERR $27
#define CP0_TAGLO $28
#define CP0_TAGHI $29
#define CP0_ERROREPC $30
#endif

View File

@@ -0,0 +1,121 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* Some parts of this code was based on the OpenWrt specific lzma-loader
* for the BCM47xx and ADM5120 based boards:
* Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
* Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
*
* 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 <asm/asm.h>
#include <asm/regdef.h>
#include "cp0regdef.h"
#include "cacheops.h"
#include "config.h"
#define KSEG0 0x80000000
.macro ehb
sll zero, 3
.endm
.text
LEAF(startup)
.set noreorder
.set mips32
mtc0 zero, CP0_WATCHLO # clear watch registers
mtc0 zero, CP0_WATCHHI
mtc0 zero, CP0_CAUSE # clear before writing status register
mfc0 t0, CP0_STATUS
li t1, 0x1000001f
or t0, t1
xori t0, 0x1f
mtc0 t0, CP0_STATUS
ehb
mtc0 zero, CP0_COUNT
mtc0 zero, CP0_COMPARE
ehb
la t0, __reloc_label # get linked address of label
bal __reloc_label # branch and link to label to
nop # get actual address
__reloc_label:
subu t0, ra, t0 # get reloc_delta
beqz t0, __reloc_done # if delta is 0 we are in the right place
nop
/* Copy our code to the right place */
la t1, _code_start # get linked address of _code_start
la t2, _code_end # get linked address of _code_end
addu t0, t0, t1 # calculate actual address of _code_start
__reloc_copy:
lw t3, 0(t0)
sw t3, 0(t1)
add t1, 4
blt t1, t2, __reloc_copy
add t0, 4
/* flush cache */
la t0, _code_start
la t1, _code_end
li t2, ~(CONFIG_CACHELINE_SIZE - 1)
and t0, t2
and t1, t2
li t2, CONFIG_CACHELINE_SIZE
b __flush_check
nop
__flush_line:
cache Hit_Writeback_Inv_D, 0(t0)
cache Hit_Invalidate_I, 0(t0)
add t0, t2
__flush_check:
bne t0, t1, __flush_line
nop
sync
__reloc_done:
/* clear bss */
la t0, _bss_start
la t1, _bss_end
b __bss_check
nop
__bss_fill:
sw zero, 0(t0)
addi t0, 4
__bss_check:
bne t0, t1, __bss_fill
nop
/* Setup new "C" stack */
la sp, _stack
/* reserve stack space for a0-a3 registers */
subu sp, 16
/* jump to the decompressor routine */
la t0, loader_main
jr t0
nop
.set reorder
END(startup)

View File

@@ -0,0 +1 @@
CACHE_FLAGS+=-DCONFIG_ICACHE_SIZE="(32 * 1024)" -DCONFIG_DCACHE_SIZE="(32 * 1024)" -DCONFIG_CACHELINE_SIZE=32

View File

@@ -0,0 +1,262 @@
/*
* LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards
*
* Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
*
* Some parts of this code was based on the OpenWrt specific lzma-loader
* for the BCM47xx and ADM5120 based boards:
* Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
* Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
* Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
*
* The image_header structure has been taken from the U-Boot project.
* (C) Copyright 2008 Semihalf
* (C) Copyright 2000-2005
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* 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 <stddef.h>
#include <stdint.h>
#include <sys/types.h>
#include "config.h"
#include "cache.h"
#include "printf.h"
#include "LzmaDecode.h"
#define KSEG0 0x80000000
#define KSEG1 0xa0000000
#define KSEG1ADDR(a) ((((unsigned)(a)) & 0x1fffffffU) | KSEG1)
#undef LZMA_DEBUG
#ifdef LZMA_DEBUG
# define DBG(f, a...) printf(f, ## a)
#else
# define DBG(f, a...) do {} while (0)
#endif
#define IH_MAGIC_OKLI 0x4f4b4c49 /* 'OKLI' */
#define IH_NMLEN 32 /* Image Name Length */
typedef struct image_header {
uint32_t ih_magic; /* Image Header Magic Number */
uint32_t ih_hcrc; /* Image Header CRC Checksum */
uint32_t ih_time; /* Image Creation Timestamp */
uint32_t ih_size; /* Image Data Size */
uint32_t ih_load; /* Data Load Address */
uint32_t ih_ep; /* Entry Point Address */
uint32_t ih_dcrc; /* Image Data CRC Checksum */
uint8_t ih_os; /* Operating System */
uint8_t ih_arch; /* CPU architecture */
uint8_t ih_type; /* Image Type */
uint8_t ih_comp; /* Compression Type */
uint8_t ih_name[IH_NMLEN]; /* Image Name */
} image_header_t;
/* beyond the image end, size not known in advance */
extern unsigned char workspace[];
extern void board_init(void);
static CLzmaDecoderState lzma_state;
static unsigned char *lzma_data;
static unsigned long lzma_datasize;
static unsigned long lzma_outsize;
static unsigned long kernel_la;
#ifdef CONFIG_KERNEL_CMDLINE
#define kernel_argc 2
static const char kernel_cmdline[] = CONFIG_KERNEL_CMDLINE;
static const char *kernel_argv[] = {
NULL,
kernel_cmdline,
NULL,
};
#endif /* CONFIG_KERNEL_CMDLINE */
static void halt(void)
{
printf("\nSystem halted!\n");
for(;;);
}
static __inline__ unsigned long get_be32(void *buf)
{
unsigned char *p = buf;
return (((unsigned long) p[0] << 24) +
((unsigned long) p[1] << 16) +
((unsigned long) p[2] << 8) +
(unsigned long) p[3]);
}
static __inline__ unsigned char lzma_get_byte(void)
{
unsigned char c;
lzma_datasize--;
c = *lzma_data++;
return c;
}
static int lzma_init_props(void)
{
unsigned char props[LZMA_PROPERTIES_SIZE];
int res;
int i;
/* read lzma properties */
for (i = 0; i < LZMA_PROPERTIES_SIZE; i++)
props[i] = lzma_get_byte();
/* read the lower half of uncompressed size in the header */
lzma_outsize = ((SizeT) lzma_get_byte()) +
((SizeT) lzma_get_byte() << 8) +
((SizeT) lzma_get_byte() << 16) +
((SizeT) lzma_get_byte() << 24);
/* skip rest of the header (upper half of uncompressed size) */
for (i = 0; i < 4; i++)
lzma_get_byte();
res = LzmaDecodeProperties(&lzma_state.Properties, props,
LZMA_PROPERTIES_SIZE);
return res;
}
static int lzma_decompress(unsigned char *outStream)
{
SizeT ip, op;
int ret;
lzma_state.Probs = (CProb *) workspace;
ret = LzmaDecode(&lzma_state, lzma_data, lzma_datasize, &ip, outStream,
lzma_outsize, &op);
if (ret != LZMA_RESULT_OK) {
int i;
DBG("LzmaDecode error %d at %08x, osize:%d ip:%d op:%d\n",
ret, lzma_data + ip, lzma_outsize, ip, op);
for (i = 0; i < 16; i++)
DBG("%02x ", lzma_data[ip + i]);
DBG("\n");
}
return ret;
}
#if (LZMA_WRAPPER)
static void lzma_init_data(void)
{
extern unsigned char _lzma_data_start[];
extern unsigned char _lzma_data_end[];
kernel_la = LOADADDR;
lzma_data = _lzma_data_start;
lzma_datasize = _lzma_data_end - _lzma_data_start;
}
#else
static void lzma_init_data(void)
{
struct image_header *hdr = NULL;
unsigned char *flash_base;
unsigned long flash_ofs;
unsigned long kernel_ofs;
unsigned long kernel_size;
flash_base = (unsigned char *) KSEG1ADDR(CONFIG_FLASH_START);
printf("Looking for OpenWrt image... ");
for (flash_ofs = CONFIG_FLASH_OFFS;
flash_ofs <= (CONFIG_FLASH_OFFS + CONFIG_FLASH_MAX);
flash_ofs += CONFIG_FLASH_STEP) {
unsigned long magic;
unsigned char *p;
p = flash_base + flash_ofs;
magic = get_be32(p);
if (magic == IH_MAGIC_OKLI) {
hdr = (struct image_header *) p;
break;
}
}
if (hdr == NULL) {
printf("not found!\n");
halt();
}
printf("found at 0x%08x\n", flash_base + flash_ofs);
kernel_ofs = sizeof(struct image_header);
kernel_size = get_be32(&hdr->ih_size);
kernel_la = get_be32(&hdr->ih_load);
lzma_data = flash_base + flash_ofs + kernel_ofs;
lzma_datasize = kernel_size;
}
#endif /* (LZMA_WRAPPER) */
void loader_main(unsigned long reg_a0, unsigned long reg_a1,
unsigned long reg_a2, unsigned long reg_a3)
{
void (*kernel_entry) (unsigned long, unsigned long, unsigned long,
unsigned long);
int res;
board_init();
printf("\n\nOpenWrt kernel loader for MIPS based SoC\n");
printf("Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>\n");
lzma_init_data();
res = lzma_init_props();
if (res != LZMA_RESULT_OK) {
printf("Incorrect LZMA stream properties!\n");
halt();
}
printf("Decompressing kernel... ");
res = lzma_decompress((unsigned char *) kernel_la);
if (res != LZMA_RESULT_OK) {
printf("failed, ");
switch (res) {
case LZMA_RESULT_DATA_ERROR:
printf("data error!\n");
break;
default:
printf("unknown error %d!\n", res);
}
halt();
} else {
printf("done!\n");
}
flush_cache(kernel_la, lzma_outsize);
printf("Starting kernel at %08x...\n\n", kernel_la);
#ifdef CONFIG_KERNEL_CMDLINE
reg_a0 = kernel_argc;
reg_a1 = (unsigned long) kernel_argv;
reg_a2 = 0;
reg_a3 = 0;
#endif
kernel_entry = (void *) kernel_la;
kernel_entry(reg_a0, reg_a1, reg_a2, reg_a3);
}

View File

@@ -0,0 +1,35 @@
OUTPUT_ARCH(mips)
SECTIONS {
.text : {
_code_start = .;
*(.text)
*(.text.*)
*(.rodata)
*(.rodata.*)
*(.data.lzma)
}
. = ALIGN(32);
.data : {
*(.data)
*(.data.*)
. = . + 524288; /* workaround for buggy bootloaders */
}
. = ALIGN(32);
_code_end = .;
_bss_start = .;
.bss : {
*(.bss)
*(.bss.*)
}
. = ALIGN(32);
_bss_end = .;
. = . + 8192;
_stack = .;
workspace = .;
}

View File

@@ -0,0 +1,10 @@
OUTPUT_ARCH(mips)
SECTIONS {
.text : {
startup = .;
*(.text)
*(.text.*)
*(.data)
*(.data.*)
}
}

View File

@@ -0,0 +1,8 @@
OUTPUT_ARCH(mips)
SECTIONS {
.data.lzma : {
_lzma_data_start = .;
*(.data)
_lzma_data_end = .;
}
}

View File

@@ -0,0 +1 @@
CACHE_FLAGS+=-DCONFIG_ICACHE_SIZE="(32 * 1024)" -DCONFIG_DCACHE_SIZE="(16 * 1024)" -DCONFIG_CACHELINE_SIZE=32

View File

@@ -0,0 +1,350 @@
/*
* Copyright (C) 2001 MontaVista Software Inc.
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
*/
#include "printf.h"
extern void board_putc(int ch);
/* this is the maximum width for a variable */
#define LP_MAX_BUF 256
/* macros */
#define IsDigit(x) ( ((x) >= '0') && ((x) <= '9') )
#define Ctod(x) ( (x) - '0')
/* forward declaration */
static int PrintChar(char *, char, int, int);
static int PrintString(char *, char *, int, int);
static int PrintNum(char *, unsigned long, int, int, int, int, char, int);
/* private variable */
static const char theFatalMsg[] = "fatal error in lp_Print!";
/* -*-
* A low level printf() function.
*/
static void
lp_Print(void (*output)(void *, char *, int),
void * arg,
char *fmt,
va_list ap)
{
#define OUTPUT(arg, s, l) \
{ if (((l) < 0) || ((l) > LP_MAX_BUF)) { \
(*output)(arg, (char*)theFatalMsg, sizeof(theFatalMsg)-1); for(;;); \
} else { \
(*output)(arg, s, l); \
} \
}
char buf[LP_MAX_BUF];
char c;
char *s;
long int num;
int longFlag;
int negFlag;
int width;
int prec;
int ladjust;
char padc;
int length;
for(;;) {
{
/* scan for the next '%' */
char *fmtStart = fmt;
while ( (*fmt != '\0') && (*fmt != '%')) {
fmt ++;
}
/* flush the string found so far */
OUTPUT(arg, fmtStart, fmt-fmtStart);
/* are we hitting the end? */
if (*fmt == '\0') break;
}
/* we found a '%' */
fmt ++;
/* check for long */
if (*fmt == 'l') {
longFlag = 1;
fmt ++;
} else {
longFlag = 0;
}
/* check for other prefixes */
width = 0;
prec = -1;
ladjust = 0;
padc = ' ';
if (*fmt == '-') {
ladjust = 1;
fmt ++;
}
if (*fmt == '0') {
padc = '0';
fmt++;
}
if (IsDigit(*fmt)) {
while (IsDigit(*fmt)) {
width = 10 * width + Ctod(*fmt++);
}
}
if (*fmt == '.') {
fmt ++;
if (IsDigit(*fmt)) {
prec = 0;
while (IsDigit(*fmt)) {
prec = prec*10 + Ctod(*fmt++);
}
}
}
/* check format flag */
negFlag = 0;
switch (*fmt) {
case 'b':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 2, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'd':
case 'D':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
if (num < 0) {
num = - num;
negFlag = 1;
}
length = PrintNum(buf, num, 10, negFlag, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'o':
case 'O':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 8, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'u':
case 'U':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 10, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'x':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 0);
OUTPUT(arg, buf, length);
break;
case 'X':
if (longFlag) {
num = va_arg(ap, long int);
} else {
num = va_arg(ap, int);
}
length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 1);
OUTPUT(arg, buf, length);
break;
case 'c':
c = (char)va_arg(ap, int);
length = PrintChar(buf, c, width, ladjust);
OUTPUT(arg, buf, length);
break;
case 's':
s = (char*)va_arg(ap, char *);
length = PrintString(buf, s, width, ladjust);
OUTPUT(arg, buf, length);
break;
case '\0':
fmt --;
break;
default:
/* output this char as it is */
OUTPUT(arg, fmt, 1);
} /* switch (*fmt) */
fmt ++;
} /* for(;;) */
/* special termination call */
OUTPUT(arg, "\0", 1);
}
/* --------------- local help functions --------------------- */
static int
PrintChar(char * buf, char c, int length, int ladjust)
{
int i;
if (length < 1) length = 1;
if (ladjust) {
*buf = c;
for (i=1; i< length; i++) buf[i] = ' ';
} else {
for (i=0; i< length-1; i++) buf[i] = ' ';
buf[length - 1] = c;
}
return length;
}
static int
PrintString(char * buf, char* s, int length, int ladjust)
{
int i;
int len=0;
char* s1 = s;
while (*s1++) len++;
if (length < len) length = len;
if (ladjust) {
for (i=0; i< len; i++) buf[i] = s[i];
for (i=len; i< length; i++) buf[i] = ' ';
} else {
for (i=0; i< length-len; i++) buf[i] = ' ';
for (i=length-len; i < length; i++) buf[i] = s[i-length+len];
}
return length;
}
static int
PrintNum(char * buf, unsigned long u, int base, int negFlag,
int length, int ladjust, char padc, int upcase)
{
/* algorithm :
* 1. prints the number from left to right in reverse form.
* 2. fill the remaining spaces with padc if length is longer than
* the actual length
* TRICKY : if left adjusted, no "0" padding.
* if negtive, insert "0" padding between "0" and number.
* 3. if (!ladjust) we reverse the whole string including paddings
* 4. otherwise we only reverse the actual string representing the num.
*/
int actualLength =0;
char *p = buf;
int i;
do {
int tmp = u %base;
if (tmp <= 9) {
*p++ = '0' + tmp;
} else if (upcase) {
*p++ = 'A' + tmp - 10;
} else {
*p++ = 'a' + tmp - 10;
}
u /= base;
} while (u != 0);
if (negFlag) {
*p++ = '-';
}
/* figure out actual length and adjust the maximum length */
actualLength = p - buf;
if (length < actualLength) length = actualLength;
/* add padding */
if (ladjust) {
padc = ' ';
}
if (negFlag && !ladjust && (padc == '0')) {
for (i = actualLength-1; i< length-1; i++) buf[i] = padc;
buf[length -1] = '-';
} else {
for (i = actualLength; i< length; i++) buf[i] = padc;
}
/* prepare to reverse the string */
{
int begin = 0;
int end;
if (ladjust) {
end = actualLength - 1;
} else {
end = length -1;
}
while (end > begin) {
char tmp = buf[begin];
buf[begin] = buf[end];
buf[end] = tmp;
begin ++;
end --;
}
}
/* adjust the string pointer */
return length;
}
static void printf_output(void *arg, char *s, int l)
{
int i;
// special termination call
if ((l==1) && (s[0] == '\0')) return;
for (i=0; i< l; i++) {
board_putc(s[i]);
if (s[i] == '\n') board_putc('\r');
}
}
void printf(char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
lp_Print(printf_output, 0, fmt, ap);
va_end(ap);
}

View File

@@ -0,0 +1,18 @@
/*
* Copyright (C) 2001 MontaVista Software Inc.
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
*/
#ifndef _printf_h_
#define _printf_h_
#include <stdarg.h>
void printf(char *fmt, ...);
#endif /* _printf_h_ */

View File

@@ -0,0 +1 @@
CACHE_FLAGS+=-DCONFIG_ICACHE_SIZE="(32 * 1024)" -DCONFIG_DCACHE_SIZE="(16 * 1024)" -DCONFIG_CACHELINE_SIZE=32

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,861 @@
#
# MT76x8 Profiles
#
include ./common-tp-link.mk
DEFAULT_SOC := mt7628an
define Build/elecom-header
$(eval model_id=$(1))
( \
fw_size="$$(printf '%08x' $$(stat -c%s $@))"; \
echo -ne "$$(echo "031d6129$${fw_size}06000000$(model_id)" | \
sed 's/../\\x&/g')"; \
dd if=/dev/zero bs=92 count=1; \
data_crc="$$(dd if=$@ | gzip -c | tail -c 8 | \
od -An -N4 -tx4 --endian little | tr -d ' \n')"; \
echo -ne "$$(echo "$${data_crc}00000000" | sed 's/../\\x&/g')"; \
dd if=$@; \
) > $@.new
mv $@.new $@
endef
define Build/ravpower-wd009-factory
mkimage -A mips -T standalone -C none -a 0x80010000 -e 0x80010000 \
-n "OpenWrt Bootloader" -d $(UBOOT_PATH) $@.new
cat $@ >> $@.new
@mv $@.new $@
endef
define Device/alfa-network_awusfree1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := ALFA Network
DEVICE_MODEL := AWUSFREE1
DEVICE_PACKAGES := uboot-envtools
SUPPORTED_DEVICES += awusfree1
endef
TARGET_DEVICES += alfa-network_awusfree1
define Device/asus_rt-n10p-v3
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Asus
DEVICE_MODEL := RT-N10P
DEVICE_VARIANT := V3
endef
TARGET_DEVICES += asus_rt-n10p-v3
define Device/asus_rt-n11p-b1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Asus
DEVICE_MODEL := RT-N11P
DEVICE_VARIANT := B1
endef
TARGET_DEVICES += asus_rt-n11p-b1
define Device/asus_rt-n12-vp-b1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Asus
DEVICE_MODEL := RT-N12 VP
DEVICE_VARIANT := B1
endef
TARGET_DEVICES += asus_rt-n12-vp-b1
define Device/buffalo_wcr-1166ds
IMAGE_SIZE := 7936k
BUFFALO_TAG_PLATFORM := MTK
BUFFALO_TAG_VERSION := 9.99
BUFFALO_TAG_MINOR := 9.99
IMAGES += factory.bin
IMAGE/sysupgrade.bin := trx | pad-rootfs | append-metadata
IMAGE/factory.bin := trx -M 0x746f435c | pad-rootfs | append-metadata | \
buffalo-enc WCR-1166DS $$(BUFFALO_TAG_VERSION) -l | \
buffalo-tag-dhp WCR-1166DS JP JP | buffalo-enc-tag -l | buffalo-dhp-image
DEVICE_VENDOR := Buffalo
DEVICE_MODEL := WCR-1166DS
DEVICE_PACKAGES := kmod-mt76x2
SUPPORTED_DEVICES += wcr-1166ds
endef
TARGET_DEVICES += buffalo_wcr-1166ds
define Device/cudy_wr1000
IMAGE_SIZE := 7872k
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | check-size | jcg-header 92.122
JCG_MAXSIZE := 7872k
DEVICE_VENDOR := Cudy
DEVICE_MODEL := WR1000
DEVICE_PACKAGES := kmod-mt76x2
SUPPORTED_DEVICES += wr1000
endef
TARGET_DEVICES += cudy_wr1000
define Device/d-team_pbr-d1
IMAGE_SIZE := 16064k
DEVICE_VENDOR := PandoraBox
DEVICE_MODEL := PBR-D1
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
SUPPORTED_DEVICES += pbr-d1
endef
TARGET_DEVICES += d-team_pbr-d1
define Device/dlink_dap-1325-a1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DAP-1325 A1
endef
TARGET_DEVICES += dlink_dap-1325-a1
define Device/duzun_dm06
IMAGE_SIZE := 7872k
DEVICE_VENDOR := DuZun
DEVICE_MODEL := DM06
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += duzun-dm06
endef
TARGET_DEVICES += duzun_dm06
define Device/elecom_wrc-1167fs
IMAGE_SIZE := 7360k
DEVICE_VENDOR := ELECOM
DEVICE_MODEL := WRC-1167FS
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | pad-to 64k | check-size | \
xor-image -p 29944A25 -x | elecom-header 00228000 | \
elecom-product-header WRC-1167FS
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += elecom_wrc-1167fs
define Device/glinet_gl-mt300n-v2
IMAGE_SIZE := 16064k
DEVICE_VENDOR := GL.iNet
DEVICE_MODEL := GL-MT300N
DEVICE_VARIANT := V2
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
SUPPORTED_DEVICES += gl-mt300n-v2
endef
TARGET_DEVICES += glinet_gl-mt300n-v2
define Device/glinet_microuter-n300
IMAGE_SIZE := 16064k
DEVICE_VENDOR := GL.iNet
DEVICE_MODEL := microuter-N300
SUPPORTED_DEVICES += microuter-n300
endef
TARGET_DEVICES += glinet_microuter-n300
define Device/glinet_vixmini
IMAGE_SIZE := 7872k
DEVICE_VENDOR := GL.iNet
DEVICE_MODEL := VIXMINI
SUPPORTED_DEVICES += vixmini
endef
TARGET_DEVICES += glinet_vixmini
define Device/hak5_wifi-pineapple-mk7
IMAGE_SIZE := 32448k
DEVICE_VENDOR := Hak5
DEVICE_MODEL := WiFi Pineapple Mark 7
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
SUPPORTED_DEVICES += wifi-pineapple-mk7
endef
TARGET_DEVICES += hak5_wifi-pineapple-mk7
define Device/hilink_hlk-7628n
IMAGE_SIZE := 32448k
DEVICE_VENDOR := HILINK
DEVICE_MODEL := HLK-7628N
endef
TARGET_DEVICES += hilink_hlk-7628n
define Device/hilink_hlk-7688a
IMAGE_SIZE := 32448k
DEVICE_VENDOR := Hi-Link
DEVICE_MODEL := HLK-7688A
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
endef
TARGET_DEVICES += hilink_hlk-7688a
define Device/hiwifi_hc5661a
IMAGE_SIZE := 15808k
DEVICE_VENDOR := HiWiFi
DEVICE_MODEL := HC5661A
SUPPORTED_DEVICES += hc5661a
endef
TARGET_DEVICES += hiwifi_hc5661a
define Device/hiwifi_hc5761a
IMAGE_SIZE := 15808k
DEVICE_VENDOR := HiWiFi
DEVICE_MODEL := HC5761A
DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += hiwifi_hc5761a
define Device/hiwifi_hc5861b
IMAGE_SIZE := 15808k
DEVICE_VENDOR := HiWiFi
DEVICE_MODEL := HC5861B
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += hiwifi_hc5861b
define Device/iptime_a3
IMAGE_SIZE := 7936k
UIMAGE_NAME := a3
DEVICE_VENDOR := ipTIME
DEVICE_MODEL := A3
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += iptime_a3
define Device/iptime_a604m
IMAGE_SIZE := 7936k
UIMAGE_NAME := a604m
DEVICE_VENDOR := ipTIME
DEVICE_MODEL := A604M
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += iptime_a604m
define Device/jotale_js76x8
DEVICE_VENDOR := Jotale
DEVICE_MODEL := JS76x8
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
define Device/jotale_js76x8-8m
$(Device/jotale_js76x8)
IMAGE_SIZE := 7872k
DEVICE_VARIANT := 8M
endef
TARGET_DEVICES += jotale_js76x8-8m
define Device/jotale_js76x8-16m
$(Device/jotale_js76x8)
IMAGE_SIZE := 16064k
DEVICE_VARIANT := 16M
endef
TARGET_DEVICES += jotale_js76x8-16m
define Device/jotale_js76x8-32m
$(Device/jotale_js76x8)
IMAGE_SIZE := 32448k
DEVICE_VARIANT := 32M
endef
TARGET_DEVICES += jotale_js76x8-32m
define Device/mediatek_linkit-smart-7688
IMAGE_SIZE := 32448k
DEVICE_VENDOR := MediaTek
DEVICE_MODEL := LinkIt Smart 7688
DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-sdhci-mt7620
SUPPORTED_DEVICES += linkits7688 linkits7688d
endef
TARGET_DEVICES += mediatek_linkit-smart-7688
define Device/mediatek_mt7628an-eval-board
BLOCKSIZE := 64k
IMAGE_SIZE := 7872k
DEVICE_VENDOR := MediaTek
DEVICE_MODEL := MT7628 EVB
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += mt7628
endef
TARGET_DEVICES += mediatek_mt7628an-eval-board
define Device/mercury_mac1200r-v2
IMAGE_SIZE := 7936k
DEVICE_VENDOR := Mercury
DEVICE_MODEL := MAC1200R
DEVICE_VARIANT := v2.0
DEVICE_PACKAGES := kmod-mt76x2
SUPPORTED_DEVICES += mac1200rv2
endef
TARGET_DEVICES += mercury_mac1200r-v2
define Device/minew_g1-c
IMAGE_SIZE := 15744k
DEVICE_VENDOR := Minew
DEVICE_MODEL := G1-C
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport kmod-usb-serial-cp210x
SUPPORTED_DEVICES += minew-g1c
endef
TARGET_DEVICES += minew_g1-c
define Device/motorola_mwr03
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Motorola
DEVICE_MODEL := MWR03
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += motorola_mwr03
define Device/netgear_r6020
$(Device/netgear_sercomm_nor)
IMAGE_SIZE := 7104k
DEVICE_MODEL := R6020
DEVICE_PACKAGES := kmod-mt76x2
SERCOMM_HWNAME := R6020
SERCOMM_HWID := CFR
SERCOMM_HWVER := A001
SERCOMM_SWVER := 0x0040
SERCOMM_PAD := 576k
endef
TARGET_DEVICES += netgear_r6020
define Device/netgear_r6080
$(Device/netgear_sercomm_nor)
IMAGE_SIZE := 7552k
DEVICE_MODEL := R6080
DEVICE_PACKAGES := kmod-mt76x2
SERCOMM_HWNAME := R6080
SERCOMM_HWID := CFR
SERCOMM_HWVER := A001
SERCOMM_SWVER := 0x0040
SERCOMM_PAD := 576k
endef
TARGET_DEVICES += netgear_r6080
define Device/netgear_r6120
$(Device/netgear_sercomm_nor)
IMAGE_SIZE := 15744k
DEVICE_MODEL := R6120
DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci
SERCOMM_HWNAME := R6120
SERCOMM_HWID := CGQ
SERCOMM_HWVER := A001
SERCOMM_SWVER := 0x0040
SERCOMM_PAD := 576k
endef
TARGET_DEVICES += netgear_r6120
define Device/onion_omega2
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Onion
DEVICE_MODEL := Omega2
DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools
SUPPORTED_DEVICES += omega2
endef
TARGET_DEVICES += onion_omega2
define Device/onion_omega2p
IMAGE_SIZE := 32448k
DEVICE_VENDOR := Onion
DEVICE_MODEL := Omega2+
DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci uboot-envtools kmod-sdhci-mt7620
SUPPORTED_DEVICES += omega2p
endef
TARGET_DEVICES += onion_omega2p
define Device/rakwireless_rak633
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Rakwireless
DEVICE_MODEL := RAK633
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += rakwireless_rak633
define Device/ravpower_rp-wd009
IMAGE_SIZE := 14272k
DEVICE_VENDOR := RAVPower
DEVICE_MODEL := RP-WD009
UBOOT_PATH := $(STAGING_DIR_IMAGE)/ravpower_rp-wd009-u-boot.bin
DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci \
kmod-sdhci-mt7620 kmod-i2c-mt7628 ravpower-mcu
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | ravpower-wd009-factory
endef
TARGET_DEVICES += ravpower_rp-wd009
define Device/skylab_skw92a
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Skylab
DEVICE_MODEL := SKW92A
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += skylab_skw92a
define Device/tama_w06
IMAGE_SIZE := 15040k
DEVICE_VENDOR := Tama
DEVICE_MODEL := W06
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += tama_w06
define Device/totolink_a3
IMAGE_SIZE := 7936k
UIMAGE_NAME := za3
DEVICE_VENDOR := TOTOLINK
DEVICE_MODEL := A3
DEVICE_PACKAGES := kmod-mt76x2
endef
TARGET_DEVICES += totolink_a3
define Device/totolink_lr1200
IMAGE_SIZE := 7872k
DEVICE_VENDOR := TOTOLINK
DEVICE_MODEL := LR1200
DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 uqmi
endef
TARGET_DEVICES += totolink_lr1200
define Device/tplink_archer-c20-v4
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := Archer C20
DEVICE_VARIANT := v4
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0xc200004
TPLINK_HWREVADD := 0x4
DEVICE_PACKAGES := kmod-mt76x0e
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
SUPPORTED_DEVICES += tplink,c20-v4
endef
TARGET_DEVICES += tplink_archer-c20-v4
define Device/tplink_archer-c20-v5
$(Device/tplink-v2)
IMAGE_SIZE := 7616k
DEVICE_MODEL := Archer C20
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 8MSUmtk
TPLINK_HWID := 0xc200005
TPLINK_HWREVADD := 0x5
DEVICE_PACKAGES := kmod-mt76x0e
IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += tplink_archer-c20-v5
define Device/tplink_archer-c50-v3
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := Archer C50
DEVICE_VARIANT := v3
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x001D9BA4
TPLINK_HWREV := 0x79
TPLINK_HWREVADD := 0x1
DEVICE_PACKAGES := kmod-mt76x2
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
SUPPORTED_DEVICES += tplink,c50-v3
endef
TARGET_DEVICES += tplink_archer-c50-v3
define Device/tplink_archer-c50-v4
$(Device/tplink-v2)
IMAGE_SIZE := 7616k
DEVICE_MODEL := Archer C50
DEVICE_VARIANT := v4
TPLINK_FLASHLAYOUT := 8MSUmtk
TPLINK_HWID := 0x001D589B
TPLINK_HWREV := 0x93
TPLINK_HWREVADD := 0x2
DEVICE_PACKAGES := kmod-mt76x2
IMAGES := sysupgrade.bin
SUPPORTED_DEVICES += tplink,c50-v4
endef
TARGET_DEVICES += tplink_archer-c50-v4
define Device/tplink_re200-v2
$(Device/tplink-safeloader)
IMAGE_SIZE := 7808k
DEVICE_MODEL := RE200
DEVICE_VARIANT := v2
DEVICE_PACKAGES := kmod-mt76x0e
TPLINK_BOARD_ID := RE200-V2
endef
TARGET_DEVICES += tplink_re200-v2
define Device/tplink_re200-v3
$(Device/tplink-safeloader)
IMAGE_SIZE := 7808k
DEVICE_MODEL := RE200
DEVICE_VARIANT := v3
DEVICE_PACKAGES := kmod-mt76x0e
TPLINK_BOARD_ID := RE200-V3
endef
TARGET_DEVICES += tplink_re200-v3
define Device/tplink_re200-v4
$(Device/tplink-safeloader)
IMAGE_SIZE := 7808k
DEVICE_MODEL := RE200
DEVICE_VARIANT := v4
DEVICE_PACKAGES := kmod-mt76x0e
TPLINK_BOARD_ID := RE200-V4
endef
TARGET_DEVICES += tplink_re200-v4
define Device/tplink_re220-v2
$(Device/tplink-safeloader)
IMAGE_SIZE := 7808k
DEVICE_MODEL := RE220
DEVICE_VARIANT := v2
DEVICE_PACKAGES := kmod-mt76x0e
TPLINK_BOARD_ID := RE220-V2
endef
TARGET_DEVICES += tplink_re220-v2
define Device/tplink_re305-v1
$(Device/tplink-safeloader)
IMAGE_SIZE := 6016k
DEVICE_MODEL := RE305
DEVICE_VARIANT := v1
DEVICE_PACKAGES := kmod-mt76x2
TPLINK_BOARD_ID := RE305-V1
endef
TARGET_DEVICES += tplink_re305-v1
define Device/tplink_tl-mr3020-v3
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-MR3020
DEVICE_VARIANT := v3
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x30200003
TPLINK_HWREV := 0x3
TPLINK_HWREVADD := 0x3
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-mr3020-v3
define Device/tplink_tl-mr3420-v5
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-MR3420
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x34200005
TPLINK_HWREV := 0x5
TPLINK_HWREVADD := 0x5
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-mr3420-v5
define Device/tplink_tl-mr6400-v4
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-MR6400
DEVICE_VARIANT := v4
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x64000004
TPLINK_HWREV := 0x4
TPLINK_HWREVADD := 0x4
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
kmod-usb-serial-option kmod-usb-net-qmi-wwan uqmi
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-mr6400-v4
define Device/tplink_tl-mr6400-v5
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-MR6400
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x64000005
TPLINK_HWREV := 0x5
TPLINK_HWREVADD := 0x5
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
kmod-usb-serial-option kmod-usb-net-qmi-wwan uqmi
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-mr6400-v5
define Device/tplink_tl-wa801nd-v5
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WA801ND
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08010005
TPLINK_HWREVADD := 0x5
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-wa801nd-v5
define Device/tplink_tl-wr802n-v4
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR802N
DEVICE_VARIANT := v4
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08020004
TPLINK_HWREVADD := 0x4
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-wr802n-v4
define Device/tplink_tl-wr840n-v4
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR840N
DEVICE_VARIANT := v4
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08400004
TPLINK_HWREVADD := 0x4
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
SUPPORTED_DEVICES += tl-wr840n-v4
endef
TARGET_DEVICES += tplink_tl-wr840n-v4
define Device/tplink_tl-wr840n-v5
$(Device/tplink-v2)
IMAGE_SIZE := 3904k
DEVICE_MODEL := TL-WR840N
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 4Mmtk
TPLINK_HWID := 0x08400005
TPLINK_HWREVADD := 0x5
IMAGES := sysupgrade.bin
SUPPORTED_DEVICES += tl-wr840n-v5
DEFAULT := n
endef
TARGET_DEVICES += tplink_tl-wr840n-v5
define Device/tplink_tl-wr841n-v13
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR841N
DEVICE_VARIANT := v13
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08410013
TPLINK_HWREV := 0x268
TPLINK_HWREVADD := 0x13
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
SUPPORTED_DEVICES += tl-wr841n-v13
endef
TARGET_DEVICES += tplink_tl-wr841n-v13
define Device/tplink_tl-wr841n-v14
$(Device/tplink-v2)
IMAGE_SIZE := 3968k
DEVICE_MODEL := TL-WR841N
DEVICE_VARIANT := v14
TPLINK_FLASHLAYOUT := 4MLmtk
TPLINK_HWID := 0x08410014
TPLINK_HWREVADD := 0x14
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 64k | $$(IMAGE/factory.bin)
DEFAULT := n
endef
TARGET_DEVICES += tplink_tl-wr841n-v14
define Device/tplink_tl-wr842n-v5
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR842N
DEVICE_VARIANT := v5
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08420005
TPLINK_HWREV := 0x5
TPLINK_HWREVADD := 0x5
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-wr842n-v5
define Device/tplink_tl-wr850n-v2
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR850N
DEVICE_VARIANT := v2
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x08500002
TPLINK_HWREVADD := 0x2
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-wr850n-v2
define Device/tplink_tl-wr902ac-v3
$(Device/tplink-v2)
IMAGE_SIZE := 7808k
DEVICE_MODEL := TL-WR902AC
DEVICE_VARIANT := v3
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0x000dc88f
TPLINK_HWREV := 0x89
TPLINK_HWREVADD := 0x1
DEVICE_PACKAGES := kmod-mt76x0e kmod-usb2 kmod-usb-ohci \
kmod-usb-ledtrig-usbport
IMAGES := sysupgrade.bin tftp-recovery.bin
IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
endef
TARGET_DEVICES += tplink_tl-wr902ac-v3
define Device/unielec_u7628-01-16m
IMAGE_SIZE := 16064k
DEVICE_VENDOR := UniElec
DEVICE_MODEL := U7628-01
DEVICE_VARIANT := 16M
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += u7628-01-128M-16M unielec,u7628-01-128m-16m
endef
TARGET_DEVICES += unielec_u7628-01-16m
define Device/vocore_vocore2
IMAGE_SIZE := 16064k
DEVICE_VENDOR := VoCore
DEVICE_MODEL := VoCore2
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
kmod-sdhci-mt7620
SUPPORTED_DEVICES += vocore2
endef
TARGET_DEVICES += vocore_vocore2
define Device/vocore_vocore2-lite
IMAGE_SIZE := 7872k
DEVICE_VENDOR := VoCore
DEVICE_MODEL := VoCore2-Lite
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
kmod-sdhci-mt7620
SUPPORTED_DEVICES += vocore2lite
endef
TARGET_DEVICES += vocore_vocore2-lite
define Device/wavlink_wl-wn570ha1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Wavlink
DEVICE_MODEL := WL-WN570HA1
DEVICE_PACKAGES := kmod-mt76x0e
endef
TARGET_DEVICES += wavlink_wl-wn570ha1
define Device/wavlink_wl-wn575a3
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Wavlink
DEVICE_MODEL := WL-WN575A3
DEVICE_PACKAGES := kmod-mt76x2
SUPPORTED_DEVICES += wl-wn575a3
endef
TARGET_DEVICES += wavlink_wl-wn575a3
define Device/wavlink_wl-wn577a2
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Wavlink
DEVICE_MODEL := WL-WN577A2
DEVICE_ALT0_VENDOR := Maginon
DEVICE_ALT0_MODEL := WLR-755
DEVICE_PACKAGES := kmod-mt76x0e
endef
TARGET_DEVICES += wavlink_wl-wn577a2
define Device/wavlink_wl-wn578a2
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Wavlink
DEVICE_MODEL := WL-WN578A2
DEVICE_ALT0_VENDOR := SilverCrest
DEVICE_ALT0_MODEL := SWV 733 A2
DEVICE_PACKAGES := kmod-mt76x0e
endef
TARGET_DEVICES += wavlink_wl-wn578a2
define Device/widora_neo-16m
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Widora
DEVICE_MODEL := Widora-NEO
DEVICE_VARIANT := 16M
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
SUPPORTED_DEVICES += widora-neo
endef
TARGET_DEVICES += widora_neo-16m
define Device/widora_neo-32m
IMAGE_SIZE := 32448k
DEVICE_VENDOR := Widora
DEVICE_MODEL := Widora-NEO
DEVICE_VARIANT := 32M
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += widora_neo-32m
define Device/wiznet_wizfi630s
IMAGE_SIZE := 32448k
DEVICE_VENDOR := WIZnet
DEVICE_MODEL := WizFi630S
SUPPORTED_DEVICES += wizfi630s
endef
TARGET_DEVICES += wiznet_wizfi630s
define Device/wrtnode_wrtnode2p
IMAGE_SIZE := 32448k
DEVICE_VENDOR := WRTnode
DEVICE_MODEL := WRTnode 2P
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += wrtnode2p
endef
TARGET_DEVICES += wrtnode_wrtnode2p
define Device/wrtnode_wrtnode2r
IMAGE_SIZE := 32448k
DEVICE_VENDOR := WRTnode
DEVICE_MODEL := WRTnode 2R
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
SUPPORTED_DEVICES += wrtnode2r
endef
TARGET_DEVICES += wrtnode_wrtnode2r
define Device/xiaomi_mi-router-4a-100m
IMAGE_SIZE := 14976k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := Mi Router 4A
DEVICE_VARIANT := 100M Edition
DEVICE_PACKAGES := kmod-mt76x2
SUPPORTED_DEVICES += xiaomi,mir4a-100m
endef
TARGET_DEVICES += xiaomi_mi-router-4a-100m
define Device/xiaomi_mi-router-4c
IMAGE_SIZE := 14976k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := Mi Router 4C
DEVICE_PACKAGES := uboot-envtools
endef
TARGET_DEVICES += xiaomi_mi-router-4c
define Device/xiaomi_miwifi-nano
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Xiaomi
DEVICE_MODEL := MiWiFi Nano
DEVICE_PACKAGES := uboot-envtools
SUPPORTED_DEVICES += miwifi-nano
endef
TARGET_DEVICES += xiaomi_miwifi-nano
define Device/zbtlink_zbt-we1226
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Zbtlink
DEVICE_MODEL := ZBT-WE1226
endef
TARGET_DEVICES += zbtlink_zbt-we1226
define Device/zyxel_keenetic-extra-ii
IMAGE_SIZE := 14912k
BLOCKSIZE := 64k
DEVICE_VENDOR := ZyXEL
DEVICE_MODEL := Keenetic Extra II
DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci \
kmod-usb-ledtrig-usbport
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | pad-to $$$$(BLOCKSIZE) | \
check-size | zyimage -d 6162 -v "ZyXEL Keenetic Extra II"
endef
TARGET_DEVICES += zyxel_keenetic-extra-ii

View File

@@ -0,0 +1,108 @@
#
# RT288X Profiles
#
DEFAULT_SOC := rt2880
define Build/gemtek-header
if [ -f $@ ]; then \
mkheader_gemtek $@ $@.new $(1) && \
mv $@.new $@; \
fi
endef
define Device/airlink101_ar670w
BLOCKSIZE := 64k
DEVICE_VENDOR := Airlink
DEVICE_MODEL := AR670W
IMAGE_SIZE := 3840k
KERNEL := $(KERNEL_DTB) | pad-to $$(BLOCKSIZE)
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | check-size | \
wrg-header wrgn16a_airlink_ar670w
SUPPORTED_DEVICES += ar670w
DEFAULT := n
endef
TARGET_DEVICES += airlink101_ar670w
define Device/airlink101_ar725w
IMAGE_SIZE := 3776k
DEVICE_VENDOR := Airlink
DEVICE_MODEL := AR725W
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | check-size 3328k | \
gemtek-header ar725w
SUPPORTED_DEVICES += ar725w
DEFAULT := n
endef
TARGET_DEVICES += airlink101_ar725w
define Device/asus_rt-n15
BLOCKSIZE := 64k
IMAGE_SIZE := 3776k
DEVICE_VENDOR := Asus
DEVICE_MODEL := RT-N15
DEVICE_PACKAGES := kmod-switch-rtl8366s
SUPPORTED_DEVICES += rt-n15
DEFAULT := n
endef
TARGET_DEVICES += asus_rt-n15
define Device/belkin_f5d8235-v1
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Belkin
DEVICE_MODEL := F5D8235
DEVICE_VARIANT := V1
DEVICE_PACKAGES := kmod-switch-rtl8366s kmod-usb-ohci kmod-usb-ohci-pci \
kmod-usb2 kmod-usb2-pci kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += f5d8235-v1
endef
TARGET_DEVICES += belkin_f5d8235-v1
define Device/buffalo_wli-tx4-ag300n
BLOCKSIZE := 64k
IMAGE_SIZE := 3776k
DEVICE_VENDOR := Buffalo
DEVICE_MODEL := WLI-TX4-AG300N
DEVICE_PACKAGES := kmod-switch-ip17xx
SUPPORTED_DEVICES += wli-tx4-ag300n
DEFAULT := n
endef
TARGET_DEVICES += buffalo_wli-tx4-ag300n
define Device/buffalo_wzr-agl300nh
BLOCKSIZE := 64k
IMAGE_SIZE := 3776k
DEVICE_VENDOR := Buffalo
DEVICE_MODEL := WZR-AGL300NH
DEVICE_PACKAGES := kmod-switch-rtl8366s
SUPPORTED_DEVICES += wzr-agl300nh
DEFAULT := n
endef
TARGET_DEVICES += buffalo_wzr-agl300nh
define Device/dlink_dap-1522-a1
BLOCKSIZE := 64k
IMAGE_SIZE := 3712k
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DAP-1522
DEVICE_VARIANT := A1
DEVICE_PACKAGES := kmod-switch-rtl8366s
KERNEL := $(KERNEL_DTB)
IMAGES += factory.bin
IMAGE/factory.bin := append-kernel | pad-offset $$$$(BLOCKSIZE) 96 | \
append-rootfs | pad-rootfs -x 96 | wrg-header wapnd01_dlink_dap1522 | \
check-size
DEFAULT := n
endef
TARGET_DEVICES += dlink_dap-1522-a1
define Device/ralink_v11st-fe
BLOCKSIZE := 64k
IMAGE_SIZE := 3776k
DEVICE_VENDOR := Ralink
DEVICE_MODEL := V11ST-FE
SUPPORTED_DEVICES += v11st-fe
DEFAULT := n
endef
TARGET_DEVICES += ralink_v11st-fe

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,146 @@
#
# RT3662/RT3883 Profiles
#
define Build/mkrtn56uimg
$(STAGING_DIR_HOST)/bin/mkrtn56uimg $(1) $@
endef
define Device/asus_rt-n56u
SOC := rt3662
BLOCKSIZE := 64k
IMAGE_SIZE := 7872k
IMAGE/sysupgrade.bin += | mkrtn56uimg -s
DEVICE_VENDOR := Asus
DEVICE_MODEL := RT-N56U
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2
SUPPORTED_DEVICES += rt-n56u
endef
TARGET_DEVICES += asus_rt-n56u
define Device/belkin_f9k1109v1
SOC := rt3883
BLOCKSIZE := 64k
DEVICE_VENDOR := Belkin
DEVICE_MODEL := F9K1109
DEVICE_VARIANT := Version 1.0
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport
IMAGE_SIZE := 7808k
KERNEL := kernel-bin | append-dtb | lzma -d16 | uImage lzma
# Stock firmware checks for this uImage image name during upload.
UIMAGE_NAME := N750F9K1103VB
endef
TARGET_DEVICES += belkin_f9k1109v1
define Device/dlink_dir-645
$(Device/seama)
$(Device/uimage-lzma-loader)
SOC := rt3662
BLOCKSIZE := 4k
IMAGE_SIZE := 7872k
KERNEL := kernel-bin | append-dtb | lzma -d10
SEAMA_SIGNATURE := wrgn39_dlob.hans_dir645
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DIR-645
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2
SUPPORTED_DEVICES += dir-645
endef
TARGET_DEVICES += dlink_dir-645
define Device/edimax_br-6475nd
SOC := rt3662
BLOCKSIZE := 64k
IMAGE_SIZE := 7744k
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | \
edimax-header -s CSYS -m RN54 -f 0x70000 -S 0x01100000 | pad-rootfs | \
check-size | append-metadata
DEVICE_VENDOR := Edimax
DEVICE_MODEL := BR-6475nD
SUPPORTED_DEVICES += br-6475nd
endef
TARGET_DEVICES += edimax_br-6475nd
define Device/engenius_esr600h
$(Device/uimage-lzma-loader)
SOC := rt3662
BLOCKSIZE := 4k
IMAGE_SIZE := 7872k
IMAGES += factory.dlf
IMAGE/factory.dlf := $$(sysupgrade_bin) | check-size | \
senao-header -r 0x101 -p 0x44 -t 2
DEVICE_VENDOR := EnGenius
DEVICE_MODEL := ESR600H
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 uboot-envtools
endef
TARGET_DEVICES += engenius_esr600h
define Device/loewe_wmdr-143n
SOC := rt3662
BLOCKSIZE := 64k
IMAGE_SIZE := 7872k
DEVICE_VENDOR := Loewe
DEVICE_MODEL := WMDR-143N
SUPPORTED_DEVICES += wmdr-143n
endef
TARGET_DEVICES += loewe_wmdr-143n
define Device/omnima_hpm
SOC := rt3662
BLOCKSIZE := 64k
IMAGE_SIZE := 16064k
DEVICE_VENDOR := Omnima
DEVICE_MODEL := HPM
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2
SUPPORTED_DEVICES += hpm
endef
TARGET_DEVICES += omnima_hpm
define Device/samsung_cy-swr1100
$(Device/seama)
SOC := rt3662
IMAGE_SIZE := 7872k
KERNEL := $(KERNEL_DTB)
SEAMA_SIGNATURE := wrgnd10_samsung_ss815
DEVICE_VENDOR := Samsung
DEVICE_MODEL := CY-SWR1100
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport
SUPPORTED_DEVICES += cy-swr1100
endef
TARGET_DEVICES += samsung_cy-swr1100
define Device/sitecom_wlr-6000
SOC := rt3883
BLOCKSIZE := 4k
IMAGE_SIZE := 7244k
IMAGES += factory.dlf
IMAGE/factory.dlf := $$(sysupgrade_bin) | check-size | \
senao-header -r 0x0202 -p 0x41 -t 2
DEVICE_VENDOR := Sitecom
DEVICE_MODEL := WLR-6000
DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2
SUPPORTED_DEVICES += wlr-6000
endef
TARGET_DEVICES += sitecom_wlr-6000
define Device/trendnet_tew-691gr
SOC := rt3883
BLOCKSIZE := 64k
IMAGE_SIZE := 7872k
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | check-size | umedia-header 0x026910
DEVICE_VENDOR := TRENDnet
DEVICE_MODEL := TEW-691GR
SUPPORTED_DEVICES += tew-691gr
endef
TARGET_DEVICES += trendnet_tew-691gr
define Device/trendnet_tew-692gr
SOC := rt3883
BLOCKSIZE := 64k
IMAGE_SIZE := 7872k
IMAGES += factory.bin
IMAGE/factory.bin := $$(sysupgrade_bin) | check-size | umedia-header 0x026920
DEVICE_VENDOR := TRENDnet
DEVICE_MODEL := TEW-692GR
SUPPORTED_DEVICES += tew-692gr
endef
TARGET_DEVICES += trendnet_tew-692gr