mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
Merge branch 'develop'
This commit is contained in:
commit
041ba9bdf1
38 changed files with 7862 additions and 553 deletions
20
.github/workflows/stale.yml
vendored
Normal file
20
.github/workflows/stale.yml
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
name: Mark stale issues and pull requests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 19 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v3.0.10
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
stale-issue-message: "This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days"
|
||||||
|
stale-pr-message: 'It has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days'
|
||||||
|
days-before-stale: 120
|
||||||
|
days-before-close: 5
|
||||||
|
exempt-issue-labels: 'work-in-progress,enhancement'
|
||||||
|
exempt-pr-labels: 'work-in-progress,enhancement'
|
33
README.md
33
README.md
|
@ -38,39 +38,8 @@ dd bs=4M if=omr-*.img of=/dev/sdX conv=fsync
|
||||||
|
|
||||||
## Install from source
|
## Install from source
|
||||||
|
|
||||||
### Dependencies
|
[Create image](https://github.com/Ysurac/openmptcprouter/wiki/Create-image-for-unsupported-platform)
|
||||||
|
|
||||||
You need a classical build environment like `build-essential` on Debian and `git`.
|
|
||||||
Some feeds might not available over `git` but only via `subversion` or `mercurial`.
|
|
||||||
|
|
||||||
On Debian you'll need to install the following:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo apt install build-essential git unzip ncurses-dev libz-dev libssl-dev openssl-1.0-dev
|
|
||||||
python python3-dev python3.5 libelf-dev subversion gettext gawk wget curl rsync perl
|
|
||||||
```
|
|
||||||
|
|
||||||
### Prepare and build
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone https://github.com/ysurac/openmptcprouter.git
|
|
||||||
cd openmptcprouter
|
|
||||||
./build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
The script `build.sh` accepts all `make` arguments (like `-j`).
|
|
||||||
When finished, files are located in the directory `source/bin`.
|
|
||||||
|
|
||||||
### Custom arch build
|
|
||||||
|
|
||||||
By default the build script will create the packages for the `x86_64` architecture.
|
|
||||||
You can specify a custom build target by adding a `OMR_TARGET` environment variable to the build and the corresponding `config-$OMR_TARGET` file.
|
|
||||||
|
|
||||||
To build the project for the raspberry pi 3:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
OMR_TARGET="rpi3" ./build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
|
21
build.sh
21
build.sh
|
@ -31,7 +31,8 @@ OMR_TARGET=${OMR_TARGET:-x86_64}
|
||||||
OMR_TARGET_CONFIG="config-$OMR_TARGET"
|
OMR_TARGET_CONFIG="config-$OMR_TARGET"
|
||||||
OMR_KERNEL=${OMR_KERNEL:-5.4}
|
OMR_KERNEL=${OMR_KERNEL:-5.4}
|
||||||
#OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | sed 's/^\([0-9.]*\).*/\1/')}
|
#OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | sed 's/^\([0-9.]*\).*/\1/')}
|
||||||
OMR_RELEASE=${OMR_RELEASE:-$(git tag --sort=committerdate | tail -1)}
|
#OMR_RELEASE=${OMR_RELEASE:-$(git tag --sort=committerdate | tail -1)}
|
||||||
|
OMR_RELEASE=${OMR_RELEASE:-$(git describe --tags `git rev-list --tags --max-count=1` | tail -1)}
|
||||||
OMR_REPO=${OMR_REPO:-http://$OMR_HOST:$OMR_PORT/release/$OMR_RELEASE/$OMR_TARGET}
|
OMR_REPO=${OMR_REPO:-http://$OMR_HOST:$OMR_PORT/release/$OMR_RELEASE/$OMR_TARGET}
|
||||||
|
|
||||||
OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/ysurac/openmptcprouter-feeds}"
|
OMR_FEED_URL="${OMR_FEED_URL:-https://github.com/ysurac/openmptcprouter-feeds}"
|
||||||
|
@ -70,9 +71,9 @@ fi
|
||||||
|
|
||||||
#_get_repo source https://github.com/ysurac/openmptcprouter-source "master"
|
#_get_repo source https://github.com/ysurac/openmptcprouter-source "master"
|
||||||
if [ "$OMR_OPENWRT" = "default" ]; then
|
if [ "$OMR_OPENWRT" = "default" ]; then
|
||||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "18b7d87a8f76b4cf36e943d9211bd26d79f55ec6"
|
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "620f9c773413a0deaeda2bdc22d5e9cb89b9317f"
|
||||||
_get_repo feeds/packages https://github.com/openwrt/packages "1c67444c33d85cd74d3a68d1a251626342554f03"
|
_get_repo feeds/packages https://github.com/openwrt/packages "ed39c2f02e1f05c40161986c6d0581f7eba58bea"
|
||||||
_get_repo feeds/luci https://github.com/openwrt/luci "b2e00f23a7862f47b8bd975207ba8242b55e6cf0"
|
_get_repo feeds/luci https://github.com/openwrt/luci "6044084a61cdd95e390002cc6a908b33185d457d"
|
||||||
elif [ "$OMR_OPENWRT" = "master" ]; then
|
elif [ "$OMR_OPENWRT" = "master" ]; then
|
||||||
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master"
|
_get_repo "$OMR_TARGET/source" https://github.com/openwrt/openwrt "master"
|
||||||
_get_repo feeds/packages https://github.com/openwrt/packages "master"
|
_get_repo feeds/packages https://github.com/openwrt/packages "master"
|
||||||
|
@ -88,7 +89,7 @@ if [ -z "$OMR_FEED" ]; then
|
||||||
_get_repo "$OMR_FEED" "$OMR_FEED_URL" "$OMR_FEED_SRC"
|
_get_repo "$OMR_FEED" "$OMR_FEED_URL" "$OMR_FEED_SRC"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$CUSTOM_FEED_URL" ]; then
|
if [ -n "$CUSTOM_FEED_URL" ] && [ -z "$CUSTOM_FEED" ]; then
|
||||||
CUSTOM_FEED=feeds/${OMR_DIST}
|
CUSTOM_FEED=feeds/${OMR_DIST}
|
||||||
_get_repo "$CUSTOM_FEED" "$CUSTOM_FEED_URL" "master"
|
_get_repo "$CUSTOM_FEED" "$CUSTOM_FEED_URL" "master"
|
||||||
fi
|
fi
|
||||||
|
@ -156,7 +157,7 @@ if [ -f "$OMR_TARGET_CONFIG" ]; then
|
||||||
CONFIG_VERSIONOPT=y
|
CONFIG_VERSIONOPT=y
|
||||||
CONFIG_VERSION_DIST="$OMR_DIST"
|
CONFIG_VERSION_DIST="$OMR_DIST"
|
||||||
CONFIG_VERSION_REPO="$OMR_REPO"
|
CONFIG_VERSION_REPO="$OMR_REPO"
|
||||||
CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" describe --tag --always)"
|
CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)-$(git -C "$OMR_FEED" rev-parse --short HEAD)"
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
cat config -> "$OMR_TARGET/source/.config" <<-EOF
|
cat config -> "$OMR_TARGET/source/.config" <<-EOF
|
||||||
|
@ -164,7 +165,7 @@ else
|
||||||
CONFIG_VERSIONOPT=y
|
CONFIG_VERSIONOPT=y
|
||||||
CONFIG_VERSION_DIST="$OMR_DIST"
|
CONFIG_VERSION_DIST="$OMR_DIST"
|
||||||
CONFIG_VERSION_REPO="$OMR_REPO"
|
CONFIG_VERSION_REPO="$OMR_REPO"
|
||||||
CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" describe --tag --always)"
|
CONFIG_VERSION_NUMBER="$(git -C "$OMR_FEED" tag --sort=committerdate | tail -1)-$(git -C "$OMR_FEED" rev-parse --short HEAD)"
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
||||||
|
@ -258,6 +259,10 @@ if [ -f target/linux/mediatek/patches-5.4/0999-hnat.patch ]; then
|
||||||
rm -f target/linux/mediatek/patches-5.4/0999-hnat.patch
|
rm -f target/linux/mediatek/patches-5.4/0999-hnat.patch
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch ]; then
|
||||||
|
rm -f target/linux/ipq40xx/patches-5.4/100-GPIO-add-named-gpio-exports.patch
|
||||||
|
fi
|
||||||
|
|
||||||
#echo "Patch protobuf wrong hash"
|
#echo "Patch protobuf wrong hash"
|
||||||
#patch -N -R -p1 -s < ../../patches/protobuf_hash.patch
|
#patch -N -R -p1 -s < ../../patches/protobuf_hash.patch
|
||||||
#echo "Done"
|
#echo "Done"
|
||||||
|
@ -287,6 +292,8 @@ fi
|
||||||
|
|
||||||
echo "Update feeds index"
|
echo "Update feeds index"
|
||||||
rm -rf feeds/luci/modules/luci-mod-network
|
rm -rf feeds/luci/modules/luci-mod-network
|
||||||
|
[ -d feeds/${OMR_DIST}/luci-mod-status ] && rm -rf feeds/luci/modules/luci-mod-status
|
||||||
|
[ -d feeds/${OMR_DIST}/luci-app-statistics ] && rm -rf feeds/luci/applications/luci-app-statistics
|
||||||
|
|
||||||
cp .config .config.keep
|
cp .config .config.keep
|
||||||
scripts/feeds clean
|
scripts/feeds clean
|
||||||
|
|
46
config
46
config
|
@ -38,7 +38,7 @@ CONFIG_BUSYBOX_CONFIG_WATCH=y
|
||||||
# CONFIG_GDB is not set
|
# CONFIG_GDB is not set
|
||||||
CONFIG_GRUB_SERIAL=""
|
CONFIG_GRUB_SERIAL=""
|
||||||
CONFIG_GRUB_TIMEOUT="0"
|
CONFIG_GRUB_TIMEOUT="0"
|
||||||
CONFIG_GRUB_TITLE="OpenMPTCProuter"
|
CONFIG_GRUB_TITLE="antrouter"
|
||||||
CONFIG_KERNEL_AIO=y
|
CONFIG_KERNEL_AIO=y
|
||||||
CONFIG_KERNEL_DEBUG_GPIO=y
|
CONFIG_KERNEL_DEBUG_GPIO=y
|
||||||
# CONFIG_KERNEL_DEBUG_INFO is not set
|
# CONFIG_KERNEL_DEBUG_INFO is not set
|
||||||
|
@ -206,41 +206,23 @@ CONFIG_KERNEL_MPTCP_REDUNDANT=y
|
||||||
CONFIG_KERNEL_DEFAULT_SCHEDULER=y
|
CONFIG_KERNEL_DEFAULT_SCHEDULER=y
|
||||||
CONFIG_KERNEL_MPTCP=y
|
CONFIG_KERNEL_MPTCP=y
|
||||||
CONFIG_KERNEL_CRYPTO_SHA256=y
|
CONFIG_KERNEL_CRYPTO_SHA256=y
|
||||||
CONFIG_LUCI_LANG_hu=y
|
|
||||||
CONFIG_LUCI_LANG_pt=y
|
|
||||||
CONFIG_LUCI_LANG_sk=y
|
|
||||||
CONFIG_LUCI_LANG_ro=y
|
|
||||||
CONFIG_LUCI_LANG_en=y
|
|
||||||
CONFIG_LUCI_LANG_pl=y
|
|
||||||
CONFIG_LUCI_LANG_uk=y
|
|
||||||
CONFIG_LUCI_LANG_ja=y
|
|
||||||
CONFIG_LUCI_LANG_vi=y
|
|
||||||
CONFIG_LUCI_LANG_de=y
|
|
||||||
CONFIG_LUCI_LANG_no=y
|
|
||||||
CONFIG_LUCI_LANG_ms=y
|
|
||||||
CONFIG_LUCI_LANG_zh_Hans=y
|
CONFIG_LUCI_LANG_zh_Hans=y
|
||||||
CONFIG_LUCI_LANG_zh_Hant=y
|
CONFIG_LUCI_LANG_zh_Hant=y
|
||||||
CONFIG_LUCI_LANG_ko=y
|
|
||||||
CONFIG_LUCI_LANG_he=y
|
|
||||||
CONFIG_LUCI_LANG_zh-tw=y
|
CONFIG_LUCI_LANG_zh-tw=y
|
||||||
CONFIG_LUCI_LANG_tr=y
|
|
||||||
CONFIG_LUCI_LANG_sv=y
|
|
||||||
CONFIG_LUCI_LANG_ru=y
|
|
||||||
CONFIG_LUCI_LANG_el=y
|
|
||||||
CONFIG_LUCI_LANG_ca=y
|
|
||||||
CONFIG_LUCI_LANG_es=y
|
|
||||||
CONFIG_LUCI_LANG_pt_BR=y
|
|
||||||
CONFIG_LUCI_LANG_cs=y
|
|
||||||
CONFIG_LUCI_LANG_fr=y
|
|
||||||
CONFIG_LUCI_LANG_it=y
|
|
||||||
CONFIG_LUCI_LANG_ar=y
|
|
||||||
CONFIG_LUCI_LANG_bg=y
|
|
||||||
CONFIG_LUCI_LANG_bn_BD=y
|
|
||||||
CONFIG_LUCI_LANG_fi=y
|
|
||||||
CONFIG_LUCI_LANG_hi=y
|
|
||||||
CONFIG_LUCI_LANG_mr=y
|
|
||||||
CONFIG_LUCI_LANG_nb_NO=y
|
|
||||||
CONFIG_TARGET_ROOTFS_PARTSIZE=512
|
CONFIG_TARGET_ROOTFS_PARTSIZE=512
|
||||||
CONFIG_TARGET_KERNEL_PARTSIZE=64
|
CONFIG_TARGET_KERNEL_PARTSIZE=64
|
||||||
CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y
|
CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y
|
||||||
# CONFIG_LUCI_CSSTIDY is not set
|
# CONFIG_LUCI_CSSTIDY is not set
|
||||||
|
# CONFIG_LIBCURL_WOLFSSL is not set
|
||||||
|
# CONFIG_PACKAGE_libustream-wolfssl is not set
|
||||||
|
# CONFIG_PACKAGE_luci-theme-argon=y
|
||||||
|
CONFIG_PACKAGE_luci-theme-bootstrap=y
|
||||||
|
CONFIG_PACKAGE_luci-theme-openwrt-2020=y
|
||||||
|
# CONFIG_PACKAGE_luci-theme-argon is not set
|
||||||
|
CONFIG_PACKAGE_luci-app-status=m
|
||||||
|
CONFIG_PACKAGE_luci-mod-status=y
|
||||||
|
CONFIG_PACKAGE_frpc=y
|
||||||
|
CONFIG_PACKAGE_rtty-nossl=y
|
||||||
|
CONFIG_PACKAGE_minicom=y
|
||||||
|
CONFIG_PACKAGE_irqbalance=y
|
||||||
|
CONFIG_PACKAGE_mtr=y
|
6
config-cm520-79f
Normal file
6
config-cm520-79f
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
CONFIG_TARGET_ipq40xx=y
|
||||||
|
CONFIG_TARGET_ipq40xx_generic=y
|
||||||
|
CONFIG_TARGET_ipq40xx_generic_DEVICE_mobipromo_cm520-79f=y
|
||||||
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||||
|
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||||
|
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
6
config-p2w_r619ac
Normal file
6
config-p2w_r619ac
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
CONFIG_TARGET_ipq40xx=y
|
||||||
|
CONFIG_TARGET_ipq40xx_generic=y
|
||||||
|
CONFIG_TARGET_ipq40xx_generic_DEVICE_p2w_r619ac-128m=y
|
||||||
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||||
|
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||||
|
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
4
config-r2s
Normal file
4
config-r2s
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
CONFIG_TARGET_rockchip=y
|
||||||
|
CONFIG_TARGET_rockchip_armv8=y
|
||||||
|
CONFIG_TARGET_ramips_armv8_DEVICE_friendlyarm_nanopi-r2s=y
|
||||||
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
|
@ -3,3 +3,5 @@ CONFIG_TARGET_mvebu_cortexa9=y
|
||||||
CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt3200acm=y
|
CONFIG_TARGET_mvebu_cortexa9_DEVICE_linksys_wrt3200acm=y
|
||||||
CONFIG_PACKAGE_kmod-6lowpan=y
|
CONFIG_PACKAGE_kmod-6lowpan=y
|
||||||
CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
CONFIG_PACKAGE_luci-app-advanced-reboot=y
|
||||||
|
# CONFIG_KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||||
|
CONFIG_KERNEL_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
|
|
@ -241,7 +241,7 @@ generate_static_system() {
|
||||||
uci -q batch <<-EOF
|
uci -q batch <<-EOF
|
||||||
delete system.@system[0]
|
delete system.@system[0]
|
||||||
add system system
|
add system system
|
||||||
set system.@system[-1].hostname='antrouter'
|
set system.@system[-1].hostname='antrouter
|
||||||
set system.@system[-1].timezone='UTC'
|
set system.@system[-1].timezone='UTC'
|
||||||
set system.@system[-1].ttylogin='0'
|
set system.@system[-1].ttylogin='0'
|
||||||
set system.@system[-1].log_size='64'
|
set system.@system[-1].log_size='64'
|
||||||
|
|
|
@ -33,6 +33,6 @@
|
||||||
* 又看源码,看你妹妹呀!
|
* 又看源码,看你妹妹呀!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
-----------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
(%C)
|
(%C)
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
119
root/package/firmware/ipq-wifi/Makefile
Normal file
119
root/package/firmware/ipq-wifi/Makefile
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/version.mk
|
||||||
|
|
||||||
|
PKG_NAME:=ipq-wifi
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
mkdir -p $(PKG_BUILD_DIR)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Use ath10k-bdencoder from https://github.com/qca/qca-swiss-army-knife.git
|
||||||
|
# to generate the board-* files here.
|
||||||
|
#
|
||||||
|
# This is intended to be used on an interim basis until device-specific
|
||||||
|
# board data for new devices is available through the upstream compilation
|
||||||
|
#
|
||||||
|
# Please send a mail with your device-specific board files upstream.
|
||||||
|
# You can find instructions and examples on the linux-wireless wiki:
|
||||||
|
# <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
|
||||||
|
|
||||||
|
ALLWIFIBOARDS:= \
|
||||||
|
8dev_habanero-dvk \
|
||||||
|
aruba_ap-303 \
|
||||||
|
avm_fritzrepeater-1200 \
|
||||||
|
buffalo_wtr-m2133hp \
|
||||||
|
cellc_rtl30vw \
|
||||||
|
dlink_dap2610 \
|
||||||
|
engenius_eap2200 \
|
||||||
|
engenius_emd1 \
|
||||||
|
engenius_emr3500 \
|
||||||
|
ezviz_cs-w3-wd1200g-eup \
|
||||||
|
glinet_gl-s1300 \
|
||||||
|
linksys_ea8300 \
|
||||||
|
p2w_r619ac \
|
||||||
|
mobipromo_cm520-79f \
|
||||||
|
qxwlan_e2600ac
|
||||||
|
|
||||||
|
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
|
||||||
|
|
||||||
|
define Package/ipq-wifi-default
|
||||||
|
SUBMENU:=ath10k Board-Specific Overrides
|
||||||
|
SECTION:=firmware
|
||||||
|
CATEGORY:=Firmware
|
||||||
|
DEPENDS:=@TARGET_ipq40xx
|
||||||
|
TITLE:=Custom Board
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ipq-wifi-install-one-to
|
||||||
|
$(INSTALL_DIR) $(2)/lib/firmware/ath10k/$(3)/
|
||||||
|
$(INSTALL_DATA) $(1) $(2)/lib/firmware/ath10k/$(3)/board-2.bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
define ipq-wifi-install-one
|
||||||
|
$(if $(filter $(suffix $(1)),.QCA4019 .qca4019),\
|
||||||
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA4019/hw1.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.QCA9888 .qca9888),\
|
||||||
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9888/hw2.0),\
|
||||||
|
$(if $(filter $(suffix $(1)),.QCA9984 .qca9984),\
|
||||||
|
$(call ipq-wifi-install-one-to,$(1),$(2),QCA9984/hw1.0),\
|
||||||
|
$(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\
|
||||||
|
)))
|
||||||
|
|
||||||
|
endef
|
||||||
|
# Blank line required at end of above define due to foreach context
|
||||||
|
|
||||||
|
define generate-ipq-wifi-package
|
||||||
|
define Package/ipq-wifi-$(1)
|
||||||
|
$(call Package/ipq-wifi-default)
|
||||||
|
TITLE:=board-2.bin Overrides for $(2)
|
||||||
|
CONFLICTS:=$(PREV_BOARD)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ipq-wifi-$(1)/description
|
||||||
|
The $(2) requires board-specific, reference ("cal") data
|
||||||
|
that is not yet present in the upstream wireless firmware distribution.
|
||||||
|
|
||||||
|
This package supplies board-2.bin file(s) that, in the interim,
|
||||||
|
overwrite those supplied by the ath10k-firmware-* packages.
|
||||||
|
|
||||||
|
This is package is only necessary for the $(2).
|
||||||
|
|
||||||
|
Do not install it for any other device!
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ipq-wifi-$(1)/install-overlay
|
||||||
|
$$$$(foreach IPQ_WIFI_BOARD_FILE,$$$$(wildcard board-$(1).*),\
|
||||||
|
$$$$(call ipq-wifi-install-one,$$$$(IPQ_WIFI_BOARD_FILE),$$(1)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
PREV_BOARD+=ipq-wifi-$(1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Add board name to ALLWIFIBOARDS
|
||||||
|
# Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9984>
|
||||||
|
# Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>))
|
||||||
|
|
||||||
|
$(eval $(call generate-ipq-wifi-package,8dev_habanero-dvk,8devices Habanero DVK))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,aruba_ap-303,Aruba AP-303))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-1200,AVM FRITZRepeater 1200))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,buffalo_wtr-m2133hp,Buffalo WTR-M2133HP))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,cellc_rtl30vw, Cell C RTL30VW))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,dlink_dap2610,D-Link DAP-2610))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,engenius_eap2200,EnGenius EAP2200))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,engenius_emd1,EnGenius EMD1))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,engenius_emr3500,EnGenius EMR3500))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,ezviz_cs-w3-wd1200g-eup,EZVIZ CS-W3-WD1200G EUP))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,mobipromo_cm520-79f,MobiPromo CM520-79F))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))
|
||||||
|
$(eval $(call generate-ipq-wifi-package,p2w_r619ac,P&W R619AC))
|
||||||
|
|
||||||
|
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|
BIN
root/package/firmware/ipq-wifi/board-p2w_r619ac.qca4019
Normal file
BIN
root/package/firmware/ipq-wifi/board-p2w_r619ac.qca4019
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -12,3 +12,36 @@
|
||||||
if (audit_enabled) {
|
if (audit_enabled) {
|
||||||
current_uid_gid(&uid, &gid);
|
current_uid_gid(&uid, &gid);
|
||||||
audit_log(current->audit_context, GFP_ATOMIC,
|
audit_log(current->audit_context, GFP_ATOMIC,
|
||||||
|
--- a/drivers/net/usb/r8152.c 2020-08-13 13:11:25.866435255 +0200
|
||||||
|
+++ b/drivers/net/usb/r8152.c 2020-08-13 13:11:51.973994306 +0200
|
||||||
|
@@ -2353,7 +2353,7 @@
|
||||||
|
|
||||||
|
if (netdev->flags & IFF_PROMISC) {
|
||||||
|
/* Unconditionally log net taps. */
|
||||||
|
- netif_notice(tp, link, netdev, "Promiscuous mode enabled\n");
|
||||||
|
+ //netif_notice(tp, link, netdev, "Promiscuous mode enabled\n");
|
||||||
|
ocp_data |= RCR_AM | RCR_AAP;
|
||||||
|
mc_filter[1] = 0xffffffff;
|
||||||
|
mc_filter[0] = 0xffffffff;
|
||||||
|
--- a/drivers/net/usb/pegasus.c 2020-08-13 13:14:15.519570376 +0200
|
||||||
|
+++ b/drivers/net/usb/pegasus.c 2020-08-13 13:14:26.795380006 +0200
|
||||||
|
@@ -1031,7 +1031,7 @@
|
||||||
|
|
||||||
|
if (net->flags & IFF_PROMISC) {
|
||||||
|
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
|
||||||
|
- netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
|
||||||
|
+ //netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
|
||||||
|
} else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) {
|
||||||
|
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
|
||||||
|
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
|
||||||
|
--- a/drivers/net/ethernet/realtek/r8169_main.c 2020-08-13 13:15:44.478068638 +0200
|
||||||
|
+++ b/drivers/net/ethernet/realtek/r8169_main.c 2020-08-13 13:15:59.181820450 +0200
|
||||||
|
@@ -4313,7 +4313,7 @@
|
||||||
|
|
||||||
|
if (dev->flags & IFF_PROMISC) {
|
||||||
|
/* Unconditionally log net taps. */
|
||||||
|
- netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
|
||||||
|
+ //netif_notice(tp, link, dev, "Promiscuous mode enabled\n");
|
||||||
|
rx_mode |= AcceptAllPhys;
|
||||||
|
} else if (netdev_mc_count(dev) > MC_FILTER_LIMIT ||
|
||||||
|
dev->flags & IFF_ALLMULTI ||
|
||||||
|
|
90
root/target/linux/ipq40xx/base-files/etc/board.d/01_leds
Normal file
90
root/target/linux/ipq40xx/base-files/etc/board.d/01_leds
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
|
||||||
|
board_config_update
|
||||||
|
|
||||||
|
board=$(board_name)
|
||||||
|
boardname="${board##*,}"
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
alfa-network,ap120c-ac)
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "${boardname}:amber:wan" "eth1"
|
||||||
|
;;
|
||||||
|
asus,rt-ac58u)
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "${boardname}:blue:wan" "eth1"
|
||||||
|
ucidef_set_led_switch "lan" "LAN" "${boardname}:blue:lan" "switch0" "0x1e"
|
||||||
|
;;
|
||||||
|
asus,rt-acrh17)
|
||||||
|
ucidef_set_led_default "status" "STATUS" "${boardname}:blue:status" "1"
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2g" "phy1tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:blue:wlan5g" "phy0tpt"
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "${boardname}:blue:wan" "eth1"
|
||||||
|
ucidef_set_led_switch "lan1" "LAN1" "${boardname}:blue:lan1" "switch0" "0x02"
|
||||||
|
ucidef_set_led_switch "lan2" "LAN2" "${boardname}:blue:lan2" "switch0" "0x04"
|
||||||
|
ucidef_set_led_switch "lan3" "LAN3" "${boardname}:blue:lan3" "switch0" "0x08"
|
||||||
|
ucidef_set_led_switch "lan4" "LAN4" "${boardname}:blue:lan4" "switch0" "0x10"
|
||||||
|
;;
|
||||||
|
avm,fritzbox-4040)
|
||||||
|
ucidef_set_led_wlan "wlan" "WLAN" "fritz4040:green:wlan" "phy0tpt" "phy1tpt"
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "fritz4040:green:wan" "eth1"
|
||||||
|
ucidef_set_led_switch "lan" "LAN" "fritz4040:green:lan" "switch0" "0x1e"
|
||||||
|
;;
|
||||||
|
avm,fritzbox-7530 |\
|
||||||
|
glinet,gl-b1300)
|
||||||
|
ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
|
||||||
|
;;
|
||||||
|
engenius,eap1300)
|
||||||
|
ucidef_set_led_netdev "lan" "LAN" "${boardname}:blue:lan" "eth0"
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2g" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
|
||||||
|
ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
|
||||||
|
;;
|
||||||
|
engenius,eap2200)
|
||||||
|
ucidef_set_led_netdev "lan1" "LAN1" "${boardname}:blue:lan1" "eth0"
|
||||||
|
ucidef_set_led_netdev "lan2" "LAN2" "${boardname}:blue:lan2" "eth1"
|
||||||
|
;;
|
||||||
|
engenius,ens620ext)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2G" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5G" "phy1tpt"
|
||||||
|
ucidef_set_led_netdev "lan1" "LAN1" "${boardname}:green:lan1" "eth0"
|
||||||
|
ucidef_set_led_netdev "lan2" "LAN2" "${boardname}:green:lan2" "eth1"
|
||||||
|
;;
|
||||||
|
mobipromo,cm520-79f)
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "${boardname}:blue:wan" "eth1"
|
||||||
|
ucidef_set_led_switch "lan1" "LAN1" "${boardname}:blue:lan1" "switch0" "0x10"
|
||||||
|
ucidef_set_led_switch "lan2" "LAN2" "${boardname}:blue:lan2" "switch0" "0x08"
|
||||||
|
;;
|
||||||
|
netgear,ex6100v2 |\
|
||||||
|
netgear,ex6150v2)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "ex61x0v2:green:router" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "ex61x0v2:green:client" "phy1tpt"
|
||||||
|
;;
|
||||||
|
p2w,r619ac |\
|
||||||
|
p2w,r619ac-128m)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "r619ac:blue:wlan2g" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "r619ac:blue:wlan5g" "phy1tpt"
|
||||||
|
;;
|
||||||
|
qxwlan,e2600ac-c1 |\
|
||||||
|
qxwlan,e2600ac-c2)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN0" "e2600ac:green:wlan0" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN1" "e2600ac:green:wlan1" "phy1tpt"
|
||||||
|
;;
|
||||||
|
zyxel,nbg6617)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2G" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5G" "phy1tpt"
|
||||||
|
;;
|
||||||
|
zyxel,wre6606)
|
||||||
|
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy0tpt"
|
||||||
|
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "phy1tpt"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
board_config_flush
|
||||||
|
|
||||||
|
exit 0
|
173
root/target/linux/ipq40xx/base-files/etc/board.d/02_network
Executable file
173
root/target/linux/ipq40xx/base-files/etc/board.d/02_network
Executable file
|
@ -0,0 +1,173 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2015 The Linux Foundation. All rights reserved.
|
||||||
|
# Copyright (c) 2011-2015 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
. /lib/functions/system.sh
|
||||||
|
|
||||||
|
ipq40xx_setup_interfaces()
|
||||||
|
{
|
||||||
|
local board="$1"
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
8dev,habanero-dvk|\
|
||||||
|
8dev,jalapeno|\
|
||||||
|
alfa-network,ap120c-ac|\
|
||||||
|
engenius,emr3500|\
|
||||||
|
engenius,ens620ext)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
;;
|
||||||
|
aruba,ap-303|\
|
||||||
|
aruba,ap-365|\
|
||||||
|
avm,fritzrepeater-1200|\
|
||||||
|
dlink,dap-2610 |\
|
||||||
|
engenius,eap1300|\
|
||||||
|
engenius,emd1|\
|
||||||
|
meraki,mr33|\
|
||||||
|
netgear,ex6100v2|\
|
||||||
|
netgear,ex6150v2|\
|
||||||
|
zyxel,wre6606)
|
||||||
|
ucidef_set_interface_lan "eth0"
|
||||||
|
;;
|
||||||
|
aruba,ap-303h)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "0u@eth1" "5:wan"
|
||||||
|
;;
|
||||||
|
asus,map-ac2200|\
|
||||||
|
cilab,meshpoint-one|\
|
||||||
|
openmesh,a42|\
|
||||||
|
openmesh,a62)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||||
|
;;
|
||||||
|
asus,rt-ac58u|\
|
||||||
|
p2w,r619ac-128m|\
|
||||||
|
p2w,r619ac|\
|
||||||
|
zyxel,nbg6617)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
|
||||||
|
;;
|
||||||
|
avm,fritzbox-4040|\
|
||||||
|
linksys,ea6350v3|\
|
||||||
|
linksys,ea8300)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
|
||||||
|
;;
|
||||||
|
avm,fritzbox-7530)
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
|
||||||
|
;;
|
||||||
|
avm,fritzrepeater-3000|\
|
||||||
|
compex,wpj419|\
|
||||||
|
compex,wpj428|\
|
||||||
|
engenius,eap2200)
|
||||||
|
ucidef_set_interface_lan "eth0 eth1"
|
||||||
|
;;
|
||||||
|
buffalo,wtr-m2133hp)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "2:lan:3" "3:lan:2" "4:lan:1"
|
||||||
|
;;
|
||||||
|
cellc,rtl30vw)
|
||||||
|
ucidef_set_interface_lan "eth0"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "3:lan" "4:lan"
|
||||||
|
;;
|
||||||
|
ezviz,cs-w3-wd1200g-eup)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "0u@eth1" "5:wan"
|
||||||
|
;;
|
||||||
|
glinet,gl-b1300 |\
|
||||||
|
glinet,gl-s1300)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "3:lan" "4:lan"
|
||||||
|
;;
|
||||||
|
mobipromo,cm520-79f)
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "3:lan:2" "4:lan:1"
|
||||||
|
ucidef_set_interface_wan "eth1"
|
||||||
|
;;
|
||||||
|
qxwlan,e2600ac-c1 |\
|
||||||
|
qxwlan,e2600ac-c2)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "3:lan" "4:lan" "0u@eth1" "5:wan"
|
||||||
|
;;
|
||||||
|
unielec,u4019-32m)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
ucidef_add_switch "switch0" \
|
||||||
|
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "0u@eth1" "5:wan"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported hardware. Network interfaces not initialized"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
ipq40xx_setup_macs()
|
||||||
|
{
|
||||||
|
local board="$1"
|
||||||
|
local lan_mac=""
|
||||||
|
local wan_mac=""
|
||||||
|
local label_mac=""
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
8dev,habanero-dvk)
|
||||||
|
label_mac=$(mtd_get_mac_binary "ART" 0x1006)
|
||||||
|
;;
|
||||||
|
asus,rt-ac58u|\
|
||||||
|
p2w,r619ac-128m|\
|
||||||
|
p2w,r619ac)
|
||||||
|
CI_UBIPART=UBI_DEV
|
||||||
|
wan_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
|
||||||
|
lan_mac=$(mtd_get_mac_binary_ubi Factory 0x5006)
|
||||||
|
label_mac=$wan_mac
|
||||||
|
;;
|
||||||
|
cilab,meshpoint-one)
|
||||||
|
label_mac=$(mtd_get_mac_binary "ART" 0x1006)
|
||||||
|
;;
|
||||||
|
dlink,dap-2610)
|
||||||
|
lan_mac=$(mtd_get_mac_ascii bdcfg lanmac)
|
||||||
|
label_mac=$lan_mac
|
||||||
|
;;
|
||||||
|
engenius,eap2200|\
|
||||||
|
engenius,emd1)
|
||||||
|
lan_mac=$(mtd_get_mac_ascii 0:APPSBLENV ethaddr)
|
||||||
|
label_mac=$lan_mac
|
||||||
|
;;
|
||||||
|
engenius,emr3500)
|
||||||
|
wan_mac=$(mtd_get_mac_ascii 0:APPSBLENV wanaddr)
|
||||||
|
lan_mac=$(mtd_get_mac_ascii 0:APPSBLENV ethaddr)
|
||||||
|
label_mac=$wan_mac
|
||||||
|
;;
|
||||||
|
engenius,ens620ext)
|
||||||
|
wan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
|
||||||
|
lan_mac=$(macaddr_add "$wan_mac" 1)
|
||||||
|
;;
|
||||||
|
ezviz,cs-w3-wd1200g-eup)
|
||||||
|
label_mac=$(mtd_get_mac_binary "ART" 0x6)
|
||||||
|
;;
|
||||||
|
linksys,ea6350v3)
|
||||||
|
wan_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
|
||||||
|
lan_mac=$(macaddr_add "$wan_mac" 1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
|
||||||
|
[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
|
||||||
|
[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
|
||||||
|
}
|
||||||
|
|
||||||
|
board_config_update
|
||||||
|
board=$(board_name)
|
||||||
|
ipq40xx_setup_interfaces $board
|
||||||
|
ipq40xx_setup_macs $board
|
||||||
|
board_config_flush
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
|
||||||
|
board_config_update
|
||||||
|
|
||||||
|
board=$(board_name)
|
||||||
|
|
||||||
|
case "$board" in
|
||||||
|
cellc,rtl30vw)
|
||||||
|
ucidef_add_gpio_switch "w_disable" "W_DISABLE mPCIE pin" "398" "1"
|
||||||
|
ucidef_add_gpio_switch "pmd_resin_n" "PMD_RESIN_N pin" "399" "1"
|
||||||
|
ucidef_add_gpio_switch "mcpie_vcc" "LTE power" "400" "0"
|
||||||
|
ucidef_add_gpio_switch "usb_vcc" "USB power" "401" "0"
|
||||||
|
;;
|
||||||
|
cilab,meshpoint-one)
|
||||||
|
ucidef_add_gpio_switch "poe_passtrough" "POE passtrough enable" "413" "1"
|
||||||
|
;;
|
||||||
|
compex,wpj428)
|
||||||
|
ucidef_add_gpio_switch "sim_card_select" "SIM card select" "3" "0"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
board_config_flush
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,242 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
||||||
|
|
||||||
|
. /lib/functions/caldata.sh
|
||||||
|
|
||||||
|
board=$(board_name)
|
||||||
|
|
||||||
|
case "$FIRMWARE" in
|
||||||
|
"ath10k/cal-pci-0000:01:00.0.bin")
|
||||||
|
case "$board" in
|
||||||
|
meraki,mr33)
|
||||||
|
caldata_extract_ubi "ART" 0x9000 0x844
|
||||||
|
caldata_valid "4408" || caldata_extract "ART" 0x9000 0x844
|
||||||
|
ath10k_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"ath10k/pre-cal-pci-0000:01:00.0.bin")
|
||||||
|
case "$board" in
|
||||||
|
asus,map-ac2200)
|
||||||
|
caldata_extract_ubi "Factory" 0x9000 0x2f20
|
||||||
|
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||||
|
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||||
|
;;
|
||||||
|
avm,fritzrepeater-3000)
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
||||||
|
;;
|
||||||
|
buffalo,wtr-m2133hp)
|
||||||
|
caldata_extract "ART" 0x9000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary ORGDATA 0x32)
|
||||||
|
;;
|
||||||
|
engenius,eap2200 |\
|
||||||
|
openmesh,a62)
|
||||||
|
caldata_extract "0:ART" 0x9000 0x2f20
|
||||||
|
;;
|
||||||
|
linksys,ea8300)
|
||||||
|
caldata_extract "ART" 0x9000 0x2f20
|
||||||
|
# OEM assigns 4 sequential MACs
|
||||||
|
ath10k_patch_mac $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"ath10k/pre-cal-ahb-a000000.wifi.bin")
|
||||||
|
case "$board" in
|
||||||
|
8dev,habanero-dvk |\
|
||||||
|
8dev,jalapeno |\
|
||||||
|
alfa-network,ap120c-ac |\
|
||||||
|
cilab,meshpoint-one |\
|
||||||
|
ezviz,cs-w3-wd1200g-eup |\
|
||||||
|
glinet,gl-b1300 |\
|
||||||
|
glinet,gl-s1300 |\
|
||||||
|
linksys,ea6350v3 |\
|
||||||
|
mobipromo,cm520-79f |\
|
||||||
|
p2w,r619ac-128m |\
|
||||||
|
p2w,r619ac |\
|
||||||
|
qcom,ap-dk01.1-c1)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
;;
|
||||||
|
aruba,ap-303 |\
|
||||||
|
aruba,ap-303h |\
|
||||||
|
aruba,ap-365)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary mfginfo 0x1D)
|
||||||
|
;;
|
||||||
|
asus,map-ac2200)
|
||||||
|
caldata_extract_ubi "Factory" 0x1000 0x2f20
|
||||||
|
;;
|
||||||
|
asus,rt-ac58u)
|
||||||
|
CI_UBIPART=UBI_DEV
|
||||||
|
caldata_extract_ubi "Factory" 0x1000 0x2f20
|
||||||
|
;;
|
||||||
|
avm,fritzbox-4040)
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
|
||||||
|
;;
|
||||||
|
avm,fritzbox-7530 |\
|
||||||
|
avm,fritzrepeater-1200 |\
|
||||||
|
avm,fritzrepeater-3000)
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
||||||
|
;;
|
||||||
|
buffalo,wtr-m2133hp)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary ORGDATA 0x26)
|
||||||
|
;;
|
||||||
|
cellc,rtl30vw |\
|
||||||
|
compex,wpj419 |\
|
||||||
|
compex,wpj428 |\
|
||||||
|
engenius,eap1300 |\
|
||||||
|
engenius,eap2200 |\
|
||||||
|
openmesh,a42 |\
|
||||||
|
openmesh,a62 |\
|
||||||
|
qxwlan,e2600ac-c1 |\
|
||||||
|
qxwlan,e2600ac-c2 |\
|
||||||
|
unielec,u4019-32m)
|
||||||
|
caldata_extract "0:ART" 0x1000 0x2f20
|
||||||
|
;;
|
||||||
|
dlink,dap-2610)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac)
|
||||||
|
;;
|
||||||
|
engenius,emd1)
|
||||||
|
caldata_extract "0:ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_ascii 0:APPSBLENV wlanaddr)
|
||||||
|
;;
|
||||||
|
engenius,emr3500)
|
||||||
|
caldata_extract "0:ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_ascii 0:APPSBLENV ethaddr)
|
||||||
|
;;
|
||||||
|
engenius,ens620ext)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +2)
|
||||||
|
;;
|
||||||
|
linksys,ea8300)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
|
||||||
|
;;
|
||||||
|
meraki,mr33)
|
||||||
|
caldata_extract_ubi "ART" 0x1000 0x2f20
|
||||||
|
caldata_valid "202f" || caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +2)
|
||||||
|
;;
|
||||||
|
netgear,ex6100v2 |\
|
||||||
|
netgear,ex6150v2)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary dnidata 0x0)
|
||||||
|
;;
|
||||||
|
zyxel,nbg6617 |\
|
||||||
|
zyxel,wre6606)
|
||||||
|
caldata_extract "ART" 0x1000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"ath10k/pre-cal-ahb-a800000.wifi.bin")
|
||||||
|
case "$board" in
|
||||||
|
8dev,habanero-dvk |\
|
||||||
|
8dev,jalapeno |\
|
||||||
|
alfa-network,ap120c-ac |\
|
||||||
|
cilab,meshpoint-one |\
|
||||||
|
ezviz,cs-w3-wd1200g-eup |\
|
||||||
|
glinet,gl-b1300 |\
|
||||||
|
glinet,gl-s1300 |\
|
||||||
|
linksys,ea6350v3 |\
|
||||||
|
mobipromo,cm520-79f |\
|
||||||
|
p2w,r619ac-128m |\
|
||||||
|
p2w,r619ac |\
|
||||||
|
qcom,ap-dk01.1-c1)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
;;
|
||||||
|
aruba,ap-303 |\
|
||||||
|
aruba,ap-303h |\
|
||||||
|
aruba,ap-365)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary mfginfo 0x1D) +1)
|
||||||
|
;;
|
||||||
|
asus,map-ac2200)
|
||||||
|
caldata_extract_ubi "Factory" 0x5000 0x2f20
|
||||||
|
;;
|
||||||
|
asus,rt-ac58u)
|
||||||
|
CI_UBIPART=UBI_DEV
|
||||||
|
caldata_extract_ubi "Factory" 0x5000 0x2f20
|
||||||
|
;;
|
||||||
|
avm,fritzbox-4040)
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
|
||||||
|
;;
|
||||||
|
avm,fritzbox-7530 |\
|
||||||
|
avm,fritzrepeater-1200 |\
|
||||||
|
avm,fritzrepeater-3000)
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1") || \
|
||||||
|
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
|
||||||
|
;;
|
||||||
|
buffalo,wtr-m2133hp)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary ORGDATA 0x2c)
|
||||||
|
;;
|
||||||
|
cellc,rtl30vw |\
|
||||||
|
compex,wpj419 |\
|
||||||
|
compex,wpj428 |\
|
||||||
|
engenius,eap1300 |\
|
||||||
|
engenius,eap2200 |\
|
||||||
|
openmesh,a42 |\
|
||||||
|
openmesh,a62 |\
|
||||||
|
qxwlan,e2600ac-c1 |\
|
||||||
|
qxwlan,e2600ac-c2 |\
|
||||||
|
unielec,u4019-32m)
|
||||||
|
caldata_extract "0:ART" 0x5000 0x2f20
|
||||||
|
;;
|
||||||
|
dlink,dap-2610)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
|
||||||
|
;;
|
||||||
|
engenius,emd1)
|
||||||
|
caldata_extract "0:ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV wlanaddr) +1)
|
||||||
|
;;
|
||||||
|
engenius,emr3500)
|
||||||
|
caldata_extract "0:ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii 0:APPSBLENV ethaddr) +1)
|
||||||
|
;;
|
||||||
|
engenius,ens620ext)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +3)
|
||||||
|
;;
|
||||||
|
linksys,ea8300)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add "$(cat /sys/class/net/eth0/address)" 3)
|
||||||
|
;;
|
||||||
|
meraki,mr33)
|
||||||
|
caldata_extract_ubi "ART" 0x5000 0x2f20
|
||||||
|
caldata_valid "202f" || caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66) +3)
|
||||||
|
;;
|
||||||
|
netgear,ex6100v2 |\
|
||||||
|
netgear,ex6150v2)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(mtd_get_mac_binary dnidata 0xc)
|
||||||
|
;;
|
||||||
|
zyxel,nbg6617 |\
|
||||||
|
zyxel,wre6606)
|
||||||
|
caldata_extract "ART" 0x5000 0x2f20
|
||||||
|
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -f /lib/adjust_network.sh ] && {
|
||||||
|
. /lib/adjust_network.sh
|
||||||
|
|
||||||
|
adjust_eth_queue
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2006-2011 OpenWrt.org
|
||||||
|
|
||||||
|
START=11
|
||||||
|
STOP=98
|
||||||
|
|
||||||
|
adjust_smp_affinity() {
|
||||||
|
test -f /lib/adjust_network.sh && {
|
||||||
|
. /lib/adjust_network.sh
|
||||||
|
|
||||||
|
adjust_eth_queue
|
||||||
|
adjust_edma_smp_affinity
|
||||||
|
adjust_radio_smp_affinity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boot() {
|
||||||
|
adjust_smp_affinity
|
||||||
|
}
|
16
root/target/linux/ipq40xx/base-files/etc/init.d/bootcount
Normal file
16
root/target/linux/ipq40xx/base-files/etc/init.d/bootcount
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=99
|
||||||
|
|
||||||
|
boot() {
|
||||||
|
case $(board_name) in
|
||||||
|
alfa-network,ap120c-ac)
|
||||||
|
[ -n "$(fw_printenv bootcount changed 2>/dev/null)" ] &&\
|
||||||
|
echo -e "bootcount\nchanged\n" | /usr/sbin/fw_setenv -s -
|
||||||
|
;;
|
||||||
|
linksys,ea6350v3|\
|
||||||
|
linksys,ea8300)
|
||||||
|
mtd resetbc s_env || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
89
root/target/linux/ipq40xx/base-files/lib/adjust_network.sh
Normal file
89
root/target/linux/ipq40xx/base-files/lib/adjust_network.sh
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# this scripts is used for adjust cpu's choice of interrupts.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Adjust smp_affinity of edma
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# None
|
||||||
|
# Remark:
|
||||||
|
# execute only once on start-up.
|
||||||
|
################################################
|
||||||
|
adjust_edma_smp_affinity() {
|
||||||
|
grep -q edma_eth_ /proc/interrupts || return 0
|
||||||
|
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
||||||
|
local cpu=0
|
||||||
|
local tx_irq_num
|
||||||
|
|
||||||
|
for tx_num in `seq 0 1 15` ; do
|
||||||
|
cpu=`printf "%x" $((1<<((tx_num/4+0)%nr)))`
|
||||||
|
tx_irq_num=`grep -m1 edma_eth_tx$tx_num /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||||
|
[ -n "$tx_irq_num" ] && echo $cpu > /proc/irq/$tx_irq_num/smp_affinity
|
||||||
|
done
|
||||||
|
|
||||||
|
for rx_num in `seq 0 1 7` ; do
|
||||||
|
cpu=`printf "%x" $((1<<((rx_num/2)%nr)))`
|
||||||
|
rx_irq_num=`grep -m1 edma_eth_rx$rx_num /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
|
||||||
|
[ -n "$rx_irq_num" ] && echo $cpu > /proc/irq/$rx_irq_num/smp_affinity
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Adjust smp_affinity of ath10k for 2G and 5G
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# None
|
||||||
|
# Remark:
|
||||||
|
# execute only once on start-up.
|
||||||
|
################################################
|
||||||
|
adjust_radio_smp_affinity() {
|
||||||
|
local irqs="`grep -E 'ath10k' /proc/interrupts | cut -d ':' -f 1 | tr -d ' '`"
|
||||||
|
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
||||||
|
local idx=2
|
||||||
|
|
||||||
|
for irq in $irqs; do
|
||||||
|
cpu=`printf "%x" $((1<<((idx)%nr)))`
|
||||||
|
echo $cpu > /proc/irq/$irq/smp_affinity
|
||||||
|
idx=$((idx+1))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Adjust queue of eth
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# None
|
||||||
|
# Remark:
|
||||||
|
# Each network reboot needs to be executed.
|
||||||
|
################################################
|
||||||
|
adjust_eth_queue() {
|
||||||
|
local nr=`cat /proc/cpuinfo | grep processor | wc -l`
|
||||||
|
local idx=0
|
||||||
|
|
||||||
|
for epath in /sys/class/net/eth[0-9]*; do
|
||||||
|
test -e $epath || break
|
||||||
|
echo $epath | grep -q "\." && continue
|
||||||
|
eth=`basename $epath`
|
||||||
|
idx=0
|
||||||
|
for exps in /sys/class/net/$eth/queues/rx-[0-9]*/rps_cpus; do
|
||||||
|
test -e $exps || break
|
||||||
|
cpu=`printf "%x" $((1<<((idx+1)%nr)))`
|
||||||
|
idx=$((idx+1))
|
||||||
|
echo $cpu > $exps
|
||||||
|
echo 256 > `dirname $exps`/rps_flow_cnt
|
||||||
|
done
|
||||||
|
which ethtool >/dev/null 2>&1 && ethtool -K $eth gro off
|
||||||
|
done
|
||||||
|
|
||||||
|
echo 1024 > /proc/sys/net/core/rps_sock_flow_entries
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
preinit_set_mac_address() {
|
||||||
|
case $(board_name) in
|
||||||
|
asus,map-ac2200)
|
||||||
|
base_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
|
||||||
|
ip link set dev eth0 address $(macaddr_add "$base_mac" +1)
|
||||||
|
ip link set dev eth1 address $(macaddr_add "$base_mac" +3)
|
||||||
|
;;
|
||||||
|
asus,rt-acrh17|\
|
||||||
|
asus,rt-ac58u)
|
||||||
|
CI_UBIPART=UBI_DEV
|
||||||
|
base_mac=$(mtd_get_mac_binary_ubi Factory 4102)
|
||||||
|
ip link set dev eth0 address $(macaddr_add "$base_mac" +1)
|
||||||
|
;;
|
||||||
|
ezviz,cs-w3-wd1200g-eup)
|
||||||
|
ip link set dev eth0 address $(mtd_get_mac_binary "ART" 0x6)
|
||||||
|
ip link set dev eth1 address $(mtd_get_mac_binary "ART" 0x0)
|
||||||
|
;;
|
||||||
|
engenius,eap2200)
|
||||||
|
base_mac=$(cat /sys/class/net/eth0/address)
|
||||||
|
ip link set dev eth1 address $(macaddr_add "${base_mac}" +1)
|
||||||
|
;;
|
||||||
|
linksys,ea8300)
|
||||||
|
base_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
|
||||||
|
ip link set dev eth0 address "${base_mac}"
|
||||||
|
ip link set dev eth1 address $(macaddr_add "${base_mac}" 1)
|
||||||
|
;;
|
||||||
|
meraki,mr33)
|
||||||
|
mac_lan=$(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66)
|
||||||
|
[ -n "$mac_lan" ] && ip link set dev eth0 address "$mac_lan"
|
||||||
|
;;
|
||||||
|
zyxel,nbg6617)
|
||||||
|
base_mac=$(cat /sys/class/net/eth0/address)
|
||||||
|
ip link set dev eth0 address $(macaddr_add "$base_mac" +2)
|
||||||
|
ip link set dev eth1 address $(macaddr_add "$base_mac" +3)
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_hook_add preinit_main preinit_set_mac_address
|
|
@ -0,0 +1,20 @@
|
||||||
|
set_preinit_iface() {
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
case $(board_name) in
|
||||||
|
aruba,ap-303| \
|
||||||
|
asus,rt-ac58u| \
|
||||||
|
avm,fritzbox-4040| \
|
||||||
|
ezviz,cs-w3-wd1200g-eup| \
|
||||||
|
glinet,gl-b1300| \
|
||||||
|
linksys,ea8300| \
|
||||||
|
meraki,mr33| \
|
||||||
|
zyxel,nbg6617)
|
||||||
|
ifname=eth0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_hook_add preinit_main set_preinit_iface
|
242
root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
Normal file
242
root/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
PART_NAME=firmware
|
||||||
|
REQUIRE_IMAGE_METADATA=1
|
||||||
|
|
||||||
|
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
||||||
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||||
|
|
||||||
|
ubi_kill_if_exist() {
|
||||||
|
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||||
|
local c_ubivol="$( nand_find_volume $ubidev $1 )"
|
||||||
|
umount -f /dev/$c_ubivol 2>/dev/null
|
||||||
|
[ "$c_ubivol" ] && ubirmvol /dev/$ubidev -N $1 || true
|
||||||
|
echo "Partition $1 removed."
|
||||||
|
}
|
||||||
|
|
||||||
|
# idea from @981213
|
||||||
|
# Tar sysupgrade for ASUS RT-AC82U/RT-AC58U
|
||||||
|
# An ubi repartition is required due to the strange partition table created by Asus.
|
||||||
|
# We create all the factory partitions to make sure that the U-boot tftp recovery still works.
|
||||||
|
# The reserved kernel partition size should be enough to put the factory image in.
|
||||||
|
asus_nand_upgrade_tar() {
|
||||||
|
local kpart_size="$1"
|
||||||
|
local tar_file="$2"
|
||||||
|
|
||||||
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
||||||
|
board_dir=${board_dir%/}
|
||||||
|
|
||||||
|
local kernel_length=`(tar xf $tar_file ${board_dir}/kernel -O | wc -c) 2> /dev/null`
|
||||||
|
local rootfs_length=`(tar xf $tar_file ${board_dir}/root -O | wc -c) 2> /dev/null`
|
||||||
|
|
||||||
|
local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
|
||||||
|
if [ ! "$mtdnum" ]; then
|
||||||
|
echo "cannot find ubi mtd partition $CI_UBIPART"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||||
|
if [ ! "$ubidev" ]; then
|
||||||
|
ubiattach -m "$mtdnum"
|
||||||
|
sync
|
||||||
|
ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "$ubidev" ]; then
|
||||||
|
echo "cannot find ubi device $CI_UBIPART"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local root_ubivol="$( nand_find_volume $ubidev rootfs )"
|
||||||
|
# remove ubiblock device of rootfs
|
||||||
|
local root_ubiblk="ubiblock${root_ubivol:3}"
|
||||||
|
if [ "$root_ubivol" -a -e "/dev/$root_ubiblk" ]; then
|
||||||
|
echo "removing $root_ubiblk"
|
||||||
|
if ! ubiblock -r /dev/$root_ubivol; then
|
||||||
|
echo "cannot remove $root_ubiblk"
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
ubi_kill_if_exist rootfs_data
|
||||||
|
ubi_kill_if_exist rootfs
|
||||||
|
ubi_kill_if_exist jffs2
|
||||||
|
ubi_kill_if_exist linux2
|
||||||
|
ubi_kill_if_exist linux
|
||||||
|
|
||||||
|
ubimkvol /dev/$ubidev -N linux -s $kpart_size
|
||||||
|
ubimkvol /dev/$ubidev -N linux2 -s $kpart_size
|
||||||
|
ubimkvol /dev/$ubidev -N jffs2 -s 2539520
|
||||||
|
ubimkvol /dev/$ubidev -N rootfs -s $rootfs_length
|
||||||
|
ubimkvol /dev/$ubidev -N rootfs_data -m
|
||||||
|
|
||||||
|
local kern_ubivol="$(nand_find_volume $ubidev $CI_KERNPART)"
|
||||||
|
echo "Kernel at $kern_ubivol.Writing..."
|
||||||
|
tar xf $tar_file ${board_dir}/kernel -O | \
|
||||||
|
ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
|
||||||
|
echo "Done."
|
||||||
|
|
||||||
|
local root_ubivol="$(nand_find_volume $ubidev rootfs)"
|
||||||
|
echo "Rootfs at $root_ubivol.Writing..."
|
||||||
|
tar xf $tar_file ${board_dir}/root -O | \
|
||||||
|
ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
|
||||||
|
echo "Done."
|
||||||
|
|
||||||
|
nand_do_upgrade_success
|
||||||
|
}
|
||||||
|
|
||||||
|
# idea from @981213
|
||||||
|
# Factory image sysupgrade for ASUS RT-AC82U/RT-AC58U
|
||||||
|
# Delete all the partitions we created before, create "linux" partition and write factory image in.
|
||||||
|
# Skip the first 64bytes which is an uImage header to verify the firmware.
|
||||||
|
# The kernel partition size should be the original one.
|
||||||
|
asus_nand_upgrade_factory() {
|
||||||
|
local kpart_size="$1"
|
||||||
|
local fw_file="$2"
|
||||||
|
|
||||||
|
local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
|
||||||
|
if [ ! "$mtdnum" ]; then
|
||||||
|
echo "cannot find ubi mtd partition $CI_UBIPART"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||||
|
if [ ! "$ubidev" ]; then
|
||||||
|
ubiattach -m "$mtdnum"
|
||||||
|
sync
|
||||||
|
ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "$ubidev" ]; then
|
||||||
|
echo "cannot find ubi device $CI_UBIPART"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local root_ubivol="$( nand_find_volume $ubidev rootfs )"
|
||||||
|
# remove ubiblock device of rootfs
|
||||||
|
local root_ubiblk="ubiblock${root_ubivol:3}"
|
||||||
|
if [ "$root_ubivol" -a -e "/dev/$root_ubiblk" ]; then
|
||||||
|
echo "removing $root_ubiblk"
|
||||||
|
if ! ubiblock -r /dev/$root_ubivol; then
|
||||||
|
echo "cannot remove $root_ubiblk"
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
ubi_kill_if_exist rootfs_data
|
||||||
|
ubi_kill_if_exist rootfs
|
||||||
|
ubi_kill_if_exist jffs2
|
||||||
|
ubi_kill_if_exist linux2
|
||||||
|
ubi_kill_if_exist linux
|
||||||
|
|
||||||
|
ubimkvol /dev/$ubidev -N linux -s $kpart_size
|
||||||
|
|
||||||
|
local kern_ubivol="$(nand_find_volume $ubidev $CI_KERNPART)"
|
||||||
|
echo "Asus linux at $kern_ubivol.Writing..."
|
||||||
|
ubiupdatevol /dev/$kern_ubivol --skip=64 $fw_file
|
||||||
|
echo "Done."
|
||||||
|
|
||||||
|
umount -a
|
||||||
|
reboot -f
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_check_image() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
askey_do_upgrade() {
|
||||||
|
local tar_file="$1"
|
||||||
|
|
||||||
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
||||||
|
board_dir=${board_dir%/}
|
||||||
|
|
||||||
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
||||||
|
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
zyxel_do_upgrade() {
|
||||||
|
local tar_file="$1"
|
||||||
|
|
||||||
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
||||||
|
board_dir=${board_dir%/}
|
||||||
|
|
||||||
|
tar Oxf $tar_file ${board_dir}/kernel | mtd write - kernel
|
||||||
|
|
||||||
|
if [ -n "$UPGRADE_BACKUP" ]; then
|
||||||
|
tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs
|
||||||
|
else
|
||||||
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_do_upgrade() {
|
||||||
|
case "$(board_name)" in
|
||||||
|
8dev,jalapeno |\
|
||||||
|
aruba,ap-303 |\
|
||||||
|
aruba,ap-303h |\
|
||||||
|
aruba,ap-365 |\
|
||||||
|
avm,fritzbox-7530 |\
|
||||||
|
avm,fritzrepeater-1200 |\
|
||||||
|
avm,fritzrepeater-3000 |\
|
||||||
|
cilab,meshpoint-one |\
|
||||||
|
engenius,eap2200 |\
|
||||||
|
mobipromo,cm520-79f |\
|
||||||
|
qxwlan,e2600ac-c2)
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
alfa-network,ap120c-ac)
|
||||||
|
part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
|
||||||
|
if [ "$part" = "rootfs1" ]; then
|
||||||
|
fw_setenv active 2 || exit 1
|
||||||
|
CI_UBIPART="rootfs2"
|
||||||
|
else
|
||||||
|
fw_setenv active 1 || exit 1
|
||||||
|
CI_UBIPART="rootfs1"
|
||||||
|
fi
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
asus,map-ac2200)
|
||||||
|
CI_KERNPART="linux"
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
asus,rt-acrh17|\
|
||||||
|
asus,rt-ac58u)
|
||||||
|
local magic=$(get_magic_long "$1")
|
||||||
|
CI_UBIPART="UBI_DEV"
|
||||||
|
CI_KERNPART="linux"
|
||||||
|
if [ "$magic" == "27051956" ]; then
|
||||||
|
echo "Got Asus factory image."
|
||||||
|
asus_nand_upgrade_factory 50409472 "$1"
|
||||||
|
else
|
||||||
|
asus_nand_upgrade_tar 20951040 "$1"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
cellc,rtl30vw)
|
||||||
|
CI_UBIPART="ubifs"
|
||||||
|
askey_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
compex,wpj419|\
|
||||||
|
p2w,r619ac-128m|\
|
||||||
|
p2w,r619ac)
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
linksys,ea6350v3 |\
|
||||||
|
linksys,ea8300)
|
||||||
|
platform_do_upgrade_linksys "$1"
|
||||||
|
;;
|
||||||
|
meraki,mr33)
|
||||||
|
CI_KERNPART="part.safe"
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
openmesh,a42 |\
|
||||||
|
openmesh,a62)
|
||||||
|
PART_NAME="inactive"
|
||||||
|
platform_do_upgrade_openmesh "$1"
|
||||||
|
;;
|
||||||
|
zyxel,nbg6617)
|
||||||
|
zyxel_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
default_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
#
|
||||||
|
## Makefile for the Qualcomm Atheros ethernet edma driver
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
obj-$(CONFIG_ESSEDMA) += essedma.o
|
||||||
|
|
||||||
|
essedma-objs := edma_axi.o edma.o edma_ethtool.o
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,455 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014 - 2016, The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
|
* above copyright notice and this permission notice appear in all copies.
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _EDMA_H_
|
||||||
|
#define _EDMA_H_
|
||||||
|
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
|
#include <linux/pagemap.h>
|
||||||
|
#include <linux/smp.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/sysctl.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
#include <linux/of_net.h>
|
||||||
|
#include <net/checksum.h>
|
||||||
|
#include <net/ip6_checksum.h>
|
||||||
|
#include <asm-generic/bug.h>
|
||||||
|
#include "ess_edma.h"
|
||||||
|
|
||||||
|
#define EDMA_CPU_CORES_SUPPORTED 4
|
||||||
|
#define EDMA_MAX_PORTID_SUPPORTED 5
|
||||||
|
#define EDMA_MAX_VLAN_SUPPORTED EDMA_MAX_PORTID_SUPPORTED
|
||||||
|
#define EDMA_MAX_PORTID_BITMAP_INDEX (EDMA_MAX_PORTID_SUPPORTED + 1)
|
||||||
|
#define EDMA_MAX_PORTID_BITMAP_SUPPORTED 0x1f /* 0001_1111 = 0x1f */
|
||||||
|
#define EDMA_MAX_NETDEV_PER_QUEUE 4 /* 3 Netdev per queue, 1 space for indexing */
|
||||||
|
|
||||||
|
#define EDMA_MAX_RECEIVE_QUEUE 8
|
||||||
|
#define EDMA_MAX_TRANSMIT_QUEUE 16
|
||||||
|
|
||||||
|
/* WAN/LAN adapter number */
|
||||||
|
#define EDMA_WAN 0
|
||||||
|
#define EDMA_LAN 1
|
||||||
|
|
||||||
|
/* VLAN tag */
|
||||||
|
#define EDMA_LAN_DEFAULT_VLAN 1
|
||||||
|
#define EDMA_WAN_DEFAULT_VLAN 2
|
||||||
|
|
||||||
|
#define EDMA_DEFAULT_GROUP1_VLAN 1
|
||||||
|
#define EDMA_DEFAULT_GROUP2_VLAN 2
|
||||||
|
#define EDMA_DEFAULT_GROUP3_VLAN 3
|
||||||
|
#define EDMA_DEFAULT_GROUP4_VLAN 4
|
||||||
|
#define EDMA_DEFAULT_GROUP5_VLAN 5
|
||||||
|
|
||||||
|
/* Queues exposed to linux kernel */
|
||||||
|
#define EDMA_NETDEV_TX_QUEUE 4
|
||||||
|
#define EDMA_NETDEV_RX_QUEUE 4
|
||||||
|
|
||||||
|
/* Number of queues per core */
|
||||||
|
#define EDMA_NUM_TXQ_PER_CORE 4
|
||||||
|
#define EDMA_NUM_RXQ_PER_CORE 2
|
||||||
|
|
||||||
|
#define EDMA_TPD_EOP_SHIFT 31
|
||||||
|
|
||||||
|
#define EDMA_PORT_ID_SHIFT 12
|
||||||
|
#define EDMA_PORT_ID_MASK 0x7
|
||||||
|
|
||||||
|
/* tpd word 3 bit 18-28 */
|
||||||
|
#define EDMA_TPD_PORT_BITMAP_SHIFT 18
|
||||||
|
|
||||||
|
#define EDMA_TPD_FROM_CPU_SHIFT 25
|
||||||
|
|
||||||
|
#define EDMA_FROM_CPU_MASK 0x80
|
||||||
|
#define EDMA_SKB_PRIORITY_MASK 0x38
|
||||||
|
|
||||||
|
/* TX/RX descriptor ring count */
|
||||||
|
/* should be a power of 2 */
|
||||||
|
#define EDMA_RX_RING_SIZE 128
|
||||||
|
#define EDMA_TX_RING_SIZE 128
|
||||||
|
|
||||||
|
/* Flags used in paged/non paged mode */
|
||||||
|
#define EDMA_RX_HEAD_BUFF_SIZE_JUMBO 256
|
||||||
|
#define EDMA_RX_HEAD_BUFF_SIZE 1540
|
||||||
|
|
||||||
|
/* MAX frame size supported by switch */
|
||||||
|
#define EDMA_MAX_JUMBO_FRAME_SIZE 9216
|
||||||
|
|
||||||
|
/* Configurations */
|
||||||
|
#define EDMA_INTR_CLEAR_TYPE 0
|
||||||
|
#define EDMA_INTR_SW_IDX_W_TYPE 0
|
||||||
|
#define EDMA_FIFO_THRESH_TYPE 0
|
||||||
|
#define EDMA_RSS_TYPE 0
|
||||||
|
#define EDMA_RX_IMT 0x0020
|
||||||
|
#define EDMA_TX_IMT 0x0050
|
||||||
|
#define EDMA_TPD_BURST 5
|
||||||
|
#define EDMA_TXF_BURST 0x100
|
||||||
|
#define EDMA_RFD_BURST 8
|
||||||
|
#define EDMA_RFD_THR 16
|
||||||
|
#define EDMA_RFD_LTHR 0
|
||||||
|
|
||||||
|
/* RX/TX per CPU based mask/shift */
|
||||||
|
#define EDMA_TX_PER_CPU_MASK 0xF
|
||||||
|
#define EDMA_RX_PER_CPU_MASK 0x3
|
||||||
|
#define EDMA_TX_PER_CPU_MASK_SHIFT 0x2
|
||||||
|
#define EDMA_RX_PER_CPU_MASK_SHIFT 0x1
|
||||||
|
#define EDMA_TX_CPU_START_SHIFT 0x2
|
||||||
|
#define EDMA_RX_CPU_START_SHIFT 0x1
|
||||||
|
|
||||||
|
/* FLags used in transmit direction */
|
||||||
|
#define EDMA_HW_CHECKSUM 0x00000001
|
||||||
|
#define EDMA_VLAN_TX_TAG_INSERT_FLAG 0x00000002
|
||||||
|
#define EDMA_VLAN_TX_TAG_INSERT_DEFAULT_FLAG 0x00000004
|
||||||
|
|
||||||
|
#define EDMA_SW_DESC_FLAG_LAST 0x1
|
||||||
|
#define EDMA_SW_DESC_FLAG_SKB_HEAD 0x2
|
||||||
|
#define EDMA_SW_DESC_FLAG_SKB_FRAG 0x4
|
||||||
|
#define EDMA_SW_DESC_FLAG_SKB_FRAGLIST 0x8
|
||||||
|
#define EDMA_SW_DESC_FLAG_SKB_NONE 0x10
|
||||||
|
#define EDMA_SW_DESC_FLAG_SKB_REUSE 0x20
|
||||||
|
|
||||||
|
|
||||||
|
#define EDMA_MAX_SKB_FRAGS (MAX_SKB_FRAGS + 1)
|
||||||
|
|
||||||
|
/* Ethtool specific list of EDMA supported features */
|
||||||
|
#define EDMA_SUPPORTED_FEATURES (SUPPORTED_10baseT_Half \
|
||||||
|
| SUPPORTED_10baseT_Full \
|
||||||
|
| SUPPORTED_100baseT_Half \
|
||||||
|
| SUPPORTED_100baseT_Full \
|
||||||
|
| SUPPORTED_1000baseT_Full)
|
||||||
|
|
||||||
|
/* Recevie side atheros Header */
|
||||||
|
#define EDMA_RX_ATH_HDR_VERSION 0x2
|
||||||
|
#define EDMA_RX_ATH_HDR_VERSION_SHIFT 14
|
||||||
|
#define EDMA_RX_ATH_HDR_PRIORITY_SHIFT 11
|
||||||
|
#define EDMA_RX_ATH_PORT_TYPE_SHIFT 6
|
||||||
|
#define EDMA_RX_ATH_HDR_RSTP_PORT_TYPE 0x4
|
||||||
|
|
||||||
|
/* Transmit side atheros Header */
|
||||||
|
#define EDMA_TX_ATH_HDR_PORT_BITMAP_MASK 0x7F
|
||||||
|
#define EDMA_TX_ATH_HDR_FROM_CPU_MASK 0x80
|
||||||
|
#define EDMA_TX_ATH_HDR_FROM_CPU_SHIFT 7
|
||||||
|
|
||||||
|
#define EDMA_TXQ_START_CORE0 8
|
||||||
|
#define EDMA_TXQ_START_CORE1 12
|
||||||
|
#define EDMA_TXQ_START_CORE2 0
|
||||||
|
#define EDMA_TXQ_START_CORE3 4
|
||||||
|
|
||||||
|
#define EDMA_TXQ_IRQ_MASK_CORE0 0x0F00
|
||||||
|
#define EDMA_TXQ_IRQ_MASK_CORE1 0xF000
|
||||||
|
#define EDMA_TXQ_IRQ_MASK_CORE2 0x000F
|
||||||
|
#define EDMA_TXQ_IRQ_MASK_CORE3 0x00F0
|
||||||
|
|
||||||
|
#define EDMA_ETH_HDR_LEN 12
|
||||||
|
#define EDMA_ETH_TYPE_MASK 0xFFFF
|
||||||
|
|
||||||
|
#define EDMA_RX_BUFFER_WRITE 16
|
||||||
|
#define EDMA_RFD_AVAIL_THR 80
|
||||||
|
|
||||||
|
#define EDMA_GMAC_NO_MDIO_PHY PHY_MAX_ADDR
|
||||||
|
|
||||||
|
extern int ssdk_rfs_ipct_rule_set(__be32 ip_src, __be32 ip_dst,
|
||||||
|
__be16 sport, __be16 dport,
|
||||||
|
uint8_t proto, u16 loadbalance, bool action);
|
||||||
|
struct edma_ethtool_statistics {
|
||||||
|
u32 tx_q0_pkt;
|
||||||
|
u32 tx_q1_pkt;
|
||||||
|
u32 tx_q2_pkt;
|
||||||
|
u32 tx_q3_pkt;
|
||||||
|
u32 tx_q4_pkt;
|
||||||
|
u32 tx_q5_pkt;
|
||||||
|
u32 tx_q6_pkt;
|
||||||
|
u32 tx_q7_pkt;
|
||||||
|
u32 tx_q8_pkt;
|
||||||
|
u32 tx_q9_pkt;
|
||||||
|
u32 tx_q10_pkt;
|
||||||
|
u32 tx_q11_pkt;
|
||||||
|
u32 tx_q12_pkt;
|
||||||
|
u32 tx_q13_pkt;
|
||||||
|
u32 tx_q14_pkt;
|
||||||
|
u32 tx_q15_pkt;
|
||||||
|
u32 tx_q0_byte;
|
||||||
|
u32 tx_q1_byte;
|
||||||
|
u32 tx_q2_byte;
|
||||||
|
u32 tx_q3_byte;
|
||||||
|
u32 tx_q4_byte;
|
||||||
|
u32 tx_q5_byte;
|
||||||
|
u32 tx_q6_byte;
|
||||||
|
u32 tx_q7_byte;
|
||||||
|
u32 tx_q8_byte;
|
||||||
|
u32 tx_q9_byte;
|
||||||
|
u32 tx_q10_byte;
|
||||||
|
u32 tx_q11_byte;
|
||||||
|
u32 tx_q12_byte;
|
||||||
|
u32 tx_q13_byte;
|
||||||
|
u32 tx_q14_byte;
|
||||||
|
u32 tx_q15_byte;
|
||||||
|
u32 rx_q0_pkt;
|
||||||
|
u32 rx_q1_pkt;
|
||||||
|
u32 rx_q2_pkt;
|
||||||
|
u32 rx_q3_pkt;
|
||||||
|
u32 rx_q4_pkt;
|
||||||
|
u32 rx_q5_pkt;
|
||||||
|
u32 rx_q6_pkt;
|
||||||
|
u32 rx_q7_pkt;
|
||||||
|
u32 rx_q0_byte;
|
||||||
|
u32 rx_q1_byte;
|
||||||
|
u32 rx_q2_byte;
|
||||||
|
u32 rx_q3_byte;
|
||||||
|
u32 rx_q4_byte;
|
||||||
|
u32 rx_q5_byte;
|
||||||
|
u32 rx_q6_byte;
|
||||||
|
u32 rx_q7_byte;
|
||||||
|
u32 tx_desc_error;
|
||||||
|
u32 rx_alloc_fail_ctr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct edma_mdio_data {
|
||||||
|
struct mii_bus *mii_bus;
|
||||||
|
void __iomem *membase;
|
||||||
|
int phy_irq[PHY_MAX_ADDR];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* EDMA LINK state */
|
||||||
|
enum edma_link_state {
|
||||||
|
__EDMA_LINKUP, /* Indicate link is UP */
|
||||||
|
__EDMA_LINKDOWN /* Indicate link is down */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* EDMA GMAC state */
|
||||||
|
enum edma_gmac_state {
|
||||||
|
__EDMA_UP /* use to indicate GMAC is up */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma transmit descriptor */
|
||||||
|
struct edma_tx_desc {
|
||||||
|
__le16 len; /* full packet including CRC */
|
||||||
|
__le16 svlan_tag; /* vlan tag */
|
||||||
|
__le32 word1; /* byte 4-7 */
|
||||||
|
__le32 addr; /* address of buffer */
|
||||||
|
__le32 word3; /* byte 12 */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma receive return descriptor */
|
||||||
|
struct edma_rx_return_desc {
|
||||||
|
u16 rrd0;
|
||||||
|
u16 rrd1;
|
||||||
|
u16 rrd2;
|
||||||
|
u16 rrd3;
|
||||||
|
u16 rrd4;
|
||||||
|
u16 rrd5;
|
||||||
|
u16 rrd6;
|
||||||
|
u16 rrd7;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* RFD descriptor */
|
||||||
|
struct edma_rx_free_desc {
|
||||||
|
__le32 buffer_addr; /* buffer address */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma hw specific data */
|
||||||
|
struct edma_hw {
|
||||||
|
u32 __iomem *hw_addr; /* inner register address */
|
||||||
|
struct edma_adapter *adapter; /* netdevice adapter */
|
||||||
|
u32 rx_intr_mask; /*rx interrupt mask */
|
||||||
|
u32 tx_intr_mask; /* tx interrupt nask */
|
||||||
|
u32 misc_intr_mask; /* misc interrupt mask */
|
||||||
|
u32 wol_intr_mask; /* wake on lan interrupt mask */
|
||||||
|
bool intr_clear_type; /* interrupt clear */
|
||||||
|
bool intr_sw_idx_w; /* interrupt software index */
|
||||||
|
u32 rx_head_buff_size; /* Rx buffer size */
|
||||||
|
u8 rss_type; /* rss protocol type */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma_sw_desc stores software descriptor
|
||||||
|
* SW descriptor has 1:1 map with HW descriptor
|
||||||
|
*/
|
||||||
|
struct edma_sw_desc {
|
||||||
|
struct sk_buff *skb;
|
||||||
|
dma_addr_t dma; /* dma address */
|
||||||
|
u16 length; /* Tx/Rx buffer length */
|
||||||
|
u32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* per core related information */
|
||||||
|
struct edma_per_cpu_queues_info {
|
||||||
|
struct napi_struct napi; /* napi associated with the core */
|
||||||
|
u32 tx_mask; /* tx interrupt mask */
|
||||||
|
u32 rx_mask; /* rx interrupt mask */
|
||||||
|
u32 tx_status; /* tx interrupt status */
|
||||||
|
u32 rx_status; /* rx interrupt status */
|
||||||
|
u32 tx_start; /* tx queue start */
|
||||||
|
u32 rx_start; /* rx queue start */
|
||||||
|
struct edma_common_info *edma_cinfo; /* edma common info */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma specific common info */
|
||||||
|
struct edma_common_info {
|
||||||
|
struct edma_tx_desc_ring *tpd_ring[16]; /* 16 Tx queues */
|
||||||
|
struct edma_rfd_desc_ring *rfd_ring[8]; /* 8 Rx queues */
|
||||||
|
struct platform_device *pdev; /* device structure */
|
||||||
|
struct net_device *netdev[EDMA_MAX_PORTID_SUPPORTED];
|
||||||
|
struct net_device *portid_netdev_lookup_tbl[EDMA_MAX_PORTID_BITMAP_INDEX];
|
||||||
|
struct ctl_table_header *edma_ctl_table_hdr;
|
||||||
|
int num_gmac;
|
||||||
|
struct edma_ethtool_statistics edma_ethstats; /* ethtool stats */
|
||||||
|
int num_rx_queues; /* number of rx queue */
|
||||||
|
u32 num_tx_queues; /* number of tx queue */
|
||||||
|
u32 tx_irq[16]; /* number of tx irq */
|
||||||
|
u32 rx_irq[8]; /* number of rx irq */
|
||||||
|
u32 from_cpu; /* from CPU TPD field */
|
||||||
|
u32 num_rxq_per_core; /* Rx queues per core */
|
||||||
|
u32 num_txq_per_core; /* Tx queues per core */
|
||||||
|
u16 tx_ring_count; /* Tx ring count */
|
||||||
|
u16 rx_ring_count; /* Rx ring*/
|
||||||
|
u16 rx_head_buffer_len; /* rx buffer length */
|
||||||
|
u16 rx_page_buffer_len; /* rx buffer length */
|
||||||
|
u32 page_mode; /* Jumbo frame supported flag */
|
||||||
|
u32 fraglist_mode; /* fraglist supported flag */
|
||||||
|
struct edma_hw hw; /* edma hw specific structure */
|
||||||
|
struct edma_per_cpu_queues_info edma_percpu_info[CONFIG_NR_CPUS]; /* per cpu information */
|
||||||
|
spinlock_t stats_lock; /* protect edma stats area for updation */
|
||||||
|
struct timer_list edma_stats_timer;
|
||||||
|
bool is_single_phy;
|
||||||
|
void __iomem *ess_hw_addr;
|
||||||
|
struct clk *ess_clk;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* transimit packet descriptor (tpd) ring */
|
||||||
|
struct edma_tx_desc_ring {
|
||||||
|
struct netdev_queue *nq[EDMA_MAX_NETDEV_PER_QUEUE]; /* Linux queue index */
|
||||||
|
struct net_device *netdev[EDMA_MAX_NETDEV_PER_QUEUE];
|
||||||
|
/* Array of netdevs associated with the tpd ring */
|
||||||
|
void *hw_desc; /* descriptor ring virtual address */
|
||||||
|
struct edma_sw_desc *sw_desc; /* buffer associated with ring */
|
||||||
|
int netdev_bmp; /* Bitmap for per-ring netdevs */
|
||||||
|
u32 size; /* descriptor ring length in bytes */
|
||||||
|
u16 count; /* number of descriptors in the ring */
|
||||||
|
dma_addr_t dma; /* descriptor ring physical address */
|
||||||
|
u16 sw_next_to_fill; /* next Tx descriptor to fill */
|
||||||
|
u16 sw_next_to_clean; /* next Tx descriptor to clean */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* receive free descriptor (rfd) ring */
|
||||||
|
struct edma_rfd_desc_ring {
|
||||||
|
void *hw_desc; /* descriptor ring virtual address */
|
||||||
|
struct edma_sw_desc *sw_desc; /* buffer associated with ring */
|
||||||
|
u16 size; /* bytes allocated to sw_desc */
|
||||||
|
u16 count; /* number of descriptors in the ring */
|
||||||
|
dma_addr_t dma; /* descriptor ring physical address */
|
||||||
|
u16 sw_next_to_fill; /* next descriptor to fill */
|
||||||
|
u16 sw_next_to_clean; /* next descriptor to clean */
|
||||||
|
u16 pending_fill; /* fill pending from previous iteration */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma_rfs_flter_node - rfs filter node in hash table */
|
||||||
|
struct edma_rfs_filter_node {
|
||||||
|
struct flow_keys keys;
|
||||||
|
u32 flow_id; /* flow_id of filter provided by kernel */
|
||||||
|
u16 filter_id; /* filter id of filter returned by adaptor */
|
||||||
|
u16 rq_id; /* desired rq index */
|
||||||
|
struct hlist_node node; /* edma rfs list node */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma_rfs_flow_tbl - rfs flow table */
|
||||||
|
struct edma_rfs_flow_table {
|
||||||
|
u16 max_num_filter; /* Maximum number of filters edma supports */
|
||||||
|
u16 hashtoclean; /* hash table index to clean next */
|
||||||
|
int filter_available; /* Number of free filters available */
|
||||||
|
struct hlist_head hlist_head[EDMA_RFS_FLOW_ENTRIES];
|
||||||
|
spinlock_t rfs_ftab_lock;
|
||||||
|
struct timer_list expire_rfs; /* timer function for edma_rps_may_expire_flow */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* EDMA net device structure */
|
||||||
|
struct edma_adapter {
|
||||||
|
struct net_device *netdev; /* netdevice */
|
||||||
|
struct platform_device *pdev; /* platform device */
|
||||||
|
struct edma_common_info *edma_cinfo; /* edma common info */
|
||||||
|
struct phy_device *phydev; /* Phy device */
|
||||||
|
struct edma_rfs_flow_table rfs; /* edma rfs flow table */
|
||||||
|
struct net_device_stats stats; /* netdev statistics */
|
||||||
|
set_rfs_filter_callback_t set_rfs_rule;
|
||||||
|
u32 flags;/* status flags */
|
||||||
|
unsigned long state_flags; /* GMAC up/down flags */
|
||||||
|
u32 forced_speed; /* link force speed */
|
||||||
|
u32 forced_duplex; /* link force duplex */
|
||||||
|
u32 link_state; /* phy link state */
|
||||||
|
u32 phy_mdio_addr; /* PHY device address on MII interface */
|
||||||
|
u32 poll_required; /* check if link polling is required */
|
||||||
|
u32 tx_start_offset[CONFIG_NR_CPUS]; /* tx queue start */
|
||||||
|
u32 default_vlan_tag; /* vlan tag */
|
||||||
|
u32 dp_bitmap;
|
||||||
|
uint8_t phy_id[MII_BUS_ID_SIZE + 3];
|
||||||
|
};
|
||||||
|
|
||||||
|
int edma_alloc_queues_tx(struct edma_common_info *edma_cinfo);
|
||||||
|
int edma_alloc_queues_rx(struct edma_common_info *edma_cinfo);
|
||||||
|
int edma_open(struct net_device *netdev);
|
||||||
|
int edma_close(struct net_device *netdev);
|
||||||
|
void edma_free_tx_resources(struct edma_common_info *edma_c_info);
|
||||||
|
void edma_free_rx_resources(struct edma_common_info *edma_c_info);
|
||||||
|
int edma_alloc_tx_rings(struct edma_common_info *edma_cinfo);
|
||||||
|
int edma_alloc_rx_rings(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_free_tx_rings(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_free_rx_rings(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_free_queues(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_irq_disable(struct edma_common_info *edma_cinfo);
|
||||||
|
int edma_reset(struct edma_common_info *edma_cinfo);
|
||||||
|
int edma_poll(struct napi_struct *napi, int budget);
|
||||||
|
netdev_tx_t edma_xmit(struct sk_buff *skb,
|
||||||
|
struct net_device *netdev);
|
||||||
|
int edma_configure(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_irq_enable(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_enable_tx_ctrl(struct edma_hw *hw);
|
||||||
|
void edma_enable_rx_ctrl(struct edma_hw *hw);
|
||||||
|
void edma_stop_rx_tx(struct edma_hw *hw);
|
||||||
|
void edma_free_irqs(struct edma_adapter *adapter);
|
||||||
|
irqreturn_t edma_interrupt(int irq, void *dev);
|
||||||
|
void edma_write_reg(u16 reg_addr, u32 reg_value);
|
||||||
|
void edma_read_reg(u16 reg_addr, volatile u32 *reg_value);
|
||||||
|
struct net_device_stats *edma_get_stats(struct net_device *netdev);
|
||||||
|
int edma_set_mac_addr(struct net_device *netdev, void *p);
|
||||||
|
int edma_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
|
||||||
|
u16 rxq, u32 flow_id);
|
||||||
|
int edma_register_rfs_filter(struct net_device *netdev,
|
||||||
|
set_rfs_filter_callback_t set_filter);
|
||||||
|
void edma_flow_may_expire(struct timer_list *t);
|
||||||
|
void edma_set_ethtool_ops(struct net_device *netdev);
|
||||||
|
void edma_set_stp_rstp(bool tag);
|
||||||
|
void edma_assign_ath_hdr_type(int tag);
|
||||||
|
int edma_get_default_vlan_tag(struct net_device *netdev);
|
||||||
|
void edma_adjust_link(struct net_device *netdev);
|
||||||
|
int edma_fill_netdev(struct edma_common_info *edma_cinfo, int qid, int num, int txq_id);
|
||||||
|
void edma_read_append_stats(struct edma_common_info *edma_cinfo);
|
||||||
|
void edma_change_tx_coalesce(int usecs);
|
||||||
|
void edma_change_rx_coalesce(int usecs);
|
||||||
|
void edma_get_tx_rx_coalesce(u32 *reg_val);
|
||||||
|
void edma_clear_irq_status(void);
|
||||||
|
void ess_set_port_status_speed(struct edma_common_info *edma_cinfo,
|
||||||
|
struct phy_device *phydev, uint8_t port_id);
|
||||||
|
#endif /* _EDMA_H_ */
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,384 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015 - 2016, The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
|
* above copyright notice and this permission notice appear in all copies.
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/ethtool.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include "edma.h"
|
||||||
|
|
||||||
|
struct edma_ethtool_stats {
|
||||||
|
uint8_t stat_string[ETH_GSTRING_LEN];
|
||||||
|
uint32_t stat_offset;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define EDMA_STAT(m) offsetof(struct edma_ethtool_statistics, m)
|
||||||
|
#define DRVINFO_LEN 32
|
||||||
|
|
||||||
|
/* Array of strings describing statistics
|
||||||
|
*/
|
||||||
|
static const struct edma_ethtool_stats edma_gstrings_stats[] = {
|
||||||
|
{"tx_q0_pkt", EDMA_STAT(tx_q0_pkt)},
|
||||||
|
{"tx_q1_pkt", EDMA_STAT(tx_q1_pkt)},
|
||||||
|
{"tx_q2_pkt", EDMA_STAT(tx_q2_pkt)},
|
||||||
|
{"tx_q3_pkt", EDMA_STAT(tx_q3_pkt)},
|
||||||
|
{"tx_q4_pkt", EDMA_STAT(tx_q4_pkt)},
|
||||||
|
{"tx_q5_pkt", EDMA_STAT(tx_q5_pkt)},
|
||||||
|
{"tx_q6_pkt", EDMA_STAT(tx_q6_pkt)},
|
||||||
|
{"tx_q7_pkt", EDMA_STAT(tx_q7_pkt)},
|
||||||
|
{"tx_q8_pkt", EDMA_STAT(tx_q8_pkt)},
|
||||||
|
{"tx_q9_pkt", EDMA_STAT(tx_q9_pkt)},
|
||||||
|
{"tx_q10_pkt", EDMA_STAT(tx_q10_pkt)},
|
||||||
|
{"tx_q11_pkt", EDMA_STAT(tx_q11_pkt)},
|
||||||
|
{"tx_q12_pkt", EDMA_STAT(tx_q12_pkt)},
|
||||||
|
{"tx_q13_pkt", EDMA_STAT(tx_q13_pkt)},
|
||||||
|
{"tx_q14_pkt", EDMA_STAT(tx_q14_pkt)},
|
||||||
|
{"tx_q15_pkt", EDMA_STAT(tx_q15_pkt)},
|
||||||
|
{"tx_q0_byte", EDMA_STAT(tx_q0_byte)},
|
||||||
|
{"tx_q1_byte", EDMA_STAT(tx_q1_byte)},
|
||||||
|
{"tx_q2_byte", EDMA_STAT(tx_q2_byte)},
|
||||||
|
{"tx_q3_byte", EDMA_STAT(tx_q3_byte)},
|
||||||
|
{"tx_q4_byte", EDMA_STAT(tx_q4_byte)},
|
||||||
|
{"tx_q5_byte", EDMA_STAT(tx_q5_byte)},
|
||||||
|
{"tx_q6_byte", EDMA_STAT(tx_q6_byte)},
|
||||||
|
{"tx_q7_byte", EDMA_STAT(tx_q7_byte)},
|
||||||
|
{"tx_q8_byte", EDMA_STAT(tx_q8_byte)},
|
||||||
|
{"tx_q9_byte", EDMA_STAT(tx_q9_byte)},
|
||||||
|
{"tx_q10_byte", EDMA_STAT(tx_q10_byte)},
|
||||||
|
{"tx_q11_byte", EDMA_STAT(tx_q11_byte)},
|
||||||
|
{"tx_q12_byte", EDMA_STAT(tx_q12_byte)},
|
||||||
|
{"tx_q13_byte", EDMA_STAT(tx_q13_byte)},
|
||||||
|
{"tx_q14_byte", EDMA_STAT(tx_q14_byte)},
|
||||||
|
{"tx_q15_byte", EDMA_STAT(tx_q15_byte)},
|
||||||
|
{"rx_q0_pkt", EDMA_STAT(rx_q0_pkt)},
|
||||||
|
{"rx_q1_pkt", EDMA_STAT(rx_q1_pkt)},
|
||||||
|
{"rx_q2_pkt", EDMA_STAT(rx_q2_pkt)},
|
||||||
|
{"rx_q3_pkt", EDMA_STAT(rx_q3_pkt)},
|
||||||
|
{"rx_q4_pkt", EDMA_STAT(rx_q4_pkt)},
|
||||||
|
{"rx_q5_pkt", EDMA_STAT(rx_q5_pkt)},
|
||||||
|
{"rx_q6_pkt", EDMA_STAT(rx_q6_pkt)},
|
||||||
|
{"rx_q7_pkt", EDMA_STAT(rx_q7_pkt)},
|
||||||
|
{"rx_q0_byte", EDMA_STAT(rx_q0_byte)},
|
||||||
|
{"rx_q1_byte", EDMA_STAT(rx_q1_byte)},
|
||||||
|
{"rx_q2_byte", EDMA_STAT(rx_q2_byte)},
|
||||||
|
{"rx_q3_byte", EDMA_STAT(rx_q3_byte)},
|
||||||
|
{"rx_q4_byte", EDMA_STAT(rx_q4_byte)},
|
||||||
|
{"rx_q5_byte", EDMA_STAT(rx_q5_byte)},
|
||||||
|
{"rx_q6_byte", EDMA_STAT(rx_q6_byte)},
|
||||||
|
{"rx_q7_byte", EDMA_STAT(rx_q7_byte)},
|
||||||
|
{"tx_desc_error", EDMA_STAT(tx_desc_error)},
|
||||||
|
{"rx_alloc_fail_ctr", EDMA_STAT(rx_alloc_fail_ctr)},
|
||||||
|
};
|
||||||
|
|
||||||
|
#define EDMA_STATS_LEN ARRAY_SIZE(edma_gstrings_stats)
|
||||||
|
|
||||||
|
/* edma_get_strset_count()
|
||||||
|
* Get strset count
|
||||||
|
*/
|
||||||
|
static int edma_get_strset_count(struct net_device *netdev,
|
||||||
|
int sset)
|
||||||
|
{
|
||||||
|
switch (sset) {
|
||||||
|
case ETH_SS_STATS:
|
||||||
|
return EDMA_STATS_LEN;
|
||||||
|
default:
|
||||||
|
netdev_dbg(netdev, "%s: Invalid string set", __func__);
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* edma_get_strings()
|
||||||
|
* get stats string
|
||||||
|
*/
|
||||||
|
static void edma_get_strings(struct net_device *netdev, uint32_t stringset,
|
||||||
|
uint8_t *data)
|
||||||
|
{
|
||||||
|
uint8_t *p = data;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
switch (stringset) {
|
||||||
|
case ETH_SS_STATS:
|
||||||
|
for (i = 0; i < EDMA_STATS_LEN; i++) {
|
||||||
|
memcpy(p, edma_gstrings_stats[i].stat_string,
|
||||||
|
min((size_t)ETH_GSTRING_LEN,
|
||||||
|
strlen(edma_gstrings_stats[i].stat_string)
|
||||||
|
+ 1));
|
||||||
|
p += ETH_GSTRING_LEN;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_ethtool_stats()
|
||||||
|
* Get ethtool statistics
|
||||||
|
*/
|
||||||
|
static void edma_get_ethtool_stats(struct net_device *netdev,
|
||||||
|
struct ethtool_stats *stats, uint64_t *data)
|
||||||
|
{
|
||||||
|
struct edma_adapter *adapter = netdev_priv(netdev);
|
||||||
|
struct edma_common_info *edma_cinfo = adapter->edma_cinfo;
|
||||||
|
int i;
|
||||||
|
uint8_t *p = NULL;
|
||||||
|
|
||||||
|
edma_read_append_stats(edma_cinfo);
|
||||||
|
|
||||||
|
for(i = 0; i < EDMA_STATS_LEN; i++) {
|
||||||
|
p = (uint8_t *)&(edma_cinfo->edma_ethstats) +
|
||||||
|
edma_gstrings_stats[i].stat_offset;
|
||||||
|
data[i] = *(uint32_t *)p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_drvinfo()
|
||||||
|
* get edma driver info
|
||||||
|
*/
|
||||||
|
static void edma_get_drvinfo(struct net_device *dev,
|
||||||
|
struct ethtool_drvinfo *info)
|
||||||
|
{
|
||||||
|
strlcpy(info->driver, "ess_edma", DRVINFO_LEN);
|
||||||
|
strlcpy(info->bus_info, "axi", ETHTOOL_BUSINFO_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_nway_reset()
|
||||||
|
* Reset the phy, if available.
|
||||||
|
*/
|
||||||
|
static int edma_nway_reset(struct net_device *netdev)
|
||||||
|
{
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_wol()
|
||||||
|
* get wake on lan info
|
||||||
|
*/
|
||||||
|
static void edma_get_wol(struct net_device *netdev,
|
||||||
|
struct ethtool_wolinfo *wol)
|
||||||
|
{
|
||||||
|
wol->supported = 0;
|
||||||
|
wol->wolopts = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_msglevel()
|
||||||
|
* get message level.
|
||||||
|
*/
|
||||||
|
static uint32_t edma_get_msglevel(struct net_device *netdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_settings()
|
||||||
|
* Get edma settings
|
||||||
|
*/
|
||||||
|
static int edma_get_settings(struct net_device *netdev,
|
||||||
|
struct ethtool_link_ksettings *cmd)
|
||||||
|
{
|
||||||
|
struct edma_adapter *adapter = netdev_priv(netdev);
|
||||||
|
|
||||||
|
if (adapter->poll_required) {
|
||||||
|
struct phy_device *phydev = NULL;
|
||||||
|
uint16_t phyreg;
|
||||||
|
|
||||||
|
if ((adapter->forced_speed != SPEED_UNKNOWN)
|
||||||
|
&& !(adapter->poll_required))
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
|
phydev = adapter->phydev;
|
||||||
|
|
||||||
|
linkmode_copy(cmd->link_modes.advertising, phydev->advertising);
|
||||||
|
linkmode_copy(cmd->link_modes.supported, phydev->supported);
|
||||||
|
|
||||||
|
cmd->base.autoneg = phydev->autoneg;
|
||||||
|
|
||||||
|
if (adapter->link_state == __EDMA_LINKDOWN) {
|
||||||
|
cmd->base.speed = SPEED_UNKNOWN;
|
||||||
|
cmd->base.duplex = DUPLEX_UNKNOWN;
|
||||||
|
} else {
|
||||||
|
cmd->base.speed = phydev->speed;
|
||||||
|
cmd->base.duplex = phydev->duplex;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd->base.phy_address = adapter->phy_mdio_addr;
|
||||||
|
|
||||||
|
phyreg = (uint16_t)phy_read(adapter->phydev, MII_LPA);
|
||||||
|
if (phyreg & LPA_10HALF)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
|
||||||
|
if (phyreg & LPA_10FULL)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
|
||||||
|
if (phyreg & LPA_100HALF)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
|
||||||
|
if (phyreg & LPA_100FULL)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
|
||||||
|
phyreg = (uint16_t)phy_read(adapter->phydev, MII_STAT1000);
|
||||||
|
if (phyreg & LPA_1000HALF)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Half_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
|
||||||
|
if (phyreg & LPA_1000FULL)
|
||||||
|
linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
|
||||||
|
cmd->link_modes.lp_advertising);
|
||||||
|
} else {
|
||||||
|
/* If the speed/duplex for this GMAC is forced and we
|
||||||
|
* are not polling for link state changes, return the
|
||||||
|
* values as specified by platform. This will be true
|
||||||
|
* for GMACs connected to switch, and interfaces that
|
||||||
|
* do not use a PHY.
|
||||||
|
*/
|
||||||
|
if (!(adapter->poll_required)) {
|
||||||
|
if (adapter->forced_speed != SPEED_UNKNOWN) {
|
||||||
|
/* set speed and duplex */
|
||||||
|
cmd->base.speed = SPEED_1000;
|
||||||
|
cmd->base.duplex = DUPLEX_FULL;
|
||||||
|
|
||||||
|
/* Populate capabilities advertised by self */
|
||||||
|
linkmode_zero(cmd->link_modes.advertising);
|
||||||
|
cmd->base.autoneg = 0;
|
||||||
|
cmd->base.port = PORT_TP;
|
||||||
|
cmd->base.transceiver = XCVR_EXTERNAL;
|
||||||
|
} else {
|
||||||
|
/* non link polled and non
|
||||||
|
* forced speed/duplex interface
|
||||||
|
*/
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_set_settings()
|
||||||
|
* Set EDMA settings
|
||||||
|
*/
|
||||||
|
static int edma_set_settings(struct net_device *netdev,
|
||||||
|
const struct ethtool_link_ksettings *cmd)
|
||||||
|
{
|
||||||
|
struct edma_adapter *adapter = netdev_priv(netdev);
|
||||||
|
struct phy_device *phydev = NULL;
|
||||||
|
|
||||||
|
if ((adapter->forced_speed != SPEED_UNKNOWN) &&
|
||||||
|
!adapter->poll_required)
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
|
phydev = adapter->phydev;
|
||||||
|
linkmode_copy(phydev->advertising, cmd->link_modes.advertising);
|
||||||
|
linkmode_copy(phydev->supported, cmd->link_modes.supported);
|
||||||
|
phydev->autoneg = cmd->base.autoneg;
|
||||||
|
phydev->speed = cmd->base.speed;
|
||||||
|
phydev->duplex = cmd->base.duplex;
|
||||||
|
|
||||||
|
genphy_config_aneg(phydev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_coalesce
|
||||||
|
* get interrupt mitigation
|
||||||
|
*/
|
||||||
|
static int edma_get_coalesce(struct net_device *netdev,
|
||||||
|
struct ethtool_coalesce *ec)
|
||||||
|
{
|
||||||
|
u32 reg_val;
|
||||||
|
|
||||||
|
edma_get_tx_rx_coalesce(®_val);
|
||||||
|
|
||||||
|
/* We read the Interrupt Moderation Timer(IMT) register value,
|
||||||
|
* use lower 16 bit for rx and higher 16 bit for Tx. We do a
|
||||||
|
* left shift by 1, because IMT resolution timer is 2usecs.
|
||||||
|
* Hence the value given by the register is multiplied by 2 to
|
||||||
|
* get the actual time in usecs.
|
||||||
|
*/
|
||||||
|
ec->tx_coalesce_usecs = (((reg_val >> 16) & 0xffff) << 1);
|
||||||
|
ec->rx_coalesce_usecs = ((reg_val & 0xffff) << 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_set_coalesce
|
||||||
|
* set interrupt mitigation
|
||||||
|
*/
|
||||||
|
static int edma_set_coalesce(struct net_device *netdev,
|
||||||
|
struct ethtool_coalesce *ec)
|
||||||
|
{
|
||||||
|
if (ec->tx_coalesce_usecs)
|
||||||
|
edma_change_tx_coalesce(ec->tx_coalesce_usecs);
|
||||||
|
if (ec->rx_coalesce_usecs)
|
||||||
|
edma_change_rx_coalesce(ec->rx_coalesce_usecs);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_set_priv_flags()
|
||||||
|
* Set EDMA private flags
|
||||||
|
*/
|
||||||
|
static int edma_set_priv_flags(struct net_device *netdev, u32 flags)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_priv_flags()
|
||||||
|
* get edma driver flags
|
||||||
|
*/
|
||||||
|
static u32 edma_get_priv_flags(struct net_device *netdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* edma_get_ringparam()
|
||||||
|
* get ring size
|
||||||
|
*/
|
||||||
|
static void edma_get_ringparam(struct net_device *netdev,
|
||||||
|
struct ethtool_ringparam *ring)
|
||||||
|
{
|
||||||
|
struct edma_adapter *adapter = netdev_priv(netdev);
|
||||||
|
struct edma_common_info *edma_cinfo = adapter->edma_cinfo;
|
||||||
|
|
||||||
|
ring->tx_max_pending = edma_cinfo->tx_ring_count;
|
||||||
|
ring->rx_max_pending = edma_cinfo->rx_ring_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ethtool operations
|
||||||
|
*/
|
||||||
|
static const struct ethtool_ops edma_ethtool_ops = {
|
||||||
|
.get_drvinfo = &edma_get_drvinfo,
|
||||||
|
.get_link = ðtool_op_get_link,
|
||||||
|
.get_msglevel = &edma_get_msglevel,
|
||||||
|
.nway_reset = &edma_nway_reset,
|
||||||
|
.get_wol = &edma_get_wol,
|
||||||
|
.get_link_ksettings = &edma_get_settings,
|
||||||
|
.set_link_ksettings = &edma_set_settings,
|
||||||
|
.get_strings = &edma_get_strings,
|
||||||
|
.get_sset_count = &edma_get_strset_count,
|
||||||
|
.get_ethtool_stats = &edma_get_ethtool_stats,
|
||||||
|
.get_coalesce = &edma_get_coalesce,
|
||||||
|
.set_coalesce = &edma_set_coalesce,
|
||||||
|
.get_priv_flags = edma_get_priv_flags,
|
||||||
|
.set_priv_flags = edma_set_priv_flags,
|
||||||
|
.get_ringparam = edma_get_ringparam,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* edma_set_ethtool_ops
|
||||||
|
* Set ethtool operations
|
||||||
|
*/
|
||||||
|
void edma_set_ethtool_ops(struct net_device *netdev)
|
||||||
|
{
|
||||||
|
netdev->ethtool_ops = &edma_ethtool_ops;
|
||||||
|
}
|
|
@ -0,0 +1,389 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014 - 2016, The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
|
* above copyright notice and this permission notice appear in all copies.
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ESS_EDMA_H_
|
||||||
|
#define _ESS_EDMA_H_
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct edma_adapter;
|
||||||
|
struct edma_hw;
|
||||||
|
|
||||||
|
/* register definition */
|
||||||
|
#define EDMA_REG_MAS_CTRL 0x0
|
||||||
|
#define EDMA_REG_TIMEOUT_CTRL 0x004
|
||||||
|
#define EDMA_REG_DBG0 0x008
|
||||||
|
#define EDMA_REG_DBG1 0x00C
|
||||||
|
#define EDMA_REG_SW_CTRL0 0x100
|
||||||
|
#define EDMA_REG_SW_CTRL1 0x104
|
||||||
|
|
||||||
|
/* Interrupt Status Register */
|
||||||
|
#define EDMA_REG_RX_ISR 0x200
|
||||||
|
#define EDMA_REG_TX_ISR 0x208
|
||||||
|
#define EDMA_REG_MISC_ISR 0x210
|
||||||
|
#define EDMA_REG_WOL_ISR 0x218
|
||||||
|
|
||||||
|
#define EDMA_MISC_ISR_RX_URG_Q(x) (1 << x)
|
||||||
|
|
||||||
|
#define EDMA_MISC_ISR_AXIR_TIMEOUT 0x00000100
|
||||||
|
#define EDMA_MISC_ISR_AXIR_ERR 0x00000200
|
||||||
|
#define EDMA_MISC_ISR_TXF_DEAD 0x00000400
|
||||||
|
#define EDMA_MISC_ISR_AXIW_ERR 0x00000800
|
||||||
|
#define EDMA_MISC_ISR_AXIW_TIMEOUT 0x00001000
|
||||||
|
|
||||||
|
#define EDMA_WOL_ISR 0x00000001
|
||||||
|
|
||||||
|
/* Interrupt Mask Register */
|
||||||
|
#define EDMA_REG_MISC_IMR 0x214
|
||||||
|
#define EDMA_REG_WOL_IMR 0x218
|
||||||
|
|
||||||
|
#define EDMA_RX_IMR_NORMAL_MASK 0x1
|
||||||
|
#define EDMA_TX_IMR_NORMAL_MASK 0x1
|
||||||
|
#define EDMA_MISC_IMR_NORMAL_MASK 0x80001FFF
|
||||||
|
#define EDMA_WOL_IMR_NORMAL_MASK 0x1
|
||||||
|
|
||||||
|
/* Edma receive consumer index */
|
||||||
|
#define EDMA_REG_RX_SW_CONS_IDX_Q(x) (0x220 + ((x) << 2)) /* x is the queue id */
|
||||||
|
/* Edma transmit consumer index */
|
||||||
|
#define EDMA_REG_TX_SW_CONS_IDX_Q(x) (0x240 + ((x) << 2)) /* x is the queue id */
|
||||||
|
|
||||||
|
/* IRQ Moderator Initial Timer Register */
|
||||||
|
#define EDMA_REG_IRQ_MODRT_TIMER_INIT 0x280
|
||||||
|
#define EDMA_IRQ_MODRT_TIMER_MASK 0xFFFF
|
||||||
|
#define EDMA_IRQ_MODRT_RX_TIMER_SHIFT 0
|
||||||
|
#define EDMA_IRQ_MODRT_TX_TIMER_SHIFT 16
|
||||||
|
|
||||||
|
/* Interrupt Control Register */
|
||||||
|
#define EDMA_REG_INTR_CTRL 0x284
|
||||||
|
#define EDMA_INTR_CLR_TYP_SHIFT 0
|
||||||
|
#define EDMA_INTR_SW_IDX_W_TYP_SHIFT 1
|
||||||
|
#define EDMA_INTR_CLEAR_TYPE_W1 0
|
||||||
|
#define EDMA_INTR_CLEAR_TYPE_R 1
|
||||||
|
|
||||||
|
/* RX Interrupt Mask Register */
|
||||||
|
#define EDMA_REG_RX_INT_MASK_Q(x) (0x300 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
/* TX Interrupt mask register */
|
||||||
|
#define EDMA_REG_TX_INT_MASK_Q(x) (0x340 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
/* Load Ptr Register
|
||||||
|
* Software sets this bit after the initialization of the head and tail
|
||||||
|
*/
|
||||||
|
#define EDMA_REG_TX_SRAM_PART 0x400
|
||||||
|
#define EDMA_LOAD_PTR_SHIFT 16
|
||||||
|
|
||||||
|
/* TXQ Control Register */
|
||||||
|
#define EDMA_REG_TXQ_CTRL 0x404
|
||||||
|
#define EDMA_TXQ_CTRL_IP_OPTION_EN 0x10
|
||||||
|
#define EDMA_TXQ_CTRL_TXQ_EN 0x20
|
||||||
|
#define EDMA_TXQ_CTRL_ENH_MODE 0x40
|
||||||
|
#define EDMA_TXQ_CTRL_LS_8023_EN 0x80
|
||||||
|
#define EDMA_TXQ_CTRL_TPD_BURST_EN 0x100
|
||||||
|
#define EDMA_TXQ_CTRL_LSO_BREAK_EN 0x200
|
||||||
|
#define EDMA_TXQ_NUM_TPD_BURST_MASK 0xF
|
||||||
|
#define EDMA_TXQ_TXF_BURST_NUM_MASK 0xFFFF
|
||||||
|
#define EDMA_TXQ_NUM_TPD_BURST_SHIFT 0
|
||||||
|
#define EDMA_TXQ_TXF_BURST_NUM_SHIFT 16
|
||||||
|
|
||||||
|
#define EDMA_REG_TXF_WATER_MARK 0x408 /* In 8-bytes */
|
||||||
|
#define EDMA_TXF_WATER_MARK_MASK 0x0FFF
|
||||||
|
#define EDMA_TXF_LOW_WATER_MARK_SHIFT 0
|
||||||
|
#define EDMA_TXF_HIGH_WATER_MARK_SHIFT 16
|
||||||
|
#define EDMA_TXQ_CTRL_BURST_MODE_EN 0x80000000
|
||||||
|
|
||||||
|
/* WRR Control Register */
|
||||||
|
#define EDMA_REG_WRR_CTRL_Q0_Q3 0x40c
|
||||||
|
#define EDMA_REG_WRR_CTRL_Q4_Q7 0x410
|
||||||
|
#define EDMA_REG_WRR_CTRL_Q8_Q11 0x414
|
||||||
|
#define EDMA_REG_WRR_CTRL_Q12_Q15 0x418
|
||||||
|
|
||||||
|
/* Weight round robin(WRR), it takes queue as input, and computes
|
||||||
|
* starting bits where we need to write the weight for a particular
|
||||||
|
* queue
|
||||||
|
*/
|
||||||
|
#define EDMA_WRR_SHIFT(x) (((x) * 5) % 20)
|
||||||
|
|
||||||
|
/* Tx Descriptor Control Register */
|
||||||
|
#define EDMA_REG_TPD_RING_SIZE 0x41C
|
||||||
|
#define EDMA_TPD_RING_SIZE_SHIFT 0
|
||||||
|
#define EDMA_TPD_RING_SIZE_MASK 0xFFFF
|
||||||
|
|
||||||
|
/* Transmit descriptor base address */
|
||||||
|
#define EDMA_REG_TPD_BASE_ADDR_Q(x) (0x420 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
/* TPD Index Register */
|
||||||
|
#define EDMA_REG_TPD_IDX_Q(x) (0x460 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
#define EDMA_TPD_PROD_IDX_BITS 0x0000FFFF
|
||||||
|
#define EDMA_TPD_CONS_IDX_BITS 0xFFFF0000
|
||||||
|
#define EDMA_TPD_PROD_IDX_MASK 0xFFFF
|
||||||
|
#define EDMA_TPD_CONS_IDX_MASK 0xFFFF
|
||||||
|
#define EDMA_TPD_PROD_IDX_SHIFT 0
|
||||||
|
#define EDMA_TPD_CONS_IDX_SHIFT 16
|
||||||
|
|
||||||
|
/* TX Virtual Queue Mapping Control Register */
|
||||||
|
#define EDMA_REG_VQ_CTRL0 0x4A0
|
||||||
|
#define EDMA_REG_VQ_CTRL1 0x4A4
|
||||||
|
|
||||||
|
/* Virtual QID shift, it takes queue as input, and computes
|
||||||
|
* Virtual QID position in virtual qid control register
|
||||||
|
*/
|
||||||
|
#define EDMA_VQ_ID_SHIFT(i) (((i) * 3) % 24)
|
||||||
|
|
||||||
|
/* Virtual Queue Default Value */
|
||||||
|
#define EDMA_VQ_REG_VALUE 0x240240
|
||||||
|
|
||||||
|
/* Tx side Port Interface Control Register */
|
||||||
|
#define EDMA_REG_PORT_CTRL 0x4A8
|
||||||
|
#define EDMA_PAD_EN_SHIFT 15
|
||||||
|
|
||||||
|
/* Tx side VLAN Configuration Register */
|
||||||
|
#define EDMA_REG_VLAN_CFG 0x4AC
|
||||||
|
|
||||||
|
#define EDMA_TX_CVLAN 16
|
||||||
|
#define EDMA_TX_INS_CVLAN 17
|
||||||
|
#define EDMA_TX_CVLAN_TAG_SHIFT 0
|
||||||
|
|
||||||
|
#define EDMA_TX_SVLAN 14
|
||||||
|
#define EDMA_TX_INS_SVLAN 15
|
||||||
|
#define EDMA_TX_SVLAN_TAG_SHIFT 16
|
||||||
|
|
||||||
|
/* Tx Queue Packet Statistic Register */
|
||||||
|
#define EDMA_REG_TX_STAT_PKT_Q(x) (0x700 + ((x) << 3)) /* x = queue id */
|
||||||
|
|
||||||
|
#define EDMA_TX_STAT_PKT_MASK 0xFFFFFF
|
||||||
|
|
||||||
|
/* Tx Queue Byte Statistic Register */
|
||||||
|
#define EDMA_REG_TX_STAT_BYTE_Q(x) (0x704 + ((x) << 3)) /* x = queue id */
|
||||||
|
|
||||||
|
/* Load Balance Based Ring Offset Register */
|
||||||
|
#define EDMA_REG_LB_RING 0x800
|
||||||
|
#define EDMA_LB_RING_ENTRY_MASK 0xff
|
||||||
|
#define EDMA_LB_RING_ID_MASK 0x7
|
||||||
|
#define EDMA_LB_RING_PROFILE_ID_MASK 0x3
|
||||||
|
#define EDMA_LB_RING_ENTRY_BIT_OFFSET 8
|
||||||
|
#define EDMA_LB_RING_ID_OFFSET 0
|
||||||
|
#define EDMA_LB_RING_PROFILE_ID_OFFSET 3
|
||||||
|
#define EDMA_LB_REG_VALUE 0x6040200
|
||||||
|
|
||||||
|
/* Load Balance Priority Mapping Register */
|
||||||
|
#define EDMA_REG_LB_PRI_START 0x804
|
||||||
|
#define EDMA_REG_LB_PRI_END 0x810
|
||||||
|
#define EDMA_LB_PRI_REG_INC 4
|
||||||
|
#define EDMA_LB_PRI_ENTRY_BIT_OFFSET 4
|
||||||
|
#define EDMA_LB_PRI_ENTRY_MASK 0xf
|
||||||
|
|
||||||
|
/* RSS Priority Mapping Register */
|
||||||
|
#define EDMA_REG_RSS_PRI 0x820
|
||||||
|
#define EDMA_RSS_PRI_ENTRY_MASK 0xf
|
||||||
|
#define EDMA_RSS_RING_ID_MASK 0x7
|
||||||
|
#define EDMA_RSS_PRI_ENTRY_BIT_OFFSET 4
|
||||||
|
|
||||||
|
/* RSS Indirection Register */
|
||||||
|
#define EDMA_REG_RSS_IDT(x) (0x840 + ((x) << 2)) /* x = No. of indirection table */
|
||||||
|
#define EDMA_NUM_IDT 16
|
||||||
|
#define EDMA_RSS_IDT_VALUE 0x64206420
|
||||||
|
|
||||||
|
/* Default RSS Ring Register */
|
||||||
|
#define EDMA_REG_DEF_RSS 0x890
|
||||||
|
#define EDMA_DEF_RSS_MASK 0x7
|
||||||
|
|
||||||
|
/* RSS Hash Function Type Register */
|
||||||
|
#define EDMA_REG_RSS_TYPE 0x894
|
||||||
|
#define EDMA_RSS_TYPE_NONE 0x01
|
||||||
|
#define EDMA_RSS_TYPE_IPV4TCP 0x02
|
||||||
|
#define EDMA_RSS_TYPE_IPV6_TCP 0x04
|
||||||
|
#define EDMA_RSS_TYPE_IPV4_UDP 0x08
|
||||||
|
#define EDMA_RSS_TYPE_IPV6UDP 0x10
|
||||||
|
#define EDMA_RSS_TYPE_IPV4 0x20
|
||||||
|
#define EDMA_RSS_TYPE_IPV6 0x40
|
||||||
|
#define EDMA_RSS_HASH_MODE_MASK 0x7f
|
||||||
|
|
||||||
|
#define EDMA_REG_RSS_HASH_VALUE 0x8C0
|
||||||
|
|
||||||
|
#define EDMA_REG_RSS_TYPE_RESULT 0x8C4
|
||||||
|
|
||||||
|
#define EDMA_HASH_TYPE_START 0
|
||||||
|
#define EDMA_HASH_TYPE_END 5
|
||||||
|
#define EDMA_HASH_TYPE_SHIFT 12
|
||||||
|
|
||||||
|
#define EDMA_RFS_FLOW_ENTRIES 1024
|
||||||
|
#define EDMA_RFS_FLOW_ENTRIES_MASK (EDMA_RFS_FLOW_ENTRIES - 1)
|
||||||
|
#define EDMA_RFS_EXPIRE_COUNT_PER_CALL 128
|
||||||
|
|
||||||
|
/* RFD Base Address Register */
|
||||||
|
#define EDMA_REG_RFD_BASE_ADDR_Q(x) (0x950 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
/* RFD Index Register */
|
||||||
|
#define EDMA_REG_RFD_IDX_Q(x) (0x9B0 + ((x) << 2))
|
||||||
|
|
||||||
|
#define EDMA_RFD_PROD_IDX_BITS 0x00000FFF
|
||||||
|
#define EDMA_RFD_CONS_IDX_BITS 0x0FFF0000
|
||||||
|
#define EDMA_RFD_PROD_IDX_MASK 0xFFF
|
||||||
|
#define EDMA_RFD_CONS_IDX_MASK 0xFFF
|
||||||
|
#define EDMA_RFD_PROD_IDX_SHIFT 0
|
||||||
|
#define EDMA_RFD_CONS_IDX_SHIFT 16
|
||||||
|
|
||||||
|
/* Rx Descriptor Control Register */
|
||||||
|
#define EDMA_REG_RX_DESC0 0xA10
|
||||||
|
#define EDMA_RFD_RING_SIZE_MASK 0xFFF
|
||||||
|
#define EDMA_RX_BUF_SIZE_MASK 0xFFFF
|
||||||
|
#define EDMA_RFD_RING_SIZE_SHIFT 0
|
||||||
|
#define EDMA_RX_BUF_SIZE_SHIFT 16
|
||||||
|
|
||||||
|
#define EDMA_REG_RX_DESC1 0xA14
|
||||||
|
#define EDMA_RXQ_RFD_BURST_NUM_MASK 0x3F
|
||||||
|
#define EDMA_RXQ_RFD_PF_THRESH_MASK 0x1F
|
||||||
|
#define EDMA_RXQ_RFD_LOW_THRESH_MASK 0xFFF
|
||||||
|
#define EDMA_RXQ_RFD_BURST_NUM_SHIFT 0
|
||||||
|
#define EDMA_RXQ_RFD_PF_THRESH_SHIFT 8
|
||||||
|
#define EDMA_RXQ_RFD_LOW_THRESH_SHIFT 16
|
||||||
|
|
||||||
|
/* RXQ Control Register */
|
||||||
|
#define EDMA_REG_RXQ_CTRL 0xA18
|
||||||
|
#define EDMA_FIFO_THRESH_TYPE_SHIF 0
|
||||||
|
#define EDMA_FIFO_THRESH_128_BYTE 0x0
|
||||||
|
#define EDMA_FIFO_THRESH_64_BYTE 0x1
|
||||||
|
#define EDMA_RXQ_CTRL_RMV_VLAN 0x00000002
|
||||||
|
#define EDMA_RXQ_CTRL_EN 0x0000FF00
|
||||||
|
|
||||||
|
/* AXI Burst Size Config */
|
||||||
|
#define EDMA_REG_AXIW_CTRL_MAXWRSIZE 0xA1C
|
||||||
|
#define EDMA_AXIW_MAXWRSIZE_VALUE 0x0
|
||||||
|
|
||||||
|
/* Rx Statistics Register */
|
||||||
|
#define EDMA_REG_RX_STAT_BYTE_Q(x) (0xA30 + ((x) << 2)) /* x = queue id */
|
||||||
|
#define EDMA_REG_RX_STAT_PKT_Q(x) (0xA50 + ((x) << 2)) /* x = queue id */
|
||||||
|
|
||||||
|
/* WoL Pattern Length Register */
|
||||||
|
#define EDMA_REG_WOL_PATTERN_LEN0 0xC00
|
||||||
|
#define EDMA_WOL_PT_LEN_MASK 0xFF
|
||||||
|
#define EDMA_WOL_PT0_LEN_SHIFT 0
|
||||||
|
#define EDMA_WOL_PT1_LEN_SHIFT 8
|
||||||
|
#define EDMA_WOL_PT2_LEN_SHIFT 16
|
||||||
|
#define EDMA_WOL_PT3_LEN_SHIFT 24
|
||||||
|
|
||||||
|
#define EDMA_REG_WOL_PATTERN_LEN1 0xC04
|
||||||
|
#define EDMA_WOL_PT4_LEN_SHIFT 0
|
||||||
|
#define EDMA_WOL_PT5_LEN_SHIFT 8
|
||||||
|
#define EDMA_WOL_PT6_LEN_SHIFT 16
|
||||||
|
|
||||||
|
/* WoL Control Register */
|
||||||
|
#define EDMA_REG_WOL_CTRL 0xC08
|
||||||
|
#define EDMA_WOL_WK_EN 0x00000001
|
||||||
|
#define EDMA_WOL_MG_EN 0x00000002
|
||||||
|
#define EDMA_WOL_PT0_EN 0x00000004
|
||||||
|
#define EDMA_WOL_PT1_EN 0x00000008
|
||||||
|
#define EDMA_WOL_PT2_EN 0x00000010
|
||||||
|
#define EDMA_WOL_PT3_EN 0x00000020
|
||||||
|
#define EDMA_WOL_PT4_EN 0x00000040
|
||||||
|
#define EDMA_WOL_PT5_EN 0x00000080
|
||||||
|
#define EDMA_WOL_PT6_EN 0x00000100
|
||||||
|
|
||||||
|
/* MAC Control Register */
|
||||||
|
#define EDMA_REG_MAC_CTRL0 0xC20
|
||||||
|
#define EDMA_REG_MAC_CTRL1 0xC24
|
||||||
|
|
||||||
|
/* WoL Pattern Register */
|
||||||
|
#define EDMA_REG_WOL_PATTERN_START 0x5000
|
||||||
|
#define EDMA_PATTERN_PART_REG_OFFSET 0x40
|
||||||
|
|
||||||
|
|
||||||
|
/* TX descriptor fields */
|
||||||
|
#define EDMA_TPD_HDR_SHIFT 0
|
||||||
|
#define EDMA_TPD_PPPOE_EN 0x00000100
|
||||||
|
#define EDMA_TPD_IP_CSUM_EN 0x00000200
|
||||||
|
#define EDMA_TPD_TCP_CSUM_EN 0x0000400
|
||||||
|
#define EDMA_TPD_UDP_CSUM_EN 0x00000800
|
||||||
|
#define EDMA_TPD_CUSTOM_CSUM_EN 0x00000C00
|
||||||
|
#define EDMA_TPD_LSO_EN 0x00001000
|
||||||
|
#define EDMA_TPD_LSO_V2_EN 0x00002000
|
||||||
|
#define EDMA_TPD_IPV4_EN 0x00010000
|
||||||
|
#define EDMA_TPD_MSS_MASK 0x1FFF
|
||||||
|
#define EDMA_TPD_MSS_SHIFT 18
|
||||||
|
#define EDMA_TPD_CUSTOM_CSUM_SHIFT 18
|
||||||
|
|
||||||
|
/* RRD descriptor fields */
|
||||||
|
#define EDMA_RRD_NUM_RFD_MASK 0x000F
|
||||||
|
#define EDMA_RRD_SVLAN 0x8000
|
||||||
|
#define EDMA_RRD_FLOW_COOKIE_MASK 0x07FF;
|
||||||
|
|
||||||
|
#define EDMA_RRD_PKT_SIZE_MASK 0x3FFF
|
||||||
|
#define EDMA_RRD_CSUM_FAIL_MASK 0xC000
|
||||||
|
#define EDMA_RRD_CVLAN 0x0001
|
||||||
|
#define EDMA_RRD_DESC_VALID 0x8000
|
||||||
|
|
||||||
|
#define EDMA_RRD_PRIORITY_SHIFT 4
|
||||||
|
#define EDMA_RRD_PRIORITY_MASK 0x7
|
||||||
|
#define EDMA_RRD_PORT_TYPE_SHIFT 7
|
||||||
|
#define EDMA_RRD_PORT_TYPE_MASK 0x1F
|
||||||
|
|
||||||
|
#define ESS_RGMII_CTRL 0x0004
|
||||||
|
|
||||||
|
/* Port status registers */
|
||||||
|
#define ESS_PORT0_STATUS 0x007C
|
||||||
|
#define ESS_PORT1_STATUS 0x0080
|
||||||
|
#define ESS_PORT2_STATUS 0x0084
|
||||||
|
#define ESS_PORT3_STATUS 0x0088
|
||||||
|
#define ESS_PORT4_STATUS 0x008C
|
||||||
|
#define ESS_PORT5_STATUS 0x0090
|
||||||
|
|
||||||
|
#define ESS_PORT_STATUS_HDX_FLOW_CTL 0x80
|
||||||
|
#define ESS_PORT_STATUS_DUPLEX_MODE 0x40
|
||||||
|
#define ESS_PORT_STATUS_RX_FLOW_EN 0x20
|
||||||
|
#define ESS_PORT_STATUS_TX_FLOW_EN 0x10
|
||||||
|
#define ESS_PORT_STATUS_RX_MAC_EN 0x08
|
||||||
|
#define ESS_PORT_STATUS_TX_MAC_EN 0x04
|
||||||
|
#define ESS_PORT_STATUS_SPEED_INV 0x03
|
||||||
|
#define ESS_PORT_STATUS_SPEED_1000 0x02
|
||||||
|
#define ESS_PORT_STATUS_SPEED_100 0x01
|
||||||
|
#define ESS_PORT_STATUS_SPEED_10 0x00
|
||||||
|
|
||||||
|
#define ESS_PORT_1G_FDX (ESS_PORT_STATUS_DUPLEX_MODE | ESS_PORT_STATUS_RX_FLOW_EN | \
|
||||||
|
ESS_PORT_STATUS_TX_FLOW_EN | ESS_PORT_STATUS_RX_MAC_EN | \
|
||||||
|
ESS_PORT_STATUS_TX_MAC_EN | ESS_PORT_STATUS_SPEED_1000)
|
||||||
|
|
||||||
|
#define PHY_STATUS_REG 0x11
|
||||||
|
#define PHY_STATUS_SPEED 0xC000
|
||||||
|
#define PHY_STATUS_SPEED_SHIFT 14
|
||||||
|
#define PHY_STATUS_DUPLEX 0x2000
|
||||||
|
#define PHY_STATUS_DUPLEX_SHIFT 13
|
||||||
|
#define PHY_STATUS_SPEED_DUPLEX_RESOLVED 0x0800
|
||||||
|
#define PHY_STATUS_CARRIER 0x0400
|
||||||
|
#define PHY_STATUS_CARRIER_SHIFT 10
|
||||||
|
|
||||||
|
/* Port lookup control registers */
|
||||||
|
#define ESS_PORT0_LOOKUP_CTRL 0x0660
|
||||||
|
#define ESS_PORT1_LOOKUP_CTRL 0x066C
|
||||||
|
#define ESS_PORT2_LOOKUP_CTRL 0x0678
|
||||||
|
#define ESS_PORT3_LOOKUP_CTRL 0x0684
|
||||||
|
#define ESS_PORT4_LOOKUP_CTRL 0x0690
|
||||||
|
#define ESS_PORT5_LOOKUP_CTRL 0x069C
|
||||||
|
|
||||||
|
#define ESS_PORT0_HEADER_CTRL 0x009C
|
||||||
|
|
||||||
|
#define ESS_PORTS_ALL 0x3f
|
||||||
|
|
||||||
|
#define ESS_FWD_CTRL1 0x0624
|
||||||
|
#define ESS_FWD_CTRL1_UC_FLOOD BITS(0, 7)
|
||||||
|
#define ESS_FWD_CTRL1_UC_FLOOD_S 0
|
||||||
|
#define ESS_FWD_CTRL1_MC_FLOOD BITS(8, 7)
|
||||||
|
#define ESS_FWD_CTRL1_MC_FLOOD_S 8
|
||||||
|
#define ESS_FWD_CTRL1_BC_FLOOD BITS(16, 7)
|
||||||
|
#define ESS_FWD_CTRL1_BC_FLOOD_S 16
|
||||||
|
#define ESS_FWD_CTRL1_IGMP BITS(24, 7)
|
||||||
|
#define ESS_FWD_CTRL1_IGMP_S 24
|
||||||
|
|
||||||
|
#endif /* _ESS_EDMA_H_ */
|
|
@ -0,0 +1,300 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcom-ipq4019.dtsi"
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
#include <dt-bindings/soc/qcom,tcsr.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "MobiPromo CM520-79F";
|
||||||
|
compatible = "mobipromo,cm520-79f";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
led-boot = &led_sys;
|
||||||
|
led-failsafe = &led_sys;
|
||||||
|
led-running = &led_sys;
|
||||||
|
led-upgrade = &led_sys;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs-append = " ubi.block=0,1 root=/dev/ubiblock0_1";
|
||||||
|
};
|
||||||
|
|
||||||
|
soc {
|
||||||
|
rng@22000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
mdio@90000 {
|
||||||
|
status = "okay";
|
||||||
|
pinctrl-0 = <&mdio_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
reset-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>;
|
||||||
|
reset-delay-us = <1000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ess-psgmii@98000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@1949000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1949000 0x100>;
|
||||||
|
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@194b000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x194b000 0x100>;
|
||||||
|
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ess_tcsr@1953000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1953000 0x1000>;
|
||||||
|
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@1957000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1957000 0x100>;
|
||||||
|
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usb2@60f8800 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
dwc3@6000000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
usb2_port1: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
#trigger-source-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb3@8af8800 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
dwc3@8a00000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
usb3_port1: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
#trigger-source-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usb3_port2: port@2 {
|
||||||
|
reg = <2>;
|
||||||
|
#trigger-source-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
crypto@8e3a000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
watchdog@b017000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
ess-switch@c000000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
edma@c080000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
led_spi {
|
||||||
|
compatible = "spi-gpio";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sck-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
|
||||||
|
mosi-gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>;
|
||||||
|
num-chipselects = <0>;
|
||||||
|
|
||||||
|
led_gpio: led_gpio@0 {
|
||||||
|
compatible = "fairchild,74hc595";
|
||||||
|
reg = <0>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
registers-number = <1>;
|
||||||
|
spi-max-frequency = <1000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
led_usb: usb {
|
||||||
|
label = "cm520-79f:blue:usb";
|
||||||
|
gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
linux,default-trigger = "usbport";
|
||||||
|
trigger-sources = <&usb3_port1>, <&usb3_port2>, <&usb2_port1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
led_sys: can {
|
||||||
|
label = "cm520-79f:blue:can";
|
||||||
|
gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wan {
|
||||||
|
label = "cm520-79f:blue:wan";
|
||||||
|
gpios = <&led_gpio 0 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lan1 {
|
||||||
|
label = "cm520-79f:blue:lan1";
|
||||||
|
gpios = <&led_gpio 1 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lan2 {
|
||||||
|
label = "cm520-79f:blue:lan2";
|
||||||
|
gpios = <&led_gpio 2 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan2g {
|
||||||
|
label = "cm520-79f:blue:wlan2g";
|
||||||
|
gpios = <&led_gpio 5 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,default-trigger = "phy0tpt";
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan5g {
|
||||||
|
label = "cm520-79f:blue:wlan5g";
|
||||||
|
gpios = <&led_gpio 6 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,default-trigger = "phy1tpt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp_dma {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp1_uart1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp1_uart2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&cryptobam {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gmac0 {
|
||||||
|
mtd-mac-address = <&art 0x1006>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&gmac1 {
|
||||||
|
mtd-mac-address = <&art 0x5006>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&nand {
|
||||||
|
pinctrl-0 = <&nand_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
nand@0 {
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "Bootloader";
|
||||||
|
reg = <0x0 0xb00000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
art: partition@b00000 {
|
||||||
|
label = "ART";
|
||||||
|
reg = <0xb00000 0x80000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@b80000 {
|
||||||
|
label = "rootfs";
|
||||||
|
reg = <0xb80000 0x7480000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&qpic_bam {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tlmm {
|
||||||
|
mdio_pins: mdio_pinmux {
|
||||||
|
mux_1 {
|
||||||
|
pins = "gpio6";
|
||||||
|
function = "mdio";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
mux_2 {
|
||||||
|
pins = "gpio7";
|
||||||
|
function = "mdc";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nand_pins: nand_pins {
|
||||||
|
pullups {
|
||||||
|
pins = "gpio52", "gpio53", "gpio58",
|
||||||
|
"gpio59";
|
||||||
|
function = "qpic";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulldowns {
|
||||||
|
pins = "gpio54", "gpio55", "gpio56",
|
||||||
|
"gpio57", "gpio60", "gpio61",
|
||||||
|
"gpio62", "gpio63", "gpio64",
|
||||||
|
"gpio65", "gpio66", "gpio67",
|
||||||
|
"gpio68", "gpio69";
|
||||||
|
function = "qpic";
|
||||||
|
bias-pull-down;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb3_ss_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb3_hs_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb2_hs_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&wifi0 {
|
||||||
|
status = "okay";
|
||||||
|
qcom,ath10k-calibration-variant = "CM520-79F";
|
||||||
|
};
|
||||||
|
|
||||||
|
&wifi1 {
|
||||||
|
status = "okay";
|
||||||
|
qcom,ath10k-calibration-variant = "CM520-79F";
|
||||||
|
};
|
|
@ -0,0 +1,18 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcom-ipq4019-r619ac.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "P&W R619AC 128M";
|
||||||
|
compatible = "p2w,r619ac-128m";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs-append = " root=/dev/ubiblock0_1 rootfstype=squashfs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&rootfs_part1 {
|
||||||
|
reg = <0x0 0x8000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/delete-node/ &rootfs_part2;
|
|
@ -0,0 +1,12 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcom-ipq4019-r619ac.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "P&W R619AC";
|
||||||
|
compatible = "p2w,r619ac";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs-append = " root=/dev/ubiblock0_1 rootfstype=squashfs";
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,322 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
|
|
||||||
|
#include "qcom-ipq4019.dtsi"
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
#include <dt-bindings/soc/qcom,tcsr.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
aliases {
|
||||||
|
led-boot = &led_sys;
|
||||||
|
led-failsafe = &led_sys;
|
||||||
|
led-running = &led_sys;
|
||||||
|
led-upgrade = &led_sys;
|
||||||
|
label-mac-device = &gmac0;
|
||||||
|
};
|
||||||
|
|
||||||
|
soc {
|
||||||
|
rng@22000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
mdio@90000 {
|
||||||
|
status = "okay";
|
||||||
|
pinctrl-0 = <&mdio_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
};
|
||||||
|
|
||||||
|
ess-psgmii@98000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@1949000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1949000 0x100>;
|
||||||
|
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@194b000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x194b000 0x100>;
|
||||||
|
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ess_tcsr@1953000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1953000 0x1000>;
|
||||||
|
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
|
||||||
|
};
|
||||||
|
|
||||||
|
tcsr@1957000 {
|
||||||
|
compatible = "qcom,tcsr";
|
||||||
|
reg = <0x1957000 0x100>;
|
||||||
|
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usb2@60f8800 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
usb3@8af8800 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
crypto@8e3a000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
watchdog@b017000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
ess-switch@c000000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
edma@c080000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
pinctrl-0 = <&led_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
|
||||||
|
led_sys: sys {
|
||||||
|
label = "r619ac:blue:sys";
|
||||||
|
gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan2g {
|
||||||
|
label = "r619ac:blue:wlan2g";
|
||||||
|
gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
|
||||||
|
linux,default-trigger = "phy0tpt";
|
||||||
|
};
|
||||||
|
|
||||||
|
wlan5g {
|
||||||
|
label = "r619ac:blue:wlan5g";
|
||||||
|
gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>;
|
||||||
|
linux,default-trigger = "phy1tpt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp_dma {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp1_spi1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
flash@0 {
|
||||||
|
reg = <0>;
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "SBL1";
|
||||||
|
reg = <0x0 0x40000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@40000 {
|
||||||
|
label = "MIBIB";
|
||||||
|
reg = <0x40000 0x20000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@60000 {
|
||||||
|
label = "QSEE";
|
||||||
|
reg = <0x60000 0x60000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@c0000 {
|
||||||
|
label = "CDT";
|
||||||
|
reg = <0xc0000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@d0000 {
|
||||||
|
label = "DDRPARAMS";
|
||||||
|
reg = <0xd0000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@e0000 {
|
||||||
|
label = "APPSBLENV";
|
||||||
|
reg = <0xe0000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@f0000 {
|
||||||
|
label = "APPSBL";
|
||||||
|
reg = <0xf0000 0x80000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@1 {
|
||||||
|
label = "Bootloader";
|
||||||
|
reg = <0x0 0x170000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@170000 {
|
||||||
|
label = "ART";
|
||||||
|
reg = <0x170000 0x10000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@180000 {
|
||||||
|
label = "unused";
|
||||||
|
reg = <0x180000 0xe80000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&blsp1_uart1 {
|
||||||
|
pinctrl-0 = <&serial_0_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&cryptobam {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&nand {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
nand@0 {
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
rootfs_part1: partition@0 {
|
||||||
|
label = "rootfs";
|
||||||
|
reg = <0x0 0x4000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
rootfs_part2: partition@4000000 {
|
||||||
|
label = "unused1";
|
||||||
|
reg = <0x4000000 0x4000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&qpic_bam {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&sdhci {
|
||||||
|
pinctrl-0 = <&sd_0_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
vqmmc-supply = <&vqmmc>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tlmm {
|
||||||
|
mdio_pins: mdio_pinmux {
|
||||||
|
mux_1 {
|
||||||
|
pins = "gpio6";
|
||||||
|
function = "mdio";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
mux_2 {
|
||||||
|
pins = "gpio7";
|
||||||
|
function = "mdc";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
sd_0_pins: sd_0_pinmux {
|
||||||
|
mux_1 {
|
||||||
|
pins = "gpio23", "gpio24", "gpio25", "gpio26", "gpio28";
|
||||||
|
function = "sdio";
|
||||||
|
drive-strength = <10>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mux_2 {
|
||||||
|
pins = "gpio27";
|
||||||
|
function = "sdio";
|
||||||
|
drive-strength = <16>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
serial_0_pins: serial0-pinmux {
|
||||||
|
mux {
|
||||||
|
pins = "gpio16", "gpio17";
|
||||||
|
function = "blsp_uart0";
|
||||||
|
bias-disable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
led_pins: led_pinmux {
|
||||||
|
mux {
|
||||||
|
pins = "gpio32", "gpio39", "gpio50";
|
||||||
|
function = "gpio";
|
||||||
|
bias-pull-up;
|
||||||
|
output-low;
|
||||||
|
};
|
||||||
|
|
||||||
|
mux_1 {
|
||||||
|
pins = "gpio52";
|
||||||
|
function = "gpio";
|
||||||
|
bias-pull-up;
|
||||||
|
output-high;
|
||||||
|
};
|
||||||
|
|
||||||
|
mux_2 {
|
||||||
|
pins = "gpio61";
|
||||||
|
function = "gpio";
|
||||||
|
bias-pull-down;
|
||||||
|
output-high;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb3_ss_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb3_hs_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb2_hs_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vqmmc {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&wifi0 {
|
||||||
|
status = "okay";
|
||||||
|
qcom,ath10k-calibration-variant = "R619AC";
|
||||||
|
};
|
||||||
|
|
||||||
|
&wifi1 {
|
||||||
|
status = "okay";
|
||||||
|
qcom,ath10k-calibration-variant = "R619AC";
|
||||||
|
};
|
734
root/target/linux/ipq40xx/image/Makefile
Normal file
734
root/target/linux/ipq40xx/image/Makefile
Normal file
|
@ -0,0 +1,734 @@
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
include $(INCLUDE_DIR)/image.mk
|
||||||
|
|
||||||
|
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
|
||||||
|
DEVICE_VARS += RAS_BOARD RAS_ROOTFS_SIZE RAS_VERSION
|
||||||
|
DEVICE_VARS += WRGG_DEVNAME WRGG_SIGNATURE
|
||||||
|
|
||||||
|
define Device/Default
|
||||||
|
PROFILES := Default
|
||||||
|
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
|
||||||
|
KERNEL_INITRAMFS_PREFIX := $$(IMG_PREFIX)-$(1)-initramfs
|
||||||
|
KERNEL_PREFIX := $$(IMAGE_PREFIX)
|
||||||
|
KERNEL_LOADADDR := 0x80208000
|
||||||
|
DEVICE_DTS = $$(SOC)-$(lastword $(subst _, ,$(1)))
|
||||||
|
SUPPORTED_DEVICES := $(subst _,$(comma),$(1))
|
||||||
|
IMAGES := sysupgrade.bin
|
||||||
|
IMAGE/sysupgrade.bin = sysupgrade-tar | append-metadata
|
||||||
|
IMAGE/sysupgrade.bin/squashfs :=
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/FitImage
|
||||||
|
KERNEL_SUFFIX := -fit-uImage.itb
|
||||||
|
KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
||||||
|
KERNEL_NAME := Image
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/FitImageLzma
|
||||||
|
KERNEL_SUFFIX := -fit-uImage.itb
|
||||||
|
KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
||||||
|
KERNEL_NAME := Image
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/FitzImage
|
||||||
|
KERNEL_SUFFIX := -fit-zImage.itb
|
||||||
|
KERNEL = kernel-bin | fit none $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
||||||
|
KERNEL_NAME := zImage
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/UbiFit
|
||||||
|
KERNEL_IN_UBI := 1
|
||||||
|
IMAGES := nand-factory.ubi nand-sysupgrade.bin
|
||||||
|
IMAGE/nand-factory.ubi := append-ubi
|
||||||
|
IMAGE/nand-sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/DniImage
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
NETGEAR_BOARD_ID :=
|
||||||
|
NETGEAR_HW_ID :=
|
||||||
|
IMAGES += factory.img
|
||||||
|
IMAGE/factory.img := append-kernel | pad-offset 64k 64 | append-uImage-fakehdr filesystem | append-rootfs | pad-rootfs | netgear-dni
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | pad-offset 64k 64 | append-uImage-fakehdr filesystem | \
|
||||||
|
append-rootfs | pad-rootfs | append-metadata | check-size
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/append-rootfshdr
|
||||||
|
mkimage -A $(LINUX_KARCH) \
|
||||||
|
-O linux -T filesystem \
|
||||||
|
-C lzma -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
||||||
|
-n root.squashfs -d $(IMAGE_ROOTFS) $@.new
|
||||||
|
dd if=$@.new bs=64 count=1 >> $(IMAGE_KERNEL)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/mkmylofw_32m
|
||||||
|
$(eval device_id=$(word 1,$(1)))
|
||||||
|
$(eval revision=$(word 2,$(1)))
|
||||||
|
|
||||||
|
let \
|
||||||
|
size="$$(stat -c%s $@)" \
|
||||||
|
pad="$(subst k,* 1024,$(BLOCKSIZE))" \
|
||||||
|
pad="(pad - (size % pad)) % pad" \
|
||||||
|
newsize='size + pad'; \
|
||||||
|
$(STAGING_DIR_HOST)/bin/mkmylofw \
|
||||||
|
-B WPE72 -i 0x11f6:$(device_id):0x11f6:$(device_id) -r $(revision) \
|
||||||
|
-s 0x2000000 -p0x180000:$$newsize:al:0x80208000:"OpenWrt":$@ \
|
||||||
|
$@.new
|
||||||
|
@mv $@.new $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/qsdk-ipq-factory-nand-askey
|
||||||
|
$(TOPDIR)/scripts/mkits-qsdk-ipq-image.sh $@.its\
|
||||||
|
askey_kernel $(IMAGE_KERNEL) \
|
||||||
|
askey_fs $(IMAGE_ROOTFS) \
|
||||||
|
ubifs $@
|
||||||
|
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
|
||||||
|
@mv $@.new $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/SenaoFW
|
||||||
|
-$(STAGING_DIR_HOST)/bin/mksenaofw \
|
||||||
|
-n $(BOARD_NAME) -r $(VENDOR_ID) -p $(1) \
|
||||||
|
-c $(DATECODE) -w $(2) -x $(CW_VER) -t 0 \
|
||||||
|
-e $@ \
|
||||||
|
-o $@.new
|
||||||
|
@cp $@.new $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/wrgg-image
|
||||||
|
mkwrggimg -i $@ \
|
||||||
|
-o $@.new \
|
||||||
|
-d "$(WRGG_DEVNAME)" \
|
||||||
|
-s "$(WRGG_SIGNATURE)" \
|
||||||
|
-v "" -m "" -B ""
|
||||||
|
mv $@.new $@
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/8dev_habanero-dvk
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := 8devices
|
||||||
|
DEVICE_MODEL := Habanero DVK
|
||||||
|
IMAGE_SIZE := 30976k
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-8dev_habanero-dvk
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | append-rootfs | pad-rootfs | append-metadata | check-size
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += 8dev_habanero-dvk
|
||||||
|
|
||||||
|
define Device/8dev_jalapeno-common
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/8dev_jalapeno
|
||||||
|
$(call Device/8dev_jalapeno-common)
|
||||||
|
DEVICE_VENDOR := 8devices
|
||||||
|
DEVICE_MODEL := Jalapeno
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += 8dev_jalapeno
|
||||||
|
|
||||||
|
define Device/alfa-network_ap120c-ac
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := ALFA Network
|
||||||
|
DEVICE_MODEL := AP120C-AC
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
DEVICE_PACKAGES := kmod-usb-acm \
|
||||||
|
kmod-tpm-i2c-atmel uboot-envtools
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
IMAGE_SIZE := 65536k
|
||||||
|
IMAGES := nand-factory.bin nand-sysupgrade.bin
|
||||||
|
IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += alfa-network_ap120c-ac
|
||||||
|
|
||||||
|
define Device/aruba_glenmorangie
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := Aruba
|
||||||
|
SOC := qcom-ipq4029
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-aruba_ap-303
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/aruba_ap-303
|
||||||
|
$(call Device/aruba_glenmorangie)
|
||||||
|
DEVICE_MODEL := AP-303
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += aruba_ap-303
|
||||||
|
|
||||||
|
define Device/aruba_ap-303h
|
||||||
|
$(call Device/aruba_glenmorangie)
|
||||||
|
DEVICE_MODEL := AP-303H
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += aruba_ap-303h
|
||||||
|
|
||||||
|
define Device/aruba_ap-365
|
||||||
|
$(call Device/aruba_glenmorangie)
|
||||||
|
DEVICE_MODEL := AP-365
|
||||||
|
DEVICE_PACKAGES += kmod-hwmon-ad7418
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += aruba_ap-365
|
||||||
|
|
||||||
|
define Device/asus_map-ac2200
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := ASUS
|
||||||
|
DEVICE_MODEL := Lyra (MAP-AC2200)
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-ath3k
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_map-ac2200
|
||||||
|
|
||||||
|
define Device/asus_rt-ac58u
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := ASUS
|
||||||
|
DEVICE_MODEL := RT-AC58U
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DTB_SIZE := 65536
|
||||||
|
IMAGE_SIZE := 20439364
|
||||||
|
FILESYSTEMS := squashfs
|
||||||
|
# Someone - in their infinite wisdom - decided to put the firmware
|
||||||
|
# version in front of the image name \03\00\00\04 => Version 3.0.0.4
|
||||||
|
# Since u-boot works with strings we either need another fixup step
|
||||||
|
# to add a version... or we are very careful not to add '\0' into that
|
||||||
|
# string and call it a day.... Yeah, we do the latter!
|
||||||
|
UIMAGE_NAME:=$(shell echo -e '\03\01\01\01RT-AC58U')
|
||||||
|
DEVICE_PACKAGES := -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers \
|
||||||
|
kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += asus_rt-ac58u
|
||||||
|
|
||||||
|
define Device/avm_fritzbox-4040
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := AVM
|
||||||
|
DEVICE_MODEL := FRITZ!Box 4040
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
BOARD_NAME := fritz4040
|
||||||
|
IMAGE_SIZE := 29056k
|
||||||
|
UBOOT_PATH := $(STAGING_DIR_IMAGE)/uboot-fritz4040.bin
|
||||||
|
UBOOT_PARTITION_SIZE := 524288
|
||||||
|
IMAGES += eva.bin
|
||||||
|
IMAGE/eva.bin := append-uboot | pad-to $$$$(UBOOT_PARTITION_SIZE) | append-kernel | append-rootfs | pad-rootfs
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size
|
||||||
|
DEVICE_PACKAGES := fritz-tffs fritz-caldata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += avm_fritzbox-4040
|
||||||
|
|
||||||
|
define Device/avm_fritzbox-7530
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := AVM
|
||||||
|
DEVICE_MODEL := FRITZ!Box 7530
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := fritz-caldata fritz-tffs-nand
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += avm_fritzbox-7530
|
||||||
|
|
||||||
|
define Device/avm_fritzrepeater-1200
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := AVM
|
||||||
|
DEVICE_MODEL := FRITZ!Repeater 1200
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := fritz-caldata fritz-tffs-nand ipq-wifi-avm_fritzrepeater-1200
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += avm_fritzrepeater-1200
|
||||||
|
|
||||||
|
define Device/avm_fritzrepeater-3000
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := AVM
|
||||||
|
DEVICE_MODEL := FRITZ!Repeater 3000
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := ath10k-firmware-qca9984-ct fritz-caldata fritz-tffs-nand
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += avm_fritzrepeater-3000
|
||||||
|
|
||||||
|
define Device/buffalo_wtr-m2133hp
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := Buffalo
|
||||||
|
DEVICE_MODEL := WTR-M2133HP
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_PACKAGES := uboot-envtools ath10k-firmware-qca9984-ct ipq-wifi-buffalo_wtr-m2133hp
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += buffalo_wtr-m2133hp
|
||||||
|
|
||||||
|
define Device/cellc_rtl30vw
|
||||||
|
KERNEL_SUFFIX := -fit-uImage.itb
|
||||||
|
KERNEL_INITRAMFS = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
||||||
|
KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb | uImage lzma | pad-to 2048
|
||||||
|
KERNEL_NAME := Image
|
||||||
|
KERNEL_IN_UBI :=
|
||||||
|
IMAGES := nand-factory.bin nand-sysupgrade.bin
|
||||||
|
IMAGE/nand-factory.bin := append-rootfshdr | append-ubi | qsdk-ipq-factory-nand-askey
|
||||||
|
IMAGE/nand-sysupgrade.bin := append-rootfshdr | sysupgrade-tar | append-metadata
|
||||||
|
DEVICE_VENDOR := Cell C
|
||||||
|
DEVICE_MODEL := RTL30VW
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS_CONFIG := config@5
|
||||||
|
KERNEL_INSTALL := 1
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 57344k
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi ipq-wifi-cellc_rtl30vw
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += cellc_rtl30vw
|
||||||
|
|
||||||
|
define Device/cilab_meshpoint-one
|
||||||
|
$(call Device/8dev_jalapeno-common)
|
||||||
|
DEVICE_VENDOR := Crisis Innovation Lab
|
||||||
|
DEVICE_MODEL := MeshPoint.One
|
||||||
|
DEVICE_PACKAGES := kmod-i2c-gpio kmod-iio-bmp280-i2c kmod-hwmon-ina2xx kmod-rtc-pcf2127
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += cilab_meshpoint-one
|
||||||
|
|
||||||
|
define Device/compex_wpj419
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := Compex
|
||||||
|
DEVICE_MODEL := WPJ419
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS_CONFIG := config@12
|
||||||
|
KERNEL_INSTALL := 1
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
FILESYSTEMS := squashfs
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += compex_wpj419
|
||||||
|
|
||||||
|
define Device/compex_wpj428
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := Compex
|
||||||
|
DEVICE_MODEL := WPJ428
|
||||||
|
SOC := qcom-ipq4028
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
BLOCKSIZE := 64k
|
||||||
|
IMAGE_SIZE := 31232k
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGES += cpximg-6a04.bin
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
IMAGE/cpximg-6a04.bin := append-kernel | append-rootfs | pad-rootfs | mkmylofw_32m 0x8A2 3
|
||||||
|
DEVICE_PACKAGES := kmod-gpio-beeper
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += compex_wpj428
|
||||||
|
|
||||||
|
define Device/dlink_dap-2610
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := D-Link
|
||||||
|
DEVICE_MODEL := DAP-2610
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
DEVICE_DTS_CONFIG := config@ap.dk01.1-c1
|
||||||
|
BLOCKSIZE := 64k
|
||||||
|
WRGG_DEVNAME := /dev/mtdblock/8
|
||||||
|
WRGG_SIGNATURE := wapac30_dkbs_dap2610
|
||||||
|
IMAGE_SIZE := 14080k
|
||||||
|
IMAGES += factory.bin
|
||||||
|
# Bootloader expects a special 160 byte header which is added by
|
||||||
|
# wrgg-image.
|
||||||
|
# Factory image size must be larger than 6MB, and size in wrgg header must
|
||||||
|
# match actual factory image size to be flashable from D-Link http server.
|
||||||
|
# Bootloader verifies checksum of wrgg image before booting, thus jffs2
|
||||||
|
# cannot be part of the wrgg image. This is solved in the factory image by
|
||||||
|
# having the rootfs at the end of the image (without pad-rootfs). And in
|
||||||
|
# the sysupgrade image only the kernel is included in the wrgg checksum,
|
||||||
|
# but this is not flashable from the D-link http server.
|
||||||
|
# append-rootfs must start on an erase block boundary.
|
||||||
|
IMAGE/factory.bin := append-kernel | pad-offset 6144k 160 | append-rootfs | wrgg-image | check-size
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | wrgg-image | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size | append-metadata
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-dlink_dap2610
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += dlink_dap-2610
|
||||||
|
|
||||||
|
define Device/engenius_eap1300
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := EnGenius
|
||||||
|
DEVICE_MODEL := EAP1300
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
BOARD_NAME := eap1300
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
KERNEL_SIZE := 5120k
|
||||||
|
IMAGE_SIZE := 25344k
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += engenius_eap1300
|
||||||
|
|
||||||
|
define Device/engenius_eap2200
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := EnGenius
|
||||||
|
DEVICE_MODEL := EAP2200
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-engenius_eap2200 -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += engenius_eap2200
|
||||||
|
|
||||||
|
define Device/engenius_emd1
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := EnGenius
|
||||||
|
DEVICE_MODEL := EMD1
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
IMAGE_SIZE := 30720k
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
IMAGE/factory.bin := qsdk-ipq-factory-nor | check-size
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += engenius_emd1
|
||||||
|
|
||||||
|
define Device/engenius_emr3500
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := EnGenius
|
||||||
|
DEVICE_MODEL := EMR3500
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 30720k
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
IMAGE/factory.bin := qsdk-ipq-factory-nor | check-size
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += engenius_emr3500
|
||||||
|
|
||||||
|
define Device/engenius_ens620ext
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := EnGenius
|
||||||
|
DEVICE_MODEL := ENS620EXT
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
BLOCKSIZE := 64k
|
||||||
|
PAGESIZE := 256
|
||||||
|
BOARD_NAME := ENS620EXT
|
||||||
|
VENDOR_ID := 0x0101
|
||||||
|
PRODUCT_ID := 0x79
|
||||||
|
PRODUCT_ID_NEW := 0xA4
|
||||||
|
DATECODE := 190507
|
||||||
|
FW_VER := 3.1.2
|
||||||
|
FW_VER_NEW := 3.5.6
|
||||||
|
CW_VER := 1.8.99
|
||||||
|
IMAGE_SIZE := 21312k
|
||||||
|
KERNEL_SIZE := 5120k
|
||||||
|
FILESYSTEMS := squashfs
|
||||||
|
IMAGES += factory_30.bin factory_35.bin
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | check-size | append-metadata
|
||||||
|
IMAGE/factory_30.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size | SenaoFW $$$$(PRODUCT_ID) $$$$(FW_VER)
|
||||||
|
IMAGE/factory_35.bin := qsdk-ipq-factory-nor | check-size | SenaoFW $$$$(PRODUCT_ID_NEW) $$$$(FW_VER_NEW)
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += engenius_ens620ext
|
||||||
|
|
||||||
|
define Device/ezviz_cs-w3-wd1200g-eup
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := EZVIZ
|
||||||
|
DEVICE_MODEL := CS-W3-WD1200G
|
||||||
|
DEVICE_VARIANT := EUP
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
IMAGE_SIZE := 14848k
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
|
||||||
|
append-metadata
|
||||||
|
DEVICE_PACKAGES := -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers \
|
||||||
|
ipq-wifi-ezviz_cs-w3-wd1200g-eup
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += ezviz_cs-w3-wd1200g-eup
|
||||||
|
|
||||||
|
define Device/glinet_gl-b1300
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := GL.iNet
|
||||||
|
DEVICE_MODEL := GL-B1300
|
||||||
|
BOARD_NAME := gl-b1300
|
||||||
|
SOC := qcom-ipq4029
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 26624k
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel |append-rootfs | pad-rootfs | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += glinet_gl-b1300
|
||||||
|
|
||||||
|
define Device/glinet_gl-s1300
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := GL.iNet
|
||||||
|
DEVICE_MODEL := GL-S1300
|
||||||
|
SOC := qcom-ipq4029
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 26624k
|
||||||
|
IMAGES := sysupgrade.bin
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-glinet_gl-s1300 kmod-fs-ext4 kmod-mmc kmod-spi-dev
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += glinet_gl-s1300
|
||||||
|
|
||||||
|
define Device/linksys_ea6350v3
|
||||||
|
# The Linksys EA6350v3 has a uboot bootloader that does not
|
||||||
|
# support either booting lzma kernel images nor booting UBI
|
||||||
|
# partitions. This uboot, however, supports raw kernel images and
|
||||||
|
# gzipped images.
|
||||||
|
#
|
||||||
|
# As for the time of writing this, the device will boot the kernel
|
||||||
|
# from a fixed address with a fixed length of 3MiB. Also, the
|
||||||
|
# device has a hard-coded kernel command line that requieres the
|
||||||
|
# rootfs and alt_rootfs to be in mtd11 and mtd13 respectively.
|
||||||
|
# Oh... and the kernel partition overlaps with the rootfs
|
||||||
|
# partition (the same for alt_kernel and alt_rootfs).
|
||||||
|
#
|
||||||
|
# If you are planing re-partitioning the device, you may want to
|
||||||
|
# keep those details in mind:
|
||||||
|
# 1. The kernel adresses you should honor are 0x00000000 and
|
||||||
|
# 0x02800000 respectively.
|
||||||
|
# 2. The kernel size (plus the dtb) cannot exceed 3.00MiB in size.
|
||||||
|
# 3. You can use 'zImage', but not a raw 'Image' packed with lzma.
|
||||||
|
# 4. The kernel command line from uboot is harcoded to boot with
|
||||||
|
# rootfs either in mtd11 or mtd13.
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
DEVICE_VENDOR := Linksys
|
||||||
|
DEVICE_MODEL := EA6350
|
||||||
|
DEVICE_VARIANT := v3
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
KERNEL_SIZE := 3072k
|
||||||
|
IMAGE_SIZE := 37888k
|
||||||
|
UBINIZE_OPTS := -E 5
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/factory.bin := append-kernel | append-uImage-fakehdr filesystem | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA6350v3
|
||||||
|
DEVICE_PACKAGES := uboot-envtools
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += linksys_ea6350v3
|
||||||
|
|
||||||
|
define Device/linksys_ea8300
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
DEVICE_VENDOR := Linksys
|
||||||
|
DEVICE_MODEL := EA8300
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
KERNEL_SIZE := 3072k
|
||||||
|
IMAGE_SIZE := 87040k
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=EA8300
|
||||||
|
DEVICE_PACKAGES := uboot-envtools ath10k-firmware-qca9888-ct ipq-wifi-linksys_ea8300 kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += linksys_ea8300
|
||||||
|
|
||||||
|
define Device/meraki_mr33
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := Cisco Meraki
|
||||||
|
DEVICE_MODEL := MR33
|
||||||
|
SOC := qcom-ipq4029
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := -swconfig ath10k-firmware-qca9887-ct
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += meraki_mr33
|
||||||
|
|
||||||
|
define Device/mobipromo_cm520-79f
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := MobiPromo
|
||||||
|
DEVICE_MODEL := CM520-79F
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-mobipromo_cm520-79f kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += mobipromo_cm520-79f
|
||||||
|
|
||||||
|
define Device/netgear_ex61x0v2
|
||||||
|
$(call Device/DniImage)
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
NETGEAR_BOARD_ID := EX6150v2series
|
||||||
|
NETGEAR_HW_ID := 29765285+16+0+128+2x2
|
||||||
|
IMAGE_SIZE := 14400k
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Device/netgear_ex6100v2
|
||||||
|
$(call Device/netgear_ex61x0v2)
|
||||||
|
DEVICE_VENDOR := Netgear
|
||||||
|
DEVICE_MODEL := EX6100
|
||||||
|
DEVICE_VARIANT := v2
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += netgear_ex6100v2
|
||||||
|
|
||||||
|
define Device/netgear_ex6150v2
|
||||||
|
$(call Device/netgear_ex61x0v2)
|
||||||
|
DEVICE_VENDOR := Netgear
|
||||||
|
DEVICE_MODEL := EX6150
|
||||||
|
DEVICE_VARIANT := v2
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += netgear_ex6150v2
|
||||||
|
|
||||||
|
define Device/openmesh_a42
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := OpenMesh
|
||||||
|
DEVICE_MODEL := A42
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
DEVICE_DTS_CONFIG := config@om.a42
|
||||||
|
BLOCKSIZE := 64k
|
||||||
|
KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb | pad-to $$(BLOCKSIZE)
|
||||||
|
IMAGE_SIZE := 15616k
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=A42
|
||||||
|
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata
|
||||||
|
DEVICE_PACKAGES := uboot-envtools
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += openmesh_a42
|
||||||
|
|
||||||
|
define Device/openmesh_a62
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := OpenMesh
|
||||||
|
DEVICE_MODEL := A62
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS_CONFIG := config@om.a62
|
||||||
|
BLOCKSIZE := 64k
|
||||||
|
KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb | pad-to $$(BLOCKSIZE)
|
||||||
|
IMAGE_SIZE := 15552k
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=A62
|
||||||
|
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata
|
||||||
|
DEVICE_PACKAGES := ath10k-firmware-qca9888-ct uboot-envtools
|
||||||
|
endef
|
||||||
|
|
||||||
|
TARGET_DEVICES += openmesh_a62
|
||||||
|
|
||||||
|
define Device/qcom_ap-dk01.1-c1
|
||||||
|
DEVICE_VENDOR := Qualcomm Atheros
|
||||||
|
DEVICE_MODEL := AP-DK01.1
|
||||||
|
DEVICE_VARIANT := C1
|
||||||
|
BOARD_NAME := ap-dk01.1-c1
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS := qcom-ipq4019-ap.dk01.1-c1
|
||||||
|
KERNEL_INSTALL := 1
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 26624k
|
||||||
|
$(call Device/FitImage)
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += qcom_ap-dk01.1-c1
|
||||||
|
|
||||||
|
define Device/qcom_ap-dk04.1-c1
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := Qualcomm Atheros
|
||||||
|
DEVICE_MODEL := AP-DK04.1
|
||||||
|
DEVICE_VARIANT := C1
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS := qcom-ipq4019-ap.dk04.1-c1
|
||||||
|
KERNEL_INSTALL := 1
|
||||||
|
KERNEL_SIZE := 4048k
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
BOARD_NAME := ap-dk04.1-c1
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += qcom_ap-dk04.1-c1
|
||||||
|
|
||||||
|
define Device/p2w_r619ac
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := P&W
|
||||||
|
DEVICE_MODEL := R619AC
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS_CONFIG := config@10
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
IMAGES += nand-factory.bin
|
||||||
|
IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-p2w_r619ac
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += p2w_r619ac
|
||||||
|
|
||||||
|
define Device/p2w_r619ac-128m
|
||||||
|
$(call Device/FitzImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := P&W
|
||||||
|
DEVICE_MODEL := R619AC
|
||||||
|
DEVICE_VARIANT := 128M
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
DEVICE_DTS_CONFIG := config@10
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-p2w_r619ac
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += p2w_r619ac-128m
|
||||||
|
|
||||||
|
define Device/qxwlan_e2600ac-c1
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := Qxwlan
|
||||||
|
DEVICE_MODEL := E2600AC
|
||||||
|
DEVICE_VARIANT := C1
|
||||||
|
BOARD_NAME := e2600ac-c1
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 31232k
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-qxwlan_e2600ac
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += qxwlan_e2600ac-c1
|
||||||
|
|
||||||
|
define Device/qxwlan_e2600ac-c2
|
||||||
|
$(call Device/FitImage)
|
||||||
|
$(call Device/UbiFit)
|
||||||
|
DEVICE_VENDOR := Qxwlan
|
||||||
|
DEVICE_MODEL := E2600AC
|
||||||
|
DEVICE_VARIANT := C2
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
KERNEL_INSTALL := 1
|
||||||
|
BLOCKSIZE := 128k
|
||||||
|
PAGESIZE := 2048
|
||||||
|
DEVICE_PACKAGES := ipq-wifi-qxwlan_e2600ac
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += qxwlan_e2600ac-c2
|
||||||
|
|
||||||
|
define Device/unielec_u4019-32m
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := Unielec
|
||||||
|
DEVICE_MODEL := U4019
|
||||||
|
DEVICE_VARIANT := 32M
|
||||||
|
BOARD_NAME := u4019-32m
|
||||||
|
SOC := qcom-ipq4019
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
IMAGE_SIZE := 31232k
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += unielec_u4019-32m
|
||||||
|
|
||||||
|
define Device/zyxel_nbg6617
|
||||||
|
$(call Device/FitImageLzma)
|
||||||
|
DEVICE_VENDOR := ZyXEL
|
||||||
|
DEVICE_MODEL := NBG6617
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
KERNEL_SIZE := 4096k
|
||||||
|
ROOTFS_SIZE := 24960k
|
||||||
|
RAS_BOARD := NBG6617
|
||||||
|
RAS_ROOTFS_SIZE := 19840k
|
||||||
|
RAS_VERSION := "$(VERSION_DIST) $(REVISION)"
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||||
|
IMAGES += factory.bin
|
||||||
|
# The ZyXEL firmware allows flashing thru the web-gui only when the rootfs is
|
||||||
|
# at least as large as the one of the initial firmware image (not the current
|
||||||
|
# one on the device). This only applies to the Web-UI, the bootlaoder ignores
|
||||||
|
# this minimum-size. However, the larger image can be flashed both ways.
|
||||||
|
IMAGE/factory.bin := append-rootfs | pad-rootfs | pad-to 64k | check-size $$$$(ROOTFS_SIZE) | zyxel-ras-image separate-kernel
|
||||||
|
IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | check-size $$$$(ROOTFS_SIZE) | sysupgrade-tar rootfs=$$$$@ | append-metadata
|
||||||
|
DEVICE_PACKAGES := uboot-envtools kmod-usb-ledtrig-usbport
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += zyxel_nbg6617
|
||||||
|
|
||||||
|
define Device/zyxel_wre6606
|
||||||
|
$(call Device/FitImage)
|
||||||
|
DEVICE_VENDOR := ZyXEL
|
||||||
|
DEVICE_MODEL := WRE6606
|
||||||
|
DEVICE_DTS_CONFIG := config@4
|
||||||
|
SOC := qcom-ipq4018
|
||||||
|
IMAGE_SIZE := 13184k
|
||||||
|
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size
|
||||||
|
DEVICE_PACKAGES := -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += zyxel_wre6606
|
||||||
|
|
||||||
|
$(eval $(call BuildImage))
|
|
@ -0,0 +1,65 @@
|
||||||
|
From a10fab12a927e60b7141a602e740d70cb4d09e4a Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Crispin <john@phrozen.org>
|
||||||
|
Date: Thu, 9 Mar 2017 11:03:18 +0100
|
||||||
|
Subject: [PATCH] arm: boot: add dts files
|
||||||
|
|
||||||
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/Makefile | 23 +++++++++++++++++++++++
|
||||||
|
1 file changed, 23 insertions(+)
|
||||||
|
|
||||||
|
--- a/arch/arm/boot/dts/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/Makefile
|
||||||
|
@@ -837,11 +837,52 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||||
|
qcom-apq8074-dragonboard.dtb \
|
||||||
|
qcom-apq8084-ifc6540.dtb \
|
||||||
|
qcom-apq8084-mtp.dtb \
|
||||||
|
+ qcom-ipq4018-a42.dtb \
|
||||||
|
+ qcom-ipq4018-ap120c-ac.dtb \
|
||||||
|
+ qcom-ipq4018-dap-2610.dtb \
|
||||||
|
+ qcom-ipq4018-cs-w3-wd1200g-eup.dtb \
|
||||||
|
+ qcom-ipq4018-ea6350v3.dtb \
|
||||||
|
+ qcom-ipq4018-eap1300.dtb \
|
||||||
|
+ qcom-ipq4018-emd1.dtb \
|
||||||
|
+ qcom-ipq4018-emr3500.dtb \
|
||||||
|
+ qcom-ipq4018-ens620ext.dtb \
|
||||||
|
+ qcom-ipq4018-ex6100v2.dtb \
|
||||||
|
+ qcom-ipq4018-ex6150v2.dtb \
|
||||||
|
+ qcom-ipq4018-fritzbox-4040.dtb \
|
||||||
|
+ qcom-ipq4018-jalapeno.dtb \
|
||||||
|
+ qcom-ipq4018-meshpoint-one.dtb \
|
||||||
|
+ qcom-ipq4018-nbg6617.dtb \
|
||||||
|
+ qcom-ipq4018-rt-ac58u.dtb \
|
||||||
|
+ qcom-ipq4018-wre6606.dtb \
|
||||||
|
qcom-ipq4019-ap.dk01.1-c1.dtb \
|
||||||
|
qcom-ipq4019-ap.dk04.1-c1.dtb \
|
||||||
|
qcom-ipq4019-ap.dk04.1-c3.dtb \
|
||||||
|
qcom-ipq4019-ap.dk07.1-c1.dtb \
|
||||||
|
qcom-ipq4019-ap.dk07.1-c2.dtb \
|
||||||
|
+ qcom-ipq4019-a62.dtb \
|
||||||
|
+ qcom-ipq4019-cm520-79f.dtb \
|
||||||
|
+ qcom-ipq4019-ea8300.dtb \
|
||||||
|
+ qcom-ipq4019-eap2200.dtb \
|
||||||
|
+ qcom-ipq4019-fritzbox-7530.dtb \
|
||||||
|
+ qcom-ipq4019-fritzrepeater-1200.dtb \
|
||||||
|
+ qcom-ipq4019-fritzrepeater-3000.dtb \
|
||||||
|
+ qcom-ipq4019-r619ac.dtb \
|
||||||
|
+ qcom-ipq4019-r619ac-128m.dtb \
|
||||||
|
+ qcom-ipq4019-map-ac2200.dtb \
|
||||||
|
+ qcom-ipq4019-e2600ac-c1.dtb \
|
||||||
|
+ qcom-ipq4019-e2600ac-c2.dtb \
|
||||||
|
+ qcom-ipq4019-habanero-dvk.dtb \
|
||||||
|
+ qcom-ipq4019-rtl30vw.dtb \
|
||||||
|
+ qcom-ipq4019-u4019-32m.dtb \
|
||||||
|
+ qcom-ipq4019-wpj419.dtb \
|
||||||
|
+ qcom-ipq4019-wtr-m2133hp.dtb \
|
||||||
|
+ qcom-ipq4028-wpj428.dtb \
|
||||||
|
+ qcom-ipq4029-ap-303.dtb \
|
||||||
|
+ qcom-ipq4029-ap-303h.dtb \
|
||||||
|
+ qcom-ipq4029-ap-365.dtb \
|
||||||
|
+ qcom-ipq4029-gl-b1300.dtb \
|
||||||
|
+ qcom-ipq4029-gl-s1300.dtb \
|
||||||
|
+ qcom-ipq4029-mr33.dtb \
|
||||||
|
qcom-ipq8064-ap148.dtb \
|
||||||
|
qcom-msm8660-surf.dtb \
|
||||||
|
qcom-msm8960-cdp.dtb \
|
|
@ -1,22 +0,0 @@
|
||||||
From 3a466fd3d5b921c085fd3c863cab3f1afdb90c9c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Frank Wunderlich <frank-w@public-files.de>
|
|
||||||
Date: Sun, 12 Jan 2020 16:46:33 +0100
|
|
||||||
Subject: [PATCH] arm: dts: add pause to port6 of switch
|
|
||||||
|
|
||||||
to be same as gmac0
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
|
||||||
index 52343bd76fe5..7b8383af87e0 100644
|
|
||||||
--- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
|
||||||
+++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
|
|
||||||
@@ -253,6 +253,7 @@
|
|
||||||
fixed-link {
|
|
||||||
speed = <1000>;
|
|
||||||
full-duplex;
|
|
||||||
+ pause;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
Loading…
Add table
Add a link
Reference in a new issue