Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
This commit is contained in:
242
target/Config.in
Normal file
242
target/Config.in
Normal file
@@ -0,0 +1,242 @@
|
||||
source "tmp/.config-target.in"
|
||||
|
||||
# Kernel/Hardware features
|
||||
|
||||
config HAS_TESTING_KERNEL
|
||||
bool
|
||||
|
||||
config HAS_SPE_FPU
|
||||
depends on powerpc
|
||||
select HAS_FPU
|
||||
bool
|
||||
|
||||
config HAS_FPU
|
||||
bool
|
||||
|
||||
config HAS_DT_OVERLAY_SUPPORT
|
||||
bool
|
||||
|
||||
config AUDIO_SUPPORT
|
||||
bool
|
||||
|
||||
config GPIO_SUPPORT
|
||||
bool
|
||||
|
||||
config PCI_SUPPORT
|
||||
select AUDIO_SUPPORT
|
||||
bool
|
||||
|
||||
config PCIE_SUPPORT
|
||||
bool
|
||||
|
||||
config PCMCIA_SUPPORT
|
||||
bool
|
||||
|
||||
config PWM_SUPPORT
|
||||
bool
|
||||
|
||||
config USB_SUPPORT
|
||||
select AUDIO_SUPPORT
|
||||
bool
|
||||
|
||||
config USB_GADGET_SUPPORT
|
||||
bool
|
||||
|
||||
config RTC_SUPPORT
|
||||
bool
|
||||
|
||||
config BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config USES_DEVICETREE
|
||||
bool
|
||||
|
||||
config USES_INITRAMFS
|
||||
bool
|
||||
|
||||
config USES_SEPARATE_INITRAMFS
|
||||
bool
|
||||
|
||||
config USES_SQUASHFS
|
||||
bool
|
||||
|
||||
config USES_JFFS2
|
||||
bool
|
||||
|
||||
config USES_JFFS2_NAND
|
||||
bool
|
||||
|
||||
config USES_EXT4
|
||||
bool
|
||||
|
||||
config USES_TARGZ
|
||||
bool
|
||||
|
||||
config USES_CPIOGZ
|
||||
bool
|
||||
|
||||
config USES_MINOR
|
||||
bool
|
||||
|
||||
config USES_UBIFS
|
||||
bool
|
||||
select NAND_SUPPORT
|
||||
|
||||
config LOW_MEMORY_FOOTPRINT
|
||||
bool
|
||||
|
||||
config SMALL_FLASH
|
||||
bool
|
||||
|
||||
config NOMMU
|
||||
bool
|
||||
|
||||
config HAS_MIPS16
|
||||
depends on (mips || mipsel || mips64 || mips64el)
|
||||
bool
|
||||
|
||||
config RFKILL_SUPPORT
|
||||
bool
|
||||
|
||||
config EMMC_SUPPORT
|
||||
bool
|
||||
|
||||
config NAND_SUPPORT
|
||||
bool
|
||||
|
||||
config LEGACY_SDCARD_SUPPORT
|
||||
bool
|
||||
|
||||
config ARCH_64BIT
|
||||
bool
|
||||
|
||||
config VIRTIO_SUPPORT
|
||||
bool
|
||||
|
||||
config USES_ROOTFS_PART
|
||||
bool
|
||||
|
||||
config USES_BOOT_PART
|
||||
bool
|
||||
|
||||
# Architecture selection
|
||||
|
||||
config aarch64
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config aarch64_be
|
||||
select ARCH_64BIT
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config arc
|
||||
bool
|
||||
|
||||
config arceb
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config arm
|
||||
bool
|
||||
|
||||
config armeb
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config arm_v6
|
||||
bool
|
||||
|
||||
config arm_v7
|
||||
bool
|
||||
|
||||
config i386
|
||||
bool
|
||||
|
||||
config i686
|
||||
bool
|
||||
|
||||
config loongarch64
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config m68k
|
||||
bool
|
||||
|
||||
config mips
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config mipsel
|
||||
bool
|
||||
|
||||
config mips64
|
||||
select BIG_ENDIAN
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config mips64el
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config powerpc
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config powerpc64
|
||||
select BIG_ENDIAN
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config riscv64
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config sh3
|
||||
bool
|
||||
|
||||
config sh3eb
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config sh4
|
||||
bool
|
||||
|
||||
config sh4eb
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config sparc
|
||||
select BIG_ENDIAN
|
||||
bool
|
||||
|
||||
config x86_64
|
||||
select ARCH_64BIT
|
||||
bool
|
||||
|
||||
config ARCH
|
||||
string
|
||||
default "aarch64" if aarch64
|
||||
default "aarch64_be" if aarch64_be
|
||||
default "arc" if arc
|
||||
default "arceb" if arceb
|
||||
default "arm" if arm
|
||||
default "armeb" if armeb
|
||||
default "i386" if i386
|
||||
default "i686" if i686
|
||||
default "loongarch64" if loongarch64
|
||||
default "m68k" if m68k
|
||||
default "mips" if mips
|
||||
default "mipsel" if mipsel
|
||||
default "mips64" if mips64
|
||||
default "mips64el" if mips64el
|
||||
default "powerpc" if powerpc
|
||||
default "powerpc64" if powerpc64
|
||||
default "riscv64" if riscv64
|
||||
default "sh3" if sh3
|
||||
default "sh3eb" if sh3eb
|
||||
default "sh4" if sh4
|
||||
default "sh4eb" if sh4eb
|
||||
default "sparc" if sparc
|
||||
default "x86_64" if x86_64
|
||||
|
||||
30
target/Makefile
Normal file
30
target/Makefile
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# Copyright (C) 2007 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
curdir:=target
|
||||
|
||||
$(curdir)/subtargets:=install
|
||||
$(curdir)/builddirs:=linux sdk imagebuilder toolchain llvm-bpf
|
||||
$(curdir)/builddirs-default:=linux
|
||||
$(curdir)/builddirs-install:=\
|
||||
linux \
|
||||
$(if $(CONFIG_SDK),sdk) \
|
||||
$(if $(CONFIG_IB),imagebuilder) \
|
||||
$(if $(CONFIG_MAKE_TOOLCHAIN),toolchain) \
|
||||
$(if $(CONFIG_SDK_LLVM_BPF),llvm-bpf)
|
||||
|
||||
$(curdir)/sdk/install:=$(curdir)/linux/install
|
||||
$(curdir)/imagebuilder/install:=$(curdir)/linux/install
|
||||
|
||||
$(curdir)//compile = $(STAGING_DIR)/.prepared $(BIN_DIR)
|
||||
|
||||
$(eval $(call stampfile,$(curdir),target,prereq,.config))
|
||||
$(eval $(call stampfile,$(curdir),target,compile,$(TMP_DIR)/.build))
|
||||
$(eval $(call stampfile,$(curdir),target,install,$(TMP_DIR)/.build))
|
||||
|
||||
$($(curdir)/stamp-install): $($(curdir)/stamp-compile)
|
||||
|
||||
$(eval $(call subdir,$(curdir)))
|
||||
17
target/imagebuilder/Config.in
Normal file
17
target/imagebuilder/Config.in
Normal file
@@ -0,0 +1,17 @@
|
||||
config IB
|
||||
bool "Build the OpenWrt Image Builder"
|
||||
depends on !EXTERNAL_TOOLCHAIN
|
||||
default BUILDBOT
|
||||
help
|
||||
This is essentially a stripped-down version of the buildroot
|
||||
with precompiled packages, kernel image and image building tools.
|
||||
You can use it to generate custom images without compiling anything
|
||||
|
||||
config IB_STANDALONE
|
||||
bool "Include package repositories"
|
||||
default y if !BUILDBOT
|
||||
depends on IB
|
||||
help
|
||||
Disabling this option will cause the ImageBuilder to embed only
|
||||
toolchain and kmod packages while all other ipk archives will be
|
||||
fetched from online repositories.
|
||||
150
target/imagebuilder/Makefile
Normal file
150
target/imagebuilder/Makefile
Normal file
@@ -0,0 +1,150 @@
|
||||
#
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/version.mk
|
||||
include $(INCLUDE_DIR)/feeds.mk
|
||||
|
||||
override MAKEFLAGS=
|
||||
|
||||
IB_NAME:=$(VERSION_DIST_SANITIZED)-imagebuilder-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)-$(SUBTARGET).$(HOST_OS)-$(HOST_ARCH)
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(IB_NAME)
|
||||
IB_KDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(KERNEL_BUILD_DIR))
|
||||
IB_LDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(LINUX_DIR))
|
||||
IB_DTSDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(LINUX_DIR))/arch/$(LINUX_KARCH)/boot/dts/
|
||||
IB_IDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(STAGING_DIR_IMAGE))
|
||||
|
||||
BUNDLER_PATH := $(subst $(space),:,$(filter-out $(TOPDIR)/%,$(subst :,$(space),$(PATH))))
|
||||
BUNDLER_COMMAND := PATH=$(BUNDLER_PATH) $(XARGS) $(SCRIPT_DIR)/bundle-libraries.sh $(PKG_BUILD_DIR)/staging_dir/host
|
||||
|
||||
PACKAGE_SUFFIX:=$(if $(CONFIG_USE_APK),apk,ipk)
|
||||
|
||||
all: compile
|
||||
|
||||
$(BIN_DIR)/$(IB_NAME).tar.zst: clean
|
||||
rm -rf $(PKG_BUILD_DIR)
|
||||
mkdir -p $(IB_KDIR) $(IB_LDIR) $(PKG_BUILD_DIR)/staging_dir/host/lib \
|
||||
$(PKG_BUILD_DIR)/target/linux $(PKG_BUILD_DIR)/scripts $(IB_DTSDIR)
|
||||
-cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config
|
||||
$(SED) 's/^CONFIG_BINARY_FOLDER=.*/# CONFIG_BINARY_FOLDER is not set/' $(PKG_BUILD_DIR)/.config
|
||||
$(SED) 's/^CONFIG_DOWNLOAD_FOLDER=.*/# CONFIG_DOWNLOAD_FOLDER is not set/' $(PKG_BUILD_DIR)/.config
|
||||
$(CP) -L \
|
||||
$(INCLUDE_DIR) $(SCRIPT_DIR) \
|
||||
$(TOPDIR)/rules.mk \
|
||||
./files/Makefile \
|
||||
$(TMP_DIR)/.targetinfo \
|
||||
$(TMP_DIR)/.packageinfo \
|
||||
$(PKG_BUILD_DIR)/
|
||||
|
||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
|
||||
|
||||
ifneq ($(CONFIG_USE_APK),)
|
||||
ifeq ($(CONFIG_IB_STANDALONE),)
|
||||
$(call FeedSourcesAppendAPK,$(PKG_BUILD_DIR)/repositories)
|
||||
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories
|
||||
endif
|
||||
|
||||
$(INSTALL_DATA) ./files/README.apk.md $(PKG_BUILD_DIR)/packages/README.md
|
||||
else
|
||||
ifeq ($(CONFIG_IB_STANDALONE),)
|
||||
echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
$(call FeedSourcesAppendOPKG,$(PKG_BUILD_DIR)/repositories.conf)
|
||||
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
|
||||
|
||||
endif
|
||||
|
||||
# create an empty package index so `opkg` doesn't report an error
|
||||
touch $(PKG_BUILD_DIR)/packages/Packages
|
||||
$(INSTALL_DATA) ./files/README.opkg.md $(PKG_BUILD_DIR)/packages/README.md
|
||||
|
||||
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
echo '## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
echo 'src imagebuilder file:packages' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILDBOT),)
|
||||
ifeq ($(CONFIG_IB_STANDALONE),)
|
||||
$(FIND) $(call FeedPackageDir,libc) -type f \
|
||||
\( -name 'libc_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' -or -name 'kmod-*.$(PACKAGE_SUFFIX)' \) \
|
||||
-exec $(CP) -t $(PKG_BUILD_DIR)/packages {} +
|
||||
else
|
||||
$(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \
|
||||
-exec $(CP) -t $(PKG_BUILD_DIR)/packages/ {} +
|
||||
endif
|
||||
else
|
||||
$(FIND) $(call FeedPackageDir,libc) -type f \
|
||||
\( -name 'libc_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' \) \
|
||||
-exec $(CP) -t $(IB_LDIR)/ {} +
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_USE_APK),y)
|
||||
ifneq ($(CONFIG_SIGNATURE_CHECK),)
|
||||
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
echo 'option check_signature' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/keys
|
||||
$(CP) -L $(STAGING_DIR_ROOT)/etc/opkg/keys/ $(PKG_BUILD_DIR)/
|
||||
$(CP) -L $(STAGING_DIR_ROOT)/usr/sbin/opkg-key $(PKG_BUILD_DIR)/scripts/
|
||||
endif
|
||||
endif
|
||||
|
||||
$(CP) -L $(TOPDIR)/target/linux/Makefile $(PKG_BUILD_DIR)/target/linux
|
||||
$(CP) -L $(TOPDIR)/target/linux/generic $(PKG_BUILD_DIR)/target/linux
|
||||
# check if board is installed from a feeds subdirectory
|
||||
if [ -d $(TOPDIR)/target/linux/feeds/$(BOARD) ]; then \
|
||||
mkdir -p $(PKG_BUILD_DIR)/target/linux/feeds; \
|
||||
$(CP) -L $(TOPDIR)/target/linux/feeds/$(BOARD) $(PKG_BUILD_DIR)/target/linux/feeds; \
|
||||
else \
|
||||
$(CP) -L $(TOPDIR)/target/linux/$(BOARD) $(PKG_BUILD_DIR)/target/linux; \
|
||||
fi
|
||||
if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
|
||||
$(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
|
||||
fi
|
||||
rm -rf \
|
||||
$(PKG_BUILD_DIR)/target/linux/*/files{,-*} \
|
||||
$(PKG_BUILD_DIR)/target/linux/*/patches{,-*} \
|
||||
$(PKG_BUILD_DIR)/target/linux/generic/{pending,backport,hack}{,-*}
|
||||
-cp $(KERNEL_BUILD_DIR)/* $(IB_KDIR)/ # don't copy subdirectories here
|
||||
-cp $(LINUX_DIR)/.config $(IB_LDIR)/
|
||||
rm -f $(IB_KDIR)/root.*
|
||||
rm -f $(IB_KDIR)/vmlinux.debug
|
||||
# remove any file for initramfs and Per Device Rootfs initramfs files
|
||||
rm -f $(IB_KDIR)/vmlinux-initramfs*
|
||||
rm -f $(IB_KDIR)/Image-initramfs*
|
||||
if [ -x $(LINUX_DIR)/scripts/dtc/dtc ]; then \
|
||||
$(INSTALL_DIR) $(IB_LDIR)/scripts/dtc; \
|
||||
$(INSTALL_BIN) $(LINUX_DIR)/scripts/dtc/dtc $(IB_LDIR)/scripts/dtc/dtc; \
|
||||
fi
|
||||
if [ -d $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts ]; then \
|
||||
$(CP) -L $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts/* $(IB_DTSDIR); \
|
||||
fi
|
||||
$(SED) 's,^# REVISION:=.*,REVISION:=$(REVISION),g' $(PKG_BUILD_DIR)/include/version.mk
|
||||
$(SED) 's,^# SOURCE_DATE_EPOCH:=.*,SOURCE_DATE_EPOCH:=$(SOURCE_DATE_EPOCH),g' $(PKG_BUILD_DIR)/include/version.mk
|
||||
$(SED) '/LINUX_VERMAGIC:=/ { s,unknown,$(LINUX_VERMAGIC),g }' $(PKG_BUILD_DIR)/include/kernel.mk
|
||||
find $(PKG_BUILD_DIR) -name CVS -o -name .git -o -name .svn \
|
||||
| $(XARGS) rm -rf
|
||||
$(INSTALL_DIR) $(IB_IDIR)
|
||||
-$(CP) $(STAGING_DIR_IMAGE)/* $(IB_IDIR)/
|
||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/staging_dir/host/bin
|
||||
$(CP) $(STAGING_DIR_HOST)/bin/* $(PKG_BUILD_DIR)/staging_dir/host/bin/
|
||||
(cd $(PKG_BUILD_DIR); find staging_dir/host/bin/ $(IB_LDIR)/scripts/dtc/ -type f | \
|
||||
$(BUNDLER_COMMAND))
|
||||
$(CP) $(TOPDIR)/staging_dir/host/lib/libfakeroot* $(PKG_BUILD_DIR)/staging_dir/host/lib
|
||||
STRIP=$(STAGING_DIR_HOST)/bin/sstrip $(SCRIPT_DIR)/rstrip.sh $(PKG_BUILD_DIR)/staging_dir/host/bin/
|
||||
|
||||
(cd $(BUILD_DIR); \
|
||||
tar -I '$(STAGING_DIR_HOST)/bin/zstd -T0 --ultra -20' -cf $@ $(IB_NAME) \
|
||||
--mtime="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
|
||||
)
|
||||
|
||||
download:
|
||||
prepare:
|
||||
compile: $(BIN_DIR)/$(IB_NAME).tar.zst
|
||||
install: compile
|
||||
|
||||
clean: FORCE
|
||||
rm -rf $(PKG_BUILD_DIR) $(BIN_DIR)/$(IB_NAME).tar.zst
|
||||
351
target/imagebuilder/files/Makefile
Normal file
351
target/imagebuilder/files/Makefile
Normal file
@@ -0,0 +1,351 @@
|
||||
# Makefile for OpenWrt
|
||||
#
|
||||
# Copyright (C) 2007-2015 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
TOPDIR:=${CURDIR}
|
||||
LC_ALL:=C
|
||||
LANG:=C
|
||||
export TOPDIR LC_ALL LANG
|
||||
export OPENWRT_VERBOSE=s
|
||||
all: help
|
||||
|
||||
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
||||
export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
|
||||
|
||||
ifneq ($(OPENWRT_BUILD),1)
|
||||
override OPENWRT_BUILD=1
|
||||
export OPENWRT_BUILD
|
||||
endif
|
||||
|
||||
include rules.mk
|
||||
include $(INCLUDE_DIR)/debug.mk
|
||||
include $(INCLUDE_DIR)/depends.mk
|
||||
include $(INCLUDE_DIR)/rootfs.mk
|
||||
|
||||
include $(INCLUDE_DIR)/version.mk
|
||||
export REVISION
|
||||
export SOURCE_DATE_EPOCH
|
||||
|
||||
define Helptext
|
||||
Available Commands:
|
||||
help: This help text
|
||||
info: Show a list of available target profiles
|
||||
clean: Remove images and temporary build files
|
||||
image: Build an image (see below for more information).
|
||||
manifest: Show all package that will be installed into the image
|
||||
package_whatdepends: Show which packages have a dependency on this
|
||||
package_depends: Show installation dependency of the package
|
||||
|
||||
image:
|
||||
By default 'make image' will create an image with the default
|
||||
target profile and package set. You can use the following parameters
|
||||
to change that:
|
||||
|
||||
make image PROFILE="<profilename>" # override the default target profile
|
||||
make image PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
|
||||
make image FILES="<path>" # include extra files from <path>
|
||||
make image BIN_DIR="<path>" # alternative output directory for the images
|
||||
make image EXTRA_IMAGE_NAME="<string>" # Add this to the output image filename (sanitized)
|
||||
make image DISABLED_SERVICES="<svc1> [<svc2> [<svc3> ..]]" # Which services in /etc/init.d/ should be disabled
|
||||
make image ADD_LOCAL_KEY=1 # store locally generated signing key in built images
|
||||
make image ROOTFS_PARTSIZE="<size>" # override the default rootfs partition size in MegaBytes
|
||||
|
||||
manifest:
|
||||
List "all" packages which get installed into the image.
|
||||
You can use the following parameters:
|
||||
|
||||
make manifest PROFILE="<profilename>" # override the default target profile
|
||||
make manifest PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
|
||||
make manifest STRIP_ABI=1 # remove ABI version from printed package names
|
||||
|
||||
|
||||
package_whatdepends:
|
||||
List "all" packages that have a dependency on this package
|
||||
You can use the following parameters:
|
||||
|
||||
make package_whatdepends PACKAGE="<pkg>"
|
||||
|
||||
package_depends:
|
||||
List "all" packages dependency of the package
|
||||
You can use the following parameters:
|
||||
|
||||
make package_depends PACKAGE="<pkg>"
|
||||
|
||||
endef
|
||||
$(eval $(call shexport,Helptext))
|
||||
|
||||
help: FORCE
|
||||
echo "$$$(call shvar,Helptext)"
|
||||
|
||||
|
||||
# override variables from rules.mk
|
||||
PACKAGE_DIR:=$(TOPDIR)/packages
|
||||
LISTS_DIR:=$(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$(TARGET_DIR))))$(DL_DIR)
|
||||
PACKAGE_DIR_ALL:=$(TOPDIR)/packages
|
||||
|
||||
export OPKG_KEYS:=$(TOPDIR)/keys
|
||||
OPKG:=$(call opkg,$(TARGET_DIR)) \
|
||||
-f $(TOPDIR)/repositories.conf \
|
||||
--verify-program $(SCRIPT_DIR)/opkg-key \
|
||||
--cache $(DL_DIR) \
|
||||
--lists-dir $(LISTS_DIR)
|
||||
|
||||
APK:=$(call apk,$(TARGET_DIR)) \
|
||||
--cache-dir $(DL_DIR) \
|
||||
--allow-untrusted
|
||||
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
-include .profiles.mk
|
||||
|
||||
USER_PROFILE ?= $(firstword $(PROFILE_NAMES))
|
||||
PROFILE_LIST = $(foreach p,$(PROFILE_NAMES), \
|
||||
echo '$(patsubst DEVICE_%,%,$(p)):'; $(if $($(p)_NAME),echo ' $(subst ','"'"',$($(p)_NAME))'; ) \
|
||||
echo ' Packages: $($(p)_PACKAGES)'; echo ' hasImageMetadata: $($(p)_HAS_IMAGE_METADATA)'; \
|
||||
$(if $($(p)_SUPPORTED_DEVICES),echo ' SupportedDevices: $($(p)_SUPPORTED_DEVICES)';) )
|
||||
|
||||
|
||||
.profiles.mk: .targetinfo
|
||||
@$(SCRIPT_DIR)/target-metadata.pl profile_mk $< '$(BOARD)/$(SUBTARGET)' > $@
|
||||
|
||||
staging_dir/host/.prereq-build: include/prereq-build.mk
|
||||
mkdir -p tmp
|
||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq IB=1 2>/dev/null || { \
|
||||
echo "Prerequisite check failed. Use FORCE=1 to override."; \
|
||||
false; \
|
||||
}
|
||||
ifneq ($(realpath $(TOPDIR)/include/prepare.mk),)
|
||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prepare.mk prepare 2>/dev/null || { \
|
||||
echo "Preparation failed."; \
|
||||
false; \
|
||||
}
|
||||
endif
|
||||
touch $@
|
||||
|
||||
_call_info: FORCE
|
||||
echo 'Current Target: "$(TARGETID)"'
|
||||
echo 'Current Architecture: "$(ARCH)"'
|
||||
echo 'Current Revision: "$(REVISION)"'
|
||||
echo 'Default Packages: $(DEFAULT_PACKAGES)'
|
||||
echo 'Available Profiles:'
|
||||
echo; $(PROFILE_LIST)
|
||||
|
||||
BUILD_PACKAGES:=$(sort $(DEFAULT_PACKAGES) $($(USER_PROFILE)_PACKAGES) kernel)
|
||||
# "-pkgname" in the package list means remove "pkgname" from the package list
|
||||
BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
|
||||
BUILD_PACKAGES:=$(USER_PACKAGES) $(BUILD_PACKAGES)
|
||||
BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
|
||||
PACKAGES:=
|
||||
|
||||
_call_image: staging_dir/host/.prereq-build
|
||||
echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'
|
||||
echo 'Packages: $(BUILD_PACKAGES)'
|
||||
echo
|
||||
rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
|
||||
mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
|
||||
$(MAKE) package_reload
|
||||
$(MAKE) package_install
|
||||
$(MAKE) -s prepare_rootfs
|
||||
$(MAKE) -s build_image
|
||||
$(MAKE) -s json_overview_image_info
|
||||
$(MAKE) -s checksum
|
||||
|
||||
_call_manifest: FORCE
|
||||
rm -rf $(TARGET_DIR)
|
||||
mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
|
||||
$(MAKE) package_reload >/dev/null
|
||||
$(MAKE) package_install >/dev/null
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
$(OPKG) list-installed $(if $(STRIP_ABI),--strip-abi)
|
||||
else
|
||||
$(APK) list --quiet --manifest --no-network
|
||||
endif
|
||||
|
||||
package_index: FORCE
|
||||
@echo >&2
|
||||
@echo Building package index... >&2
|
||||
@mkdir -p $(TMP_DIR) $(TARGET_DIR)/tmp
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \
|
||||
gzip -9nc Packages > Packages.gz; \
|
||||
$(if $(CONFIG_SIGNATURE_CHECK), \
|
||||
$(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY)) \
|
||||
) >/dev/null 2>/dev/null
|
||||
$(OPKG) update >&2 || true
|
||||
else
|
||||
(cd $(PACKAGE_DIR); $(APK) mkndx --output packages.adb *.apk) >&2
|
||||
endif
|
||||
|
||||
package_reload:
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
if [ -d "$(PACKAGE_DIR)" ] && ( \
|
||||
[ ! -f "$(PACKAGE_DIR)/Packages" ] || \
|
||||
[ ! -f "$(PACKAGE_DIR)/Packages.gz" ] || \
|
||||
[ "`find $(PACKAGE_DIR) -cnewer $(PACKAGE_DIR)/Packages.gz`" ] ); then \
|
||||
echo "Package list missing or not up-to-date, generating it." >&2 ;\
|
||||
$(MAKE) package_index; \
|
||||
else \
|
||||
mkdir -p $(TARGET_DIR)/tmp; \
|
||||
$(OPKG) update >&2 || true; \
|
||||
fi
|
||||
else
|
||||
if [ -d "$(PACKAGE_DIR)" ] && ( \
|
||||
[ ! -f "$(PACKAGE_DIR)/packages.adb" ] || \
|
||||
[ "`find $(PACKAGE_DIR) -cnewer $(PACKAGE_DIR)/packages.adb`" ] ); then \
|
||||
echo "Package list missing or not up-to-date, generating it." >&2 ;\
|
||||
$(MAKE) package_index; \
|
||||
else \
|
||||
mkdir -p $(TARGET_DIR)/tmp; \
|
||||
$(APK) update >&2 || true; \
|
||||
fi
|
||||
endif
|
||||
|
||||
package_list: FORCE
|
||||
@$(MAKE) -s package_reload
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
@$(OPKG) list --size 2>/dev/null
|
||||
else
|
||||
@$(APK) list --size 2>/dev/null
|
||||
endif
|
||||
|
||||
package_install: FORCE
|
||||
@echo
|
||||
@echo Installing packages...
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
$(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk))
|
||||
$(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
|
||||
$(OPKG) install $(BUILD_PACKAGES)
|
||||
else
|
||||
$(APK) add --initdb --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc_*.apk))
|
||||
$(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel_*.apk))
|
||||
$(APK) add --no-scripts $(BUILD_PACKAGES)
|
||||
endif
|
||||
|
||||
prepare_rootfs: FORCE
|
||||
@echo
|
||||
@echo Finalizing root filesystem...
|
||||
|
||||
$(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG)
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
$(if $(CONFIG_SIGNATURE_CHECK), \
|
||||
$(if $(ADD_LOCAL_KEY), \
|
||||
OPKG_KEYS=$(TARGET_DIR)/etc/opkg/keys/ \
|
||||
$(SCRIPT_DIR)/opkg-key add $(BUILD_KEY).pub \
|
||||
) \
|
||||
)
|
||||
endif
|
||||
$(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
|
||||
|
||||
build_image: FORCE
|
||||
@echo
|
||||
@echo Building images...
|
||||
rm -rf $(BUILD_DIR)/json_info_files/
|
||||
if [ -d "target/linux/feeds/$(BOARD)" ]; then \
|
||||
$(NO_TRACE_MAKE) -C target/linux/feeds/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
|
||||
$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)"); \
|
||||
else \
|
||||
$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
|
||||
$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)"); \
|
||||
fi
|
||||
|
||||
$(BIN_DIR)/profiles.json: FORCE
|
||||
$(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
|
||||
WORK_DIR=$(BUILD_DIR)/json_info_files \
|
||||
$(SCRIPT_DIR)/json_overview_image_info.py $@ \
|
||||
)
|
||||
|
||||
json_overview_image_info: $(BIN_DIR)/profiles.json
|
||||
|
||||
checksum: FORCE
|
||||
@echo
|
||||
@echo Calculating checksums...
|
||||
@$(call sha256sums,$(BIN_DIR))
|
||||
|
||||
clean:
|
||||
rm -rf $(TMP_DIR) $(DL_DIR) $(TARGET_DIR) $(BIN_DIR)
|
||||
|
||||
|
||||
info:
|
||||
(unset PROFILE FILES PACKAGES MAKEFLAGS; $(MAKE) -s _call_info)
|
||||
|
||||
PROFILE_FILTER = $(filter DEVICE_$(PROFILE) $(PROFILE),$(PROFILE_NAMES))
|
||||
|
||||
_check_profile: FORCE
|
||||
ifneq ($(PROFILE),)
|
||||
ifeq ($(PROFILE_FILTER),)
|
||||
@echo 'Profile "$(PROFILE)" does not exist!'
|
||||
@echo 'Use "make info" to get a list of available profile names.'
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
|
||||
_check_keys: FORCE
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
ifneq ($(CONFIG_SIGNATURE_CHECK),)
|
||||
@if [ ! -s $(BUILD_KEY) -o ! -s $(BUILD_KEY).pub ]; then \
|
||||
echo Generate local signing keys... >&2; \
|
||||
$(STAGING_DIR_HOST)/bin/usign -G \
|
||||
-s $(BUILD_KEY) -p $(BUILD_KEY).pub -c "Local build key"; \
|
||||
$(SCRIPT_DIR)/opkg-key add $(BUILD_KEY).pub; \
|
||||
fi
|
||||
if [ ! -s $(BUILD_KEY).ucert ]; then \
|
||||
echo Generate local certificate... >&2; \
|
||||
$(STAGING_DIR_HOST)/bin/ucert -I \
|
||||
-c $(BUILD_KEY).ucert \
|
||||
-p $(BUILD_KEY).pub \
|
||||
-s $(BUILD_KEY); \
|
||||
fi
|
||||
endif
|
||||
else
|
||||
# TODO
|
||||
endif
|
||||
|
||||
image:
|
||||
$(MAKE) -s _check_profile
|
||||
$(MAKE) -s _check_keys
|
||||
(unset PROFILE FILES PACKAGES MAKEFLAGS; \
|
||||
$(MAKE) -s _call_image \
|
||||
$(if $(PROFILE),USER_PROFILE="$(PROFILE_FILTER)") \
|
||||
$(if $(FILES),USER_FILES="$(FILES)") \
|
||||
$(if $(PACKAGES),USER_PACKAGES="$(PACKAGES)") \
|
||||
$(if $(BIN_DIR),BIN_DIR="$(BIN_DIR)") \
|
||||
$(if $(DISABLED_SERVICES),DISABLED_SERVICES="$(DISABLED_SERVICES)") \
|
||||
$(if $(ROOTFS_PARTSIZE),CONFIG_TARGET_ROOTFS_PARTSIZE="$(ROOTFS_PARTSIZE)"))
|
||||
|
||||
manifest: FORCE
|
||||
$(MAKE) -s _check_profile
|
||||
$(MAKE) -s _check_keys
|
||||
(unset PROFILE FILES PACKAGES MAKEFLAGS; \
|
||||
$(MAKE) -s _call_manifest \
|
||||
$(if $(PROFILE),USER_PROFILE="$(PROFILE_FILTER)") \
|
||||
$(if $(PACKAGES),USER_PACKAGES="$(PACKAGES)"))
|
||||
|
||||
package_whatdepends: FORCE
|
||||
ifeq ($(PACKAGE),)
|
||||
@echo 'Variable `PACKAGE` is not set but required by `whatdepends`'
|
||||
@exit 1
|
||||
endif
|
||||
@$(MAKE) -s package_reload
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
@$(OPKG) list --depends $(PACKAGE)
|
||||
else
|
||||
@$(APK) list --depends $(PACKAGE)
|
||||
endif
|
||||
|
||||
package_depends: FORCE
|
||||
ifeq ($(PACKAGE),)
|
||||
@echo 'Variable `PACKAGE` is not set but required by `package_depends`'
|
||||
@exit 1
|
||||
endif
|
||||
@$(MAKE) -s package_reload
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
@$(OPKG) depends -A $(PACKAGE)
|
||||
else
|
||||
@$(OPKG) whatdepends -A $(PACKAGE)
|
||||
endif
|
||||
|
||||
.SILENT: help info image manifest package_whatdepends package_depends
|
||||
10
target/imagebuilder/files/README.apk.md
Normal file
10
target/imagebuilder/files/README.apk.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# ./packages folder
|
||||
|
||||
Add `.apk` packages to this folder will allow the ImageBuilder to install them.
|
||||
|
||||
For more complex setups consider adding a custom feed containing packages.
|
||||
|
||||
file:///path/to/Packages.adb
|
||||
|
||||
Whenever the ImageBuilder builds a firmware image this folder will be reloaded
|
||||
and a new package index created.
|
||||
11
target/imagebuilder/files/README.opkg.md
Normal file
11
target/imagebuilder/files/README.opkg.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# ./packages folder
|
||||
|
||||
Add `.ipk` packages to this folder will allow the ImageBuilder to install them.
|
||||
|
||||
For more complex setups consider adding a custom feed containing packages.
|
||||
|
||||
src custom file:///path/to/packages
|
||||
|
||||
Whenever the ImageBuilder builds a firmware image this folder will be reloaded
|
||||
and a new package index created. In case signature checks are enabled the
|
||||
`./packages/Packages` index will be signed with a locally generated key pair.
|
||||
4
target/imagebuilder/files/repositories.conf
Normal file
4
target/imagebuilder/files/repositories.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
## Place your custom repositories here, they must match the architecture and version.
|
||||
# src/gz %n %U
|
||||
# src custom file:///usr/src/openwrt/bin/%T/packages
|
||||
|
||||
11
target/linux/Makefile
Normal file
11
target/linux/Makefile
Normal file
@@ -0,0 +1,11 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2006-2007 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
export TARGET_BUILD=1
|
||||
|
||||
prereq clean download prepare compile install oldconfig menuconfig nconfig xconfig update refresh dtb: FORCE
|
||||
@+$(NO_TRACE_MAKE) -C $(firstword $(wildcard feeds/$(BOARD) $(BOARD))) $@
|
||||
15
target/linux/airoha/Makefile
Normal file
15
target/linux/airoha/Makefile
Normal file
@@ -0,0 +1,15 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=arm
|
||||
BOARD:=airoha
|
||||
BOARDNAME:=Airoha ARM
|
||||
CPU_TYPE:=cortex-a7
|
||||
FEATURES:=dt squashfs nand ramdisk gpio source-only
|
||||
|
||||
KERNEL_PATCHVER:=6.6
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
KERNELNAME:=Image dtbs
|
||||
|
||||
$(eval $(call BuildTarget))
|
||||
303
target/linux/airoha/config-6.6
Normal file
303
target/linux/airoha/config-6.6
Normal file
@@ -0,0 +1,303 @@
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_AIROHA=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_HAS_GROUP_RELOCS=y
|
||||
CONFIG_ARM_HEAVY_MB=y
|
||||
# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
CONFIG_ARM_PSCI=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
# CONFIG_ARM_SMMU is not set
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_ATAGS=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
|
||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMMON_CLK_EN7523=y
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CONTEXT_TRACKING=y
|
||||
CONFIG_CONTEXT_TRACKING_IDLE=y
|
||||
CONFIG_CPU_32v6K=y
|
||||
CONFIG_CPU_32v7=y
|
||||
CONFIG_CPU_ABRT_EV7=y
|
||||
CONFIG_CPU_CACHE_V7=y
|
||||
CONFIG_CPU_CACHE_VIPT=y
|
||||
CONFIG_CPU_COPY_V6=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
CONFIG_CPU_HAS_ASID=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MITIGATIONS=y
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CPU_SPECTRE=y
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_GF128MUL=y
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_ZSTD=y
|
||||
CONFIG_CURRENT_POINTER_IN_TPIDRURO=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
CONFIG_DEBUG_MISC=y
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FUNCTION_ALIGNMENT=0
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC10_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GENERIC_VDSO_32=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_EN7523=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
# CONFIG_HARDEN_BRANCH_HISTORY is not set
|
||||
# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HOTPLUG_CORE_SYNC=y
|
||||
CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_IOMMUFD is not set
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQSTACKS=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_TIME_ACCOUNTING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
CONFIG_MTD_NAND_CORE=y
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
|
||||
CONFIG_MTD_SPI_NAND=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_FIT_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_SRCU_NMI_SAFE=y
|
||||
CONFIG_NET_EGRESS=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_INGRESS=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NET_XGRESS=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_LAYOUTS=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OUTER_CACHE=y
|
||||
CONFIG_OUTER_CACHE_SYNC=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_MEDIATEK=y
|
||||
CONFIG_PCIE_PME=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PREEMPT_NONE_BUILD=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SMP_ON_UP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SOFTIRQ_ON_OWN_STACK=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_AIROHA_EN7523=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
|
||||
CONFIG_STACKTRACE=y
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNWINDER_ARM=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
# CONFIG_USB_XHCI_PLATFORM is not set
|
||||
CONFIG_USE_OF=y
|
||||
# CONFIG_VFP is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZSTD_COMMON=y
|
||||
CONFIG_ZSTD_COMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
73
target/linux/airoha/dts/en7523-evb.dts
Normal file
73
target/linux/airoha/dts/en7523-evb.dts
Normal file
@@ -0,0 +1,73 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
/dts-v1/;
|
||||
|
||||
/* Bootloader installs ATF here */
|
||||
/memreserve/ 0x80000000 0x200000;
|
||||
|
||||
#include "en7523.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Airoha EN7523 Evaluation Board";
|
||||
compatible = "airoha,en7523-evb", "airoha,en7523";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart1;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200 earlycon";
|
||||
stdout-path = "serial0:115200n8";
|
||||
linux,usable-memory-range = <0x80200000 0x1fe00000>;
|
||||
};
|
||||
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x20000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&nand {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x7C000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x7C000 0x4000>;
|
||||
};
|
||||
|
||||
partition@2 {
|
||||
label = "art";
|
||||
reg = <0x80000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@3 {
|
||||
label = "firmware";
|
||||
reg = <0xC0000 0xDF40000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
219
target/linux/airoha/dts/en7523.dtsi
Normal file
219
target/linux/airoha/dts/en7523.dtsi
Normal file
@@ -0,0 +1,219 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/clock/en7523-clk.h>
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&gic>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
npu_binary@84000000 {
|
||||
no-map;
|
||||
reg = <0x84000000 0xA00000>;
|
||||
};
|
||||
|
||||
npu_flag@84B0000 {
|
||||
no-map;
|
||||
reg = <0x84B00000 0x100000>;
|
||||
};
|
||||
|
||||
npu_pkt@85000000 {
|
||||
no-map;
|
||||
reg = <0x85000000 0x1A00000>;
|
||||
};
|
||||
|
||||
npu_phyaddr@86B00000 {
|
||||
no-map;
|
||||
reg = <0x86B00000 0x100000>;
|
||||
};
|
||||
|
||||
npu_rxdesc@86D00000 {
|
||||
no-map;
|
||||
reg = <0x86D00000 0x100000>;
|
||||
};
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu-map {
|
||||
cluster0 {
|
||||
core0 {
|
||||
cpu = <&cpu0>;
|
||||
};
|
||||
core1 {
|
||||
cpu = <&cpu1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu0: cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x0>;
|
||||
enable-method = "psci";
|
||||
clock-frequency = <80000000>;
|
||||
next-level-cache = <&L2_0>;
|
||||
};
|
||||
|
||||
cpu1: cpu@1 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x1>;
|
||||
enable-method = "psci";
|
||||
clock-frequency = <80000000>;
|
||||
next-level-cache = <&L2_0>;
|
||||
};
|
||||
|
||||
L2_0: l2-cache0 {
|
||||
compatible = "cache";
|
||||
};
|
||||
};
|
||||
|
||||
scu: system-controller@1fa20000 {
|
||||
compatible = "airoha,en7523-scu";
|
||||
reg = <0x1fa20000 0x400>,
|
||||
<0x1fb00000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@9000000 {
|
||||
compatible = "arm,gic-v3";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x09000000 0x20000>,
|
||||
<0x09080000 0x80000>,
|
||||
<0x09400000 0x2000>,
|
||||
<0x09500000 0x2000>,
|
||||
<0x09600000 0x20000>;
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
uart1: serial@1fbf0000 {
|
||||
compatible = "ns16550";
|
||||
reg = <0x1fbf0000 0x30>;
|
||||
reg-io-width = <4>;
|
||||
reg-shift = <2>;
|
||||
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clock-frequency = <1843200>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
gpio0: gpio@1fbf0200 {
|
||||
compatible = "airoha,en7523-gpio";
|
||||
reg = <0x1fbf0204 0x4>,
|
||||
<0x1fbf0200 0x4>,
|
||||
<0x1fbf0220 0x4>,
|
||||
<0x1fbf0214 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio@1fbf0270 {
|
||||
compatible = "airoha,en7523-gpio";
|
||||
reg = <0x1fbf0270 0x4>,
|
||||
<0x1fbf0260 0x4>,
|
||||
<0x1fbf0264 0x4>,
|
||||
<0x1fbf0278 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
pcie0: pcie@1fa91000 {
|
||||
compatible = "airoha,en7523-pcie", "mediatek,mt7622-pcie";
|
||||
device_type = "pci";
|
||||
reg = <0x1fa91000 0x1000>;
|
||||
reg-names = "port0";
|
||||
linux,pci-domain = <0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "pcie_irq";
|
||||
clocks = <&scu EN7523_CLK_PCIE>;
|
||||
clock-names = "sys_ck0";
|
||||
bus-range = <0x00 0xff>;
|
||||
ranges = <0x82000000 0 0x20000000 0x20000000 0 0x2000000>;
|
||||
status = "disabled";
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pcie_intc0 0>,
|
||||
<0 0 0 2 &pcie_intc0 1>,
|
||||
<0 0 0 3 &pcie_intc0 2>,
|
||||
<0 0 0 4 &pcie_intc0 3>;
|
||||
pcie_intc0: interrupt-controller {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie1: pcie@1fa92000 {
|
||||
compatible = "airoha,en7523-pcie", "mediatek,mt7622-pcie";
|
||||
device_type = "pci";
|
||||
reg = <0x1fa92000 0x1000>;
|
||||
reg-names = "port1";
|
||||
linux,pci-domain = <1>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "pcie_irq";
|
||||
clocks = <&scu EN7523_CLK_PCIE>;
|
||||
clock-names = "sys_ck1";
|
||||
bus-range = <0x00 0xff>;
|
||||
ranges = <0x82000000 0 0x22000000 0x22000000 0 0x2000000>;
|
||||
status = "disabled";
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pcie_intc1 0>,
|
||||
<0 0 0 2 &pcie_intc1 1>,
|
||||
<0 0 0 3 &pcie_intc1 2>,
|
||||
<0 0 0 4 &pcie_intc1 3>;
|
||||
pcie_intc1: interrupt-controller {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
spi_ctrl: spi_controller@1fa10000 {
|
||||
compatible = "airoha,en7523-spi";
|
||||
reg = <0x1fa10000 0x140>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spi-rx-bus-width = <2>;
|
||||
spi-tx-bus-width = <2>;
|
||||
|
||||
nand: nand@0 {
|
||||
compatible = "spi-nand";
|
||||
reg = <0>;
|
||||
nand-ecc-engine = <&nand>;
|
||||
};
|
||||
};
|
||||
};
|
||||
1
target/linux/airoha/generic/target.mk
Normal file
1
target/linux/airoha/generic/target.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOARDNAME:=Generic
|
||||
37
target/linux/airoha/image/Makefile
Normal file
37
target/linux/airoha/image/Makefile
Normal file
@@ -0,0 +1,37 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
KERNEL_LOADADDR := 0x80208000
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for Airoha EN7523 ARM based boards.
|
||||
endef
|
||||
|
||||
# default all platform image(fit) build
|
||||
define Device/Default
|
||||
PROFILES = Default $$(DEVICE_NAME)
|
||||
KERNEL_NAME := Image
|
||||
KERNEL = kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||
KERNEL_INITRAMFS = kernel-bin | lzma | \
|
||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd
|
||||
FILESYSTEMS := squashfs
|
||||
DEVICE_DTS_DIR := $(DTS_DIR)
|
||||
IMAGES := sysupgrade.bin
|
||||
IMAGE/sysupgrade.bin := append-kernel | pad-to 128k | append-rootfs | \
|
||||
pad-rootfs | append-metadata
|
||||
endef
|
||||
|
||||
define Image/Build
|
||||
$(call Image/Build/$(1),$(1))
|
||||
endef
|
||||
|
||||
define Device/airoha_en7523-evb
|
||||
DEVICE_VENDOR := Airoha
|
||||
DEVICE_MODEL := EN7523 Evaluation Board
|
||||
DEVICE_DTS := en7523-evb
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
endef
|
||||
TARGET_DEVICES += airoha_en7523-evb
|
||||
|
||||
$(eval $(call BuildImage))
|
||||
0
target/linux/airoha/image/en7523.mk
Normal file
0
target/linux/airoha/image/en7523.mk
Normal file
@@ -0,0 +1,341 @@
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -353,6 +353,12 @@ config SPI_DLN2
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called spi-dln2.
|
||||
|
||||
+config SPI_AIROHA_EN7523
|
||||
+ bool "Airoha EN7523 SPI controller support"
|
||||
+ depends on ARCH_AIROHA
|
||||
+ help
|
||||
+ This enables SPI controller support for the Airoha EN7523 SoC.
|
||||
+
|
||||
config SPI_EP93XX
|
||||
tristate "Cirrus Logic EP93xx SPI controller"
|
||||
depends on ARCH_EP93XX || COMPILE_TEST
|
||||
--- a/drivers/spi/Makefile
|
||||
+++ b/drivers/spi/Makefile
|
||||
@@ -50,6 +50,7 @@ obj-$(CONFIG_SPI_DW_BT1) += spi-dw-bt1.
|
||||
obj-$(CONFIG_SPI_DW_MMIO) += spi-dw-mmio.o
|
||||
obj-$(CONFIG_SPI_DW_PCI) += spi-dw-pci.o
|
||||
obj-$(CONFIG_SPI_EP93XX) += spi-ep93xx.o
|
||||
+obj-$(CONFIG_SPI_AIROHA_EN7523) += spi-en7523.o
|
||||
obj-$(CONFIG_SPI_FALCON) += spi-falcon.o
|
||||
obj-$(CONFIG_SPI_FSI) += spi-fsi.o
|
||||
obj-$(CONFIG_SPI_FSL_CPM) += spi-fsl-cpm.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/spi/spi-en7523.c
|
||||
@@ -0,0 +1,313 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+#include <linux/mod_devicetable.h>
|
||||
+#include <linux/spi/spi.h>
|
||||
+
|
||||
+
|
||||
+#define ENSPI_READ_IDLE_EN 0x0004
|
||||
+#define ENSPI_MTX_MODE_TOG 0x0014
|
||||
+#define ENSPI_RDCTL_FSM 0x0018
|
||||
+#define ENSPI_MANUAL_EN 0x0020
|
||||
+#define ENSPI_MANUAL_OPFIFO_EMPTY 0x0024
|
||||
+#define ENSPI_MANUAL_OPFIFO_WDATA 0x0028
|
||||
+#define ENSPI_MANUAL_OPFIFO_FULL 0x002C
|
||||
+#define ENSPI_MANUAL_OPFIFO_WR 0x0030
|
||||
+#define ENSPI_MANUAL_DFIFO_FULL 0x0034
|
||||
+#define ENSPI_MANUAL_DFIFO_WDATA 0x0038
|
||||
+#define ENSPI_MANUAL_DFIFO_EMPTY 0x003C
|
||||
+#define ENSPI_MANUAL_DFIFO_RD 0x0040
|
||||
+#define ENSPI_MANUAL_DFIFO_RDATA 0x0044
|
||||
+#define ENSPI_IER 0x0090
|
||||
+#define ENSPI_NFI2SPI_EN 0x0130
|
||||
+
|
||||
+// TODO not in spi block
|
||||
+#define ENSPI_CLOCK_DIVIDER ((void __iomem *)0x1fa201c4)
|
||||
+
|
||||
+#define OP_CSH 0x00
|
||||
+#define OP_CSL 0x01
|
||||
+#define OP_CK 0x02
|
||||
+#define OP_OUTS 0x08
|
||||
+#define OP_OUTD 0x09
|
||||
+#define OP_OUTQ 0x0A
|
||||
+#define OP_INS 0x0C
|
||||
+#define OP_INS0 0x0D
|
||||
+#define OP_IND 0x0E
|
||||
+#define OP_INQ 0x0F
|
||||
+#define OP_OS2IS 0x10
|
||||
+#define OP_OS2ID 0x11
|
||||
+#define OP_OS2IQ 0x12
|
||||
+#define OP_OD2IS 0x13
|
||||
+#define OP_OD2ID 0x14
|
||||
+#define OP_OD2IQ 0x15
|
||||
+#define OP_OQ2IS 0x16
|
||||
+#define OP_OQ2ID 0x17
|
||||
+#define OP_OQ2IQ 0x18
|
||||
+#define OP_OSNIS 0x19
|
||||
+#define OP_ODNID 0x1A
|
||||
+
|
||||
+#define MATRIX_MODE_AUTO 1
|
||||
+#define CONF_MTX_MODE_AUTO 0
|
||||
+#define MANUALEN_AUTO 0
|
||||
+#define MATRIX_MODE_MANUAL 0
|
||||
+#define CONF_MTX_MODE_MANUAL 9
|
||||
+#define MANUALEN_MANUAL 1
|
||||
+
|
||||
+#define _ENSPI_MAX_XFER 0x1ff
|
||||
+
|
||||
+#define REG(x) (iobase + x)
|
||||
+
|
||||
+
|
||||
+static void __iomem *iobase;
|
||||
+
|
||||
+
|
||||
+static void opfifo_write(u32 cmd, u32 len)
|
||||
+{
|
||||
+ u32 tmp = ((cmd & 0x1f) << 9) | (len & 0x1ff);
|
||||
+
|
||||
+ writel(tmp, REG(ENSPI_MANUAL_OPFIFO_WDATA));
|
||||
+
|
||||
+ /* Wait for room in OPFIFO */
|
||||
+ while (readl(REG(ENSPI_MANUAL_OPFIFO_FULL)))
|
||||
+ ;
|
||||
+
|
||||
+ /* Shift command into OPFIFO */
|
||||
+ writel(1, REG(ENSPI_MANUAL_OPFIFO_WR));
|
||||
+
|
||||
+ /* Wait for command to finish */
|
||||
+ while (!readl(REG(ENSPI_MANUAL_OPFIFO_EMPTY)))
|
||||
+ ;
|
||||
+}
|
||||
+
|
||||
+static void set_cs(int state)
|
||||
+{
|
||||
+ if (state)
|
||||
+ opfifo_write(OP_CSH, 1);
|
||||
+ else
|
||||
+ opfifo_write(OP_CSL, 1);
|
||||
+}
|
||||
+
|
||||
+static void manual_begin_cmd(void)
|
||||
+{
|
||||
+ /* Disable read idle state */
|
||||
+ writel(0, REG(ENSPI_READ_IDLE_EN));
|
||||
+
|
||||
+ /* Wait for FSM to reach idle state */
|
||||
+ while (readl(REG(ENSPI_RDCTL_FSM)))
|
||||
+ ;
|
||||
+
|
||||
+ /* Set SPI core to manual mode */
|
||||
+ writel(CONF_MTX_MODE_MANUAL, REG(ENSPI_MTX_MODE_TOG));
|
||||
+ writel(MANUALEN_MANUAL, REG(ENSPI_MANUAL_EN));
|
||||
+}
|
||||
+
|
||||
+static void manual_end_cmd(void)
|
||||
+{
|
||||
+ /* Set SPI core to auto mode */
|
||||
+ writel(CONF_MTX_MODE_AUTO, REG(ENSPI_MTX_MODE_TOG));
|
||||
+ writel(MANUALEN_AUTO, REG(ENSPI_MANUAL_EN));
|
||||
+
|
||||
+ /* Enable read idle state */
|
||||
+ writel(1, REG(ENSPI_READ_IDLE_EN));
|
||||
+}
|
||||
+
|
||||
+static void dfifo_read(u8 *buf, int len)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+ /* Wait for requested data to show up in DFIFO */
|
||||
+ while (readl(REG(ENSPI_MANUAL_DFIFO_EMPTY)))
|
||||
+ ;
|
||||
+ buf[i] = readl(REG(ENSPI_MANUAL_DFIFO_RDATA));
|
||||
+ /* Queue up next byte */
|
||||
+ writel(1, REG(ENSPI_MANUAL_DFIFO_RD));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void dfifo_write(const u8 *buf, int len)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+ /* Wait for room in DFIFO */
|
||||
+ while (readl(REG(ENSPI_MANUAL_DFIFO_FULL)))
|
||||
+ ;
|
||||
+ writel(buf[i], REG(ENSPI_MANUAL_DFIFO_WDATA));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#if 0
|
||||
+static void set_spi_clock_speed(int freq_mhz)
|
||||
+{
|
||||
+ u32 tmp, val;
|
||||
+
|
||||
+ tmp = readl(ENSPI_CLOCK_DIVIDER);
|
||||
+ tmp &= 0xffff0000;
|
||||
+ writel(tmp, ENSPI_CLOCK_DIVIDER);
|
||||
+
|
||||
+ val = (400 / (freq_mhz * 2));
|
||||
+ tmp |= (val << 8) | 1;
|
||||
+ writel(tmp, ENSPI_CLOCK_DIVIDER);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static void init_hw(void)
|
||||
+{
|
||||
+ /* Disable manual/auto mode clash interrupt */
|
||||
+ writel(0, REG(ENSPI_IER));
|
||||
+
|
||||
+ // TODO via clk framework
|
||||
+ // set_spi_clock_speed(50);
|
||||
+
|
||||
+ /* Disable DMA */
|
||||
+ writel(0, REG(ENSPI_NFI2SPI_EN));
|
||||
+}
|
||||
+
|
||||
+static int xfer_read(struct spi_transfer *xfer)
|
||||
+{
|
||||
+ int opcode;
|
||||
+ uint8_t *buf = xfer->rx_buf;
|
||||
+
|
||||
+ switch (xfer->rx_nbits) {
|
||||
+ case SPI_NBITS_SINGLE:
|
||||
+ opcode = OP_INS;
|
||||
+ break;
|
||||
+ case SPI_NBITS_DUAL:
|
||||
+ opcode = OP_IND;
|
||||
+ break;
|
||||
+ case SPI_NBITS_QUAD:
|
||||
+ opcode = OP_INQ;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ opfifo_write(opcode, xfer->len);
|
||||
+ dfifo_read(buf, xfer->len);
|
||||
+
|
||||
+ return xfer->len;
|
||||
+}
|
||||
+
|
||||
+static int xfer_write(struct spi_transfer *xfer, int next_xfer_is_rx)
|
||||
+{
|
||||
+ int opcode;
|
||||
+ const uint8_t *buf = xfer->tx_buf;
|
||||
+
|
||||
+ if (next_xfer_is_rx) {
|
||||
+ /* need to use Ox2Ix opcode to set the core to input afterwards */
|
||||
+ switch (xfer->tx_nbits) {
|
||||
+ case SPI_NBITS_SINGLE:
|
||||
+ opcode = OP_OS2IS;
|
||||
+ break;
|
||||
+ case SPI_NBITS_DUAL:
|
||||
+ opcode = OP_OS2ID;
|
||||
+ break;
|
||||
+ case SPI_NBITS_QUAD:
|
||||
+ opcode = OP_OS2IQ;
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ switch (xfer->tx_nbits) {
|
||||
+ case SPI_NBITS_SINGLE:
|
||||
+ opcode = OP_OUTS;
|
||||
+ break;
|
||||
+ case SPI_NBITS_DUAL:
|
||||
+ opcode = OP_OUTD;
|
||||
+ break;
|
||||
+ case SPI_NBITS_QUAD:
|
||||
+ opcode = OP_OUTQ;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ opfifo_write(opcode, xfer->len);
|
||||
+ dfifo_write(buf, xfer->len);
|
||||
+
|
||||
+ return xfer->len;
|
||||
+}
|
||||
+
|
||||
+size_t max_transfer_size(struct spi_device *spi)
|
||||
+{
|
||||
+ return _ENSPI_MAX_XFER;
|
||||
+}
|
||||
+
|
||||
+int transfer_one_message(struct spi_controller *ctrl, struct spi_message *msg)
|
||||
+{
|
||||
+ struct spi_transfer *xfer;
|
||||
+ int next_xfer_is_rx = 0;
|
||||
+
|
||||
+ manual_begin_cmd();
|
||||
+ set_cs(0);
|
||||
+ list_for_each_entry(xfer, &msg->transfers, transfer_list) {
|
||||
+ if (xfer->tx_buf) {
|
||||
+ if (!list_is_last(&xfer->transfer_list, &msg->transfers)
|
||||
+ && list_next_entry(xfer, transfer_list)->rx_buf != NULL)
|
||||
+ next_xfer_is_rx = 1;
|
||||
+ else
|
||||
+ next_xfer_is_rx = 0;
|
||||
+ msg->actual_length += xfer_write(xfer, next_xfer_is_rx);
|
||||
+ } else if (xfer->rx_buf) {
|
||||
+ msg->actual_length += xfer_read(xfer);
|
||||
+ }
|
||||
+ }
|
||||
+ set_cs(1);
|
||||
+ manual_end_cmd();
|
||||
+
|
||||
+ msg->status = 0;
|
||||
+ spi_finalize_current_message(ctrl);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int spi_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct spi_controller *ctrl;
|
||||
+ int err;
|
||||
+
|
||||
+ ctrl = devm_spi_alloc_master(&pdev->dev, 0);
|
||||
+ if (!ctrl) {
|
||||
+ dev_err(&pdev->dev, "Error allocating SPI controller\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ iobase = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
|
||||
+ if (IS_ERR(iobase)) {
|
||||
+ dev_err(&pdev->dev, "Could not map SPI register address");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ init_hw();
|
||||
+
|
||||
+ ctrl->dev.of_node = pdev->dev.of_node;
|
||||
+ ctrl->flags = SPI_CONTROLLER_HALF_DUPLEX;
|
||||
+ ctrl->mode_bits = SPI_RX_DUAL | SPI_TX_DUAL;
|
||||
+ ctrl->max_transfer_size = max_transfer_size;
|
||||
+ ctrl->transfer_one_message = transfer_one_message;
|
||||
+ err = devm_spi_register_controller(&pdev->dev, ctrl);
|
||||
+ if (err) {
|
||||
+ dev_err(&pdev->dev, "Could not register SPI controller\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id spi_of_ids[] = {
|
||||
+ { .compatible = "airoha,en7523-spi" },
|
||||
+ { /* sentinel */ }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, spi_of_ids);
|
||||
+
|
||||
+static struct platform_driver spi_driver = {
|
||||
+ .probe = spi_probe,
|
||||
+ .driver = {
|
||||
+ .name = "airoha-en7523-spi",
|
||||
+ .of_match_table = spi_of_ids,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver(spi_driver);
|
||||
+
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
+MODULE_AUTHOR("Bert Vermeulen <bert@biot.com>");
|
||||
+MODULE_DESCRIPTION("Airoha EN7523 SPI driver");
|
||||
26
target/linux/apm821xx/Makefile
Normal file
26
target/linux/apm821xx/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=powerpc
|
||||
BOARD:=apm821xx
|
||||
BOARDNAME:=AppliedMicro APM821xx
|
||||
CPU_TYPE:=464fp
|
||||
FEATURES:=fpu dt gpio ramdisk squashfs usb
|
||||
SUBTARGETS:=nand sata
|
||||
|
||||
KERNEL_PATCHVER:=6.6
|
||||
|
||||
define Target/Description
|
||||
Build images for AppliedMicro APM821xx based boards.
|
||||
endef
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
KERNELNAME:=uImage
|
||||
|
||||
DEFAULT_PACKAGES += \
|
||||
kmod-leds-gpio kmod-i2c-core kmod-gpio-button-hotplug uboot-envtools \
|
||||
kmod-hw-crypto-4xx
|
||||
|
||||
$(eval $(call BuildTarget))
|
||||
50
target/linux/apm821xx/base-files/etc/board.d/01_leds
Normal file
50
target/linux/apm821xx/base-files/etc/board.d/01_leds
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
meraki,mr24)
|
||||
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
|
||||
ucidef_set_led_wlan "wlan5g_1" "WIFI 5GHz-1" "green:wlan-0" "phy1tpt"
|
||||
ucidef_set_led_wlan "wlan5g_0" "WIFI 5GHz-0" "green:wlan-1" "phy1radio"
|
||||
ucidef_set_led_wlan "wlan2g_1" "WIFI 2.4GHz-1" "green:wlan-2" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan2g_0" "WIFI 2.4GHz-0" "green:wlan-3" "phy0radio"
|
||||
;;
|
||||
|
||||
meraki,mx60)
|
||||
ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20"
|
||||
ucidef_set_led_switch "lan1" "LAN1" "green:lan-0" "switch0" "0x10"
|
||||
ucidef_set_led_switch "lan2" "LAN2" "green:lan-1" "switch0" "0x08"
|
||||
ucidef_set_led_switch "lan3" "LAN3" "green:lan-2" "switch0" "0x04"
|
||||
ucidef_set_led_switch "lan4" "LAN4" "green:lan-3" "switch0" "0x02"
|
||||
;;
|
||||
|
||||
netgear,wndap620)
|
||||
ucidef_set_led_switch "lan_act" "LAN (Activity)" "green:activity" "switch0" "0x04" "0x0f" "rx tx"
|
||||
ucidef_set_led_switch "lan_100" "LAN 100Mbps" "amber:lan" "switch0" "0x04" "0x04" "link"
|
||||
ucidef_set_led_switch "lan_1000" "LAN 1000Mbps" "green:lan" "switch0" "0x04" "0x08" "link"
|
||||
;;
|
||||
|
||||
netgear,wndap660)
|
||||
ucidef_set_led_netdev "lan_act" "LAN (Activity)" "green:activity" "eth0"
|
||||
ucidef_set_led_switch "lan1_100" "LAN 100Mbps" "amber:lan-1" "switch0" "0x02" "0x04" "link"
|
||||
ucidef_set_led_switch "lan1_1000" "LAN 1000Mbps" "green:lan-1" "switch0" "0x02" "0x08" "link"
|
||||
ucidef_set_led_switch "lan2_100" "LAN 100Mbps" "amber:lan-2" "switch0" "0x04" "0x04" "link"
|
||||
ucidef_set_led_switch "lan2_1000" "LAN 1000Mbps" "green:lan-2" "switch0" "0x04" "0x08" "link"
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wlan-0" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wlan-1" "phy1tpt"
|
||||
;;
|
||||
|
||||
netgear,wndr4700)
|
||||
ucidef_set_led_switch "wan_green" "WAN (green)" "green:wan" "switch0" "0x20"
|
||||
ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "eth0.2" "tx rx"
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
34
target/linux/apm821xx/base-files/etc/board.d/02_network
Normal file
34
target/linux/apm821xx/base-files/etc/board.d/02_network
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
. /lib/functions/system.sh
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
meraki,mr24|\
|
||||
wd,mybooklive|\
|
||||
wd,mybooklive-duo)
|
||||
ucidef_set_interface_lan "eth0" "dhcp"
|
||||
;;
|
||||
netgear,wndap620)
|
||||
ucidef_add_switch "switch0" "2:lan" "5@eth0"
|
||||
;;
|
||||
netgear,wndap660)
|
||||
ucidef_add_switch "switch0" "1:lan" "2:lan" "5@eth0"
|
||||
;;
|
||||
meraki,mx60|\
|
||||
netgear,wndr4700)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0@eth0" "4:lan" "3:lan" "2:lan" "1:lan" "5:wan"
|
||||
;;
|
||||
|
||||
*)
|
||||
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
50
target/linux/apm821xx/base-files/etc/diag.sh
Normal file
50
target/linux/apm821xx/base-files/etc/diag.sh
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
. /lib/functions/leds.sh
|
||||
|
||||
get_status_led() {
|
||||
local status_led_file
|
||||
|
||||
status_led_file=$(find /sys/class/leds/ -name "*:power" | head -n1)
|
||||
if [ -d "$status_led_file" ]; then
|
||||
basename $status_led_file
|
||||
return
|
||||
fi;
|
||||
}
|
||||
|
||||
get_failsafe_led() {
|
||||
local status_led_file
|
||||
|
||||
status_led_file=$(find /sys/class/leds/ -name "*:fault" | head -n1)
|
||||
if [ -d "$status_led_file" ]; then
|
||||
basename $status_led_file
|
||||
return
|
||||
fi;
|
||||
}
|
||||
|
||||
set_state() {
|
||||
status_led=$(get_status_led)
|
||||
|
||||
[ -z "$status_led" ] && return
|
||||
|
||||
case "$1" in
|
||||
preinit)
|
||||
status_led_blink_preinit
|
||||
;;
|
||||
failsafe)
|
||||
status_led_off
|
||||
status_led=$(get_failsafe_led)
|
||||
status_led_blink_failsafe
|
||||
;;
|
||||
preinit_regular)
|
||||
status_led_blink_preinit_regular
|
||||
;;
|
||||
upgrade)
|
||||
status_led_blink_preinit_regular
|
||||
;;
|
||||
done)
|
||||
status_led_on
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/ash
|
||||
|
||||
[ "$ACTION" = "add" ] || exit 0
|
||||
|
||||
PHYNBR=${DEVPATH##*/phy}
|
||||
|
||||
[ -n "$PHYNBR" ] || exit 0
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
netgear,wndap620|\
|
||||
netgear,wndap660)
|
||||
macaddr_add $(mtd_get_mac_ascii u-boot-env baseMAC) $(($PHYNBR + 1)) > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
esac
|
||||
15
target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol
Executable file
15
target/linux/apm821xx/base-files/etc/init.d/hwmon_fancontrol
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=98
|
||||
|
||||
boot() {
|
||||
# configuring onboard temp/fan controller to run the fan on its own
|
||||
# for more information, please read https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
|
||||
|
||||
case $(board_name) in
|
||||
netgear,wndr4700)
|
||||
path_to_hwmon='/sys/devices/platform/plb/plb:opb/4ef600700.i2c/i2c-0/0-001b/hwmon/hwmon1'
|
||||
echo 1 > "$path_to_hwmon/pwm1_mode"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
4
target/linux/apm821xx/base-files/etc/inittab
Normal file
4
target/linux/apm821xx/base-files/etc/inittab
Normal file
@@ -0,0 +1,4 @@
|
||||
::sysinit:/etc/init.d/rcS S boot
|
||||
::shutdown:/etc/init.d/rcS K shutdown
|
||||
::askconsole:/usr/libexec/login.sh
|
||||
ttyS0::askfirst:/usr/libexec/login.sh
|
||||
@@ -0,0 +1,56 @@
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/migrations.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
meraki,mr24)
|
||||
migrate_leds "orange:power=amber:fault" \
|
||||
":wifi1=:wlan-0" \
|
||||
":wifi2=:wlan-1" \
|
||||
":wifi3=:wlan-2" \
|
||||
":wifi4=:wlan-3"
|
||||
;;
|
||||
meraki,mx60)
|
||||
migrate_leds ":lan1=:lan-0" \
|
||||
":lan2=:lan-1" \
|
||||
":lan3=:lan-2" \
|
||||
":lan4=:lan-3" \
|
||||
"orange:power=amber:power" \
|
||||
"orange:wan=amber:wan"
|
||||
;;
|
||||
netgear,wndap620)
|
||||
migrate_leds ":activity=:lan-0" \
|
||||
":test=:fault" \
|
||||
":wlan2g=:wlan-0" \
|
||||
":wlan5g=:wlan-1" \
|
||||
":link100=:lan" \
|
||||
":link1000=:lan-1"
|
||||
;;
|
||||
netgear,wndap660)
|
||||
migrate_leds ":activity=:lan-0" \
|
||||
":test=:fault" \
|
||||
":wlan2g=:wlan-0" \
|
||||
":wlan5g=:wlan-1" \
|
||||
":lan1-link100=:lan-1" \
|
||||
":lan1-link1000=:lan-1" \
|
||||
":lan2-link100=:lan-2" \
|
||||
":lan2-link1000=:lan-2"
|
||||
;;
|
||||
netgear,wndr4700)
|
||||
migrate_leds "orange:power=amber:fault" \
|
||||
"white:logo=white:indicator" \
|
||||
"green:hd=green:disk" \
|
||||
"red:hd=red:disk-err"
|
||||
;;
|
||||
wd,mybooklive)
|
||||
migrate_leds "red:power=red:fault" \
|
||||
"blue:power=blue:disk"
|
||||
;;
|
||||
esac
|
||||
|
||||
remove_devicename_leds
|
||||
|
||||
migrations_apply system
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,13 @@
|
||||
. /lib/functions.sh
|
||||
|
||||
case "$(board_name)" in
|
||||
meraki,mx60|\
|
||||
netgear,wndap620|\
|
||||
netgear,wndap660|\
|
||||
netgear,wndr4700)
|
||||
uci set system.@system[0].compat_version="2.0"
|
||||
uci commit system
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,13 @@
|
||||
preinit_set_mac_address() {
|
||||
. /lib/functions.sh
|
||||
|
||||
case $(board_name) in
|
||||
meraki,mr24|\
|
||||
meraki,mx60)
|
||||
mac_lan=$(mtd_get_mac_binary_ubi board-config 0x66)
|
||||
[ -n "$mac_lan" ] && ip link set eth0 address "$mac_lan"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main preinit_set_mac_address
|
||||
@@ -0,0 +1,5 @@
|
||||
apm821xx_set_preinit_iface() {
|
||||
ifname=eth0
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main apm821xx_set_preinit_iface
|
||||
18
target/linux/apm821xx/base-files/lib/preinit/79_move_config
Normal file
18
target/linux/apm821xx/base-files/lib/preinit/79_move_config
Normal file
@@ -0,0 +1,18 @@
|
||||
BOOTPART=/dev/sda1
|
||||
|
||||
move_config() {
|
||||
. /lib/functions.sh
|
||||
. /lib/upgrade/common.sh
|
||||
|
||||
case "$(board_name)" in
|
||||
wd,mybooklive)
|
||||
if [ -b $BOOTPART ]; then
|
||||
mkdir -p /boot
|
||||
mount -t ext4 -o rw,noatime $BOOTPART /boot
|
||||
[ -f "/boot/$BACKUP_FILE" ] && mv -f "/boot/$BACKUP_FILE" /
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
boot_hook_add preinit_mount_root move_config
|
||||
47
target/linux/apm821xx/base-files/lib/upgrade/platform.sh
Normal file
47
target/linux/apm821xx/base-files/lib/upgrade/platform.sh
Normal file
@@ -0,0 +1,47 @@
|
||||
PART_NAME=firmware
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
|
||||
platform_check_image() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
wd,mybooklive)
|
||||
mbl_do_platform_check "$1"
|
||||
return $?;
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
wd,mybooklive)
|
||||
mbl_do_upgrade "$1"
|
||||
;;
|
||||
meraki,mr24|\
|
||||
meraki,mx60|\
|
||||
netgear,wndap620|\
|
||||
netgear,wndap660|\
|
||||
netgear,wndr4700)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
*)
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
platform_copy_config() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
wd,mybooklive|\
|
||||
wd,mybooklive-duo)
|
||||
mbl_copy_config
|
||||
;;
|
||||
esac
|
||||
}
|
||||
94
target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh
Normal file
94
target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh
Normal file
@@ -0,0 +1,94 @@
|
||||
. /lib/functions.sh
|
||||
|
||||
# copied from x86's platform.sh
|
||||
|
||||
mbl_do_platform_check() {
|
||||
local diskdev partdev diff
|
||||
|
||||
[ "$#" -gt 1 ] && return 1
|
||||
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
#extract the boot sector from the image
|
||||
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
|
||||
rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
|
||||
|
||||
if [ -n "$diff" ]; then
|
||||
echo "Partition layout has changed. Full image will be written."
|
||||
ask_bool 0 "Abort" && exit 1
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
mbl_do_upgrade() {
|
||||
local diskdev partdev diff
|
||||
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
echo "Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
sync
|
||||
|
||||
if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
#extract the boot sector from the image
|
||||
get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
else
|
||||
diff=1
|
||||
fi
|
||||
|
||||
if [ -n "$diff" ]; then
|
||||
get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync
|
||||
|
||||
# Separate removal and addtion is necessary; otherwise, partition 1
|
||||
# will be missing if it overlaps with the old partition 2
|
||||
partx -d - "/dev/$diskdev"
|
||||
partx -a - "/dev/$diskdev"
|
||||
|
||||
return 0
|
||||
fi
|
||||
|
||||
#iterate over each partition from the image and write it to the boot disk
|
||||
while read part start size; do
|
||||
if export_partdevice partdev $part; then
|
||||
echo "Writing image to /dev/$partdev..."
|
||||
get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync
|
||||
else
|
||||
echo "Unable to find partition $part device, skipped."
|
||||
fi
|
||||
done < /tmp/partmap.image
|
||||
|
||||
#copy partition uuid
|
||||
echo "Writing new UUID to /dev/$diskdev..."
|
||||
get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync
|
||||
}
|
||||
|
||||
mbl_copy_config() {
|
||||
local partdev
|
||||
|
||||
if export_partdevice partdev 1; then
|
||||
mount -t ext4 -o rw,noatime "/dev/$partdev" /mnt
|
||||
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
|
||||
umount /mnt
|
||||
fi
|
||||
}
|
||||
274
target/linux/apm821xx/config-6.6
Normal file
274
target/linux/apm821xx/config-6.6
Normal file
@@ -0,0 +1,274 @@
|
||||
# CONFIG_40x is not set
|
||||
# CONFIG_440_CPU is not set
|
||||
CONFIG_44x=y
|
||||
CONFIG_464_CPU=y
|
||||
CONFIG_4xx=y
|
||||
CONFIG_4xx_SOC=y
|
||||
# CONFIG_ADVANCED_OPTIONS is not set
|
||||
CONFIG_APM821xx=y
|
||||
# CONFIG_APOLLO3G is not set
|
||||
# CONFIG_ARCHES is not set
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=11
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=17
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=11
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_SPLIT_ARG64=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
|
||||
CONFIG_AUDIT_ARCH=y
|
||||
# CONFIG_BAMBOO is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLUESTONE=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_BOOKE_OR_40x=y
|
||||
CONFIG_BOOKE_WDT=y
|
||||
# CONFIG_CANYONLANDS is not set
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
|
||||
CONFIG_CMDLINE_FROM_BOOTLOADER=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
CONFIG_CRC16=y
|
||||
# CONFIG_CRC32_SARWATE is not set
|
||||
CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_GF128MUL=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
# CONFIG_CRYPTO_MD5_PPC is not set
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
# CONFIG_CRYPTO_SHA1_PPC is not set
|
||||
CONFIG_CRYPTO_SHA3=y
|
||||
CONFIG_DATA_SHIFT=12
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DW_DMAC=y
|
||||
CONFIG_DW_DMAC_CORE=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
# CONFIG_EIGER is not set
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_EXTRA_TARGETS="uImage"
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FORCE_PCI=y
|
||||
# CONFIG_FSL_LBC is not set
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FUNCTION_ALIGNMENT=0
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ATOMIC64=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IOREMAP=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_GLACIER is not set
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_IBM_IIC=y
|
||||
CONFIG_IBM_EMAC=y
|
||||
CONFIG_IBM_EMAC_EMAC4=y
|
||||
CONFIG_IBM_EMAC_POLL_WEIGHT=32
|
||||
CONFIG_IBM_EMAC_RGMII=y
|
||||
CONFIG_IBM_EMAC_RXB=128
|
||||
CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
|
||||
CONFIG_IBM_EMAC_TAH=y
|
||||
CONFIG_IBM_EMAC_TXB=128
|
||||
# CONFIG_ICON is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
# CONFIG_JFFS2_FS is not set
|
||||
# CONFIG_KATMAI is not set
|
||||
CONFIG_KERNEL_START=0xc0000000
|
||||
CONFIG_LEDS_TRIGGER_MTD=y
|
||||
CONFIG_LEDS_TRIGGER_PATTERN=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOWMEM_SIZE=0x30000000
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
# CONFIG_MATH_EMULATION is not set
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMU_GATHER_MERGE_VMAS=y
|
||||
CONFIG_MMU_GATHER_PAGE_SIZE=y
|
||||
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
# CONFIG_MTD_CFI_GEOMETRY is not set
|
||||
# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_PER_CPU_KM=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NET_EGRESS=y
|
||||
CONFIG_NET_INGRESS=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NET_XGRESS=y
|
||||
CONFIG_NOT_COHERENT_CACHE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=1
|
||||
CONFIG_NR_IRQS=512
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_LAYOUTS=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_NVMEM_U_BOOT_ENV=y
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_GPIO_MM_GPIOCHIP=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND=y
|
||||
CONFIG_PACKING=y
|
||||
CONFIG_PAGE_OFFSET=0xc0000000
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCI_DISABLE_COMMON_QUIRKS=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_ARCH_FALLBACKS=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYSICAL_START=0x00000000
|
||||
CONFIG_PHYS_64BIT=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
# CONFIG_PMU_SYSFS is not set
|
||||
CONFIG_PPC=y
|
||||
CONFIG_PPC32=y
|
||||
CONFIG_PPC44x_SIMPLE=y
|
||||
CONFIG_PPC4xx_GPIO=y
|
||||
CONFIG_PPC4xx_PCI_EXPRESS=y
|
||||
# CONFIG_PPC64 is not set
|
||||
# CONFIG_PPC_47x is not set
|
||||
# CONFIG_PPC_85xx is not set
|
||||
# CONFIG_PPC_8xx is not set
|
||||
CONFIG_PPC_ADV_DEBUG_DACS=2
|
||||
CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y
|
||||
CONFIG_PPC_ADV_DEBUG_DVCS=2
|
||||
CONFIG_PPC_ADV_DEBUG_IACS=4
|
||||
CONFIG_PPC_ADV_DEBUG_REGS=y
|
||||
# CONFIG_PPC_BOOK3S_32 is not set
|
||||
CONFIG_PPC_DCR=y
|
||||
CONFIG_PPC_DCR_NATIVE=y
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
CONFIG_PPC_FPU=y
|
||||
CONFIG_PPC_FPU_REGS=y
|
||||
CONFIG_PPC_INDIRECT_PCI=y
|
||||
CONFIG_PPC_KUAP=y
|
||||
# CONFIG_PPC_KUAP_DEBUG is not set
|
||||
CONFIG_PPC_KUEP=y
|
||||
CONFIG_PPC_MMU_NOHASH=y
|
||||
CONFIG_PPC_PAGE_SHIFT=12
|
||||
# CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is not set
|
||||
CONFIG_PPC_UDBG_16550=y
|
||||
CONFIG_PPC_WERROR=y
|
||||
CONFIG_PREEMPT_NONE_BUILD=y
|
||||
CONFIG_PTE_64BIT=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
# CONFIG_RAINIER is not set
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RAS=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_RSEQ=y
|
||||
# CONFIG_SAM440EP is not set
|
||||
# CONFIG_SCOM_DEBUGFS is not set
|
||||
# CONFIG_SEQUOIA is not set
|
||||
# CONFIG_SERIAL_8250_FSL is not set
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SGL_ALLOC=y
|
||||
# CONFIG_SMT_NUM_THREADS_DYNAMIC is not set
|
||||
CONFIG_SOFTIRQ_ON_OWN_STACK=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
|
||||
# CONFIG_STATIC_CALL_SELFTEST is not set
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
# CONFIG_TAISHAN is not set
|
||||
CONFIG_TARGET_CPU="464"
|
||||
CONFIG_TARGET_CPU_BOOL=y
|
||||
CONFIG_TASK_SIZE=0xc0000000
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_THREAD_SHIFT=13
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TINY_SRCU=y
|
||||
# CONFIG_TOOLCHAIN_DEFAULT_CPU is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_VDSO32=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
|
||||
# CONFIG_WARP is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
# CONFIG_YOSEMITE is not set
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
466
target/linux/apm821xx/dts/apm82181.dtsi
Normal file
466
target/linux/apm821xx/dts/apm82181.dtsi
Normal file
@@ -0,0 +1,466 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Device Tree for Bluestone (APM821xx) board.
|
||||
*
|
||||
* Copyright (c) 2010, Applied Micro Circuits Corporation
|
||||
* Author: Tirumala R Marri <tmarri@apm.com>
|
||||
*/
|
||||
|
||||
#include <dt-bindings/dma/dw-dmac.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
dcr-parent = <&{/cpus/cpu@0}>;
|
||||
compatible = "apm,bluestone";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &EMAC0; /* needed for BSP u-boot */
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
CPU0: cpu@0 {
|
||||
device_type = "cpu";
|
||||
model = "PowerPC,apm82181";
|
||||
reg = <0x00000000>;
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
timebase-frequency = <0>; /* Filled in by U-Boot */
|
||||
i-cache-line-size = <32>;
|
||||
d-cache-line-size = <32>;
|
||||
i-cache-size = <32768>;
|
||||
d-cache-size = <32768>;
|
||||
dcr-controller;
|
||||
dcr-access-method = "native";
|
||||
next-level-cache = <&L2C0>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
|
||||
};
|
||||
|
||||
UIC0: interrupt-controller0 {
|
||||
compatible = "apm,uic-apm82181", "ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <0>;
|
||||
dcr-reg = <0x0c0 0x009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
UIC1: interrupt-controller1 {
|
||||
compatible = "apm,uic-apm82181", "ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <1>;
|
||||
dcr-reg = <0x0d0 0x009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <0x1e IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x1f IRQ_TYPE_LEVEL_HIGH>; /* cascade */
|
||||
interrupt-parent = <&UIC0>;
|
||||
};
|
||||
|
||||
UIC2: interrupt-controller2 {
|
||||
compatible = "apm,uic-apm82181", "ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <2>;
|
||||
dcr-reg = <0x0e0 0x009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <0x0a IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x0b IRQ_TYPE_LEVEL_HIGH>; /* cascade */
|
||||
interrupt-parent = <&UIC0>;
|
||||
};
|
||||
|
||||
UIC3: interrupt-controller3 {
|
||||
compatible = "apm,uic-apm82181","ibm,uic";
|
||||
interrupt-controller;
|
||||
cell-index = <3>;
|
||||
dcr-reg = <0x0f0 0x009>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <0x10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x11 IRQ_TYPE_LEVEL_HIGH>; /* cascade */
|
||||
interrupt-parent = <&UIC0>;
|
||||
};
|
||||
|
||||
OCM1: ocm@400040000 {
|
||||
compatible = "apm,ocm-apm82181", "ibm,ocm";
|
||||
status = "okay";
|
||||
cell-index = <1>;
|
||||
/* configured in U-Boot */
|
||||
reg = <4 0x00040000 0x8000>; /* 32K */
|
||||
};
|
||||
|
||||
SDR0: sdr {
|
||||
compatible = "apm,sdr-apm82181", "ibm,sdr-460ex";
|
||||
dcr-reg = <0x00e 0x002>;
|
||||
};
|
||||
|
||||
CPR0: cpr {
|
||||
compatible = "apm,cpr-apm82181", "ibm,cpr-460ex";
|
||||
dcr-reg = <0x00c 0x002>;
|
||||
};
|
||||
|
||||
L2C0: l2c {
|
||||
compatible = "ibm,l2-cache-apm82181", "ibm,l2-cache";
|
||||
dcr-reg = <0x020 0x008
|
||||
0x030 0x008>;
|
||||
cache-line-size = <32>;
|
||||
cache-size = <262144>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x0b IRQ_TYPE_EDGE_RISING>;
|
||||
};
|
||||
|
||||
CPM0: cpm {
|
||||
compatible = "ibm,cpm-apm821xx", "ibm,cpm";
|
||||
cell-index = <0>;
|
||||
dcr-reg = <0x160 0x003>;
|
||||
pm-cpu = <0x02000000>;
|
||||
pm-doze = <0x302570F0>;
|
||||
pm-nap = <0x302570F0>;
|
||||
pm-deepsleep = <0x302570F0>;
|
||||
pm-iic-device = <&IIC0>;
|
||||
pm-emac-device = <&EMAC0>;
|
||||
unused-units = <0x00000100>;
|
||||
idle-doze = <0x02000000>;
|
||||
standby = <0xfeff791d>;
|
||||
};
|
||||
|
||||
plb {
|
||||
compatible = "apm,plb-apm82181", "ibm,plb-460ex", "ibm,plb4";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges; /* Filled in by U-Boot */
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
|
||||
SDRAM0: sdram {
|
||||
compatible = "apm,sdram-apm82181", "ibm,sdram-460ex", "ibm,sdram-405gp";
|
||||
dcr-reg = <0x010 0x002>;
|
||||
};
|
||||
|
||||
RTC: rtc {
|
||||
compatible = "ibm,rtc";
|
||||
dcr-reg = <0x240 0x009>;
|
||||
interrupts = <0x1a IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&UIC2>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
TRNG: trng@110000 {
|
||||
compatible = "amcc,ppc460ex-rng", "ppc4xx-rng", "amcc, ppc4xx-trng";
|
||||
reg = <4 0x00110000 0x100>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x03 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
PKA: pka@114000 {
|
||||
compatible = "ppc4xx-pka", "amcc,ppc4xx-pka", "amcc, ppc4xx-pka";
|
||||
reg = <4 0x00114000 0x4000>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x14 IRQ_TYPE_EDGE_RISING>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
CRYPTO: crypto@180000 {
|
||||
compatible = "amcc,ppc460ex-crypto", "amcc,ppc4xx-crypto";
|
||||
reg = <4 0x00180000 0x80400>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x1d IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled"; /* hardware option */
|
||||
};
|
||||
|
||||
MAL0: mcmal {
|
||||
compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
|
||||
descriptor-memory = "ocm";
|
||||
dcr-reg = <0x180 0x062>;
|
||||
num-tx-chans = <1>;
|
||||
num-rx-chans = <1>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
interrupt-parent = <&UIC2>;
|
||||
interrupts = <0x06 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x07 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x03 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x04 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x05 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0x08 IRQ_TYPE_EDGE_FALLING>,
|
||||
<0x09 IRQ_TYPE_EDGE_FALLING>,
|
||||
<0x0c IRQ_TYPE_EDGE_FALLING>,
|
||||
<0x0d IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-names = "txeob", "rxeob", "serr",
|
||||
"txde", "rxde",
|
||||
"tx0coal", "tx1coal",
|
||||
"rx0coal", "rx1coal";
|
||||
};
|
||||
|
||||
POB0: opb {
|
||||
compatible = "ibm,opb-460ex", "ibm,opb";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
|
||||
EBC0: ebc {
|
||||
compatible = "ibm,ebc-460ex", "ibm,ebc";
|
||||
dcr-reg = <0x012 0x002>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
/* ranges property is supplied by U-Boot */
|
||||
ranges = <0x00000003 0x00000000 0xe0000000 0x8000000>;
|
||||
interrupts = <0x06 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
|
||||
nor_flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
bank-width = <1>;
|
||||
reg = <0x00000000 0x00000000 0x00100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
ndfc: ndfc@1,0 {
|
||||
compatible = "ibm,ndfc";
|
||||
reg = <00000003 00000000 00002000>;
|
||||
ccr = <0x00001000>;
|
||||
bank-settings = <0x80002222>;
|
||||
status = "disabled";
|
||||
|
||||
nand {
|
||||
/*
|
||||
* These are the same fixed "MAGIC" values
|
||||
* settings as in the drivers code.
|
||||
* They are the same for all devices that
|
||||
* have NAND.
|
||||
*/
|
||||
nand-ecc-engine = <&ndfc>;
|
||||
nand-ecc-algo = "hamming";
|
||||
nand-ecc-step-size = <256>;
|
||||
nand-ecc-strength = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
UART0: serial@ef600300 {
|
||||
/*
|
||||
* AMCC's BSP u-boot scans for the "ns16550"
|
||||
* compatible, without it, u-boot wouldn't
|
||||
* set the required "clock-frequency".
|
||||
*
|
||||
* The hardware documentation states:
|
||||
* "Register compatibility with 16750 register set"
|
||||
*/
|
||||
compatible = "ns16750", "ns16550";
|
||||
reg = <0xef600300 0x00000008>;
|
||||
virtual-reg = <0xef600300>;
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x01 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
UART1: serial@ef600400 {
|
||||
/* same "ns16750" as with UART0 */
|
||||
compatible = "ns16750", "ns16550";
|
||||
reg = <0xef600400 0x00000008>;
|
||||
virtual-reg = <0xef600400>;
|
||||
clock-frequency = <0>; /* Filled in by U-Boot */
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x01 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
IIC0: i2c@ef600700 {
|
||||
compatible = "ibm,iic-460ex", "ibm,iic";
|
||||
reg = <0xef600700 0x00000014>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x02 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
IIC1: i2c@ef600800 {
|
||||
compatible = "ibm,iic-460ex", "ibm,iic";
|
||||
reg = <0xef600800 0x00000014>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x03 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
GPIO0: gpio@ef600b00 {
|
||||
compatible = "ibm,ppc4xx-gpio";
|
||||
reg = <0xef600b00 0x00000048>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
EMAC0: ethernet@ef600c00 {
|
||||
device_type = "network";
|
||||
compatible = "ibm,emac-apm821xx", "ibm,emac4sync";
|
||||
interrupt-parent = <&EMAC0>;
|
||||
interrupts = <0 1>;
|
||||
#interrupt-cells = <1>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
interrupt-map = <0 &UIC2 0x10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<1 &UIC2 0x14 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "status", "wake";
|
||||
|
||||
reg = <0xef600c00 0x000000c4>;
|
||||
local-mac-address = [000000000000]; /* Filled in by U-Boot */
|
||||
mal-device = <&MAL0>;
|
||||
mal-tx-channel = <0>;
|
||||
mal-rx-channel = <0>;
|
||||
cell-index = <0>;
|
||||
max-frame-size = <9000>;
|
||||
rx-fifo-size = <16384>;
|
||||
tx-fifo-size = <2048>;
|
||||
phy-mode = "rgmii";
|
||||
phy-map = <0x00000000>;
|
||||
rgmii-device = <&RGMII0>;
|
||||
rgmii-channel = <0>;
|
||||
tah-device = <&TAH0>;
|
||||
tah-channel = <0>;
|
||||
has-inverted-stacr-oc;
|
||||
has-new-stacr-staopc;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
TAH0: emac-tah@ef601350 {
|
||||
compatible = "ibm,tah-460ex", "ibm,tah";
|
||||
reg = <0xef601350 0x00000030>;
|
||||
};
|
||||
|
||||
RGMII0: emac-rgmii@ef601500 {
|
||||
compatible = "ibm,rgmii-405ex", "ibm,rgmii";
|
||||
reg = <0xef601500 0x00000008>;
|
||||
has-mdio;
|
||||
};
|
||||
};
|
||||
|
||||
USBOTG0: usbotg@bff80000 {
|
||||
compatible = "amcc,dwc-otg";
|
||||
reg = <4 0xbff80000 0x10000>;
|
||||
interrupt-parent = <&USBOTG0>;
|
||||
interrupts = <0 1 2>;
|
||||
#interrupt-cells = <1>;
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
interrupt-map = <0 &UIC2 0x1c IRQ_TYPE_LEVEL_HIGH>,
|
||||
<1 &UIC1 0x1a IRQ_TYPE_LEVEL_LOW>,
|
||||
<2 &UIC0 0x0c IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "usb-otg", "high-power", "dma";
|
||||
dr_mode = "host";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
AHBDMA0: dma@bffd0800 {
|
||||
compatible = "snps,dma-spear1340";
|
||||
reg = <4 0xbffd0800 0x400>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#dma-cells = <3>;
|
||||
|
||||
dma-channels = <2>;
|
||||
dma-masters = <3>;
|
||||
block_size = <4095>;
|
||||
data-width = <4>, <4>, <4>;
|
||||
multi-block = <1>, <1>;
|
||||
|
||||
chan_allocation_order = <1>;
|
||||
chan_priority = <1>;
|
||||
|
||||
snps,dma-protection-control =
|
||||
<(DW_DMAC_HPROT1_PRIVILEGED_MODE |
|
||||
DW_DMAC_HPROT2_BUFFERABLE)>;
|
||||
is_memcpy;
|
||||
};
|
||||
|
||||
SATA0: sata@bffd1000 {
|
||||
compatible = "amcc,sata-460ex";
|
||||
reg = <4 0xbffd1000 0x800>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x1a IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&AHBDMA0 0 0 1>;
|
||||
dma-names = "sata-dma";
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
SATA1: sata@bffd1800 {
|
||||
compatible = "amcc,sata-460ex";
|
||||
reg = <4 0xbffd1800 0x800>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x1b IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&AHBDMA0 1 0 2>;
|
||||
dma-names = "sata-dma";
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
device_type = "pci"; /* see ppc4xx_pci_find_bridge */
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
compatible = "ibm,plb-pciex-apm821xx", "ibm,plb-pciex";
|
||||
primary;
|
||||
port = <0x0>; /* port number */
|
||||
reg = <0x0000000d 0x00000000 0x20000000>, /* Config space access */
|
||||
<0x0000000c 0x08010000 0x00001000>; /* Registers */
|
||||
dcr-reg = <0x100 0x020>;
|
||||
sdr-base = <0x300>;
|
||||
|
||||
/*
|
||||
* Outbound ranges, one memory and one IO,
|
||||
* later cannot be changed
|
||||
*/
|
||||
ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000>,
|
||||
<0x02000000 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00100000>,
|
||||
<0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
|
||||
|
||||
/* Inbound 2GB range starting at 0 */
|
||||
dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
|
||||
|
||||
/* This drives busses 0x40 to 0x7f */
|
||||
bus-range = <0x40 0x7f>;
|
||||
|
||||
/*
|
||||
* Legacy interrupts (note the weird polarity, the bridge seems
|
||||
* to invert PCIe legacy interrupts).
|
||||
* We are de-swizzling here because the numbers are actually for
|
||||
* port of the root complex virtual P2P bridge. But I want
|
||||
* to avoid putting a node for it in the tree, so the numbers
|
||||
* below are basically de-swizzled numbers.
|
||||
* The real slot is on idsel 0, so the swizzling is 1:1
|
||||
*/
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
interrupt-map =
|
||||
<0x0 0x0 0x0 0x1 &UIC3 0x0c IRQ_TYPE_LEVEL_HIGH>, /* swizzled int A */
|
||||
<0x0 0x0 0x0 0x2 &UIC3 0x0d IRQ_TYPE_LEVEL_HIGH>, /* swizzled int B */
|
||||
<0x0 0x0 0x0 0x3 &UIC3 0x0e IRQ_TYPE_LEVEL_HIGH>, /* swizzled int C */
|
||||
<0x0 0x0 0x0 0x4 &UIC3 0x0f IRQ_TYPE_LEVEL_HIGH>; /* swizzled int D */
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
251
target/linux/apm821xx/dts/meraki-mr24.dts
Normal file
251
target/linux/apm821xx/dts/meraki-mr24.dts
Normal file
@@ -0,0 +1,251 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Device Tree Source for Meraki MR24 (Ikarem)
|
||||
*
|
||||
* Copyright (C) 2016 Chris Blake <chrisrblake93@gmail.com>
|
||||
*
|
||||
* Based on Cisco Meraki GPL Release r23-20150601 MR24 DTS
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "apm82181.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Meraki MR24 Access Point";
|
||||
compatible = "meraki,mr24", "meraki,ikarem", "apm,bluestone";
|
||||
|
||||
aliases {
|
||||
serial0 = &UART1;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "/plb/opb/serial@ef600400";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
&CRYPTO {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&PKA {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&TRNG {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ndfc {
|
||||
/* Ikarem has 32MB of NAND */
|
||||
status = "okay";
|
||||
|
||||
nand {
|
||||
nand-is-boot-medium;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x00000000 0x00150000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@150000 {
|
||||
/*
|
||||
* The u-boot environment size is one NAND
|
||||
* block (16KiB). u-boot allocates four NAND
|
||||
* blocks (64KiB) in order to have spares
|
||||
* around for bad block management
|
||||
*/
|
||||
label = "u-boot-env";
|
||||
compatible = "u-boot,env";
|
||||
reg = <0x00150000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@160000 {
|
||||
/*
|
||||
* redundant u-boot environment.
|
||||
* has to be kept it in sync with the
|
||||
* data in "u-boot-env".
|
||||
*/
|
||||
label = "u-boot-env-redundant";
|
||||
reg = <0x00160000 0x00010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@170000 {
|
||||
label = "oops";
|
||||
reg = <0x00170000 0x00010000>;
|
||||
};
|
||||
|
||||
partition@180000 {
|
||||
label = "ubi";
|
||||
reg = <0x00180000 0x01e80000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&UART1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&GPIO0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&IIC0 {
|
||||
status = "okay";
|
||||
/* Boot ROM is at 0x52-0x53, do not touch */
|
||||
/* Unknown chip at 0x6e, not sure what it is */
|
||||
};
|
||||
|
||||
&EMAC0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "rgmii-id";
|
||||
phy-map = <0x2>;
|
||||
phy-address = <0x1>;
|
||||
phy-handle = <&phy>;
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
phy: phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&POB0 {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_FAULT;
|
||||
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-restart {
|
||||
/* Label as per Meraki's "MR24 Installation Guide" */
|
||||
label = "Factory Reset Button";
|
||||
linux,code = <KEY_RESTART>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
|
||||
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
status = "okay";
|
||||
/*
|
||||
* relevant lspci topology:
|
||||
*
|
||||
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
|
||||
* +-03.0-[44]----00.0
|
||||
*
|
||||
*/
|
||||
|
||||
bridge@64,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@65,0 {
|
||||
/* IDT PES3T3 PCI Express Switch */
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00410000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@66,2 {
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00421000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi0: wifi@67,0 {
|
||||
/* Atheros AR9380 2.4GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00430000 0 0 0 0>;
|
||||
interrupts = <3>; /* INTC 4.1.1 */
|
||||
};
|
||||
};
|
||||
|
||||
bridge@66,3 {
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00421800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi1: wifi@68,0 {
|
||||
/* Atheros AR9380 5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00440000 0 0 0 0>;
|
||||
interrupts = <4>; /* INTD 4.1.1 */
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
211
target/linux/apm821xx/dts/meraki-mx60.dts
Normal file
211
target/linux/apm821xx/dts/meraki-mx60.dts
Normal file
@@ -0,0 +1,211 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Device Tree Source for Meraki MX60/MX60W (Buckminster)
|
||||
*
|
||||
* Copyright (C) 2016 Chris Blake <chrisrblake93@gmail.com>
|
||||
*
|
||||
* Based on Cisco Meraki DTS extracted from release wired-12-217818
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "apm82181.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Meraki MX60/MX60W Security Appliance";
|
||||
compatible = "meraki,mx60", "meraki,buckminster", "apm,bluestone";
|
||||
|
||||
aliases {
|
||||
serial0 = &UART1;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "/plb/opb/serial@ef600400";
|
||||
};
|
||||
};
|
||||
|
||||
&CRYPTO {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&PKA {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&TRNG {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&USBOTG0 {
|
||||
status = "okay";
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&ndfc {
|
||||
/* Buckminster has 1GiB of NAND */
|
||||
status = "okay";
|
||||
|
||||
nand {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x00000000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x00100000 0x00100000>;
|
||||
compatible = "u-boot,env";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@200000 {
|
||||
label = "oops";
|
||||
reg = <0x00200000 0x00040000>;
|
||||
};
|
||||
|
||||
partition@240000 {
|
||||
label = "ubi";
|
||||
reg = <0x00240000 0x3fdc0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&UART1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&GPIO0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&IIC0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&EMAC0 {
|
||||
status = "okay";
|
||||
phy-handle = <&phy0>;
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-id004d.d034";
|
||||
reg = <0>;
|
||||
qca,mib-poll-interval = <500>;
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x0010 0x40000000
|
||||
0x0624 0x007f7f7f
|
||||
0x0004 0x07a00000 /* PAD0_MODE */
|
||||
0x000c 0x01000000 /* PAD6_MODE */
|
||||
0x007c 0x0000007e /* PORT0_STATUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&POB0 {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_FAULT;
|
||||
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-restart {
|
||||
label = "Reset button";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
/* Leave this enabled as u-boot on the MX60 will disable it for us */
|
||||
status = "okay";
|
||||
|
||||
/*
|
||||
* relevant lspci topology:
|
||||
*
|
||||
* -+-[0000:40]---00.0-[41-7f]----00.0
|
||||
*/
|
||||
|
||||
bridge@64,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi0: wifi@65,0 {
|
||||
/* Atheros AR9380 2.4/5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00410000 0 0 0 0>;
|
||||
interrupts = <1>; /* INTA */
|
||||
};
|
||||
};
|
||||
};
|
||||
47
target/linux/apm821xx/dts/netgear-wndap620.dts
Normal file
47
target/linux/apm821xx/dts/netgear-wndap620.dts
Normal file
@@ -0,0 +1,47 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "netgear-wndap6x0.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Netgear WNDAP620";
|
||||
compatible = "netgear,wndap620", "apm,bluestone";
|
||||
};
|
||||
|
||||
&LEDS {
|
||||
led-5 {
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
function = LED_FUNCTION_LAN;
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
/*
|
||||
* relevant lspci topology:
|
||||
*
|
||||
* -+-[0000:40]---00.0-[41-7f]----00.0
|
||||
*/
|
||||
|
||||
bridge@64,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi0: wifi@65,0 {
|
||||
/* Atheros AR9380 5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00410000 0 0 0 0>;
|
||||
interrupts = <1>; /* INTA */
|
||||
};
|
||||
};
|
||||
};
|
||||
96
target/linux/apm821xx/dts/netgear-wndap660.dts
Normal file
96
target/linux/apm821xx/dts/netgear-wndap660.dts
Normal file
@@ -0,0 +1,96 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "netgear-wndap6x0.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Netgear WNDAP660";
|
||||
compatible = "netgear,wndap660", "apm,bluestone";
|
||||
};
|
||||
|
||||
&LEDS {
|
||||
led-5 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-7 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 22 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-8 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
/*
|
||||
* relevant lspci topology:
|
||||
*
|
||||
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
|
||||
* +-03.0-[44]----00.0
|
||||
*
|
||||
*/
|
||||
|
||||
bridge@64,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@65,0 {
|
||||
/* IDT PES3T3 PCI Express Switch */
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00410000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@66,2 {
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00421000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi0: wifi@67,0 {
|
||||
/* Atheros AR9380 2.4/5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00430000 0 0 0 0>;
|
||||
interrupts = <3>; /* INTC */
|
||||
};
|
||||
};
|
||||
|
||||
bridge@66,3 {
|
||||
compatible = "pci111d,8039";
|
||||
reg = <0x00421800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi1: wifi@68,0 {
|
||||
/* Atheros AR9380 2.4/5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00440000 0 0 0 0>;
|
||||
interrupts = <4>; /* INTD */
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
245
target/linux/apm821xx/dts/netgear-wndap6x0.dtsi
Normal file
245
target/linux/apm821xx/dts/netgear-wndap6x0.dtsi
Normal file
@@ -0,0 +1,245 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Device Tree Source for Netgear WNDAP620 and WNDAP660
|
||||
*/
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "apm82181.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &UART0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "/plb/opb/serial@ef600300";
|
||||
};
|
||||
};
|
||||
|
||||
&CRYPTO {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&PKA {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&TRNG {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ndfc {
|
||||
status = "okay";
|
||||
/* 32 MiB SLC NAND Flash */
|
||||
|
||||
nand {
|
||||
nand-is-boot-medium;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x00000000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
compatible = "u-boot,env";
|
||||
label = "u-boot-env";
|
||||
reg = <0x00100000 0x0004000>;
|
||||
read-only;
|
||||
|
||||
ethaddr {
|
||||
};
|
||||
|
||||
bootcmd {
|
||||
};
|
||||
|
||||
serno {
|
||||
};
|
||||
|
||||
ProductID {
|
||||
};
|
||||
|
||||
HardwareVer {
|
||||
};
|
||||
};
|
||||
|
||||
/* 0x104000 - 0x10ffff free */
|
||||
|
||||
partition@110000 {
|
||||
label = "firmware";
|
||||
reg = <0x00110000 0x01ac0000>;
|
||||
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
/*
|
||||
* The u-boot bootloader will look at this
|
||||
* offset (0x110000) for an uImage binary.
|
||||
*/
|
||||
label = "kernel";
|
||||
reg = <0x00000000 0x005f0000>;
|
||||
};
|
||||
|
||||
partition@5f0000 {
|
||||
label = "ubi";
|
||||
reg = <0x005f0000 0x014d0000>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@1bd0000 {
|
||||
/*
|
||||
* original vendor device-tree - do not use or
|
||||
* overwrite. The original u-boot also supports
|
||||
* the gzipped legacy monolithic/Multi-File Image
|
||||
* format, which is a better choice.
|
||||
*/
|
||||
label = "device-tree";
|
||||
reg = <0x01bd0000 0x0010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1be0000 {
|
||||
label = "var";
|
||||
reg = <0x01be0000 0x00400000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1fe0000 {
|
||||
label = "manudata";
|
||||
reg = <0x01fe0000 0x00020000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&UART0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&GPIO0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&EMAC0 {
|
||||
status = "okay";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
pause;
|
||||
asym-pause;
|
||||
};
|
||||
|
||||
mdio0: mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&POB0 {
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-restart {
|
||||
label = "Reset Button";
|
||||
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
LEDS: leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_FAULT;
|
||||
gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&GPIO0 21 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-3 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&GPIO0 20 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-export {
|
||||
compatible = "gpio-export";
|
||||
|
||||
internal-antenna {
|
||||
gpio-export,name = "wndap6x0:internal-antenna";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
external-antenna {
|
||||
gpio-export,name = "wndap6x0:external-antenna";
|
||||
gpio-export,output = <0>;
|
||||
gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
mains-powered {
|
||||
/*
|
||||
* Input pin describing what powers the AP
|
||||
* 0/Low = PoE
|
||||
* 1/High = 12v mains powered
|
||||
*/
|
||||
gpio-export,name = "wndap620:mains-powered";
|
||||
gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
rtl8367b {
|
||||
compatible = "realtek,rtl8367b";
|
||||
realtek,extif0 = <1 2 1 1 1 1 1 1 2>;
|
||||
mii-bus = <&mdio0>;
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&IIC0 {
|
||||
status = "okay";
|
||||
|
||||
at24@52 {
|
||||
compatible = "atmel,24c04";
|
||||
reg = <0x52>;
|
||||
pagesize = <16>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
577
target/linux/apm821xx/dts/netgear-wndr4700.dts
Normal file
577
target/linux/apm821xx/dts/netgear-wndr4700.dts
Normal file
@@ -0,0 +1,577 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Device Tree Source for Netgear WNDR4700/WNDR4720 Series
|
||||
*
|
||||
* Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/thermal/thermal.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "apm82181.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Netgear WNDR4700/WNDR4720 Series";
|
||||
compatible = "netgear,wndr4700", "apm,bluestone";
|
||||
|
||||
aliases {
|
||||
serial0 = &UART0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "/plb/opb/serial@ef600300:115200n8";
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
polling-delay-passive = <10000>; /* milliseconds */
|
||||
polling-delay = <20000>; /* milliseconds */
|
||||
|
||||
thermal-sensors = <&temp0 1>;
|
||||
|
||||
/*
|
||||
* REVISIT:
|
||||
*
|
||||
* Add the <&drive_temp>; sensor there and wire up
|
||||
* the coefficients = <1 1>; property.
|
||||
*
|
||||
* Note: The kernel does not yet support more than
|
||||
* one sensor (see of_thermal.c's function:
|
||||
* thermal_of_build_thermal_zon()). Once this is
|
||||
* implemented.
|
||||
*/
|
||||
|
||||
trips {
|
||||
/*
|
||||
* Once the thermal governers are a bit smarter
|
||||
* and do hysteresis properly, we can disable
|
||||
* the fan when the HDD and CPU has < 39 C.
|
||||
*/
|
||||
cpu_alert0: board-alert0 {
|
||||
temperature = <25000>;
|
||||
hysteresis = <2000>;
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert1: cpu-alert1 {
|
||||
temperature = <27000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert2: cpu-alert2 {
|
||||
temperature = <65000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert3: cpu-alert3 {
|
||||
temperature = <70000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert4: cpu-alert4 {
|
||||
temperature = <75000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert5: cpu-alert5 {
|
||||
temperature = <80000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_alert6: cpu-alert6 {
|
||||
temperature = <85000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "active";
|
||||
};
|
||||
|
||||
cpu_crit: cpu-crit {
|
||||
temperature = <90000>; /* millicelsius */
|
||||
hysteresis = <2000>; /* millicelsius */
|
||||
type = "critical";
|
||||
};
|
||||
};
|
||||
|
||||
cooling-maps {
|
||||
map0 {
|
||||
trip = <&cpu_alert0>;
|
||||
cooling-device = <&fan0 THERMAL_NO_LIMIT 0>;
|
||||
};
|
||||
|
||||
map1 {
|
||||
trip = <&cpu_alert1>;
|
||||
cooling-device = <&fan0 1 1>;
|
||||
};
|
||||
|
||||
map2 {
|
||||
trip = <&cpu_alert2>;
|
||||
cooling-device = <&fan0 2 4>;
|
||||
};
|
||||
|
||||
map3 {
|
||||
trip = <&cpu_alert3>;
|
||||
cooling-device = <&fan0 4 8>;
|
||||
};
|
||||
|
||||
map4 {
|
||||
trip = <&cpu_alert4>;
|
||||
cooling-device = <&fan0 9 12>;
|
||||
};
|
||||
|
||||
map5 {
|
||||
trip = <&cpu_alert5>;
|
||||
cooling-device = <&fan0 13 15>;
|
||||
};
|
||||
|
||||
map6 {
|
||||
trip = <&cpu_alert6>;
|
||||
cooling-device =<&fan0 16 THERMAL_NO_LIMIT>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&CRYPTO {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&PKA {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&TRNG {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&SATA1 {
|
||||
status = "okay";
|
||||
|
||||
/*
|
||||
* This drive may have a temperature sensor with a
|
||||
* thermal zone we can use for thermal control of the
|
||||
* chassis temperature using the fan.
|
||||
*/
|
||||
|
||||
drive_temp: sata-port@0 {
|
||||
reg = <0>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&USBOTG0 {
|
||||
status = "okay";
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
&ndfc {
|
||||
status = "okay";
|
||||
/* 128 MiB Nand Flash */
|
||||
nand {
|
||||
nand-is-boot-medium;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "uboot";
|
||||
reg = <0x00000000 0x00180000>;
|
||||
compatible = "fixed-partitions";
|
||||
read-only;
|
||||
|
||||
partition@40000 {
|
||||
label = "u-boot-env-main";
|
||||
compatible = "u-boot,env-redundant-count";
|
||||
reg = <0x00040000 0x20000>; /* one block is 128k */
|
||||
read-only;
|
||||
};
|
||||
|
||||
/*
|
||||
* Causes u_boot_env: probe of 4e4000000.ndfc:nand:partitions:partition@0:partition@60000
|
||||
* failed with error -17
|
||||
*
|
||||
* partition@60000 {
|
||||
* label = "u-boot-env-redundant";
|
||||
* compatible = "u-boot,env-redundant-count";
|
||||
* reg = <0x00060000 0x20000>;
|
||||
* read-only;
|
||||
* };
|
||||
*/
|
||||
};
|
||||
|
||||
partition@180000 {
|
||||
label = "firmware";
|
||||
reg = <0x00180000 0x01860000>;
|
||||
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "kernel";
|
||||
reg = <0x00000000 0x00480000>;
|
||||
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/*
|
||||
* device-tree is @ 0x00180000 - 0x0019ffff
|
||||
* kernel starts from 0x20000.
|
||||
* this is coded into netgear's u-boot.
|
||||
*/
|
||||
partition@0 {
|
||||
label = "dtb";
|
||||
reg = <0x00000000 0x20000>;
|
||||
};
|
||||
/*
|
||||
* this partition will also contain a
|
||||
* fake/empty rootfs at the end to fool
|
||||
* Netgear's uboot rootfs integrety checks.
|
||||
*/
|
||||
};
|
||||
|
||||
partition@480000 {
|
||||
label = "ubi";
|
||||
reg = <0x00480000 0x013e0000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Netgear's u-boot in the fw_recovery mode (can be
|
||||
* triggered by holding the reset button, or if
|
||||
* "bootm" fails) will not flash past this point
|
||||
* (= 0x19E0000).
|
||||
*/
|
||||
|
||||
partition@19e0000 {
|
||||
label = "config";
|
||||
reg = <0x019e0000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1a60000 {
|
||||
label = "pot";
|
||||
reg = <0x01a60000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1ae0000 {
|
||||
label = "traffic_meter";
|
||||
reg = <0x01ae0000 0x00300000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1de0000 {
|
||||
label = "language";
|
||||
reg = <0x01de0000 0x001c0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1fa0000 {
|
||||
label = "ecos";
|
||||
reg = <0x01fa0000 0x06020000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@7fc0000 {
|
||||
label = "wifi_data";
|
||||
reg = <0x07fc0000 0x00040000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_wifi_0: macaddr@0 {
|
||||
reg = <0x0 0x6>;
|
||||
};
|
||||
macaddr_wifi_c: macaddr@c {
|
||||
reg = <0xc 0x6>;
|
||||
};
|
||||
|
||||
calibration_wifi_1000: calibration@1000 {
|
||||
reg = <0x1000 0x440>;
|
||||
};
|
||||
|
||||
calibration_wifi_5000: calibration@5000 {
|
||||
reg = <0x5000 0x440>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&UART0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&GPIO0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&IIC0 {
|
||||
status = "okay";
|
||||
|
||||
fan0: fan@1b {
|
||||
compatible = "microchip,tc654";
|
||||
reg = <0x1b>;
|
||||
#cooling-cells = <2>; /* min followed by max */
|
||||
|
||||
gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>; /* fan status */
|
||||
alarm-gpios = <&GPIO0 5 GPIO_ACTIVE_LOW>; /* fault */
|
||||
interrupt-parent = <&UIC3>;
|
||||
interrupts = <0x16 IRQ_TYPE_EDGE_FALLING>; /* fault */
|
||||
};
|
||||
|
||||
temp0: temp@4d {
|
||||
compatible = "gmt,g781";
|
||||
reg = <0x4d>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
|
||||
/*
|
||||
* The LM90 has two sensors:
|
||||
* temp0 -> internal to LM90
|
||||
* temp1 -> external NTC near CPU
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
&EMAC0 {
|
||||
status = "okay";
|
||||
phy-handle = <&phy0>;
|
||||
fifo-entry-size = <10>;
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy0: ethernet-phy@0 {
|
||||
device_type = "ethernet-phy";
|
||||
reg = <0>;
|
||||
qca,mib-poll-interval = <500>;
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x0010 0x40000000
|
||||
0x0624 0x007f7f7f
|
||||
0x0004 0x07a00000 /* PAD0_MODE */
|
||||
0x000c 0x01000000 /* PAD6_MODE */
|
||||
0x007c 0x0000007e /* PORT0_STATUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&POB0 {
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-restart {
|
||||
label = "Reset button";
|
||||
gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x14 IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
button-backup_hd {
|
||||
label = "Backup HD button";
|
||||
gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x1e IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
button-rfkill {
|
||||
label = "RFKILL button";
|
||||
gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RFKILL>;
|
||||
interrupt-parent = <&UIC1>;
|
||||
interrupts = <0x1f IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
button-wps {
|
||||
label = "WPS button";
|
||||
gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
interrupt-parent = <&UIC2>;
|
||||
interrupts = <0x19 IRQ_TYPE_EDGE_FALLING>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&GPIO0 8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_FAULT;
|
||||
gpios = <&GPIO0 9 GPIO_ACTIVE_LOW>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_USB;
|
||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||
trigger-sources = <&usb2_port 1>, <&usb2_port 2>,
|
||||
<&usb3_port 1>, <&usb3_port 2>;
|
||||
linux,default-trigger = "usbport";
|
||||
};
|
||||
|
||||
led-3 {
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_INDICATOR;
|
||||
gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-4 {
|
||||
color = <LED_COLOR_ID_YELLOW>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-5 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&GPIO0 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-6 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_DISK;
|
||||
gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "disk-activity";
|
||||
};
|
||||
|
||||
led-7 {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_DISK_ERR;
|
||||
gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-8 {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "phy0tpt";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&PCIE0 {
|
||||
status = "okay";
|
||||
|
||||
/*
|
||||
* relevant lspci topology:
|
||||
*
|
||||
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
|
||||
* +-03.0-[44]----00.0
|
||||
* \-04.0-[45]----00.0
|
||||
*
|
||||
*/
|
||||
|
||||
bridge@64,0 {
|
||||
reg = <0x00400000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@65,0 {
|
||||
/* IDT PES4T4 PCI Express Switch */
|
||||
compatible = "pci111d,803a";
|
||||
reg = <0x00410000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bridge@66,2 {
|
||||
compatible = "pci111d,803a";
|
||||
reg = <0x00421000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi0: wifi@67,0 {
|
||||
/* Atheros AR9380 5GHz */
|
||||
compatible = "pci168c,0030";
|
||||
reg = <0x00430000 0 0 0 0>;
|
||||
interrupts = <3>; /* INTC */
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
nvmem-cells = <&macaddr_wifi_0>, <&calibration_wifi_1000>;
|
||||
|
||||
/*
|
||||
* Because this was such a pain.
|
||||
* Here's the full device path:
|
||||
* pci0000:40/0000:40:00.0/0000:41:00.0/0000:42:02.0/0000:43:00.0
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
bridge@66,3 {
|
||||
compatible = "pci111d,803a";
|
||||
reg = <0x00421800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi1: wifi@68,0 {
|
||||
/* Atheros AR9381 2.4GHz */
|
||||
compatible = "pci168c,0033";
|
||||
reg = <0x00440000 0 0 0 0>;
|
||||
interrupts = <4>; /* INTD */
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
nvmem-cells = <&macaddr_wifi_c>, <&calibration_wifi_5000>;
|
||||
};
|
||||
};
|
||||
|
||||
bridge@66,4 {
|
||||
compatible = "pci111d,803a";
|
||||
reg = <0x00422000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
usb1: usb@69,0 {
|
||||
/* Renesas uPD720202 */
|
||||
compatible = "pci1912,0015";
|
||||
reg = <0x00450000 0 0 0 0>;
|
||||
interrupts = <1>; /* INTA */
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
usb2_port: port@1 {
|
||||
reg = <1>;
|
||||
#trigger-source-cells = <1>;
|
||||
};
|
||||
|
||||
usb3_port: port@2 {
|
||||
reg = <2>;
|
||||
#trigger-source-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
246
target/linux/apm821xx/dts/wd-mybooklive.dts
Normal file
246
target/linux/apm821xx/dts/wd-mybooklive.dts
Normal file
@@ -0,0 +1,246 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
|
||||
* (c) Copyright 2010 Western Digital Technologies, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "apm82181.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "wd,mybooklive", "amcc,apollo3g";
|
||||
model = "MyBook Live";
|
||||
|
||||
aliases {
|
||||
serial0 = &UART0;
|
||||
};
|
||||
};
|
||||
|
||||
&POB0 {
|
||||
ebc {
|
||||
nor_flash@0,0 {
|
||||
status = "okay";
|
||||
compatible = "jedec-flash"; /* "microchip,sst39vf040 */
|
||||
bank-width = <1>;
|
||||
reg = <0x00000000 0x00000000 0x00080000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
/* Part of bootrom - Don't use it without a jump */
|
||||
label = "free";
|
||||
reg = <0x00000000 0x0001e000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@1e000 {
|
||||
compatible = "fixed-partitions";
|
||||
reg = <0x0001e000 0x00002000>;
|
||||
label = "u-boot-env";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
compatible = "u-boot,env-redundant-bool";
|
||||
reg = <0x00000000 0x00001000>;
|
||||
label = "u-boot-env-1";
|
||||
|
||||
ethaddr {
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Causes the following warning: * sysfs: cannot create duplicate filename '/bus/nvmem/devices/u-boot-env0'
|
||||
*
|
||||
* partition@1000 {
|
||||
* compatible = "u-boot,env-redundant-bool";
|
||||
* reg = <0x00001000 0x00001000>;
|
||||
* label = "u-boot-env-2";
|
||||
*
|
||||
* };
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
partition@20000 {
|
||||
label = "uboot";
|
||||
reg = <0x00020000 0x00050000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
GPIO1: gpio@e0000000 {
|
||||
compatible = "wd,mbl-gpio", "ti,74273";
|
||||
reg-names = "dat";
|
||||
reg = <0xe0000000 0x1>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
enable-button {
|
||||
/* Defined in u-boot as: NOT_NOR
|
||||
* "enables features other than NOR
|
||||
* specifically, the buffer at CS2"
|
||||
* (button).
|
||||
*
|
||||
* Note: This option is disabled as
|
||||
* it prevents the system from being
|
||||
* rebooted successfully.
|
||||
*/
|
||||
|
||||
gpio-hog;
|
||||
line-name = "Enable Reset Button, disable NOR";
|
||||
gpios = <1 GPIO_ACTIVE_HIGH>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
GPIO2: gpio@e0100000 {
|
||||
compatible = "wd,mbl-gpio", "ti,74244";
|
||||
reg-names = "dat";
|
||||
reg = <0xe0100000 0x1>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
no-output;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
/* There's just one tri-color LED with three separate pins.
|
||||
* One pin for each color (red, green and blue). Each has
|
||||
* a different meaning.
|
||||
*/
|
||||
led-0 {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_FAULT;
|
||||
gpios = <&GPIO1 4 GPIO_ACTIVE_HIGH>;
|
||||
panic-indicator;
|
||||
};
|
||||
|
||||
led-1 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
gpios = <&GPIO1 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-2 {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_DISK;
|
||||
gpios = <&GPIO1 6 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "disk-activity";
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys-polled";
|
||||
poll-interval = <60>; /* 3 * 20 = 60ms */
|
||||
autorepeat;
|
||||
|
||||
button-restart {
|
||||
label = "Reset button";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&GPIO2 2 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
usbpwr: usb-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "Power USB Core";
|
||||
gpios = <&GPIO1 2 GPIO_ACTIVE_HIGH>;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-boot-on; /* uboot sets this */
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
sata1pwr: sata1-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "Power Drive Port 1";
|
||||
gpios = <&GPIO1 3 GPIO_ACTIVE_HIGH>;
|
||||
regulator-min-microvolt = <12000000>;
|
||||
regulator-max-microvolt = <12000000>;
|
||||
regulator-boot-on; /* uboot sets this */
|
||||
regulator-always-on; /* needed to read OS from HDD */
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
sata0pwr: sata0-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "Power Drive Port 0";
|
||||
gpios = <&GPIO1 7 GPIO_ACTIVE_HIGH>;
|
||||
regulator-min-microvolt = <12000000>;
|
||||
regulator-max-microvolt = <12000000>;
|
||||
regulator-boot-on; /* uboot sets this */
|
||||
regulator-always-on; /* needed to read OS from HDD */
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&EMAC0 {
|
||||
status = "okay";
|
||||
|
||||
phy-map = <0x2>;
|
||||
phy-address = <0x1>;
|
||||
phy-handle = <&phy>;
|
||||
phy-mode = "rgmii-id";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reset-gpios = <&GPIO1 0 GPIO_ACTIVE_LOW>;
|
||||
|
||||
phy: phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&CRYPTO {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&PKA {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&TRNG {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&SATA0 {
|
||||
status = "okay";
|
||||
|
||||
drive0: sata-port@0 {
|
||||
reg = <0>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&SATA1 {
|
||||
status = "okay";
|
||||
|
||||
drive1: sata-port@0 {
|
||||
reg = <0>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&UART0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&USBOTG0 {
|
||||
status = "okay";
|
||||
dr_mode = "host";
|
||||
vbus-supply = <&usbpwr>;
|
||||
};
|
||||
83
target/linux/apm821xx/image/Makefile
Normal file
83
target/linux/apm821xx/image/Makefile
Normal file
@@ -0,0 +1,83 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
define Build/boot-img
|
||||
$(RM) -rf $@.bootdir
|
||||
mkdir -p $@.bootdir/boot
|
||||
|
||||
$(CP) $@.scr $@.bootdir/boot/boot.scr
|
||||
$(CP) $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@.bootdir/boot/$(DEVICE_DTB)
|
||||
$(CP) $(IMAGE_KERNEL) $@.bootdir/boot/uImage
|
||||
|
||||
genext2fs --block-size $(BLOCKSIZE:%k=%Ki) \
|
||||
--size-in-blocks $$((1024 * $(CONFIG_TARGET_KERNEL_PARTSIZE))) \
|
||||
--root $@.bootdir $@.boot
|
||||
|
||||
# convert it to revision 1 - needed for u-boot ext2load
|
||||
$(STAGING_DIR_HOST)/bin/tune2fs -O filetype $@.boot
|
||||
$(STAGING_DIR_HOST)/bin/e2fsck -pDf $@.boot > /dev/null
|
||||
endef
|
||||
|
||||
define Build/boot-script
|
||||
$(STAGING_DIR_HOST)/bin/mkimage -A powerpc -T script -C none -n "$(PROFILE) Boot Script" \
|
||||
-d mbl_boot.scr \
|
||||
$@.scr
|
||||
endef
|
||||
|
||||
define Build/export-dtb
|
||||
cp $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@
|
||||
endef
|
||||
|
||||
define Build/MuImage-initramfs
|
||||
rm -rf $@.fakerd $@.new
|
||||
|
||||
dd if=/dev/zero of=$@.fakerd bs=32 count=1 conv=sync
|
||||
|
||||
# Netgear used an old uboot that doesn't have FIT support.
|
||||
# So we are stuck with either a full ext2/4 fs in a initrd.
|
||||
# ... or we try to make the "multi" image approach to work
|
||||
# for us.
|
||||
#
|
||||
# Sadly, the "multi" image has to consists of three
|
||||
# "fixed" parts in the following "fixed" order:
|
||||
# 1. The kernel which is in $@
|
||||
# 2. The (fake) initrd which is in $@.fakerd
|
||||
# 3. The device tree binary which is in $@.dtb
|
||||
#
|
||||
# Now, given that we use the function for the kernel which
|
||||
# already has a initramfs image inside, we still have to
|
||||
# add a "fake" initrd (which a mkimage header) in the second
|
||||
# part of the legacy multi image. Since we need to put the
|
||||
# device tree stuff into part 3.
|
||||
|
||||
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) -O linux -T multi -C $(1) \
|
||||
-a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY) -n '$(BOARD_NAME) initramfs' \
|
||||
-d $@:$@.fakerd:$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb $@.new
|
||||
mv $@.new $@
|
||||
rm -rf $@.fakerd
|
||||
endef
|
||||
|
||||
define Build/prepend-dtb
|
||||
cat "$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb" "$@" > "$@.new"
|
||||
mv "$@.new" "$@"
|
||||
endef
|
||||
|
||||
define Image/cpiogz
|
||||
( cd $(TARGET_DIR); find . | cpio -o -H newc | gzip -9n >$(KDIR_TMP)/$(IMG_PREFIX)-rootfs.cpio.gz )
|
||||
endef
|
||||
|
||||
define Device/Default
|
||||
PROFILES := Default
|
||||
KERNEL_DEPENDS = $$(wildcard ../dts/$$(DEVICE_DTS).dts)
|
||||
DEVICE_DTS :=
|
||||
KERNEL_ENTRY := 0x00000000
|
||||
KERNEL_LOADADDR := 0x00000000
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_DTS = $(subst _,-,$(1))
|
||||
endef
|
||||
|
||||
include $(SUBTARGET).mk
|
||||
|
||||
$(eval $(call BuildImage))
|
||||
6
target/linux/apm821xx/image/mbl_boot.scr
Normal file
6
target/linux/apm821xx/image/mbl_boot.scr
Normal file
@@ -0,0 +1,6 @@
|
||||
setenv boot_args 'setenv bootargs root=/dev/sda2 rw rootfstype=squashfs,ext4'
|
||||
setenv load_part1 'ext2load sata 0:1 ${kernel_addr_r} /boot/uImage; ext2load sata 0:1 ${fdt_addr_r} /boot/apollo3g.dtb'
|
||||
setenv load_part2 'ext2load sata 1:1 ${kernel_addr_r} /boot/uImage; ext2load sata 1:1 ${fdt_addr_r} /boot/apollo3g.dtb'
|
||||
setenv load_sata 'sata init; if run load_part1; then echo Loaded part 1; elif run load_part2; then echo Loaded part 2; fi'
|
||||
setenv boot_sata 'run load_sata; run boot_args addtty; bootm ${kernel_addr_r} - ${fdt_addr_r}'
|
||||
run boot_sata
|
||||
27
target/linux/apm821xx/image/mbl_gen_hdd_img.sh
Executable file
27
target/linux/apm821xx/image/mbl_gen_hdd_img.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -x
|
||||
[ $# -eq 5 ] || {
|
||||
echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
OUTPUT="$1"
|
||||
BOOTFS="$2"
|
||||
ROOTFS="$3"
|
||||
BOOTFSSIZE="$4"
|
||||
ROOTFSSIZE="$5"
|
||||
|
||||
head=4
|
||||
sect=63
|
||||
|
||||
set $(ptgen -o $OUTPUT -h $head -s $sect -l 4096 -t 83 -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M)
|
||||
|
||||
BOOTOFFSET="$(($1 / 512))"
|
||||
BOOTSIZE="$(($2 / 512))"
|
||||
ROOTFSOFFSET="$(($3 / 512))"
|
||||
ROOTFSSIZE="$(($4 / 512))"
|
||||
|
||||
dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
|
||||
dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
|
||||
|
||||
126
target/linux/apm821xx/image/nand.mk
Normal file
126
target/linux/apm821xx/image/nand.mk
Normal file
@@ -0,0 +1,126 @@
|
||||
define Build/create-uImage-dtb
|
||||
# flat_dt target expect FIT image - which WNDR4700's uboot doesn't support
|
||||
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) \
|
||||
-O linux -T kernel -C none \
|
||||
-n '$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' \
|
||||
-d "$(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb" "$@.dtb.uimage"
|
||||
endef
|
||||
|
||||
define Build/prepend-dtb-uImage
|
||||
cat "$@.dtb.uimage" "$@" > "$@.new"
|
||||
mv "$@.new" "$@"
|
||||
endef
|
||||
|
||||
define Build/meraki-header
|
||||
-$(STAGING_DIR_HOST)/bin/mkmerakifw \
|
||||
-B $(BOARD_NAME) -s \
|
||||
-i $@ \
|
||||
-o $@.new
|
||||
@cp $@.new $@
|
||||
endef
|
||||
|
||||
|
||||
define Device/meraki_mr24
|
||||
DEVICE_VENDOR := Cisco Meraki
|
||||
DEVICE_MODEL := MR24
|
||||
DEVICE_PACKAGES := kmod-spi-gpio -swconfig
|
||||
BOARD_NAME := mr24
|
||||
IMAGES := sysupgrade.bin
|
||||
DEVICE_DTC_FLAGS := --space 64512
|
||||
IMAGE_SIZE := 8191k
|
||||
KERNEL := kernel-bin | lzma | uImage lzma | prepend-dtb | meraki-header
|
||||
KERNEL_INITRAMFS := kernel-bin | lzma | MuImage-initramfs lzma
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
UBINIZE_OPTS := -E 5
|
||||
SUPPORTED_DEVICES += mr24
|
||||
endef
|
||||
TARGET_DEVICES += meraki_mr24
|
||||
|
||||
define Device/meraki_mx60
|
||||
DEVICE_VENDOR := Cisco Meraki
|
||||
DEVICE_MODEL := MX60
|
||||
DEVICE_ALT0_VENDOR := Cisco Meraki
|
||||
DEVICE_ALT0_MODEL := MX60W
|
||||
DEVICE_PACKAGES := kmod-spi-gpio kmod-usb-ledtrig-usbport kmod-usb-dwc2 \
|
||||
kmod-usb-storage block-mount
|
||||
BLOCKSIZE := 128k
|
||||
IMAGES := sysupgrade.bin
|
||||
DEVICE_DTC_FLAGS := --space 20480
|
||||
IMAGE_SIZE := 1021m
|
||||
KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
UBINIZE_OPTS := -E 5
|
||||
DEVICE_COMPAT_VERSION := 2.0
|
||||
DEVICE_COMPAT_MESSAGE := uboot's bootcmd has to be updated to support standard multi-image uImages. \
|
||||
Upgrade via sysupgrade mechanism is not possible.
|
||||
endef
|
||||
TARGET_DEVICES += meraki_mx60
|
||||
|
||||
define Device/netgear_wndap6x0
|
||||
DEVICE_VENDOR := NETGEAR
|
||||
DEVICE_PACKAGES := kmod-eeprom-at24
|
||||
SUBPAGESIZE := 256
|
||||
PAGESIZE := 512
|
||||
BLOCKSIZE := 16k
|
||||
DEVICE_DTC_FLAGS := --space 32768
|
||||
IMAGE_SIZE := 27392k
|
||||
IMAGES := sysupgrade.bin factory.img
|
||||
KERNEL_SIZE := 6080k
|
||||
KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
|
||||
UBINIZE_OPTS := -E 5
|
||||
DEVICE_COMPAT_VERSION := 2.0
|
||||
DEVICE_COMPAT_MESSAGE := kernel and ubi partitions had to be resized. \
|
||||
Upgrade via sysupgrade mechanism is not possible.
|
||||
endef
|
||||
|
||||
define Device/netgear_wndap620
|
||||
$(Device/netgear_wndap6x0)
|
||||
DEVICE_MODEL := WNDAP620 (Premium Wireless-N)
|
||||
endef
|
||||
TARGET_DEVICES += netgear_wndap620
|
||||
|
||||
define Device/netgear_wndap660
|
||||
$(Device/netgear_wndap6x0)
|
||||
DEVICE_MODEL := WNDAP660 (Dual Radio Dual Band Wireless-N)
|
||||
endef
|
||||
TARGET_DEVICES += netgear_wndap660
|
||||
|
||||
define Device/netgear_wndr4700
|
||||
DEVICE_VENDOR := NETGEAR
|
||||
DEVICE_MODEL := Centria N900 WNDR4700
|
||||
DEVICE_ALT0_VENDOR := NETGEAR
|
||||
DEVICE_ALT0_MODEL := Centria N900 WNDR4720
|
||||
DEVICE_PACKAGES := badblocks block-mount e2fsprogs kmod-hwmon-drivetemp \
|
||||
kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-usb-ledtrig-usbport \
|
||||
kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \
|
||||
kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \
|
||||
partx-utils kmod-ata-dwc
|
||||
BOARD_NAME := wndr4700
|
||||
PAGESIZE := 2048
|
||||
SUBPAGESIZE := 512
|
||||
BLOCKSIZE := 128k
|
||||
DEVICE_DTC_FLAGS := --space 131008
|
||||
IMAGE_SIZE := 24960k
|
||||
IMAGES := factory.img sysupgrade.bin
|
||||
ARTIFACTS := device-tree.dtb
|
||||
KERNEL_SIZE := 4608k
|
||||
# append a fake/empty rootfs to fool netgear's uboot
|
||||
# CHECK_DNI_FIRMWARE_ROOTFS_INTEGRITY in do_chk_dniimg()
|
||||
KERNEL := kernel-bin | lzma -d16 | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | \
|
||||
append-uImage-fakehdr filesystem | create-uImage-dtb | prepend-dtb-uImage
|
||||
KERNEL_INITRAMFS := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
|
||||
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
|
||||
netgear-dni | check-size
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
ARTIFACT/device-tree.dtb := export-dtb | uImage none
|
||||
NETGEAR_BOARD_ID := WNDR4700
|
||||
NETGEAR_HW_ID := 29763875+128+256
|
||||
UBINIZE_OPTS := -E 5
|
||||
SUPPORTED_DEVICES += wndr4700
|
||||
DEVICE_COMPAT_VERSION := 2.0
|
||||
DEVICE_COMPAT_MESSAGE := kernel and ubi partitions had to be resized. \
|
||||
Upgrade via sysupgrade mechanism is not possible.
|
||||
endef
|
||||
TARGET_DEVICES += netgear_wndr4700
|
||||
27
target/linux/apm821xx/image/sata.mk
Normal file
27
target/linux/apm821xx/image/sata.mk
Normal file
@@ -0,0 +1,27 @@
|
||||
define Build/hdd-img
|
||||
./mbl_gen_hdd_img.sh $@ $@.boot $(IMAGE_ROOTFS) $(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
||||
endef
|
||||
|
||||
|
||||
define Device/wd_mybooklive
|
||||
DEVICE_VENDOR := Western Digital
|
||||
DEVICE_MODEL := My Book Live
|
||||
DEVICE_ALT0_VENDOR := Western Digital
|
||||
DEVICE_ALT0_MODEL := My Book Live Duo
|
||||
DEVICE_PACKAGES := kmod-usb-dwc2 kmod-ata-dwc kmod-usb-ledtrig-usbport \
|
||||
kmod-usb-storage kmod-fs-vfat wpad-basic-mbedtls
|
||||
SUPPORTED_DEVICES += mbl wd,mybooklive-duo
|
||||
BLOCKSIZE := 1k
|
||||
DEVICE_DTC_FLAGS := --pad 4096
|
||||
KERNEL := kernel-bin | libdeflate-gzip | uImage gzip
|
||||
KERNEL_INITRAMFS := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip
|
||||
IMAGES := factory.img.gz sysupgrade.img.gz
|
||||
ARTIFACTS := apollo3g.dtb
|
||||
DEVICE_DTB := apollo3g.dtb
|
||||
FILESYSTEMS := ext4 squashfs
|
||||
IMAGE/factory.img.gz := boot-script | boot-img | hdd-img | libdeflate-gzip
|
||||
IMAGE/sysupgrade.img.gz := boot-script | boot-img | hdd-img | libdeflate-gzip | append-metadata
|
||||
ARTIFACT/apollo3g.dtb := export-dtb
|
||||
endef
|
||||
|
||||
TARGET_DEVICES += wd_mybooklive
|
||||
34
target/linux/apm821xx/modules.mk
Normal file
34
target/linux/apm821xx/modules.mk
Normal file
@@ -0,0 +1,34 @@
|
||||
define KernelPackage/ata-dwc
|
||||
TITLE:=DesignWare Cores SATA support
|
||||
KCONFIG:=CONFIG_SATA_DWC
|
||||
FILES:=$(LINUX_DIR)/drivers/ata/sata_dwc_460ex.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,sata_dwc_460ex,1)
|
||||
$(call AddDepends/ata)
|
||||
endef
|
||||
|
||||
define KernelPackage/ata-dwc/description
|
||||
Platform support for the on-chip SATA controller.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ata-dwc))
|
||||
|
||||
define KernelPackage/hw-crypto-4xx
|
||||
TITLE:=Driver AMCC PPC4xx crypto accelerator
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_HW=y \
|
||||
CONFIG_HW_RANDOM=y \
|
||||
CONFIG_CRYPTO_DEV_PPC4XX \
|
||||
CONFIG_HW_RANDOM_PPC4XX=y
|
||||
DEPENDS:=@TARGET_apm821xx +kmod-random-core +kmod-crypto-manager \
|
||||
+kmod-crypto-ccm +kmod-crypto-gcm \
|
||||
+kmod-crypto-sha1 +kmod-crypto-sha256 +kmod-crypto-sha512
|
||||
FILES:=$(LINUX_DIR)/drivers/crypto/amcc/crypto4xx.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,crypto4xx,1)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
define KernelPackage/hw-crypto-4xx/description
|
||||
Platform support for the on-chip crypto acceleration.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,hw-crypto-4xx))
|
||||
36
target/linux/apm821xx/nand/config-default
Normal file
36
target/linux/apm821xx/nand/config-default
Normal file
@@ -0,0 +1,36 @@
|
||||
CONFIG_AT803X_PHY=y
|
||||
CONFIG_AR8216_PHY=y
|
||||
# CONFIG_SATA_DWC_OLD_DMA is not set
|
||||
CONFIG_IKAREM=y
|
||||
# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_LEDS_TRIGGER_DISK=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_M48T86=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_HWMON=y
|
||||
CONFIG_HWMON=y
|
||||
CONFIG_SENSORS_GPIO_FAN=y
|
||||
CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
|
||||
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||
CONFIG_MTD_NAND_NDFC=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_RTL8366_SMI=y
|
||||
CONFIG_RTL8367B_PHY=y
|
||||
CONFIG_SENSORS_LM90=y
|
||||
CONFIG_SENSORS_TC654=y
|
||||
CONFIG_SWCONFIG=y
|
||||
CONFIG_SWCONFIG_LEDS=y
|
||||
|
||||
19
target/linux/apm821xx/nand/profiles/00-default.mk
Normal file
19
target/linux/apm821xx/nand/profiles/00-default.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2011 OpenWrt.org
|
||||
|
||||
define Profile/Default
|
||||
NAME:=Default Profile
|
||||
PRIORITY:=1
|
||||
PACKAGES := badblocks block-mount e2fsprogs \
|
||||
kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-usb-ledtrig-usbport \
|
||||
kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \
|
||||
kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \
|
||||
kmod-spi-gpio partx-utils
|
||||
endef
|
||||
|
||||
define Profile/Default/Description
|
||||
Default package set
|
||||
endef
|
||||
|
||||
$(eval $(call Profile,Default))
|
||||
9
target/linux/apm821xx/nand/target.mk
Normal file
9
target/linux/apm821xx/nand/target.mk
Normal file
@@ -0,0 +1,9 @@
|
||||
BOARDNAME:=Devices with NAND flash (Routers)
|
||||
FEATURES += nand pcie
|
||||
|
||||
DEFAULT_PACKAGES += kmod-ath9k swconfig wpad-basic-mbedtls
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for APM821XX boards with NAND flash.
|
||||
For routers like the MR24 or the WNDR4700.
|
||||
endef
|
||||
@@ -0,0 +1,30 @@
|
||||
--- a/arch/powerpc/platforms/44x/Kconfig
|
||||
+++ b/arch/powerpc/platforms/44x/Kconfig
|
||||
@@ -118,6 +118,17 @@ config CANYONLANDS
|
||||
help
|
||||
This option enables support for the AMCC PPC460EX evaluation board.
|
||||
|
||||
+config APOLLO3G
|
||||
+ bool "Apollo3G"
|
||||
+ depends on 44x
|
||||
+ default n
|
||||
+ select PPC44x_SIMPLE
|
||||
+ select APM821xx
|
||||
+ select IBM_EMAC_RGMII
|
||||
+ select 460EX
|
||||
+ help
|
||||
+ This option enables support for the AMCC Apollo 3G board.
|
||||
+
|
||||
config GLACIER
|
||||
bool "Glacier"
|
||||
depends on 44x
|
||||
--- a/arch/powerpc/platforms/44x/ppc44x_simple.c
|
||||
+++ b/arch/powerpc/platforms/44x/ppc44x_simple.c
|
||||
@@ -46,6 +46,7 @@ machine_device_initcall(ppc44x_simple, p
|
||||
* board.c file for it rather than adding it to this list.
|
||||
*/
|
||||
static char *board[] __initdata = {
|
||||
+ "amcc,apollo3g",
|
||||
"amcc,arches",
|
||||
"amcc,bamboo",
|
||||
"apm,bluestone",
|
||||
@@ -0,0 +1,51 @@
|
||||
--- a/arch/powerpc/platforms/4xx/pci.c
|
||||
+++ b/arch/powerpc/platforms/4xx/pci.c
|
||||
@@ -1058,15 +1058,24 @@ static int __init apm821xx_pciex_init_po
|
||||
u32 val;
|
||||
|
||||
/*
|
||||
- * Do a software reset on PCIe ports.
|
||||
- * This code is to fix the issue that pci drivers doesn't re-assign
|
||||
- * bus number for PCIE devices after Uboot
|
||||
- * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000
|
||||
- * PT quad port, SAS LSI 1064E)
|
||||
+ * Only reset the PHY when no link is currently established.
|
||||
+ * This is for the Atheros PCIe board which has problems to establish
|
||||
+ * the link (again) after this PHY reset. All other currently tested
|
||||
+ * PCIe boards don't show this problem.
|
||||
*/
|
||||
-
|
||||
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0);
|
||||
- mdelay(10);
|
||||
+ val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP);
|
||||
+ if (!(val & 0x00001000)) {
|
||||
+ /*
|
||||
+ * Do a software reset on PCIe ports.
|
||||
+ * This code is to fix the issue that pci drivers doesn't re-assign
|
||||
+ * bus number for PCIE devices after Uboot
|
||||
+ * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000
|
||||
+ * PT quad port, SAS LSI 1064E)
|
||||
+ */
|
||||
+
|
||||
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0);
|
||||
+ mdelay(10);
|
||||
+ }
|
||||
|
||||
if (port->endpoint)
|
||||
val = PTYPE_LEGACY_ENDPOINT << 20;
|
||||
@@ -1083,9 +1092,12 @@ static int __init apm821xx_pciex_init_po
|
||||
mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000130);
|
||||
mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006);
|
||||
|
||||
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000);
|
||||
- mdelay(50);
|
||||
- mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000);
|
||||
+ val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP);
|
||||
+ if (!(val & 0x00001000)) {
|
||||
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000);
|
||||
+ mdelay(50);
|
||||
+ mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000);
|
||||
+ }
|
||||
|
||||
mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET,
|
||||
mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) |
|
||||
@@ -0,0 +1,14 @@
|
||||
--- a/arch/powerpc/platforms/4xx/pci.c
|
||||
+++ b/arch/powerpc/platforms/4xx/pci.c
|
||||
@@ -1900,9 +1900,9 @@ static void __init ppc4xx_configure_pcie
|
||||
* if it works
|
||||
*/
|
||||
out_le32(mbase + PECFG_PIM0LAL, 0x00000000);
|
||||
- out_le32(mbase + PECFG_PIM0LAH, 0x00000000);
|
||||
+ out_le32(mbase + PECFG_PIM0LAH, 0x00000008);
|
||||
out_le32(mbase + PECFG_PIM1LAL, 0x00000000);
|
||||
- out_le32(mbase + PECFG_PIM1LAH, 0x00000000);
|
||||
+ out_le32(mbase + PECFG_PIM1LAH, 0x0000000c);
|
||||
out_le32(mbase + PECFG_PIM01SAH, 0xffff0000);
|
||||
out_le32(mbase + PECFG_PIM01SAL, 0x00000000);
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From c9395ad54e2cabb87d408becc37566f3d8248933 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Lamparter <chunkeey@gmail.com>
|
||||
Date: Sun, 1 Dec 2019 02:08:23 +0100
|
||||
Subject: [PATCH] powerpc: bootwrapper: force gzip as mkimage's compression
|
||||
method
|
||||
|
||||
Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to
|
||||
instruct the mkimage to use the xz compression, which isn't
|
||||
supported. This patch forces the gzip compression, which is
|
||||
supported and doesn't matter because the generated uImage for
|
||||
the apm821xx target gets ignored as the OpenWrt toolchain will
|
||||
do separate U-Boot kernel images for each device individually.
|
||||
|
||||
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
---
|
||||
arch/powerpc/boot/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/powerpc/boot/Makefile
|
||||
+++ b/arch/powerpc/boot/Makefile
|
||||
@@ -276,7 +276,7 @@ compressor-$(CONFIG_KERNEL_LZO) := lzo
|
||||
|
||||
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
|
||||
quiet_cmd_wrap = WRAP $@
|
||||
- cmd_wrap =$(CONFIG_SHELL) $(wrapper) -Z $(compressor-y) -c -o $@ -p $2 \
|
||||
+ cmd_wrap =$(CONFIG_SHELL) $(wrapper) -Z gzip -c -o $@ -p $2 \
|
||||
$(CROSSWRAP) $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) \
|
||||
vmlinux
|
||||
|
||||
62
target/linux/apm821xx/sata/config-default
Normal file
62
target/linux/apm821xx/sata/config-default
Normal file
@@ -0,0 +1,62 @@
|
||||
CONFIG_APOLLO3G=y
|
||||
CONFIG_BROADCOM_PHY=y
|
||||
CONFIG_EXT4_FS=y
|
||||
# CONFIG_SATA_DWC_OLD_DMA is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_SFF=y
|
||||
CONFIG_ATA_BMDMA=y
|
||||
CONFIG_SATA_PMP=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_SATA_DWC=y
|
||||
# CONFIG_SATA_DWC_DEBUG is not set
|
||||
CONFIG_CRYPTO_MD5_PPC=y
|
||||
CONFIG_CRYPTO_SHA1_PPC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_FREEZER=y
|
||||
CONFIG_FW_CACHE=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_74XX_MMIO=y
|
||||
CONFIG_LEDS_TRIGGER_DISK=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_BLK_DEV_DM_BUILTIN=y
|
||||
CONFIG_BLK_DEV_MD=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_MD_AUTODETECT=y
|
||||
# CONFIG_MD_LINEAR is not set
|
||||
# CONFIG_MD_MULTIPATH is not set
|
||||
CONFIG_MD_RAID0=y
|
||||
CONFIG_MD_RAID1=y
|
||||
# CONFIG_MD_RAID10 is not set
|
||||
# CONFIG_MD_RAID456 is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_AUTOSLEEP=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_SLEEP=y
|
||||
# CONFIG_PM_USERSPACE_AUTOSLEEP is not set
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_GC=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=100
|
||||
CONFIG_PPC_EARLY_DEBUG=y
|
||||
CONFIG_PPC_EARLY_DEBUG_44x=y
|
||||
# CONFIG_PPC_EARLY_DEBUG_MEMCONS is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG_16550 is not set
|
||||
CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x4
|
||||
CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300
|
||||
CONFIG_PPC4xx_CPM=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_COMMON=y
|
||||
CONFIG_USB_DWC2=y
|
||||
CONFIG_USB_DWC2_HOST=y
|
||||
CONFIG_USB_ROLE_SWITCH=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
15
target/linux/apm821xx/sata/profiles/00-default.mk
Normal file
15
target/linux/apm821xx/sata/profiles/00-default.mk
Normal file
@@ -0,0 +1,15 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2011 OpenWrt.org
|
||||
|
||||
define Profile/Default
|
||||
NAME:=Default Profile
|
||||
PRIORITY:=1
|
||||
PACKAGES := kmod-usb-dwc2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-fs-vfat wpad-basic-mbedtls
|
||||
endef
|
||||
|
||||
define Profile/Default/Description
|
||||
Default package set
|
||||
endef
|
||||
|
||||
$(eval $(call Profile,Default))
|
||||
10
target/linux/apm821xx/sata/target.mk
Normal file
10
target/linux/apm821xx/sata/target.mk
Normal file
@@ -0,0 +1,10 @@
|
||||
BOARDNAME := Devices which boot from SATA (NAS)
|
||||
DEVICE_TYPE := nas
|
||||
FEATURES += boot-part ext4 rootfs-part
|
||||
DEFAULT_PACKAGES += badblocks block-mount e2fsprogs kmod-hwmon-drivetemp \
|
||||
kmod-dm kmod-md-mod partx-utils mkf2fs f2fsck
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for APM82181 boards that boot from SATA.
|
||||
For NAS like the MyBook Live Series.
|
||||
endef
|
||||
24
target/linux/archs38/Makefile
Normal file
24
target/linux/archs38/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=arc
|
||||
CPU_TYPE:=archs
|
||||
BOARD:=archs38
|
||||
BOARDNAME:=Synopsys DesignWare ARC HS38
|
||||
FEATURES:=source-only
|
||||
SUBTARGETS:=generic
|
||||
|
||||
KERNEL_PATCHVER:=6.1
|
||||
|
||||
DEVICE_TYPE:=basic
|
||||
|
||||
define Target/Description
|
||||
Synopsys DesignWare boards
|
||||
endef
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
$(eval $(call BuildTarget))
|
||||
18
target/linux/archs38/base-files/etc/board.d/02_network
Normal file
18
target/linux/archs38/base-files/etc/board.d/02_network
Normal file
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
#
|
||||
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
case "$(board_name)" in
|
||||
snps,axs103|\
|
||||
snps,hsdk)
|
||||
ucidef_set_interface_lan "eth0" "dhcp"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
268
target/linux/archs38/config-6.1
Normal file
268
target/linux/archs38/config-6.1
Normal file
@@ -0,0 +1,268 @@
|
||||
# CONFIG_16KSTACKS is not set
|
||||
CONFIG_ARC=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARC_BUILTIN_DTB_NAME=""
|
||||
CONFIG_ARC_CACHE=y
|
||||
CONFIG_ARC_CACHE_LINE_SHIFT=6
|
||||
CONFIG_ARC_CACHE_PAGES=y
|
||||
CONFIG_ARC_CPU_HS=y
|
||||
CONFIG_ARC_CURR_IN_REG=y
|
||||
CONFIG_ARC_DBG=y
|
||||
# CONFIG_ARC_DSP_AGU_USERSPACE is not set
|
||||
# CONFIG_ARC_DSP_KERNEL is not set
|
||||
CONFIG_ARC_DSP_NONE=y
|
||||
# CONFIG_ARC_DSP_USERSPACE is not set
|
||||
CONFIG_ARC_DW2_UNWIND=y
|
||||
CONFIG_ARC_FPU_SAVE_RESTORE=y
|
||||
CONFIG_ARC_HAS_ACCL_REGS=y
|
||||
CONFIG_ARC_HAS_DCACHE=y
|
||||
# CONFIG_ARC_HAS_DCCM is not set
|
||||
CONFIG_ARC_HAS_DIV_REM=y
|
||||
CONFIG_ARC_HAS_ICACHE=y
|
||||
# CONFIG_ARC_HAS_ICCM is not set
|
||||
CONFIG_ARC_HAS_LL64=y
|
||||
CONFIG_ARC_HAS_LLSC=y
|
||||
# CONFIG_ARC_HAS_PAE40 is not set
|
||||
CONFIG_ARC_HAS_SWAPE=y
|
||||
CONFIG_ARC_IRQ_NO_AUTOSAVE=y
|
||||
CONFIG_ARC_KVADDR_SIZE=256
|
||||
# CONFIG_ARC_LPB_DISABLE is not set
|
||||
CONFIG_ARC_MCIP=y
|
||||
# CONFIG_ARC_METAWARE_HLINK is not set
|
||||
CONFIG_ARC_MMU_V4=y
|
||||
# CONFIG_ARC_PAGE_SIZE_16K is not set
|
||||
# CONFIG_ARC_PAGE_SIZE_4K is not set
|
||||
CONFIG_ARC_PAGE_SIZE_8K=y
|
||||
CONFIG_ARC_PLAT_AXS10X=y
|
||||
# CONFIG_ARC_PLAT_TB10X is not set
|
||||
# CONFIG_ARC_SMP_HALT_ON_RESET is not set
|
||||
CONFIG_ARC_SOC_HSDK=y
|
||||
CONFIG_ARC_TIMERS=y
|
||||
CONFIG_ARC_TIMERS_64BIT=y
|
||||
CONFIG_ARC_TUNE_MCPU=""
|
||||
CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
|
||||
CONFIG_AXS103=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
|
||||
CONFIG_CC_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_CLK_HSDK=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CONTEXT_TRACKING=y
|
||||
CONFIG_CONTEXT_TRACKING_IDLE=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
CONFIG_CRYPTO_DRBG_MENU=y
|
||||
CONFIG_CRYPTO_ECHAINIV=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
|
||||
CONFIG_CRYPTO_LIB_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_LIB_UTILS=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_RNG_DEFAULT=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_VIRTUAL_CHANNELS=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DWMAC_ANARION=y
|
||||
CONFIG_DWMAC_GENERIC=y
|
||||
CONFIG_DW_APB_ICTL=y
|
||||
CONFIG_DW_AXI_DMAC=y
|
||||
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_FAT_FS=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
CONFIG_FIXED_PHY=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_FWNODE_MDIO=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_FW_LOADER_SYSFS=y
|
||||
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
|
||||
CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_IRQ_CHIP=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_PENDING_IRQ=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
CONFIG_GPIO_DWAPB=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_SNPS_CREG=y
|
||||
CONFIG_GRACE_PERIOD=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IIO_BUFFER=y
|
||||
CONFIG_IIO_KFIFO_BUF=y
|
||||
CONFIG_IIO_ST_PRESS=y
|
||||
CONFIG_IIO_ST_PRESS_I2C=y
|
||||
CONFIG_IIO_ST_PRESS_SPI=y
|
||||
CONFIG_IIO_ST_SENSORS_CORE=y
|
||||
CONFIG_IIO_ST_SENSORS_I2C=y
|
||||
CONFIG_IIO_ST_SENSORS_SPI=y
|
||||
CONFIG_IIO_TRIGGER=y
|
||||
CONFIG_IIO_TRIGGERED_BUFFER=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
# CONFIG_ISA_ARCOMPACT is not set
|
||||
CONFIG_ISA_ARCV2=y
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KERNEL_GZIP=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LINUX_LINK_BASE=0x90000000
|
||||
CONFIG_LINUX_RAM_BASE=0x80000000
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_DEVICE=y
|
||||
CONFIG_MDIO_DEVRES=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MICREL_PHY=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_DW=y
|
||||
# CONFIG_MMC_DW_BLUEFIELD is not set
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_HI3798CV200 is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
CONFIG_MMC_DW_PLTFM=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_NATIONAL_PHY=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NET_NS=y
|
||||
CONFIG_NET_PTP_CLASSIFY=y
|
||||
CONFIG_NET_SELFTESTS=y
|
||||
CONFIG_NFS_ACL_SUPPORT=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NO_IOPORT_MAP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_OF_MDIO=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_POOL=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
|
||||
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
|
||||
CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y
|
||||
CONFIG_PCS_XPCS=y
|
||||
CONFIG_PGTABLE_LEVELS=2
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_PHYLIB_LEDS=y
|
||||
CONFIG_PHYLINK=y
|
||||
CONFIG_PPS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
CONFIG_PREEMPT_BUILD=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_RCU=y
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_SPI=y
|
||||
CONFIG_RESET_AXS10X=y
|
||||
CONFIG_RESET_CONTROLLER=y
|
||||
CONFIG_RESET_HSDK=y
|
||||
CONFIG_RESET_SIMPLE=y
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_SERIAL_8250_DWLIB=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_ARC=y
|
||||
CONFIG_SERIAL_ARC_CONSOLE=y
|
||||
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_DESIGNWARE=y
|
||||
# CONFIG_SPI_DW_DMA is not set
|
||||
CONFIG_SPI_DW_MMIO=y
|
||||
CONFIG_SPI_MASTER=y
|
||||
CONFIG_SPI_MEM=y
|
||||
CONFIG_SRCU=y
|
||||
CONFIG_STACKTRACE=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
CONFIG_SUNRPC=y
|
||||
CONFIG_SWPHY=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TI_ADC108S102=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
CONFIG_UNINLINE_SPIN_UNLOCK=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
# CONFIG_USER_NS is not set
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
13
target/linux/archs38/generic/profiles/00-default.mk
Normal file
13
target/linux/archs38/generic/profiles/00-default.mk
Normal file
@@ -0,0 +1,13 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
|
||||
define Profile/Default
|
||||
NAME:=Default Profile (all drivers)
|
||||
PACKAGES:= kmod-usb2 kmod-ath9k-htc wpad-basic-mbedtls
|
||||
endef
|
||||
|
||||
define Profile/Default/Description
|
||||
Default package set compatible with most boards.
|
||||
endef
|
||||
$(eval $(call Profile,Default))
|
||||
8
target/linux/archs38/generic/target.mk
Normal file
8
target/linux/archs38/generic/target.mk
Normal file
@@ -0,0 +1,8 @@
|
||||
BOARDNAME:=Generic
|
||||
FEATURES += ext4 usb ramdisk
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for ARC HS38 based boards.
|
||||
endef
|
||||
|
||||
|
||||
5
target/linux/archs38/image/Config.in
Normal file
5
target/linux/archs38/image/Config.in
Normal file
@@ -0,0 +1,5 @@
|
||||
config AXS10X_SD_BOOT_PARTSIZE
|
||||
int "Boot (SD Card) filesystem partition size (in MB)"
|
||||
depends on TARGET_archs38
|
||||
default 20
|
||||
|
||||
86
target/linux/archs38/image/Makefile
Normal file
86
target/linux/archs38/image/Makefile
Normal file
@@ -0,0 +1,86 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
# On ARC initramfs is put before entry point and so entry point moves
|
||||
# in memory from build to built. Thus we need to extract EP from vmlinux
|
||||
# every time before generation of uImage.
|
||||
kernel_ep = `$(KERNEL_CROSS)readelf -h $(1) | grep "Entry point address" | grep -o 0x.*`
|
||||
|
||||
define Build/patch-dtb
|
||||
$(STAGING_DIR_HOST)/bin/patch-dtb $@ $(DTS_DIR)/$(DEVICE_DTS).dtb
|
||||
endef
|
||||
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
# Root FS built-in
|
||||
define Device/vmlinux
|
||||
KERNEL_SUFFIX := .elf
|
||||
KERNEL := kernel-bin | patch-dtb
|
||||
KERNEL_INITRAMFS_NAME = vmlinux-initramfs.elf
|
||||
endef
|
||||
|
||||
define Device/nsim_hs
|
||||
$(call Device/vmlinux)
|
||||
DEVICE_VENDOR := Synopsys
|
||||
DEVICE_MODEL := nSIM HS
|
||||
DEVICE_PROFILE := nsim_hs
|
||||
DEVICE_DTS := haps_hs
|
||||
endef
|
||||
TARGET_DEVICES += nsim_hs
|
||||
endif
|
||||
|
||||
# Root FS on SD-card
|
||||
KERNEL_LOADADDR := 0x90000000
|
||||
DEVICE_DTS_LIST:= axs103_idu haps_hs hsdk
|
||||
FAT32_BLOCK_SIZE=1024
|
||||
FAT32_BLOCKS=$(shell echo $$(($(CONFIG_AXS10X_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
|
||||
|
||||
define Image/Prepare
|
||||
# Build .dtb for all boards we may run on
|
||||
$(foreach dts,$(DEVICE_DTS_LIST),
|
||||
$(call Image/BuildDTB,$(DTS_DIR)/$(dts).dts,$(DTS_DIR)/$(dts).dtb)
|
||||
)
|
||||
endef
|
||||
|
||||
define Image/Build/SDCard
|
||||
rm -f $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img
|
||||
mkfs.fat $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img -C $(FAT32_BLOCKS)
|
||||
mkimage -C none -A arc -T script -d uEnv.txt $(BIN_DIR)/uEnv.scr
|
||||
mkenvimage -s 0x4000 -o $(BIN_DIR)/uboot.env ./uboot.env.txt
|
||||
mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/uEnv.scr ::boot.scr
|
||||
mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(DTS_DIR)/*.dtb ::
|
||||
mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/$(IMG_PREFIX)-uImage ::uImage
|
||||
mcopy -i $(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img $(BIN_DIR)/uboot.env ::uboot.env
|
||||
|
||||
./gen_axs10x_sdcard_img.sh \
|
||||
$(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img \
|
||||
$(KDIR_TMP)/$(IMG_PREFIX)-$(PROFILE)-boot.img \
|
||||
$(KDIR)/root.$(1) \
|
||||
$(CONFIG_AXS10X_SD_BOOT_PARTSIZE) \
|
||||
$(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
||||
|
||||
ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
|
||||
gzip -f9n $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-sdcard-vfat-$(1).img
|
||||
endif
|
||||
endef
|
||||
|
||||
define Image/BuildKernel
|
||||
# Build unified uImage
|
||||
$(call Image/BuildKernel/MkuImage, \
|
||||
none, $(KERNEL_LOADADDR),$(call kernel_ep,$(KDIR)/vmlinux.elf) , \
|
||||
$(KDIR)/vmlinux, \
|
||||
$(BIN_DIR)/$(IMG_PREFIX)-uImage \
|
||||
)
|
||||
endef
|
||||
|
||||
define Image/Build
|
||||
$(call Image/Build/$(1),$(1))
|
||||
$(call Image/Build/SDCard,$(1))
|
||||
dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
|
||||
$(call Image/Gzip,$(BIN_DIR)/$(IMG_PREFIX)-root.$(1))
|
||||
endef
|
||||
|
||||
$(eval $(call BuildImage))
|
||||
29
target/linux/archs38/image/gen_axs10x_sdcard_img.sh
Executable file
29
target/linux/archs38/image/gen_axs10x_sdcard_img.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2016 OpenWrt.org
|
||||
|
||||
set -x
|
||||
[ $# -eq 5 ] || {
|
||||
echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
OUTPUT="$1"
|
||||
BOOTFS="$2"
|
||||
ROOTFS="$3"
|
||||
BOOTFSSIZE="$4"
|
||||
ROOTFSSIZE="$5"
|
||||
|
||||
head=4
|
||||
sect=63
|
||||
|
||||
set $(ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M)
|
||||
|
||||
BOOTOFFSET="$(($1 / 512))"
|
||||
BOOTSIZE="$(($2 / 512))"
|
||||
ROOTFSOFFSET="$(($3 / 512))"
|
||||
ROOTFSSIZE="$(($4 / 512))"
|
||||
|
||||
dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
|
||||
dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
|
||||
7
target/linux/archs38/image/uEnv.txt
Normal file
7
target/linux/archs38/image/uEnv.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
setenv kernel_addr_r 0x82000000
|
||||
setenv fdt_addr_r 0x83000000
|
||||
setenv loadkernel fatload mmc 0 \${kernel_addr_r} uImage
|
||||
setenv loaddtb fatload mmc 0 \${fdt_addr_r} \${dts}
|
||||
setenv bootargs earlycon=uart8250,mmio32,0xe0022000,115200n8 console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait print-fatal-signals=1
|
||||
setenv uenvcmd run loadkernel\; run loaddtb\; bootm \${kernel_addr_r} - \${fdt_addr_r}
|
||||
run uenvcmd
|
||||
29
target/linux/archs38/image/uboot.env.txt
Normal file
29
target/linux/archs38/image/uboot.env.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
baudrate=115200
|
||||
bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootwait
|
||||
bootcmd=fatload mmc 0:1 0x82000000 uImage && fatload mmc 0:1 0x81000000 hsdk.dtb && bootm 0x82000000 - 0x81000000
|
||||
bootdelay=2
|
||||
bootfile=uImage
|
||||
loadaddr=0x82000000
|
||||
stderr=serial0@f0005000
|
||||
stdin=serial0@f0005000
|
||||
stdout=serial0@f0005000
|
||||
core_dccm_0=0x10
|
||||
core_dccm_1=0x6
|
||||
core_dccm_2=0x10
|
||||
core_dccm_3=0x6
|
||||
core_iccm_0=0x10
|
||||
core_iccm_1=0x6
|
||||
core_iccm_2=0x10
|
||||
core_iccm_3=0x6
|
||||
core_mask=0xF
|
||||
dcache_ena=0x1
|
||||
icache_ena=0x1
|
||||
non_volatile_limit=0xE
|
||||
hsdk_hs34=setenv core_mask 0x2; setenv icache_ena 0x0; setenv dcache_ena 0x0; setenv core_iccm_1 0x7; setenv core_dccm_1 0x8; setenv non_volatile_limit 0x0;
|
||||
hsdk_hs36=setenv core_mask 0x1; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_0 0x10; setenv core_dccm_0 0x10; setenv non_volatile_limit 0xE;
|
||||
hsdk_hs36_ccm=setenv core_mask 0x2; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_1 0x7; setenv core_dccm_1 0x8; setenv non_volatile_limit 0xE;
|
||||
hsdk_hs38=setenv core_mask 0x1; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_0 0x10; setenv core_dccm_0 0x10; setenv non_volatile_limit 0xE;
|
||||
hsdk_hs38_ccm=setenv core_mask 0x2; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_1 0x7; setenv core_dccm_1 0x8; setenv non_volatile_limit 0xE;
|
||||
hsdk_hs38x2=setenv core_mask 0x3; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_0 0x10; setenv core_dccm_0 0x10; setenv non_volatile_limit 0xE; setenv core_iccm_1 0x6; setenv core_dccm_1 0x6;
|
||||
hsdk_hs38x3=setenv core_mask 0x7; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_0 0x10; setenv core_dccm_0 0x10; setenv non_volatile_limit 0xE; setenv core_iccm_1 0x6; setenv core_dccm_1 0x6; setenv core_iccm_2 0x10; setenv core_dccm_2 0x10;
|
||||
hsdk_hs38x4=setenv core_mask 0xF; setenv icache_ena 0x1; setenv dcache_ena 0x1; setenv core_iccm_0 0x10; setenv core_dccm_0 0x10; setenv non_volatile_limit 0xE; setenv core_iccm_1 0x6; setenv core_dccm_1 0x6; setenv core_iccm_2 0x10; setenv core_dccm_2 0x10; setenv core_iccm_3 0x6; setenv core_dccm_3 0x6;
|
||||
22
target/linux/armsr/Makefile
Normal file
22
target/linux/armsr/Makefile
Normal file
@@ -0,0 +1,22 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
BOARD:=armsr
|
||||
BOARDNAME:=Arm SystemReady (EFI) compliant
|
||||
FEATURES:=fpu pci pcie rtc usb boot-part rootfs-part
|
||||
FEATURES+=cpiogz ext4 ramdisk squashfs targz vmdk
|
||||
|
||||
KERNEL_PATCHVER:=6.6
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
DEFAULT_PACKAGES += mkf2fs e2fsprogs
|
||||
# blkid used for resolving PARTUUID
|
||||
# in sysupgrade. vfat required for
|
||||
# mounting ESP partition
|
||||
DEFAULT_PACKAGES += blkid kmod-fs-vfat
|
||||
|
||||
$(eval $(call BuildTarget))
|
||||
75
target/linux/armsr/README
Normal file
75
target/linux/armsr/README
Normal file
@@ -0,0 +1,75 @@
|
||||
This target generates images that can be used on ARM machines with EFI
|
||||
support (e.g EDKII/TianoCore or U-Boot with bootefi).
|
||||
|
||||
There are two subtargets:
|
||||
- armv7 for 32-bit machines
|
||||
- armv8 for 64-bit machines
|
||||
|
||||
The kernel and filesystem images can also be used directly by QEMU:
|
||||
|
||||
Run with qemu-system-arm
|
||||
|
||||
# boot with initramfs embedded in
|
||||
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-initramfs-kernel.bin
|
||||
|
||||
# boot with accel=kvm
|
||||
qemu-system-arm -nographic -M virt,accel=kvm -cpu host -m 64 -kernel
|
||||
openwrt-armsr-armv7-generic-initramfs-kernel.bin
|
||||
|
||||
# boot with a separate rootfs
|
||||
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
|
||||
-drive file=openwrt-armsr-armv7-generic-ext4-rootfs.img,format=raw,if=virtio -append 'root=/dev/vda rootwait'
|
||||
|
||||
# boot with local dir as rootfs
|
||||
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
|
||||
-fsdev local,id=rootdev,path=root-armsr/,security_model=none \
|
||||
-device virtio-9p-pci,fsdev=rootdev,mount_tag=/dev/root \
|
||||
-append 'rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p'
|
||||
|
||||
Run with kvmtool
|
||||
|
||||
# start a named machine
|
||||
lkvm run -k openwrt-armsr-armv7-zImage -i openwrt-armsr-armv7-rootfs.cpio --name armsr0
|
||||
|
||||
# start with virtio-9p rootfs
|
||||
lkvm run -k openwrt-armsr-armv7-zImage -d root-armsr/
|
||||
|
||||
# stop "armsr0"
|
||||
lkvm stop --name armsr0
|
||||
|
||||
# stop all
|
||||
lkvm stop --all
|
||||
|
||||
The multi-platform ARMv8 target can be used with QEMU:
|
||||
|
||||
qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic \
|
||||
-kernel openwrt-armsr-armv8-generic-initramfs-kernel.bin \
|
||||
|
||||
With a EDKII or U-Boot binary for the QEMU ARM virtual machines, you can use these
|
||||
images in EFI mode:
|
||||
|
||||
32-bit:
|
||||
gunzip -c bin/targets/armsr/armv7/openwrt-armsr-armv7-generic-ext4-combined.img.gz > openwrt-arm-32.img
|
||||
qemu-system-arm -nographic \
|
||||
-cpu cortex-a15 -machine virt \
|
||||
-bios bin/targets/armsr/armv7/u-boot-qemu_armv7/u-boot.bin \
|
||||
-smp 1 -m 1024 \
|
||||
-device virtio-rng-pci \
|
||||
-drive file=openwrt-arm-32.img,format=raw,index=0,media=disk \
|
||||
-netdev user,id=testlan -net nic,netdev=testlan \
|
||||
-netdev user,id=testwan -net nic,netdev=testwan
|
||||
|
||||
64-bit:
|
||||
gunzip -c bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-ext4-combined.img.gz > openwrt-arm-64.img
|
||||
qemu-system-aarch64 -nographic \
|
||||
-cpu cortex-a53 -machine virt \
|
||||
-bios bin/targets/armsr/armv8/u-boot-qemu_armv8/u-boot.bin \
|
||||
-smp 1 -m 1024 \
|
||||
-device virtio-rng-pci \
|
||||
-drive file=openwrt-arm-64.img,format=raw,index=0,media=disk \
|
||||
-netdev user,id=testlan -net nic,netdev=testlan \
|
||||
-netdev user,id=testwan -net nic,netdev=testwan
|
||||
|
||||
One can obtain other EFI/BIOS binaries from:
|
||||
- Distribution packages (such as qemu-efi-arm and qemu-efi-aarch64 in Debian)
|
||||
- Community builds, like retrage/edk2-nightly: https://retrage.github.io/edk2-nightly/
|
||||
83
target/linux/armsr/armv7/config-6.6
Normal file
83
target/linux/armsr/armv7/config-6.6
Normal file
@@ -0,0 +1,83 @@
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=8
|
||||
CONFIG_ARCH_MULTIPLATFORM=y
|
||||
# CONFIG_ARCH_MULTI_V4 is not set
|
||||
# CONFIG_ARCH_MULTI_V4T is not set
|
||||
CONFIG_ARCH_MULTI_V6_V7=y
|
||||
CONFIG_ARCH_MULTI_V7=y
|
||||
CONFIG_ARCH_NR_GPIO=0
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_ARCH_VIRT=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_CPU_SUSPEND=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
CONFIG_ARM_HEAVY_MB=y
|
||||
# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
|
||||
CONFIG_ARM_L1_CACHE_SHIFT=6
|
||||
CONFIG_ARM_L1_CACHE_SHIFT_6=y
|
||||
CONFIG_ARM_LPAE=y
|
||||
CONFIG_ARM_PATCH_IDIV=y
|
||||
CONFIG_ARM_PATCH_PHYS_VIRT=y
|
||||
CONFIG_ARM_PSCI=y
|
||||
CONFIG_ARM_THUMB=y
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_ARM_VIRT_EXT=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CPU_32v6K=y
|
||||
CONFIG_CPU_32v7=y
|
||||
CONFIG_CPU_ABRT_EV7=y
|
||||
CONFIG_CPU_CACHE_V7=y
|
||||
CONFIG_CPU_CACHE_VIPT=y
|
||||
CONFIG_CPU_COPY_V6=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
CONFIG_CPU_HAS_ASID=y
|
||||
CONFIG_CPU_PABRT_V7=y
|
||||
CONFIG_CPU_SPECTRE=y
|
||||
CONFIG_CPU_THUMB_CAPABLE=y
|
||||
CONFIG_CPU_TLB_V7=y
|
||||
CONFIG_CPU_V7=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
CONFIG_DMA_OPS=y
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
|
||||
CONFIG_GENERIC_VDSO_32=y
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
CONFIG_HAVE_SMP=y
|
||||
CONFIG_HZ_FIXED=0
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
CONFIG_NEON=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OUTER_CACHE=y
|
||||
CONFIG_OUTER_CACHE_SYNC=y
|
||||
CONFIG_PAGE_OFFSET=0xC0000000
|
||||
CONFIG_PERF_USE_VMALLOC=y
|
||||
CONFIG_PHYS_OFFSET=0
|
||||
CONFIG_RTC_MC146818_LIB=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SMP_ON_UP=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
CONFIG_UNWINDER_ARM=y
|
||||
# CONFIG_UNWINDER_FRAME_POINTER is not set
|
||||
CONFIG_USE_OF=y
|
||||
CONFIG_VFP=y
|
||||
CONFIG_VFPv3=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_BCJ=y
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
10
target/linux/armsr/armv7/target.mk
Normal file
10
target/linux/armsr/armv7/target.mk
Normal file
@@ -0,0 +1,10 @@
|
||||
ARCH:=arm
|
||||
SUBTARGET:=armv7
|
||||
BOARDNAME:=32-bit (armv7) machines
|
||||
CPU_TYPE:=cortex-a15
|
||||
CPU_SUBTYPE:=neon-vfpv4
|
||||
KERNELNAME:=zImage
|
||||
|
||||
define Target/Description
|
||||
Build images for $(BOARDNAME)
|
||||
endef
|
||||
854
target/linux/armsr/armv8/config-6.6
Normal file
854
target/linux/armsr/armv8/config-6.6
Normal file
@@ -0,0 +1,854 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_ACPI_APEI=y
|
||||
# CONFIG_ACPI_FFH is not set
|
||||
# CONFIG_ACPI_FPDT is not set
|
||||
CONFIG_ACPI_HMAT=y
|
||||
CONFIG_ACPI_PCC=y
|
||||
CONFIG_AHCI_IMX=y
|
||||
CONFIG_AHCI_MVEBU=y
|
||||
CONFIG_AHCI_QORIQ=y
|
||||
CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y
|
||||
CONFIG_ARCH_BCM=y
|
||||
CONFIG_ARCH_BCM2835=y
|
||||
# CONFIG_ARCH_BCMBCA is not set
|
||||
CONFIG_ARCH_BCM_IPROC=y
|
||||
CONFIG_ARCH_BRCMSTB=y
|
||||
CONFIG_ARCH_HISI=y
|
||||
CONFIG_ARCH_INTEL_SOCFPGA=y
|
||||
CONFIG_ARCH_LAYERSCAPE=y
|
||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_MVEBU=y
|
||||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_ARCH_NXP=y
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_ARCH_R8A774A1=y
|
||||
CONFIG_ARCH_R8A774B1=y
|
||||
CONFIG_ARCH_R8A774C0=y
|
||||
CONFIG_ARCH_R8A774E1=y
|
||||
# CONFIG_ARCH_R8A77950 is not set
|
||||
# CONFIG_ARCH_R8A77951 is not set
|
||||
# CONFIG_ARCH_R8A77960 is not set
|
||||
# CONFIG_ARCH_R8A77961 is not set
|
||||
# CONFIG_ARCH_R8A77965 is not set
|
||||
# CONFIG_ARCH_R8A77970 is not set
|
||||
# CONFIG_ARCH_R8A77980 is not set
|
||||
# CONFIG_ARCH_R8A77990 is not set
|
||||
# CONFIG_ARCH_R8A77995 is not set
|
||||
# CONFIG_ARCH_R8A779A0 is not set
|
||||
# CONFIG_ARCH_R8A779F0 is not set
|
||||
# CONFIG_ARCH_R8A779G0 is not set
|
||||
CONFIG_ARCH_R9A07G043=y
|
||||
CONFIG_ARCH_R9A07G044=y
|
||||
CONFIG_ARCH_R9A07G054=y
|
||||
CONFIG_ARCH_R9A09G011=y
|
||||
CONFIG_ARCH_RENESAS=y
|
||||
CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_SYNQUACER=y
|
||||
CONFIG_ARCH_THUNDER=y
|
||||
CONFIG_ARCH_THUNDER2=y
|
||||
CONFIG_ARCH_VEXPRESS=y
|
||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||
CONFIG_ARCH_ZYNQMP=y
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
CONFIG_ARM64_AMU_EXTN=y
|
||||
CONFIG_ARM64_BTI=y
|
||||
CONFIG_ARM64_CNP=y
|
||||
CONFIG_ARM64_CRYPTO=y
|
||||
CONFIG_ARM64_E0PD=y
|
||||
CONFIG_ARM64_EPAN=y
|
||||
CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_1165522=y
|
||||
CONFIG_ARM64_ERRATUM_1286807=y
|
||||
CONFIG_ARM64_ERRATUM_1319367=y
|
||||
CONFIG_ARM64_ERRATUM_1418040=y
|
||||
CONFIG_ARM64_ERRATUM_1463225=y
|
||||
CONFIG_ARM64_ERRATUM_1508412=y
|
||||
CONFIG_ARM64_ERRATUM_1530923=y
|
||||
CONFIG_ARM64_ERRATUM_1542419=y
|
||||
CONFIG_ARM64_ERRATUM_1742098=y
|
||||
CONFIG_ARM64_ERRATUM_2051678=y
|
||||
CONFIG_ARM64_ERRATUM_2054223=y
|
||||
CONFIG_ARM64_ERRATUM_2067961=y
|
||||
CONFIG_ARM64_ERRATUM_2077057=y
|
||||
CONFIG_ARM64_ERRATUM_2441007=y
|
||||
CONFIG_ARM64_ERRATUM_2441009=y
|
||||
CONFIG_ARM64_ERRATUM_2457168=y
|
||||
CONFIG_ARM64_ERRATUM_2658417=y
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
CONFIG_ARM64_ERRATUM_827319=y
|
||||
CONFIG_ARM64_ERRATUM_832075=y
|
||||
CONFIG_ARM64_ERRATUM_834220=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
CONFIG_ARM64_ERRATUM_845719=y
|
||||
CONFIG_ARM64_HW_AFDBM=y
|
||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
||||
CONFIG_ARM64_MTE=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PAN=y
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
CONFIG_ARM64_PTR_AUTH=y
|
||||
CONFIG_ARM64_PTR_AUTH_KERNEL=y
|
||||
CONFIG_ARM64_RAS_EXTN=y
|
||||
CONFIG_ARM64_SME=y
|
||||
CONFIG_ARM64_SVE=y
|
||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
||||
CONFIG_ARM64_TLB_RANGE=y
|
||||
CONFIG_ARM64_VA_BITS=48
|
||||
CONFIG_ARM64_VA_BITS_48=y
|
||||
CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
|
||||
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
|
||||
CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
|
||||
CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y
|
||||
# CONFIG_ARMADA_37XX_RWTM_MBOX is not set
|
||||
CONFIG_ARMADA_37XX_WATCHDOG=y
|
||||
CONFIG_ARMADA_THERMAL=y
|
||||
CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
|
||||
# CONFIG_ARM_DMC620_PMU is not set
|
||||
# CONFIG_ARM_MHU_V2 is not set
|
||||
CONFIG_ARM_PSCI_CPUIDLE=y
|
||||
CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
|
||||
CONFIG_ARM_SBSA_WATCHDOG=y
|
||||
CONFIG_ARM_SCPI_POWER_DOMAIN=y
|
||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||
CONFIG_ARM_SMCCC_SOC_ID=y
|
||||
CONFIG_ARM_SMC_WATCHDOG=y
|
||||
CONFIG_ARM_SMMU=y
|
||||
# CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT is not set
|
||||
# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
|
||||
CONFIG_ARM_SMMU_V3=y
|
||||
# CONFIG_ARM_SMMU_V3_PMU is not set
|
||||
# CONFIG_ARM_SMMU_V3_SVA is not set
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
# CONFIG_AXI_DMAC is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
# CONFIG_BCM2711_THERMAL is not set
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
CONFIG_BCM2835_POWER=y
|
||||
# CONFIG_BCM2835_THERMAL is not set
|
||||
# CONFIG_BCM2835_VCHIQ is not set
|
||||
CONFIG_BCM2835_WDT=y
|
||||
# CONFIG_BCMASP is not set
|
||||
# CONFIG_BCMGENET is not set
|
||||
# CONFIG_BCM_CYGNUS_PHY is not set
|
||||
# CONFIG_BCM_FLEXRM_MBOX is not set
|
||||
# CONFIG_BCM_NS_THERMAL is not set
|
||||
# CONFIG_BCM_PDC_MBOX is not set
|
||||
# CONFIG_BCM_SR_THERMAL is not set
|
||||
CONFIG_BCM_VIDEOCORE=y
|
||||
# CONFIG_BGMAC_PLATFORM is not set
|
||||
CONFIG_BLK_PM=y
|
||||
# CONFIG_BRCMSTB_PM is not set
|
||||
# CONFIG_BRCMSTB_THERMAL is not set
|
||||
CONFIG_BRCM_USB_PINMAP=y
|
||||
CONFIG_CAVIUM_ERRATUM_22375=y
|
||||
CONFIG_CAVIUM_ERRATUM_23144=y
|
||||
CONFIG_CAVIUM_ERRATUM_23154=y
|
||||
CONFIG_CAVIUM_ERRATUM_27456=y
|
||||
CONFIG_CAVIUM_ERRATUM_30115=y
|
||||
CONFIG_CAVIUM_TX2_ERRATUM_219=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
|
||||
CONFIG_CLK_BCM2711_DVP=y
|
||||
CONFIG_CLK_BCM2835=y
|
||||
CONFIG_CLK_BCM_NS2=y
|
||||
CONFIG_CLK_BCM_SR=y
|
||||
CONFIG_CLK_IMX8MM=y
|
||||
CONFIG_CLK_IMX8MN=y
|
||||
CONFIG_CLK_IMX8MP=y
|
||||
CONFIG_CLK_IMX8MQ=y
|
||||
CONFIG_CLK_IMX8QXP=y
|
||||
CONFIG_CLK_IMX8ULP=y
|
||||
CONFIG_CLK_IMX93=y
|
||||
CONFIG_CLK_INTEL_SOCFPGA=y
|
||||
CONFIG_CLK_INTEL_SOCFPGA64=y
|
||||
CONFIG_CLK_LS1028A_PLLDIG=y
|
||||
CONFIG_CLK_PX30=y
|
||||
CONFIG_CLK_QORIQ=y
|
||||
CONFIG_CLK_RASPBERRYPI=y
|
||||
CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y
|
||||
CONFIG_CLK_RENESAS=y
|
||||
CONFIG_CLK_RK3308=y
|
||||
CONFIG_CLK_RK3328=y
|
||||
CONFIG_CLK_RK3368=y
|
||||
CONFIG_CLK_RK3399=y
|
||||
CONFIG_CLK_RK3568=y
|
||||
CONFIG_CLK_RK3588=y
|
||||
CONFIG_CLK_SP810=y
|
||||
CONFIG_CLK_SUNXI=y
|
||||
CONFIG_CLK_SUNXI_CLOCKS=y
|
||||
# CONFIG_CLK_SUNXI_PRCM_SUN6I is not set
|
||||
# CONFIG_CLK_SUNXI_PRCM_SUN8I is not set
|
||||
# CONFIG_CLK_SUNXI_PRCM_SUN9I is not set
|
||||
CONFIG_CLK_VEXPRESS_OSC=y
|
||||
CONFIG_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
CONFIG_CMA_AREAS=19
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
# CONFIG_CMA_DEBUGFS is not set
|
||||
CONFIG_CMA_SIZE_MBYTES=32
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SYSFS is not set
|
||||
# CONFIG_COMMON_CLK_FSL_FLEXSPI is not set
|
||||
# CONFIG_COMMON_CLK_FSL_SAI is not set
|
||||
CONFIG_COMMON_CLK_HI3516CV300=y
|
||||
CONFIG_COMMON_CLK_HI3519=y
|
||||
CONFIG_COMMON_CLK_HI3559A=y
|
||||
CONFIG_COMMON_CLK_HI3660=y
|
||||
CONFIG_COMMON_CLK_HI3670=y
|
||||
CONFIG_COMMON_CLK_HI3798CV200=y
|
||||
CONFIG_COMMON_CLK_HI6220=y
|
||||
CONFIG_COMMON_CLK_HI655X=y
|
||||
CONFIG_COMMON_CLK_ROCKCHIP=y
|
||||
CONFIG_COMMON_CLK_SCPI=y
|
||||
CONFIG_COMMON_CLK_ZYNQMP=y
|
||||
CONFIG_COMMON_RESET_HI3660=y
|
||||
CONFIG_COMMON_RESET_HI6220=y
|
||||
# CONFIG_COMPAT_32BIT_TIME is not set
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CRYPTO_AES_ARM64=y
|
||||
CONFIG_CRYPTO_AES_ARM64_BS=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
|
||||
CONFIG_CRYPTO_CHACHA20=y
|
||||
CONFIG_CRYPTO_CHACHA20_NEON=y
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
# CONFIG_CRYPTO_DEV_ALLWINNER is not set
|
||||
# CONFIG_CRYPTO_DEV_BCM_SPU is not set
|
||||
# CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM is not set
|
||||
# CONFIG_CRYPTO_DEV_HISI_HPRE is not set
|
||||
# CONFIG_CRYPTO_DEV_HISI_SEC2 is not set
|
||||
# CONFIG_CRYPTO_DEV_HISI_TRNG is not set
|
||||
# CONFIG_CRYPTO_DEV_OCTEONTX2_CPT is not set
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
# CONFIG_CRYPTO_DEV_ZYNQMP_AES is not set
|
||||
# CONFIG_CRYPTO_DEV_ZYNQMP_SHA3 is not set
|
||||
CONFIG_CRYPTO_GHASH_ARM64_CE=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
|
||||
CONFIG_CRYPTO_POLYVAL_ARM64_CE=y
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
||||
CONFIG_CRYPTO_SHA256_ARM64=y
|
||||
CONFIG_CRYPTO_SHA2_ARM64_CE=y
|
||||
CONFIG_CRYPTO_SHA512_ARM64=y
|
||||
CONFIG_CRYPTO_SIMD=y
|
||||
# CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set
|
||||
# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set
|
||||
# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set
|
||||
# CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set
|
||||
# CONFIG_DEV_DAX_HMEM is not set
|
||||
CONFIG_DMA_BCM2835=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
# CONFIG_DMA_NUMA_CMA is not set
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_DMA_SUN6I=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_BOCHS=y
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
# CONFIG_DRM_FSL_LDB is not set
|
||||
CONFIG_DRM_GEM_SHMEM_HELPER=y
|
||||
# CONFIG_DRM_IMX8QM_LDB is not set
|
||||
# CONFIG_DRM_IMX8QXP_LDB is not set
|
||||
# CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not set
|
||||
# CONFIG_DRM_IMX8QXP_PIXEL_LINK is not set
|
||||
# CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI is not set
|
||||
# CONFIG_DRM_IMX_DCSS is not set
|
||||
# CONFIG_DRM_IMX_LCDC is not set
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
CONFIG_DRM_PANEL=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
# CONFIG_DRM_PANEL_HIMAX_HX8394 is not set
|
||||
# CONFIG_DRM_PANEL_JADARD_JD9365DA_H3 is not set
|
||||
# CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set
|
||||
# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
|
||||
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
|
||||
# CONFIG_DRM_PANEL_SONY_TD4353_JDI is not set
|
||||
# CONFIG_DRM_PANEL_STARTEK_KD070FHFID015 is not set
|
||||
# CONFIG_DRM_PANEL_VISIONOX_R66451 is not set
|
||||
# CONFIG_DRM_PANEL_VISIONOX_VTDR6130 is not set
|
||||
CONFIG_DRM_QXL=y
|
||||
# CONFIG_DRM_RCAR_DU is not set
|
||||
# CONFIG_DRM_ROCKCHIP is not set
|
||||
# CONFIG_DRM_RZG2L_MIPI_DSI is not set
|
||||
# CONFIG_DRM_SHMOBILE is not set
|
||||
CONFIG_DRM_TTM=y
|
||||
CONFIG_DRM_TTM_HELPER=y
|
||||
# CONFIG_DRM_V3D is not set
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
CONFIG_DRM_VIRTIO_GPU_KMS=y
|
||||
CONFIG_DRM_VRAM_HELPER=y
|
||||
# CONFIG_DWMAC_SUN8I is not set
|
||||
# CONFIG_DWMAC_SUNXI is not set
|
||||
CONFIG_DW_WATCHDOG=y
|
||||
CONFIG_EFI_CAPSULE_LOADER=y
|
||||
CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
|
||||
CONFIG_EFI_SOFT_RESERVE=y
|
||||
CONFIG_EFI_VARS_PSTORE=y
|
||||
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_ARMCLCD=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_CMDLINE=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_MX3=y
|
||||
# CONFIG_FB_SH_MOBILE_LCDC is not set
|
||||
# CONFIG_FB_XILINX is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_FSL_DPAA is not set
|
||||
# CONFIG_FSL_DPAA2_QDMA is not set
|
||||
CONFIG_FSL_ERRATUM_A008585=y
|
||||
# CONFIG_FSL_IMX8_DDR_PMU is not set
|
||||
# CONFIG_FSL_IMX9_DDR_PMU is not set
|
||||
# CONFIG_FSL_PQ_MDIO is not set
|
||||
CONFIG_FUJITSU_ERRATUM_010001=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
||||
# CONFIG_GIANFAR is not set
|
||||
CONFIG_GPIO_BCM_XGS_IPROC=y
|
||||
CONFIG_GPIO_BRCMSTB=y
|
||||
CONFIG_GPIO_GENERIC=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
CONFIG_GPIO_MPC8XXX=y
|
||||
CONFIG_GPIO_MXC=y
|
||||
CONFIG_GPIO_RASPBERRYPI_EXP=y
|
||||
CONFIG_GPIO_ROCKCHIP=y
|
||||
CONFIG_GPIO_THUNDERX=y
|
||||
CONFIG_GPIO_XLP=y
|
||||
CONFIG_GPIO_ZYNQ=y
|
||||
CONFIG_GPIO_ZYNQMP_MODEPIN=y
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_HI3660_MBOX=y
|
||||
CONFIG_HI6220_MBOX=y
|
||||
CONFIG_HISILICON_ERRATUM_161600802=y
|
||||
CONFIG_HISILICON_LPC=y
|
||||
CONFIG_HISI_PMU=y
|
||||
CONFIG_HISI_THERMAL=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||
# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
# CONFIG_HOTPLUG_PCI_PCIE is not set
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
|
||||
# CONFIG_HW_RANDOM_HISI is not set
|
||||
# CONFIG_HW_RANDOM_HISTB is not set
|
||||
CONFIG_HW_RANDOM_VIRTIO=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_I2C_ALTERA=y
|
||||
# CONFIG_I2C_BCM2835 is not set
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
# CONFIG_I2C_HIX5HD2 is not set
|
||||
CONFIG_I2C_IMX=y
|
||||
CONFIG_I2C_IMX_LPI2C=y
|
||||
CONFIG_I2C_RIIC=y
|
||||
# CONFIG_I2C_RZV2M is not set
|
||||
# CONFIG_I2C_SLAVE_TESTUNIT is not set
|
||||
CONFIG_I2C_SYNQUACER=y
|
||||
CONFIG_I2C_THUNDERX=y
|
||||
# CONFIG_I2C_XLP9XX is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
# CONFIG_IMX2_WDT is not set
|
||||
# CONFIG_IMX8MM_THERMAL is not set
|
||||
# CONFIG_IMX8QXP_ADC is not set
|
||||
# CONFIG_IMX93_ADC is not set
|
||||
# CONFIG_IMX_DMA is not set
|
||||
# CONFIG_IMX_DSP is not set
|
||||
CONFIG_IMX_INTMUX=y
|
||||
CONFIG_IMX_IRQSTEER=y
|
||||
CONFIG_IMX_MBOX=y
|
||||
# CONFIG_IMX_MU_MSI is not set
|
||||
CONFIG_IMX_SCU=y
|
||||
CONFIG_IMX_SCU_PD=y
|
||||
# CONFIG_IMX_SC_THERMAL is not set
|
||||
# CONFIG_IMX_SC_WDT is not set
|
||||
# CONFIG_IMX_SDMA is not set
|
||||
# CONFIG_IMX_WEIM is not set
|
||||
# CONFIG_INPUT_BBNSM_PWRKEY is not set
|
||||
# CONFIG_INPUT_HISI_POWERKEY is not set
|
||||
# CONFIG_INPUT_IBM_PANEL is not set
|
||||
# CONFIG_INTEL_STRATIX10_RSU is not set
|
||||
# CONFIG_INTEL_STRATIX10_SERVICE is not set
|
||||
CONFIG_INTERCONNECT=y
|
||||
CONFIG_INTERCONNECT_IMX=y
|
||||
CONFIG_INTERCONNECT_IMX8MM=y
|
||||
CONFIG_INTERCONNECT_IMX8MN=y
|
||||
CONFIG_INTERCONNECT_IMX8MP=y
|
||||
CONFIG_INTERCONNECT_IMX8MQ=y
|
||||
# CONFIG_IOMMUFD is not set
|
||||
# CONFIG_IOMMU_DEBUGFS is not set
|
||||
# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
|
||||
CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
|
||||
CONFIG_IOMMU_DEFAULT_PASSTHROUGH=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_DART is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
# CONFIG_IPMMU_VMSA is not set
|
||||
# CONFIG_K3_DMA is not set
|
||||
CONFIG_KCMP=y
|
||||
# CONFIG_KEYBOARD_IMX_SC_KEY is not set
|
||||
# CONFIG_KEYBOARD_SUN4I_LRADC is not set
|
||||
CONFIG_KSM=y
|
||||
# CONFIG_KUNPENG_HCCS is not set
|
||||
CONFIG_KVM=y
|
||||
CONFIG_LCD_CLASS_DEVICE=m
|
||||
# CONFIG_LCD_PLATFORM is not set
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MARVELL_10G_PHY=y
|
||||
# CONFIG_MARVELL_CN10K_DDR_PMU is not set
|
||||
# CONFIG_MARVELL_CN10K_TAD_PMU is not set
|
||||
# CONFIG_MARVELL_GTI_WDT is not set
|
||||
CONFIG_MDIO_BCM_IPROC=y
|
||||
CONFIG_MDIO_BUS_MUX_BCM_IPROC=y
|
||||
CONFIG_MDIO_SUN4I=y
|
||||
# CONFIG_MFD_ALTERA_A10SR is not set
|
||||
CONFIG_MFD_ALTERA_SYSMGR=y
|
||||
# CONFIG_MFD_AXP20X_RSB is not set
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MFD_HI655X_PMIC=y
|
||||
# CONFIG_MFD_KHADAS_MCU is not set
|
||||
CONFIG_MFD_SUN4I_GPADC=y
|
||||
# CONFIG_MFD_SUN6I_PRCM is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MFD_VEXPRESS_SYSREG=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_ARMMMCI=y
|
||||
CONFIG_MMC_BCM2835=y
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_CAVIUM_THUNDERX=y
|
||||
CONFIG_MMC_DW=y
|
||||
# CONFIG_MMC_DW_BLUEFIELD is not set
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
# CONFIG_MMC_DW_HI3798CV200 is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
# CONFIG_MMC_DW_PCI is not set
|
||||
CONFIG_MMC_DW_PLTFM=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
# CONFIG_MMC_MXC is not set
|
||||
CONFIG_MMC_RICOH_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_ACPI=y
|
||||
CONFIG_MMC_SDHCI_CADENCE=y
|
||||
CONFIG_MMC_SDHCI_ESDHC_IMX=y
|
||||
CONFIG_MMC_SDHCI_IPROC=y
|
||||
CONFIG_MMC_SDHCI_OF_ESDHC=y
|
||||
CONFIG_MMC_SDHCI_PCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHI=y
|
||||
CONFIG_MMC_SDHI_INTERNAL_DMAC=y
|
||||
# CONFIG_MMC_SDHI_SYS_DMAC is not set
|
||||
# CONFIG_MMC_SH_MMCIF is not set
|
||||
CONFIG_MMC_SUNXI=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
# CONFIG_MVNETA is not set
|
||||
# CONFIG_MVPP2 is not set
|
||||
# CONFIG_MV_XOR is not set
|
||||
# CONFIG_MX3_IPU is not set
|
||||
CONFIG_MXC_CLK=y
|
||||
CONFIG_MXC_CLK_SCU=y
|
||||
# CONFIG_MXS_DMA is not set
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
# CONFIG_NET_VENDOR_ALLWINNER is not set
|
||||
CONFIG_NODES_SHIFT=4
|
||||
CONFIG_NOP_USB_XCEIV=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_NO_HZ_COMMON=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
|
||||
# CONFIG_NVHE_EL2_DEBUG is not set
|
||||
CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
|
||||
# CONFIG_NVMEM_IMX_IIM is not set
|
||||
# CONFIG_NVMEM_IMX_OCOTP_ELE is not set
|
||||
CONFIG_NVMEM_IMX_OCOTP_SCU=y
|
||||
# CONFIG_NVMEM_LAYERSCAPE_SFP is not set
|
||||
CONFIG_NVMEM_ROCKCHIP_EFUSE=y
|
||||
# CONFIG_NVMEM_ROCKCHIP_OTP is not set
|
||||
# CONFIG_NVMEM_SNVS_LPGPR is not set
|
||||
# CONFIG_NVMEM_SUNXI_SID is not set
|
||||
# CONFIG_NVMEM_ZYNQMP is not set
|
||||
CONFIG_PCC=y
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIEASPM=y
|
||||
CONFIG_PCIEASPM_DEFAULT=y
|
||||
# CONFIG_PCIEASPM_PERFORMANCE is not set
|
||||
# CONFIG_PCIEASPM_POWERSAVE is not set
|
||||
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_ARMADA_8K=y
|
||||
CONFIG_PCIE_BRCMSTB=y
|
||||
CONFIG_PCIE_HISI_STB=y
|
||||
CONFIG_PCIE_IPROC_MSI=y
|
||||
CONFIG_PCIE_IPROC_PLATFORM=y
|
||||
CONFIG_PCIE_LAYERSCAPE=y
|
||||
CONFIG_PCIE_MOBIVEIL_PLAT=y
|
||||
# CONFIG_PCIE_RCAR_EP is not set
|
||||
CONFIG_PCIE_RCAR_HOST=y
|
||||
CONFIG_PCIE_ROCKCHIP=y
|
||||
# CONFIG_PCIE_ROCKCHIP_DW_HOST is not set
|
||||
CONFIG_PCIE_ROCKCHIP_HOST=y
|
||||
CONFIG_PCIE_XILINX_CPM=y
|
||||
CONFIG_PCIE_XILINX_NWL=y
|
||||
CONFIG_PCI_AARDVARK=y
|
||||
CONFIG_PCI_HISI=y
|
||||
CONFIG_PCI_HOST_THUNDER_ECAM=y
|
||||
CONFIG_PCI_HOST_THUNDER_PEM=y
|
||||
CONFIG_PCI_IMX6=y
|
||||
CONFIG_PCI_IMX6_HOST=y
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_PCI_LAYERSCAPE=y
|
||||
CONFIG_PCI_PASID=y
|
||||
# CONFIG_PCI_RCAR_GEN2 is not set
|
||||
CONFIG_PHY_BCM_SR_PCIE=y
|
||||
CONFIG_PHY_BCM_SR_USB=y
|
||||
CONFIG_PHY_BRCM_SATA=y
|
||||
CONFIG_PHY_BRCM_USB=y
|
||||
CONFIG_PHY_FSL_IMX8MQ_USB=y
|
||||
CONFIG_PHY_FSL_IMX8M_PCIE=y
|
||||
# CONFIG_PHY_FSL_LYNX_28G is not set
|
||||
CONFIG_PHY_HI3660_USB=y
|
||||
CONFIG_PHY_HI3670_PCIE=y
|
||||
CONFIG_PHY_HI3670_USB=y
|
||||
CONFIG_PHY_HI6220_USB=y
|
||||
CONFIG_PHY_HISI_INNO_USB2=y
|
||||
# CONFIG_PHY_HISTB_COMBPHY is not set
|
||||
# CONFIG_PHY_MIXEL_LVDS_PHY is not set
|
||||
CONFIG_PHY_MVEBU_A3700_COMPHY=y
|
||||
CONFIG_PHY_MVEBU_A3700_UTMI=y
|
||||
CONFIG_PHY_MVEBU_A38X_COMPHY=y
|
||||
CONFIG_PHY_MVEBU_CP110_COMPHY=y
|
||||
CONFIG_PHY_NS2_PCIE=y
|
||||
CONFIG_PHY_NS2_USB_DRD=y
|
||||
# CONFIG_PHY_R8A779F0_ETHERNET_SERDES is not set
|
||||
# CONFIG_PHY_RCAR_GEN2 is not set
|
||||
CONFIG_PHY_RCAR_GEN3_PCIE=y
|
||||
CONFIG_PHY_RCAR_GEN3_USB2=y
|
||||
CONFIG_PHY_RCAR_GEN3_USB3=y
|
||||
# CONFIG_PHY_ROCKCHIP_DP is not set
|
||||
# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
|
||||
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
# CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY is not set
|
||||
CONFIG_PHY_ROCKCHIP_PCIE=y
|
||||
CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
|
||||
CONFIG_PHY_ROCKCHIP_TYPEC=y
|
||||
# CONFIG_PHY_ROCKCHIP_USB is not set
|
||||
CONFIG_PHY_SUN4I_USB=y
|
||||
CONFIG_PHY_SUN50I_USB3=y
|
||||
# CONFIG_PHY_SUN6I_MIPI_DPHY is not set
|
||||
CONFIG_PHY_SUN9I_USB=y
|
||||
# CONFIG_PHY_XILINX_ZYNQMP is not set
|
||||
CONFIG_PINCTRL_IMX=y
|
||||
CONFIG_PINCTRL_IMX8DXL=y
|
||||
CONFIG_PINCTRL_IMX8MM=y
|
||||
CONFIG_PINCTRL_IMX8MN=y
|
||||
CONFIG_PINCTRL_IMX8MP=y
|
||||
CONFIG_PINCTRL_IMX8MQ=y
|
||||
CONFIG_PINCTRL_IMX8QM=y
|
||||
CONFIG_PINCTRL_IMX8QXP=y
|
||||
CONFIG_PINCTRL_IMX8ULP=y
|
||||
CONFIG_PINCTRL_IMX93=y
|
||||
# CONFIG_PINCTRL_IMXRT1050 is not set
|
||||
# CONFIG_PINCTRL_IMXRT1170 is not set
|
||||
CONFIG_PINCTRL_IMX_SCU=y
|
||||
CONFIG_PINCTRL_IPROC_GPIO=y
|
||||
CONFIG_PINCTRL_NS2_MUX=y
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SUN20I_D1 is not set
|
||||
CONFIG_PINCTRL_SUN4I_A10=y
|
||||
CONFIG_PINCTRL_SUN50I_A100=y
|
||||
CONFIG_PINCTRL_SUN50I_A100_R=y
|
||||
CONFIG_PINCTRL_SUN50I_A64=y
|
||||
CONFIG_PINCTRL_SUN50I_A64_R=y
|
||||
CONFIG_PINCTRL_SUN50I_H5=y
|
||||
CONFIG_PINCTRL_SUN50I_H6=y
|
||||
CONFIG_PINCTRL_SUN50I_H616=y
|
||||
CONFIG_PINCTRL_SUN50I_H616_R=y
|
||||
CONFIG_PINCTRL_SUN50I_H6_R=y
|
||||
CONFIG_PINCTRL_SUN5I=y
|
||||
# CONFIG_PINCTRL_SUN6I_A31 is not set
|
||||
# CONFIG_PINCTRL_SUN6I_A31_R is not set
|
||||
# CONFIG_PINCTRL_SUN8I_A23 is not set
|
||||
# CONFIG_PINCTRL_SUN8I_A23_R is not set
|
||||
# CONFIG_PINCTRL_SUN8I_A33 is not set
|
||||
# CONFIG_PINCTRL_SUN8I_A83T is not set
|
||||
# CONFIG_PINCTRL_SUN8I_A83T_R is not set
|
||||
# CONFIG_PINCTRL_SUN8I_H3 is not set
|
||||
# CONFIG_PINCTRL_SUN8I_H3_R is not set
|
||||
# CONFIG_PINCTRL_SUN8I_V3S is not set
|
||||
# CONFIG_PINCTRL_SUN9I_A80 is not set
|
||||
# CONFIG_PINCTRL_SUN9I_A80_R is not set
|
||||
CONFIG_PINCTRL_ZYNQMP=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_CLK=y
|
||||
CONFIG_PM_GENERIC_DOMAINS=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_HISI=y
|
||||
CONFIG_POWER_RESET_VEXPRESS=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_PTP_1588_CLOCK_DTE is not set
|
||||
# CONFIG_PWM_BCM2835 is not set
|
||||
CONFIG_QCOM_FALKOR_ERRATUM_1003=y
|
||||
CONFIG_QCOM_FALKOR_ERRATUM_1009=y
|
||||
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
|
||||
CONFIG_QCOM_QDF2400_ERRATUM_0065=y
|
||||
CONFIG_QORIQ_THERMAL=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
CONFIG_RANDOMIZE_MODULE_REGION_FULL=y
|
||||
CONFIG_RANDSTRUCT_NONE=y
|
||||
CONFIG_RASPBERRYPI_FIRMWARE=y
|
||||
CONFIG_RASPBERRYPI_POWER=y
|
||||
# CONFIG_RAVB is not set
|
||||
CONFIG_RCAR_DMAC=y
|
||||
# CONFIG_RCAR_GEN3_THERMAL is not set
|
||||
# CONFIG_RCAR_THERMAL is not set
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_ANATOP=y
|
||||
CONFIG_REGULATOR_AXP20X=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
CONFIG_REGULATOR_HI655X=y
|
||||
CONFIG_REGULATOR_PFUZE100=y
|
||||
# CONFIG_REGULATOR_VEXPRESS is not set
|
||||
CONFIG_RELOCATABLE=y
|
||||
# CONFIG_RENESAS_ETHER_SWITCH is not set
|
||||
CONFIG_RENESAS_OSTM=y
|
||||
# CONFIG_RENESAS_RZAWDT is not set
|
||||
# CONFIG_RENESAS_RZG2LWDT is not set
|
||||
# CONFIG_RENESAS_RZN1WDT is not set
|
||||
CONFIG_RENESAS_USB_DMAC=y
|
||||
# CONFIG_RENESAS_WDT is not set
|
||||
# CONFIG_RESET_BRCMSTB is not set
|
||||
CONFIG_RESET_IMX7=y
|
||||
# CONFIG_RESET_RASPBERRYPI is not set
|
||||
CONFIG_RESET_RZG2L_USBPHY_CTRL=y
|
||||
CONFIG_ROCKCHIP_IODOMAIN=y
|
||||
CONFIG_ROCKCHIP_IOMMU=y
|
||||
# CONFIG_ROCKCHIP_MBOX is not set
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_SARADC is not set
|
||||
# CONFIG_ROCKCHIP_THERMAL is not set
|
||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
||||
# CONFIG_RTC_DRV_BBNSM is not set
|
||||
# CONFIG_RTC_DRV_BRCMSTB is not set
|
||||
# CONFIG_RTC_DRV_FSL_FTM_ALARM is not set
|
||||
# CONFIG_RTC_DRV_IMXDI is not set
|
||||
# CONFIG_RTC_DRV_IMX_SC is not set
|
||||
CONFIG_RTC_DRV_MV=y
|
||||
# CONFIG_RTC_DRV_MXC is not set
|
||||
# CONFIG_RTC_DRV_MXC_V2 is not set
|
||||
# CONFIG_RTC_DRV_SH is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
# CONFIG_RZG2L_ADC is not set
|
||||
# CONFIG_RZG2L_THERMAL is not set
|
||||
CONFIG_RZ_DMAC=y
|
||||
CONFIG_RZ_MTU3=y
|
||||
CONFIG_SATA_SIL24=y
|
||||
# CONFIG_SCHED_CORE is not set
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
# CONFIG_SENSORS_ARM_SCPI is not set
|
||||
CONFIG_SERIAL_8250_BCM2835AUX=y
|
||||
CONFIG_SERIAL_8250_BCM7271=y
|
||||
# CONFIG_SERIAL_8250_EXAR is not set
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_PCI=y
|
||||
CONFIG_SERIAL_FSL_LINFLEXUART=y
|
||||
CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
|
||||
CONFIG_SERIAL_FSL_LPUART=y
|
||||
CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
CONFIG_SERIAL_IMX_EARLYCON=y
|
||||
CONFIG_SERIAL_MVEBU_CONSOLE=y
|
||||
CONFIG_SERIAL_MVEBU_UART=y
|
||||
CONFIG_SERIAL_SAMSUNG=y
|
||||
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_SH_SCI_DMA=y
|
||||
CONFIG_SERIAL_SH_SCI_EARLYCON=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=18
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_SND_SOC_RCAR is not set
|
||||
# CONFIG_SND_SOC_RZ is not set
|
||||
# CONFIG_SND_SOC_SH4_FSI is not set
|
||||
# CONFIG_SND_SUN4I_I2S is not set
|
||||
# CONFIG_SND_SUN50I_CODEC_ANALOG is not set
|
||||
# CONFIG_SND_SUN50I_DMIC is not set
|
||||
# CONFIG_SND_SUN8I_CODEC is not set
|
||||
# CONFIG_SND_SUN8I_CODEC_ANALOG is not set
|
||||
# CONFIG_SNI_NETSEC is not set
|
||||
CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
|
||||
CONFIG_SOC_IMX8M=y
|
||||
CONFIG_SOC_IMX9=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPI_ARMADA_3700=y
|
||||
# CONFIG_SPI_BCM2835 is not set
|
||||
CONFIG_SPI_FSL_LPSPI=y
|
||||
# CONFIG_SPI_FSL_QUADSPI is not set
|
||||
# CONFIG_SPI_HISI_KUNPENG is not set
|
||||
# CONFIG_SPI_HISI_SFC is not set
|
||||
# CONFIG_SPI_HISI_SFC_V3XX is not set
|
||||
CONFIG_SPI_IMX=y
|
||||
# CONFIG_SPI_ROCKCHIP_SFC is not set
|
||||
# CONFIG_SPI_RSPI is not set
|
||||
# CONFIG_SPI_RZV2M_CSI is not set
|
||||
# CONFIG_SPI_SH_HSPI is not set
|
||||
# CONFIG_SPI_SH_MSIOF is not set
|
||||
# CONFIG_SPI_SUN4I is not set
|
||||
# CONFIG_SPI_SUN6I is not set
|
||||
# CONFIG_SPI_SYNQUACER is not set
|
||||
CONFIG_SPI_THUNDERX=y
|
||||
# CONFIG_SPI_XLP is not set
|
||||
# CONFIG_SSIF_IPMI_BMC is not set
|
||||
CONFIG_STUB_CLK_HI3660=y
|
||||
CONFIG_STUB_CLK_HI6220=y
|
||||
# CONFIG_SUN20I_GPADC is not set
|
||||
# CONFIG_SUN20I_PPU is not set
|
||||
CONFIG_SUN50I_A100_CCU=y
|
||||
CONFIG_SUN50I_A100_R_CCU=y
|
||||
CONFIG_SUN50I_A64_CCU=y
|
||||
CONFIG_SUN50I_H616_CCU=y
|
||||
CONFIG_SUN50I_H6_CCU=y
|
||||
CONFIG_SUN50I_H6_R_CCU=y
|
||||
CONFIG_SUN50I_IOMMU=y
|
||||
CONFIG_SUN6I_MSGBOX=y
|
||||
CONFIG_SUN6I_RTC_CCU=y
|
||||
# CONFIG_SUN8I_A83T_CCU is not set
|
||||
CONFIG_SUN8I_DE2_CCU=y
|
||||
# CONFIG_SUN8I_H3_CCU is not set
|
||||
CONFIG_SUN8I_R_CCU=y
|
||||
CONFIG_SUN8I_THERMAL=y
|
||||
CONFIG_SUNXI_CCU=y
|
||||
CONFIG_SUNXI_RSB=y
|
||||
CONFIG_SUNXI_WATCHDOG=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
# CONFIG_TCG_TIS_SYNQUACER is not set
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
# CONFIG_THUNDERX2_PMU is not set
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
|
||||
# CONFIG_TURRIS_MOX_RWTM is not set
|
||||
CONFIG_TYPEC=y
|
||||
# CONFIG_TYPEC_ANX7411 is not set
|
||||
# CONFIG_TYPEC_DP_ALTMODE is not set
|
||||
# CONFIG_TYPEC_FUSB302 is not set
|
||||
# CONFIG_TYPEC_HD3SS3220 is not set
|
||||
# CONFIG_TYPEC_MUX_FSA4480 is not set
|
||||
# CONFIG_TYPEC_MUX_GPIO_SBU is not set
|
||||
# CONFIG_TYPEC_MUX_NB7VPQ904M is not set
|
||||
# CONFIG_TYPEC_MUX_PI3USB30532 is not set
|
||||
# CONFIG_TYPEC_RT1711H is not set
|
||||
# CONFIG_TYPEC_RT1719 is not set
|
||||
# CONFIG_TYPEC_STUSB160X is not set
|
||||
CONFIG_TYPEC_TCPCI=y
|
||||
# CONFIG_TYPEC_TCPCI_MAXIM is not set
|
||||
CONFIG_TYPEC_TCPM=y
|
||||
# CONFIG_TYPEC_TPS6598X is not set
|
||||
# CONFIG_TYPEC_WUSB3801 is not set
|
||||
# CONFIG_UACCE is not set
|
||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
||||
# CONFIG_USB_BRCMSTB is not set
|
||||
# CONFIG_USB_CDNS2_UDC is not set
|
||||
CONFIG_USB_CHIPIDEA=y
|
||||
CONFIG_USB_CHIPIDEA_GENERIC=y
|
||||
CONFIG_USB_CHIPIDEA_HOST=y
|
||||
CONFIG_USB_CHIPIDEA_IMX=y
|
||||
CONFIG_USB_CHIPIDEA_PCI=y
|
||||
CONFIG_USB_CHIPIDEA_UDC=y
|
||||
CONFIG_USB_DWC3=y
|
||||
CONFIG_USB_DWC3_DUAL_ROLE=y
|
||||
# CONFIG_USB_DWC3_GADGET is not set
|
||||
CONFIG_USB_DWC3_HAPS=y
|
||||
# CONFIG_USB_DWC3_HOST is not set
|
||||
CONFIG_USB_DWC3_IMX8MP=y
|
||||
# CONFIG_USB_DWC3_OF_SIMPLE is not set
|
||||
CONFIG_USB_DWC3_PCI=y
|
||||
# CONFIG_USB_DWC3_ULPI is not set
|
||||
CONFIG_USB_DWC3_XILINX=y
|
||||
CONFIG_USB_EHCI_FSL=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_ORION=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
# CONFIG_USB_EMXX is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_MXS_PHY=y
|
||||
CONFIG_USB_OHCI_EXYNOS=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_OTG=y
|
||||
CONFIG_USB_OTG_FSM=y
|
||||
CONFIG_USB_RENESAS_USB3=y
|
||||
CONFIG_USB_RENESAS_USBF=y
|
||||
CONFIG_USB_RENESAS_USBHS=y
|
||||
CONFIG_USB_RENESAS_USBHS_HCD=y
|
||||
CONFIG_USB_RENESAS_USBHS_UDC=y
|
||||
CONFIG_USB_RZV2M_USB3DRD=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_HISTB=y
|
||||
CONFIG_USB_XHCI_MVEBU=y
|
||||
CONFIG_USB_XHCI_PLATFORM=y
|
||||
# CONFIG_USB_XHCI_RCAR is not set
|
||||
CONFIG_USB_XHCI_RZV2M=y
|
||||
CONFIG_VEXPRESS_CONFIG=y
|
||||
# CONFIG_VFIO_AMBA is not set
|
||||
CONFIG_VIDEOMODE_HELPERS=y
|
||||
# CONFIG_VIDEO_IMX7_CSI is not set
|
||||
# CONFIG_VIDEO_IMX8MQ_MIPI_CSI2 is not set
|
||||
# CONFIG_VIDEO_IMX8_ISI is not set
|
||||
# CONFIG_VIDEO_RZG2L_CRU is not set
|
||||
# CONFIG_VIDEO_RZG2L_CSI2 is not set
|
||||
CONFIG_VIRTIO_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_VIRTIO_IOMMU is not set
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_WDAT_WDT=y
|
||||
# CONFIG_XILINX_AMS is not set
|
||||
# CONFIG_XILINX_INTC is not set
|
||||
CONFIG_XLNX_EVENT_MANAGER=y
|
||||
CONFIG_ZONE_DMA32=y
|
||||
CONFIG_ZYNQMP_FIRMWARE=y
|
||||
# CONFIG_ZYNQMP_FIRMWARE_DEBUG is not set
|
||||
CONFIG_ZYNQMP_PM_DOMAINS=y
|
||||
CONFIG_ZYNQMP_POWER=y
|
||||
7
target/linux/armsr/armv8/target.mk
Normal file
7
target/linux/armsr/armv8/target.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
ARCH:=aarch64
|
||||
SUBTARGET:=armv8
|
||||
BOARDNAME:=64-bit (armv8) machines
|
||||
|
||||
define Target/Description
|
||||
Build multi-platform images for the ARMv8 instruction set architecture
|
||||
endef
|
||||
8
target/linux/armsr/base-files.mk
Normal file
8
target/linux/armsr/base-files.mk
Normal file
@@ -0,0 +1,8 @@
|
||||
GRUB_SERIAL:=$(call qstrip,$(CONFIG_TARGET_SERIAL))
|
||||
ifeq ($(GRUB_SERIAL),)
|
||||
$(error This platform requires CONFIG_TARGET_SERIAL be set!)
|
||||
endif
|
||||
|
||||
define Package/base-files/install-target
|
||||
$(SED) "s#@GRUB_SERIAL@#$(GRUB_SERIAL)#" $(1)/etc/inittab
|
||||
endef
|
||||
19
target/linux/armsr/base-files/etc/board.d/01_led
Normal file
19
target/linux/armsr/base-files/etc/board.d/01_led
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
traverse,ten64)
|
||||
ucidef_set_led_netdev "sfp1" "SFP 1" "ten64:green:sfp1:down" "eth8" "link tx rx"
|
||||
ucidef_set_led_netdev "sfp2" "SFP 2" "ten64:green:sfp2:up" "eth9" "link tx rx"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
18
target/linux/armsr/base-files/etc/board.d/02_network
Normal file
18
target/linux/armsr/base-files/etc/board.d/02_network
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
. /lib/functions/system.sh
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
board_config_update
|
||||
|
||||
case "$(board_name)" in
|
||||
traverse,ten64)
|
||||
ucidef_set_interface_lan "eth0 eth1 eth2 eth3"
|
||||
ucidef_set_interface_wan "eth6"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
31
target/linux/armsr/base-files/etc/board.d/03_gpio_switches
Normal file
31
target/linux/armsr/base-files/etc/board.d/03_gpio_switches
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
. /lib/functions/uci-defaults.sh
|
||||
|
||||
KERNEL_MAJOR=$(uname -r | awk -F '.' '{print $1}')
|
||||
KERNEL_MINOR=$(uname -r | awk -F '.' '{print $2}')
|
||||
|
||||
board_config_update
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
traverse,ten64)
|
||||
if [ "${KERNEL_MAJOR}" -ge "6" ] && [ "${KERNEL_MINOR}" -ge "6" ]; then
|
||||
I2C_GPIO_BASE=640
|
||||
else
|
||||
I2C_GPIO_BASE=368
|
||||
fi
|
||||
ucidef_add_gpio_switch "lte_reset" "Cell Modem Reset" "$(($I2C_GPIO_BASE + 8))"
|
||||
ucidef_add_gpio_switch "lte_power" "Cell Modem Power" "$(($I2C_GPIO_BASE + 9))"
|
||||
ucidef_add_gpio_switch "lte_disable" "Cell Modem Airplane mode" "$((I2C_GPIO_BASE + 10))"
|
||||
ucidef_add_gpio_switch "gnss_disable" "Cell Modem Disable GNSS receiver" "$(($I2C_GPIO_BASE + 11))"
|
||||
ucidef_add_gpio_switch "lower_sfp_txidsable" "Lower SFP+ TX Disable" "$(($I2C_GPIO_BASE + 1))"
|
||||
ucidef_add_gpio_switch "upper_sfp_txdisable" "Upper SFP+ TX Disable" "$(($I2C_GPIO_BASE + 5))"
|
||||
;;
|
||||
esac
|
||||
|
||||
board_config_flush
|
||||
|
||||
exit 0
|
||||
10
target/linux/armsr/base-files/etc/inittab
Normal file
10
target/linux/armsr/base-files/etc/inittab
Normal file
@@ -0,0 +1,10 @@
|
||||
::sysinit:/etc/init.d/rcS S boot
|
||||
::shutdown:/etc/init.d/rcS K shutdown
|
||||
ttyAMA0::askfirst:/usr/libexec/login.sh
|
||||
@GRUB_SERIAL@::askfirst:/usr/libexec/login.sh
|
||||
tty0::askfirst:/usr/libexec/login.sh
|
||||
hvc0::askfirst:/usr/libexec/login.sh
|
||||
ttymxc0::askfirst:/usr/libexec/login.sh
|
||||
ttymxc1::askfirst:/usr/libexec/login.sh
|
||||
ttymxc2::askfirst:/usr/libexec/login.sh
|
||||
ttySC0::askfirst:/usr/libexec/login.sh
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# This script migrates GPIO switch pin numbers
|
||||
# from kernel versions prior to 6.6
|
||||
# See https://lists.openwrt.org/pipermail/openwrt-devel/2024-March/042448.html
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
ten64_update_gpioswitch_num() {
|
||||
local section="$1"
|
||||
config_get gpio_pin "${section}" gpio_pin
|
||||
config_get gpio_name "${section}" name
|
||||
if [ -z "${gpio_pin}" ]; then
|
||||
return
|
||||
fi
|
||||
local this_pin_name=$(uci get "system.${section}.name")
|
||||
if [ "${gpio_pin}" -lt 640 ]; then
|
||||
new_pin_value=$(( $gpio_pin + 272 ))
|
||||
uci set "system.${section}.gpio_pin=${new_pin_value}"
|
||||
fi
|
||||
}
|
||||
|
||||
board=$(board_name)
|
||||
if [ "${board}" != "traverse,ten64" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
KERNEL_MINOR=$(uname -r | awk -F '.' '{print $2}')
|
||||
if [ "${KERNEL_MINOR}" -lt "6" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
config_load system
|
||||
config_foreach ten64_update_gpioswitch_num gpio_switch
|
||||
|
||||
exit 0
|
||||
52
target/linux/armsr/base-files/lib/preinit/01_sysinfo_acpi
Normal file
52
target/linux/armsr/base-files/lib/preinit/01_sysinfo_acpi
Normal file
@@ -0,0 +1,52 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
sanitize_name_arm64() {
|
||||
sed -e '
|
||||
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;
|
||||
s/[^a-z0-9_-]\+/-/g;
|
||||
s/^-//;
|
||||
s/-$//;
|
||||
' "$@"
|
||||
}
|
||||
|
||||
do_sysinfo_arm64() {
|
||||
local vendor product file
|
||||
|
||||
for file in sys_vendor board_vendor; do
|
||||
vendor="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)"
|
||||
case "$vendor" in
|
||||
empty | \
|
||||
System\ manufacturer | \
|
||||
To\ [bB]e\ [fF]illed\ [bB]y\ O\.E\.M\.)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
[ -n "$vendor" ] && break
|
||||
done
|
||||
|
||||
for file in product_name board_name; do
|
||||
product="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)"
|
||||
case "$vendor:$product" in
|
||||
?*:empty | \
|
||||
?*:System\ Product\ Name | \
|
||||
?*:To\ [bB]e\ [fF]illed\ [bB]y\ O\.E\.M\.)
|
||||
continue
|
||||
;;
|
||||
?*:?*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -d "/sys/firmware/devicetree/base" ] && return
|
||||
|
||||
[ -n "$vendor" -a -n "$product" ] || return
|
||||
|
||||
mkdir -p /tmp/sysinfo
|
||||
|
||||
echo "$vendor $product" > /tmp/sysinfo/model
|
||||
|
||||
sanitize_name_arm64 /tmp/sysinfo/model > /tmp/sysinfo/board_name
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main do_sysinfo_arm64
|
||||
19
target/linux/armsr/base-files/lib/preinit/79_move_config
Normal file
19
target/linux/armsr/base-files/lib/preinit/79_move_config
Normal file
@@ -0,0 +1,19 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
move_config() {
|
||||
local partdev parttype=ext4
|
||||
|
||||
. /lib/upgrade/common.sh
|
||||
|
||||
if export_bootdevice && export_partdevice partdev 1; then
|
||||
part_magic_fat "/dev/$partdev" && parttype=vfat
|
||||
if mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt; then
|
||||
if [ -f "/mnt/$BACKUP_FILE" ]; then
|
||||
mv -f "/mnt/$BACKUP_FILE" /
|
||||
fi
|
||||
umount /mnt
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_mount_root move_config
|
||||
165
target/linux/armsr/base-files/lib/upgrade/platform.sh
Normal file
165
target/linux/armsr/base-files/lib/upgrade/platform.sh
Normal file
@@ -0,0 +1,165 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
RAMFS_COPY_BIN="/usr/sbin/blkid"
|
||||
|
||||
platform_check_image() {
|
||||
local board=$(board_name)
|
||||
local diskdev partdev diff
|
||||
[ "$#" -gt 1 ] && return 1
|
||||
|
||||
v "Board is ${board}"
|
||||
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
v "platform_check_image: Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
v "Extract boot sector from the image"
|
||||
get_image_dd "$1" of=/tmp/image.bs count=63 bs=512b
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
|
||||
rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
|
||||
|
||||
if [ -n "$diff" ]; then
|
||||
v "Partition layout has changed. Full image will be written."
|
||||
ask_bool 0 "Abort" && exit 1
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
platform_copy_config() {
|
||||
local partdev parttype=ext4
|
||||
|
||||
if export_partdevice partdev 1; then
|
||||
part_magic_fat "/dev/$partdev" && parttype=vfat
|
||||
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt
|
||||
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
|
||||
umount /mnt
|
||||
else
|
||||
v "ERROR: Unable to find partition to copy config data to"
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
}
|
||||
|
||||
# To avoid writing over any firmware
|
||||
# files (e.g ubootefi.var or firmware/X/ aka EBBR)
|
||||
# Copy efi/openwrt and efi/boot from the new image
|
||||
# to the existing ESP
|
||||
platform_do_upgrade_efi_system_partition() {
|
||||
local image_file=$1
|
||||
local target_partdev=$2
|
||||
local image_efisp_start=$3
|
||||
local image_efisp_size=$4
|
||||
|
||||
v "Updating ESP on ${target_partdev}"
|
||||
NEW_ESP_DIR="/mnt/new_esp_loop"
|
||||
CUR_ESP_DIR="/mnt/cur_esp"
|
||||
mkdir "${NEW_ESP_DIR}"
|
||||
mkdir "${CUR_ESP_DIR}"
|
||||
|
||||
get_image_dd "$image_file" of="/tmp/new_efi_sys_part.img" \
|
||||
skip="$image_efisp_start" count="$image_efisp_size"
|
||||
|
||||
mount -t vfat -o loop -o ro /tmp/new_efi_sys_part.img "${NEW_ESP_DIR}"
|
||||
if [ ! -d "${NEW_ESP_DIR}/efi/boot" ]; then
|
||||
v "ERROR: Image does not contain EFI boot files (/efi/boot)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
mount -t vfat "/dev/$partdev" "${CUR_ESP_DIR}"
|
||||
|
||||
for d in $(find "${NEW_ESP_DIR}/efi/" -mindepth 1 -maxdepth 1 -type d); do
|
||||
v "Copying ${d}"
|
||||
newdir_bname=$(basename "${d}")
|
||||
rm -rf "${CUR_ESP_DIR}/efi/${newdir_bname}"
|
||||
cp -r "${d}" "${CUR_ESP_DIR}/efi"
|
||||
done
|
||||
|
||||
umount "${NEW_ESP_DIR}"
|
||||
umount "${CUR_ESP_DIR}"
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
local diskdev partdev diff
|
||||
|
||||
export_bootdevice && export_partdevice diskdev 0 || {
|
||||
v "platform_do_upgrade: Unable to determine upgrade device"
|
||||
return 1
|
||||
}
|
||||
|
||||
sync
|
||||
|
||||
if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
|
||||
get_partitions "/dev/$diskdev" bootdisk
|
||||
|
||||
v "Extract boot sector from the image"
|
||||
get_image_dd "$1" of=/tmp/image.bs count=63 bs=512b
|
||||
|
||||
get_partitions /tmp/image.bs image
|
||||
|
||||
#compare tables
|
||||
diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
|
||||
else
|
||||
diff=1
|
||||
fi
|
||||
|
||||
# Only change the partition table if sysupgrade -p is set,
|
||||
# otherwise doing so could interfere with embedded "single storage"
|
||||
# (e.g SoC boot from SD card) setups, as well as other user
|
||||
# created storage (like uvol)
|
||||
if [ -n "$diff" ] && [ "${UPGRADE_OPT_SAVE_PARTITIONS}" = "0" ]; then
|
||||
# Need to remove partitions before dd, otherwise the partitions
|
||||
# that are added after will have minor numbers offset
|
||||
partx -d - "/dev/$diskdev"
|
||||
|
||||
get_image_dd "$1" of="/dev/$diskdev" bs=4096 conv=fsync
|
||||
|
||||
# Separate removal and addtion is necessary; otherwise, partition 1
|
||||
# will be missing if it overlaps with the old partition 2
|
||||
partx -a - "/dev/$diskdev"
|
||||
|
||||
return 0
|
||||
fi
|
||||
|
||||
#iterate over each partition from the image and write it to the boot disk
|
||||
while read part start size; do
|
||||
if export_partdevice partdev $part; then
|
||||
v "Writing image to /dev/$partdev..."
|
||||
if [ "$part" = "1" ]; then
|
||||
platform_do_upgrade_efi_system_partition \
|
||||
$1 $partdev $start $size || return 1
|
||||
else
|
||||
v "Normal partition, doing DD"
|
||||
get_image_dd "$1" of="/dev/$partdev" ibs=512 obs=1M skip="$start" \
|
||||
count="$size" conv=fsync
|
||||
fi
|
||||
else
|
||||
v "Unable to find partition $part device, skipped."
|
||||
fi
|
||||
done < /tmp/partmap.image
|
||||
|
||||
local parttype=ext4
|
||||
|
||||
if (blkid > /dev/null) && export_partdevice partdev 1; then
|
||||
part_magic_fat "/dev/$partdev" && parttype=vfat
|
||||
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt
|
||||
if export_partdevice partdev 2; then
|
||||
THIS_PART_BLKID=$(blkid -o value -s PARTUUID "/dev/${partdev}")
|
||||
v "Setting rootfs PARTUUID=${THIS_PART_BLKID}"
|
||||
sed -i "s/\(PARTUUID=\)[a-f0-9-]\+/\1${THIS_PART_BLKID}/ig" \
|
||||
/mnt/efi/openwrt/grub.cfg
|
||||
fi
|
||||
umount /mnt
|
||||
fi
|
||||
# Provide time for the storage medium to flush before system reset
|
||||
# (despite the sync/umount it appears NVMe etc. do it in the background)
|
||||
sleep 5
|
||||
}
|
||||
341
target/linux/armsr/config-6.6
Normal file
341
target/linux/armsr/config-6.6
Normal file
@@ -0,0 +1,341 @@
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_9P_FS=y
|
||||
# CONFIG_9P_FS_POSIX_ACL is not set
|
||||
# CONFIG_9P_FS_SECURITY is not set
|
||||
# CONFIG_A64FX_DIAG is not set
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI_AC=y
|
||||
CONFIG_ACPI_APEI=y
|
||||
CONFIG_ACPI_APEI_EINJ=y
|
||||
# CONFIG_ACPI_APEI_ERST_DEBUG is not set
|
||||
CONFIG_ACPI_APEI_GHES=y
|
||||
CONFIG_ACPI_APEI_MEMORY_FAILURE=y
|
||||
CONFIG_ACPI_APEI_PCIEAER=y
|
||||
CONFIG_ACPI_BATTERY=y
|
||||
# CONFIG_ACPI_BGRT is not set
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_CCA_REQUIRED=y
|
||||
CONFIG_ACPI_CONTAINER=y
|
||||
CONFIG_ACPI_CPPC_CPUFREQ=y
|
||||
# CONFIG_ACPI_DEBUG is not set
|
||||
# CONFIG_ACPI_DEBUGGER is not set
|
||||
# CONFIG_ACPI_DOCK is not set
|
||||
# CONFIG_ACPI_EC_DEBUGFS is not set
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_GENERIC_GSI=y
|
||||
CONFIG_ACPI_GTDT=y
|
||||
CONFIG_ACPI_HOTPLUG_CPU=y
|
||||
CONFIG_ACPI_I2C_OPREGION=y
|
||||
CONFIG_ACPI_IORT=y
|
||||
CONFIG_ACPI_MCFG=y
|
||||
# CONFIG_ACPI_PCI_SLOT is not set
|
||||
# CONFIG_ACPI_PFRUT is not set
|
||||
CONFIG_ACPI_PPTT=y
|
||||
CONFIG_ACPI_PRMT=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_PROCESSOR_IDLE=y
|
||||
CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y
|
||||
CONFIG_ACPI_SPCR_TABLE=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
# CONFIG_ACPI_TINY_POWER_BUTTON is not set
|
||||
# CONFIG_ALIBABA_UNCORE_DRW_PMU is not set
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
|
||||
CONFIG_ARCH_KEEP_MEMBLOCK=y
|
||||
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=18
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=24
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=18
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_PROC_KCORE_TEXT=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_ARCH_WANTS_NO_INSTR=y
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
# CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set
|
||||
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_PA_BITS=48
|
||||
CONFIG_ARM64_PA_BITS_48=y
|
||||
CONFIG_ARM64_TAGGED_ADDR_ABI=y
|
||||
CONFIG_ARM64_VA_BITS=39
|
||||
CONFIG_ARM64_VA_BITS_39=y
|
||||
CONFIG_ARM_AMBA=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
CONFIG_ARM_GIC_V3=y
|
||||
CONFIG_ARM_GIC_V3_ITS=y
|
||||
CONFIG_ARM_GIC_V3_ITS_PCI=y
|
||||
CONFIG_ARM_PSCI_FW=y
|
||||
# CONFIG_ARM_SMMU_V3_PMU is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
CONFIG_BALLOON_COMPACTION=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_MQ_VIRTIO=y
|
||||
CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_COMPAT_32BIT_TIME is not set
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
||||
CONFIG_CPU_PM=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_DMA_ACPI=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMI=y
|
||||
CONFIG_DMIID=y
|
||||
CONFIG_DMI_SYSFS=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFIVAR_FS=y
|
||||
CONFIG_EFI_ARMSTUB_DTB_LOADER=y
|
||||
# CONFIG_EFI_BOOTLOADER_CONTROL is not set
|
||||
# CONFIG_EFI_CAPSULE_LOADER is not set
|
||||
# CONFIG_EFI_COCO_SECRET is not set
|
||||
# CONFIG_EFI_CUSTOM_SSDT_OVERLAYS is not set
|
||||
# CONFIG_EFI_DISABLE_PCI_DMA is not set
|
||||
# CONFIG_EFI_DISABLE_RUNTIME is not set
|
||||
CONFIG_EFI_EARLYCON=y
|
||||
CONFIG_EFI_ESRT=y
|
||||
CONFIG_EFI_GENERIC_STUB=y
|
||||
# CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is not set
|
||||
CONFIG_EFI_PARAMS_FROM_FDT=y
|
||||
CONFIG_EFI_RUNTIME_WRAPPERS=y
|
||||
CONFIG_EFI_STUB=y
|
||||
# CONFIG_EFI_TEST is not set
|
||||
# CONFIG_EFI_ZBOOT is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_F2FS_FS=y
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_FB_EFI=y
|
||||
CONFIG_FIX_EARLYCON_MEM=y
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_FONT_AUTOSELECT=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_FW_LOADER_PAGED_BUF=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
|
||||
CONFIG_GENERIC_CPU_AUTOPROBE=y
|
||||
CONFIG_GENERIC_CPU_VULNERABILITIES=y
|
||||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
|
||||
CONFIG_GENERIC_IRQ_MIGRATION=y
|
||||
CONFIG_GENERIC_IRQ_SHOW=y
|
||||
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
|
||||
CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_GENERIC_MSI_IRQ=y
|
||||
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_GENERIC_PCI_IOMAP=y
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_GENERIC_SMP_IDLE_THREAD=y
|
||||
CONFIG_GENERIC_STRNCPY_FROM_USER=y
|
||||
CONFIG_GENERIC_STRNLEN_USER=y
|
||||
CONFIG_GENERIC_TIME_VSYSCALL=y
|
||||
CONFIG_GPIOLIB_IRQCHIP=y
|
||||
CONFIG_GPIO_ACPI=y
|
||||
CONFIG_GPIO_CDEV=y
|
||||
# CONFIG_GPIO_HISI is not set
|
||||
CONFIG_GPIO_PL061=y
|
||||
# CONFIG_GPIO_VF610 is not set
|
||||
CONFIG_HANDLE_DOMAIN_IRQ=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||
CONFIG_HVC_DRIVER=y
|
||||
CONFIG_HZ_PERIODIC=y
|
||||
# CONFIG_I2C_AMD_MP2 is not set
|
||||
CONFIG_I2C_HID_ACPI=y
|
||||
# CONFIG_I2C_HISI is not set
|
||||
# CONFIG_I2C_SLAVE_TESTUNIT is not set
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_IRQ_DOMAIN=y
|
||||
CONFIG_IRQ_DOMAIN_HIERARCHY=y
|
||||
CONFIG_IRQ_FORCED_THREADING=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
# CONFIG_ISCSI_IBFT is not set
|
||||
CONFIG_JBD2=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_LOCK_DEBUGGING_SUPPORT=y
|
||||
CONFIG_LOCK_SPIN_ON_OWNER=y
|
||||
CONFIG_MEMFD_CREATE=y
|
||||
CONFIG_MEMORY_BALLOON=y
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_MLXBF_GIGE is not set
|
||||
CONFIG_MMC_SDHCI_ACPI=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MUTEX_SPIN_ON_OWNER=y
|
||||
CONFIG_MVMDIO=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NET_9P=y
|
||||
# CONFIG_NET_9P_DEBUG is not set
|
||||
# CONFIG_NET_9P_FD is not set
|
||||
CONFIG_NET_9P_VIRTIO=y
|
||||
CONFIG_NET_FAILOVER=y
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVME_CORE=y
|
||||
# CONFIG_NVME_MULTIPATH is not set
|
||||
CONFIG_OF=y
|
||||
CONFIG_OF_ADDRESS=y
|
||||
CONFIG_OF_EARLY_FLATTREE=y
|
||||
CONFIG_OF_FLATTREE=y
|
||||
CONFIG_OF_GPIO=y
|
||||
CONFIG_OF_IRQ=y
|
||||
CONFIG_OF_KOBJ=y
|
||||
CONFIG_PADATA=y
|
||||
CONFIG_PAGE_REPORTING=y
|
||||
CONFIG_PARTITION_PERCPU=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_PCIE_HISI_ERR is not set
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_ECAM=y
|
||||
CONFIG_PCI_HOST_COMMON=y
|
||||
CONFIG_PCI_HOST_GENERIC=y
|
||||
CONFIG_PCI_LABEL=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCI_MSI_IRQ_DOMAIN=y
|
||||
CONFIG_PGTABLE_LEVELS=3
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PNPACPI=y
|
||||
CONFIG_PNP_DEBUG_MESSAGES=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
|
||||
CONFIG_QUEUED_RWLOCKS=y
|
||||
CONFIG_QUEUED_SPINLOCKS=y
|
||||
CONFIG_RATIONAL=y
|
||||
# CONFIG_RESET_ATTACK_MITIGATION is not set
|
||||
CONFIG_RFS_ACCEL=y
|
||||
CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
|
||||
CONFIG_RPS=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_EFI=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
CONFIG_RWSEM_SPIN_ON_OWNER=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_SATA_HOST=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_COMMON=y
|
||||
CONFIG_SCSI_VIRTIO=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_FSL=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_PNP=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_AMBA_PL011=y
|
||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_EARLYCON=y
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_SOCK_RX_QUEUE_MAPPING=y
|
||||
CONFIG_SPARSEMEM=y
|
||||
CONFIG_SPARSEMEM_EXTREME=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_SRCU=y
|
||||
# CONFIG_SURFACE_PLATFORMS is not set
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_SYSCTL_EXCEPTION_TRACE=y
|
||||
CONFIG_SYSFB=y
|
||||
# CONFIG_SYSFB_SIMPLEFB is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
CONFIG_TICK_CPU_ACCOUNTING=y
|
||||
CONFIG_TIMER_ACPI=y
|
||||
CONFIG_TIMER_OF=y
|
||||
CONFIG_TIMER_PROBE=y
|
||||
CONFIG_TREE_RCU=y
|
||||
CONFIG_TREE_SRCU=y
|
||||
# CONFIG_UACCE is not set
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_UNMAP_KERNEL_AT_EL0=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_HID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB_PCI=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_SUPPORT=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_XHCI_PCI=y
|
||||
CONFIG_VIRTIO=y
|
||||
CONFIG_VIRTIO_BALLOON=y
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||
CONFIG_VIRTIO_NET=y
|
||||
CONFIG_VIRTIO_PCI=y
|
||||
CONFIG_VIRTIO_PCI_LEGACY=y
|
||||
CONFIG_VIRTIO_PCI_LIB=y
|
||||
CONFIG_VMAP_STACK=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZONE_DMA32=y
|
||||
116
target/linux/armsr/image/Makefile
Normal file
116
target/linux/armsr/image/Makefile
Normal file
@@ -0,0 +1,116 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2016-2017 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
GRUB2_VARIANT =
|
||||
GRUB_TERMINALS =
|
||||
GRUB_SERIAL_CONFIG =
|
||||
GRUB_TERMINAL_CONFIG =
|
||||
GRUB_CONSOLE_CMDLINE = earlycon
|
||||
|
||||
ifneq ($(CONFIG_GRUB_CONSOLE),)
|
||||
GRUB_TERMINALS += console
|
||||
endif
|
||||
|
||||
GRUB_SERIAL:=$(call qstrip,$(CONFIG_TARGET_SERIAL))
|
||||
|
||||
GRUB_SERIAL_CONFIG := serial --unit=0 --speed=$(CONFIG_GRUB_BAUDRATE) --word=8 --parity=no --stop=1 --rtscts=$(if $(CONFIG_GRUB_FLOWCONTROL),on,off)
|
||||
GRUB_TERMINALS += serial
|
||||
|
||||
GRUB_TERMINAL_CONFIG := terminal_input $(GRUB_TERMINALS); terminal_output $(GRUB_TERMINALS)
|
||||
|
||||
ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
||||
ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02)
|
||||
GPT_ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
||||
GPT_ROOTPART:=$(if $(GPT_ROOTPART),$(GPT_ROOTPART),PARTUUID=$(shell echo $(IMG_PART_DISKGUID) | sed 's/00$$/02/'))
|
||||
|
||||
GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT))
|
||||
GRUB_TITLE:=$(call qstrip,$(CONFIG_GRUB_TITLE))
|
||||
|
||||
BOOTOPTS:=$(call qstrip,$(CONFIG_GRUB_BOOTOPTS))
|
||||
|
||||
define Build/combined
|
||||
$(INSTALL_DIR) $@.boot/
|
||||
$(CP) $(KDIR)/$(KERNEL_NAME) $@.boot/efi/openwrt/
|
||||
-$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/
|
||||
$(if $(filter $(1),efi),
|
||||
$(INSTALL_DIR) $@.boot/efi/boot
|
||||
$(CP) $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_aarch64),aa64,arm).efi $@.boot/efi/openwrt/
|
||||
$(CP) $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_aarch64),aa64,arm).efi $@.boot/efi/boot/
|
||||
)
|
||||
KERNELPARTTYPE=ef FAT_TYPE="32" PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" \
|
||||
$(if $(filter $(1),efi),GUID="$(IMG_PART_DISKGUID)") $(SCRIPT_DIR)/gen_image_generic.sh \
|
||||
$@ \
|
||||
$(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
|
||||
$(CONFIG_TARGET_ROOTFS_PARTSIZE) $(IMAGE_ROOTFS) \
|
||||
256
|
||||
endef
|
||||
|
||||
define Build/grub-config
|
||||
rm -fR $@.boot
|
||||
$(INSTALL_DIR) $@.boot/efi/openwrt/
|
||||
sed \
|
||||
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
||||
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
||||
-e 's#@ROOTPART@#root=$(ROOTPART) rootwait#g' \
|
||||
-e 's#@GPT_ROOTPART@#root=$(GPT_ROOTPART) rootwait#g' \
|
||||
-e 's#@CMDLINE@#$(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE)#g' \
|
||||
-e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
|
||||
-e 's#@TITLE@#$(GRUB_TITLE)#g' \
|
||||
-e 's#@KERNEL_NAME@#$(KERNEL_NAME)#g' \
|
||||
./grub-$(1).cfg > $@.boot/efi/openwrt/grub.cfg
|
||||
endef
|
||||
|
||||
define Build/grub-install
|
||||
rm -fR $@.grub2
|
||||
$(INSTALL_DIR) $@.grub2
|
||||
endef
|
||||
|
||||
DEVICE_VARS += GRUB2_VARIANT UBOOT
|
||||
define Device/efi-default
|
||||
IMAGE/rootfs.img := append-rootfs | pad-to $(ROOTFS_PARTSIZE)
|
||||
IMAGE/rootfs.img.gz := append-rootfs | pad-to $(ROOTFS_PARTSIZE) | gzip
|
||||
IMAGE/combined.img := grub-config efi | combined efi | grub-install efi | append-metadata
|
||||
IMAGE/combined.img.gz := grub-config efi | combined efi | grub-install efi | gzip | append-metadata
|
||||
IMAGE/combined.vmdk := grub-config efi | combined efi | grub-install efi | qemu-image vmdk
|
||||
ifeq ($(CONFIG_TARGET_IMAGES_GZIP),y)
|
||||
IMAGES-y := rootfs.img.gz
|
||||
IMAGES-y += combined.img.gz
|
||||
else
|
||||
IMAGES-y := rootfs.img
|
||||
IMAGES-y += combined.img
|
||||
endif
|
||||
ifeq ($(CONFIG_VMDK_IMAGES),y)
|
||||
IMAGES-y += combined.vmdk
|
||||
endif
|
||||
KERNEL := kernel-bin
|
||||
KERNEL_INSTALL := 1
|
||||
IMAGES := $$(IMAGES-y)
|
||||
ARTIFACTS := $$(ARTIFACTS-y)
|
||||
SUPPORTED_DEVICES :=
|
||||
ifeq ($(CONFIG_arm),y)
|
||||
KERNEL_NAME = zImage
|
||||
endif
|
||||
endef
|
||||
|
||||
define Device/generic
|
||||
$(call Device/efi-default)
|
||||
DEVICE_TITLE := Generic EFI Boot
|
||||
GRUB2_VARIANT := generic
|
||||
FILESYSTEMS := ext4 squashfs
|
||||
UBOOT := $(if $(CONFIG_aarch64),qemu_armv8,qemu_armv7)
|
||||
DEVICE_PACKAGES += kmod-amazon-ena kmod-e1000e kmod-vmxnet3 kmod-rtc-rx8025 \
|
||||
kmod-i2c-mux-pca954x kmod-gpio-pca953x partx-utils kmod-wdt-sp805 \
|
||||
kmod-mvneta kmod-mvpp2 kmod-fsl-dpaa1-net kmod-fsl-dpaa2-net \
|
||||
kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \
|
||||
kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \
|
||||
kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \
|
||||
kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb \
|
||||
kmod-phy-realtek kmod-phy-smsc
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
||||
|
||||
$(eval $(call BuildImage))
|
||||
14
target/linux/armsr/image/grub-efi.cfg
Normal file
14
target/linux/armsr/image/grub-efi.cfg
Normal file
@@ -0,0 +1,14 @@
|
||||
@SERIAL_CONFIG@
|
||||
@TERMINAL_CONFIG@
|
||||
|
||||
set default="0"
|
||||
set timeout="@TIMEOUT@"
|
||||
|
||||
menuentry "@TITLE@" {
|
||||
search --set=root --label kernel
|
||||
linux /efi/openwrt/@KERNEL_NAME@ @GPT_ROOTPART@ @CMDLINE@ noinitrd
|
||||
}
|
||||
menuentry "@TITLE@ (failsafe)" {
|
||||
search --set=root --label kernel
|
||||
linux /efi/openwrt/@KERNEL_NAME@ failsafe=true @GPT_ROOTPART@ @CMDLINE@ noinitrd
|
||||
}
|
||||
321
target/linux/armsr/modules.mk
Normal file
321
target/linux/armsr/modules.mk
Normal file
@@ -0,0 +1,321 @@
|
||||
define KernelPackage/acpi-mdio
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=ACPI MDIO support
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-mdio-devres
|
||||
KCONFIG:=CONFIG_ACPI_MDIO
|
||||
FILES:=$(LINUX_DIR)/drivers/net/mdio/acpi_mdio.ko
|
||||
AUTOLOAD:=$(call AutoLoad,11,acpi_mdio)
|
||||
endef
|
||||
|
||||
define KernelPackage/acpi-mdio/description
|
||||
Kernel driver for ACPI MDIO support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,acpi-mdio))
|
||||
|
||||
define KernelPackage/bcmgenet
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-mdio-bcm-unimac
|
||||
TITLE:=Broadcom GENET internal MAC (Raspberry Pi 4)
|
||||
KCONFIG:=CONFIG_BCMGENET
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/broadcom/genet/genet.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,genet)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,bcmgenet))
|
||||
|
||||
define KernelPackage/mdio-bcm-unimac
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio
|
||||
TITLE:=Broadcom UniMAC MDIO bus controller
|
||||
KCONFIG:=CONFIG_MDIO_BCM_UNIMAC
|
||||
FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-bcm-unimac.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,mdio-bcm-unimac)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mdio-bcm-unimac))
|
||||
|
||||
define KernelPackage/fsl-pcs-lynx
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-phylink
|
||||
TITLE:=NXP (Freescale) Lynx PCS
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_PCS_LYNX
|
||||
FILES=$(LINUX_DIR)/drivers/net/pcs/pcs-lynx.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,pcs-lynx)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-pcs-lynx))
|
||||
|
||||
define KernelPackage/fsl-fec
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio \
|
||||
+kmod-ptp +kmod-net-selftests
|
||||
TITLE:=NXP (Freescale) FEC Ethernet controller (i.MX)
|
||||
KCONFIG:=CONFIG_FEC
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/freescale/fec.ko
|
||||
AUTOLOAD:=$(call AutoLoad,35,fec)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-fec))
|
||||
|
||||
define KernelPackage/fsl-xgmac-mdio
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio
|
||||
TITLE:=NXP (Freescale) MDIO bus
|
||||
KCONFIG:=CONFIG_FSL_XGMAC_MDIO
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/freescale/xgmac_mdio.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,xgmac_mdio)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-xgmac-mdio))
|
||||
|
||||
define KernelPackage/fsl-mc-dpio
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=NXP DPAA2 DPIO (Data Path IO) driver
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_FSL_MC_BUS=y \
|
||||
CONFIG_FSL_MC_DPIO
|
||||
FILES:=$(LINUX_DIR)/drivers/soc/fsl/dpio/fsl-mc-dpio.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,fsl-mc-dpio)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-mc-dpio))
|
||||
|
||||
define KernelPackage/fsl-enetc-net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=:NXP ENETC (LS1028A) Ethernet
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-fsl-pcs-lynx
|
||||
KCONFIG:= \
|
||||
CONFIG_FSL_ENETC \
|
||||
CONFIG_FSL_ENETC_VF \
|
||||
CONFIG_FSL_ENETC_QOS=y
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-core.ko@ge6.3 \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-vf.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-ierb.ko
|
||||
AUTOLOAD=$(call AutoLoad,35,fsl-enetc)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-enetc-net))
|
||||
|
||||
define KernelPackage/fsl-dpaa1-net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=NXP DPAA1 (LS1043/LS1046) Ethernet
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-fsl-xgmac-mdio +kmod-libphy +kmod-crypto-crc32
|
||||
KCONFIG:= \
|
||||
CONFIG_FSL_DPAA=y \
|
||||
CONFIG_FSL_DPAA_ETH \
|
||||
CONFIG_FSL_FMAN \
|
||||
CONFIG_FSL_DPAA_CHECKING=n \
|
||||
CONFIG_FSL_BMAN_TEST=n \
|
||||
CONFIG_FSL_QMAN_TEST=n
|
||||
MODULES:= \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/dpaa/fsl_dpa.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/fman/fsl_dpaa_fman.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/fman/fsl_dpaa_mac.ko
|
||||
AUTOLOAD=$(call AutoLoad,35,fsl-dpa)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-dpaa1-net))
|
||||
|
||||
define KernelPackage/fsl-dpaa2-net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=NXP DPAA2 Ethernet
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-fsl-xgmac-mdio +kmod-phylink \
|
||||
+kmod-fsl-pcs-lynx +kmod-fsl-mc-dpio
|
||||
KCONFIG:= \
|
||||
CONFIG_FSL_MC_UAPI_SUPPORT=y \
|
||||
CONFIG_FSL_DPAA2_ETH
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/freescale/dpaa2/fsl-dpaa2-eth.ko
|
||||
AUTOLOAD=$(call AutoLoad,35,fsl-dpaa2-eth)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-dpaa2-net))
|
||||
|
||||
define KernelPackage/fsl-dpaa2-console
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=NXP DPAA2 Debug console
|
||||
DEPENDS:=@(TARGET_armsr_armv8)
|
||||
KCONFIG:=CONFIG_DPAA2_CONSOLE
|
||||
FILES=$(LINUX_DIR)/drivers/soc/fsl/dpaa2-console.ko
|
||||
AUTOLOAD=$(call AutoLoad,40,dpaa2-console)
|
||||
endef
|
||||
|
||||
define KernelPackage/fsl-dpaa2-console/description
|
||||
Kernel modules for the NXP DPAA2 debug consoles
|
||||
(Management Complex and AIOP).
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fsl-dpaa2-console))
|
||||
|
||||
define KernelPackage/marvell-mdio
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell Armada platform MDIO driver
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio
|
||||
KCONFIG:=CONFIG_MVMDIO
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvmdio.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,marvell-mdio)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,marvell-mdio))
|
||||
|
||||
define KernelPackage/mvneta
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell Armada 370/38x/XP/37xx network driver
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-marvell-mdio +kmod-phylink
|
||||
KCONFIG:=CONFIG_MVNETA
|
||||
FILES:=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvneta.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,mvneta)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mvneta))
|
||||
|
||||
define KernelPackage/mvpp2
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell Armada 375/7K/8K network driver
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-marvell-mdio +kmod-phylink
|
||||
KCONFIG:=CONFIG_MVPP2 \
|
||||
CONFIG_MVPP2_PTP=n
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvpp2/mvpp2.ko
|
||||
AUTOLOAD=$(call AutoLoad,40,mvpp2)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mvpp2))
|
||||
|
||||
define KernelPackage/imx2-wdt
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=NXP (Freescale) i.MX2+ and Layerscape watchdog driver
|
||||
KCONFIG:=CONFIG_IMX2_WDT
|
||||
FILES=$(LINUX_DIR)/drivers/watchdog/imx2_wdt.ko
|
||||
AUTOLOAD=$(call AutoLoad,60,imx2_wdt)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,imx2-wdt))
|
||||
|
||||
define KernelPackage/imx7-ulp-wdt
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=NXP (Freescale) i.MX7ULP and later watchdog
|
||||
KCONFIG:=CONFIG_IMX7ULP_WDT
|
||||
FILES=$(LINUX_DIR)/drivers/watchdog/imx7ulp_wdt.ko
|
||||
AUTOLOAD=$(call AutoLoad,60,imx7ulp_wdt)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,imx7-ulp-wdt))
|
||||
|
||||
define KernelPackage/dwmac-imx
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=NXP i.MX8 Ethernet controller
|
||||
DEPENDS:=+kmod-stmmac-core +kmod-of-mdio
|
||||
KCONFIG:=CONFIG_DWMAC_IMX8
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.ko
|
||||
AUTOLOAD=$(call AutoLoad,45,dwmac-imx)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,dwmac-imx))
|
||||
|
||||
define KernelPackage/dwmac-sun8i
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Allwinner H3/A83T/A64 (sun8i) Ethernet
|
||||
DEPENDS:=+kmod-stmmac-core +kmod-of-mdio +kmod-mdio-bus-mux
|
||||
KCONFIG:=CONFIG_DWMAC_SUN8I
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.ko
|
||||
AUTOLOAD=$(call AutoLoad,45,dwmac-sun8i)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,dwmac-sun8i))
|
||||
|
||||
define KernelPackage/dwmac-rockchip
|
||||
SUBMENU=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Rockchip RK3328/RK3399/RK3568 Ethernet
|
||||
DEPENDS:=+kmod-stmmac-core +kmod-of-mdio +kmod-mdio-bus-mux
|
||||
KCONFIG:=CONFIG_DWMAC_ROCKCHIP
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.ko
|
||||
AUTOLOAD=$(call AutoLoad,45,dwmac-rk)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,dwmac-rockchip))
|
||||
|
||||
define KernelPackage/mdio-thunder
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell (Cavium) Thunder MDIO controller
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio
|
||||
KCONFIG:=CONFIG_MDIO_THUNDER
|
||||
FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-cavium.ko \
|
||||
$(LINUX_DIR)/drivers/net/mdio/mdio-thunder.ko
|
||||
AUTOLOAD=$(call AutoLoad,30,mdio-cavium mdio-thunder)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mdio-thunder))
|
||||
|
||||
define KernelPackage/thunderx-net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell (Cavium) Thunder network drivers
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-mdio-thunder
|
||||
KCONFIG:=CONFIG_NET_VENDOR_CAVIUM \
|
||||
CONFIG_THUNDER_NIC_PF \
|
||||
CONFIG_THUNDER_NIC_VF \
|
||||
CONFIG_THUNDER_NIC_BGX \
|
||||
CONFIG_THUNDER_NIC_RGX
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/cavium/thunder/nicvf.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/cavium/thunder/nicpf.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/cavium/thunder/thunder_xcv.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/cavium/thunder/thunder_bgx.ko
|
||||
AUTOLOAD=$(call AutoLoad,40,nicpf nicvf thunder_xcv thunder_bgx)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,thunderx-net))
|
||||
|
||||
define KernelPackage/octeontx2-net
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Marvell (Cavium) ThunderX2 network drivers
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-of-mdio +kmod-macsec \
|
||||
+kmod-ptp
|
||||
KCONFIG:=CONFIG_OCTEONTX2_MBOX \
|
||||
CONFIG_OCTEONTX2_AF \
|
||||
CONFIG_OCTEONTX2_PF \
|
||||
CONFIG_OCTEONTX2_VF \
|
||||
CONFIG_NDC_DIS_DYNAMIC_CACHING=n
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/af/rvu_mbox.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/af/rvu_af.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/rvu_nicpf.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/rvu_nicvf.ko \
|
||||
$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ptp.ko
|
||||
AUTOLOAD=$(call AutoLoad,40,rvu_af rvu_mbox rvu_nicpf rvu_nicvf otx2_ptp)
|
||||
endef
|
||||
$(eval $(call KernelPackage,octeontx2-net))
|
||||
|
||||
define KernelPackage/renesas-net-avb
|
||||
SUBMENU:=$(NETWORK_DEVICES_MENU)
|
||||
TITLE:=Renesas network drivers
|
||||
DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-mii +kmod-ptp +kmod-libphy +kmod-mdio-gpio
|
||||
KCONFIG:=CONFIG_RAVB
|
||||
FILES=$(LINUX_DIR)/drivers/net/ethernet/renesas/ravb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ravb)
|
||||
endef
|
||||
|
||||
define KernelPackage/renesas-net-avb/description
|
||||
Support Renesas RZ platform Ethernet module
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,renesas-net-avb))
|
||||
|
||||
define KernelPackage/wdt-sp805
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=ARM SP805 Watchdog
|
||||
KCONFIG:=CONFIG_ARM_SP805_WATCHDOG
|
||||
FILES=$(LINUX_DIR)/drivers/watchdog/sp805_wdt.ko
|
||||
AUTOLOAD=$(call AutoLoad,50,sp805_wdt)
|
||||
endef
|
||||
|
||||
define KernelPackage/wdt-sp805/description
|
||||
Support for the ARM SP805 wathchdog module.
|
||||
This is present in the NXP Layerscape family,
|
||||
HiSilicon HI3660 among others.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,wdt-sp805))
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From b77c0ecdc7915e5c5c515da1aa6cfaf6f4eb8351 Mon Sep 17 00:00:00 2001
|
||||
From: Mathew McBride <matt@traverse.com.au>
|
||||
Date: Wed, 28 Sep 2022 16:39:31 +1000
|
||||
Subject: [PATCH] arm: disable code size reduction measures
|
||||
(gc-sections,-f*-sections)
|
||||
|
||||
This interferes with the EFI boot stub on armv7l.
|
||||
|
||||
Signed-off-by: Mathew McBride <matt@traverse.com.au>
|
||||
---
|
||||
arch/arm/Kconfig | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -124,7 +124,6 @@ config ARM
|
||||
select HAVE_VIRT_CPU_ACCOUNTING_GEN
|
||||
select IRQ_FORCED_THREADING
|
||||
select LOCK_MM_AND_FIND_VMA
|
||||
- select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
|
||||
select MODULES_USE_ELF_REL
|
||||
select NEED_DMA_MAP_STATE
|
||||
select OF_EARLY_FLATTREE if OF
|
||||
@@ -0,0 +1,44 @@
|
||||
From f3763a0c1b07273218cbf5886bdf8df9df501111 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:10 +0200
|
||||
Subject: [PATCH 03/14] net: dpaa2-eth: don't use -ENOTSUPP error code
|
||||
|
||||
dpaa2_eth_setup_dpni() is called from the probe path and
|
||||
dpaa2_eth_set_link_ksettings() is propagated to user space.
|
||||
|
||||
include/linux/errno.h says that ENOTSUPP is "Defined for the NFSv3
|
||||
protocol". Conventional wisdom has it to not use it in networking
|
||||
drivers. Replace it with -EOPNOTSUPP.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 2 +-
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -3618,7 +3618,7 @@ static int dpaa2_eth_setup_dpni(struct f
|
||||
dev_err(dev, "DPNI version %u.%u not supported, need >= %u.%u\n",
|
||||
priv->dpni_ver_major, priv->dpni_ver_minor,
|
||||
DPNI_VER_MAJOR, DPNI_VER_MINOR);
|
||||
- err = -ENOTSUPP;
|
||||
+ err = -EOPNOTSUPP;
|
||||
goto close;
|
||||
}
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
@@ -118,7 +118,7 @@ dpaa2_eth_set_link_ksettings(struct net_
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
|
||||
if (!dpaa2_eth_is_type_phy(priv))
|
||||
- return -ENOTSUPP;
|
||||
+ return -EOPNOTSUPP;
|
||||
|
||||
return phylink_ethtool_ksettings_set(priv->mac->phylink, link_settings);
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
From 022a11062261dc4703da846d3bf4d194ef6bebf5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:11 +0200
|
||||
Subject: [PATCH 04/14] net: dpaa2: replace dpaa2_mac_is_type_fixed() with
|
||||
dpaa2_mac_is_type_phy()
|
||||
|
||||
dpaa2_mac_is_type_fixed() is a header with no implementation and no
|
||||
callers, which is referenced from the documentation though. It can be
|
||||
deleted.
|
||||
|
||||
On the other hand, it would be useful to reuse the code between
|
||||
dpaa2_eth_is_type_phy() and dpaa2_switch_port_is_type_phy(). That common
|
||||
code should be called dpaa2_mac_is_type_phy(), so let's create that.
|
||||
|
||||
The removal and the addition are merged into the same patch because,
|
||||
in fact, is_type_phy() is the logical opposite of is_type_fixed().
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../ethernet/freescale/dpaa2/mac-phy-support.rst | 9 ++++++---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 7 +------
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h | 10 ++++++++--
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.h | 7 +------
|
||||
4 files changed, 16 insertions(+), 17 deletions(-)
|
||||
|
||||
--- a/Documentation/networking/device_drivers/ethernet/freescale/dpaa2/mac-phy-support.rst
|
||||
+++ b/Documentation/networking/device_drivers/ethernet/freescale/dpaa2/mac-phy-support.rst
|
||||
@@ -181,10 +181,13 @@ when necessary using the below listed AP
|
||||
- int dpaa2_mac_connect(struct dpaa2_mac *mac);
|
||||
- void dpaa2_mac_disconnect(struct dpaa2_mac *mac);
|
||||
|
||||
-A phylink integration is necessary only when the partner DPMAC is not of TYPE_FIXED.
|
||||
-One can check for this condition using the below API::
|
||||
+A phylink integration is necessary only when the partner DPMAC is not of
|
||||
+``TYPE_FIXED``. This means it is either of ``TYPE_PHY``, or of
|
||||
+``TYPE_BACKPLANE`` (the difference being the two that in the ``TYPE_BACKPLANE``
|
||||
+mode, the MC firmware does not access the PCS registers). One can check for
|
||||
+this condition using the following helper::
|
||||
|
||||
- - bool dpaa2_mac_is_type_fixed(struct fsl_mc_device *dpmac_dev,struct fsl_mc_io *mc_io);
|
||||
+ - static inline bool dpaa2_mac_is_type_phy(struct dpaa2_mac *mac);
|
||||
|
||||
Before connection to a MAC, the caller must allocate and populate the
|
||||
dpaa2_mac structure with the associated net_device, a pointer to the MC portal
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||||
@@ -733,12 +733,7 @@ static inline unsigned int dpaa2_eth_rx_
|
||||
|
||||
static inline bool dpaa2_eth_is_type_phy(struct dpaa2_eth_priv *priv)
|
||||
{
|
||||
- if (priv->mac &&
|
||||
- (priv->mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
|
||||
- priv->mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE))
|
||||
- return true;
|
||||
-
|
||||
- return false;
|
||||
+ return dpaa2_mac_is_type_phy(priv->mac);
|
||||
}
|
||||
|
||||
static inline bool dpaa2_eth_has_mac(struct dpaa2_eth_priv *priv)
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h
|
||||
@@ -30,8 +30,14 @@ struct dpaa2_mac {
|
||||
struct phy *serdes_phy;
|
||||
};
|
||||
|
||||
-bool dpaa2_mac_is_type_fixed(struct fsl_mc_device *dpmac_dev,
|
||||
- struct fsl_mc_io *mc_io);
|
||||
+static inline bool dpaa2_mac_is_type_phy(struct dpaa2_mac *mac)
|
||||
+{
|
||||
+ if (!mac)
|
||||
+ return false;
|
||||
+
|
||||
+ return mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
|
||||
+ mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE;
|
||||
+}
|
||||
|
||||
int dpaa2_mac_open(struct dpaa2_mac *mac);
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.h
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.h
|
||||
@@ -230,12 +230,7 @@ static inline bool dpaa2_switch_supports
|
||||
static inline bool
|
||||
dpaa2_switch_port_is_type_phy(struct ethsw_port_priv *port_priv)
|
||||
{
|
||||
- if (port_priv->mac &&
|
||||
- (port_priv->mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
|
||||
- port_priv->mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE))
|
||||
- return true;
|
||||
-
|
||||
- return false;
|
||||
+ return dpaa2_mac_is_type_phy(port_priv->mac);
|
||||
}
|
||||
|
||||
static inline bool dpaa2_switch_port_has_mac(struct ethsw_port_priv *port_priv)
|
||||
@@ -0,0 +1,88 @@
|
||||
From 97c07369ab8bf9895e05d4b468f18e6567263154 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:12 +0200
|
||||
Subject: [PATCH 05/14] net: dpaa2-mac: absorb phylink_start() call into
|
||||
dpaa2_mac_start()
|
||||
|
||||
The phylink handling is intended to be hidden inside the dpaa2_mac
|
||||
object. Move the phylink_start() call into dpaa2_mac_start(), and
|
||||
phylink_stop() into dpaa2_mac_stop().
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 5 +----
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 8 ++++++++
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 5 +----
|
||||
3 files changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -2083,10 +2083,8 @@ static int dpaa2_eth_open(struct net_dev
|
||||
goto enable_err;
|
||||
}
|
||||
|
||||
- if (dpaa2_eth_is_type_phy(priv)) {
|
||||
+ if (dpaa2_eth_is_type_phy(priv))
|
||||
dpaa2_mac_start(priv->mac);
|
||||
- phylink_start(priv->mac->phylink);
|
||||
- }
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -2160,7 +2158,6 @@ static int dpaa2_eth_stop(struct net_dev
|
||||
int retries = 10;
|
||||
|
||||
if (dpaa2_eth_is_type_phy(priv)) {
|
||||
- phylink_stop(priv->mac->phylink);
|
||||
dpaa2_mac_stop(priv->mac);
|
||||
} else {
|
||||
netif_tx_stop_all_queues(net_dev);
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
@@ -336,12 +336,20 @@ static void dpaa2_mac_set_supported_inte
|
||||
|
||||
void dpaa2_mac_start(struct dpaa2_mac *mac)
|
||||
{
|
||||
+ ASSERT_RTNL();
|
||||
+
|
||||
if (mac->serdes_phy)
|
||||
phy_power_on(mac->serdes_phy);
|
||||
+
|
||||
+ phylink_start(mac->phylink);
|
||||
}
|
||||
|
||||
void dpaa2_mac_stop(struct dpaa2_mac *mac)
|
||||
{
|
||||
+ ASSERT_RTNL();
|
||||
+
|
||||
+ phylink_stop(mac->phylink);
|
||||
+
|
||||
if (mac->serdes_phy)
|
||||
phy_power_off(mac->serdes_phy);
|
||||
}
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
@@ -703,10 +703,8 @@ static int dpaa2_switch_port_open(struct
|
||||
|
||||
dpaa2_switch_enable_ctrl_if_napi(ethsw);
|
||||
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
+ if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
dpaa2_mac_start(port_priv->mac);
|
||||
- phylink_start(port_priv->mac->phylink);
|
||||
- }
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -718,7 +716,6 @@ static int dpaa2_switch_port_stop(struct
|
||||
int err;
|
||||
|
||||
if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
- phylink_stop(port_priv->mac->phylink);
|
||||
dpaa2_mac_stop(port_priv->mac);
|
||||
} else {
|
||||
netif_tx_stop_all_queues(netdev);
|
||||
@@ -0,0 +1,50 @@
|
||||
From 095ef388f714d622aa503fcccf20dc4095b72762 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:13 +0200
|
||||
Subject: [PATCH 06/14] net: dpaa2-mac: remove defensive check in
|
||||
dpaa2_mac_disconnect()
|
||||
|
||||
dpaa2_mac_disconnect() will only be called with a NULL mac->phylink if
|
||||
dpaa2_mac_connect() failed, or was never called.
|
||||
|
||||
The callers are these:
|
||||
|
||||
dpaa2_eth_disconnect_mac():
|
||||
|
||||
if (dpaa2_eth_is_type_phy(priv))
|
||||
dpaa2_mac_disconnect(priv->mac);
|
||||
|
||||
dpaa2_switch_port_disconnect_mac():
|
||||
|
||||
if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
dpaa2_mac_disconnect(port_priv->mac);
|
||||
|
||||
priv->mac can be NULL, but in that case, dpaa2_eth_is_type_phy() returns
|
||||
false, and dpaa2_mac_disconnect() is never called. Similar for
|
||||
dpaa2-switch.
|
||||
|
||||
When priv->mac is non-NULL, it means that dpaa2_mac_connect() returned
|
||||
zero (success), and therefore, priv->mac->phylink is also a valid
|
||||
pointer.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
@@ -446,9 +446,6 @@ err_pcs_destroy:
|
||||
|
||||
void dpaa2_mac_disconnect(struct dpaa2_mac *mac)
|
||||
{
|
||||
- if (!mac->phylink)
|
||||
- return;
|
||||
-
|
||||
phylink_disconnect_phy(mac->phylink);
|
||||
phylink_destroy(mac->phylink);
|
||||
dpaa2_pcs_destroy(mac);
|
||||
@@ -0,0 +1,101 @@
|
||||
From 06efc9b8a1360cad83cae6e71558e5458cc1fbf3 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:14 +0200
|
||||
Subject: [PATCH 07/14] net: dpaa2-eth: assign priv->mac after
|
||||
dpaa2_mac_connect() call
|
||||
|
||||
There are 2 requirements for correct code:
|
||||
|
||||
- Any time the driver accesses the priv->mac pointer at runtime, it
|
||||
either holds NULL to indicate a DPNI-DPNI connection (or unconnected
|
||||
DPNI), or a struct dpaa2_mac whose phylink instance was fully
|
||||
initialized (created and connected to the PHY). No changes are made to
|
||||
priv->mac while it is being used. Currently, rtnl_lock() watches over
|
||||
the call to dpaa2_eth_connect_mac(), so it serves the purpose of
|
||||
serializing this with all readers of priv->mac.
|
||||
|
||||
- dpaa2_mac_connect() should run unlocked, because inside it are 2
|
||||
phylink calls with incompatible locking requirements: phylink_create()
|
||||
requires that the rtnl_mutex isn't held, and phylink_fwnode_phy_connect()
|
||||
requires that the rtnl_mutex is held. The only way to solve those
|
||||
contradictory requirements is to let dpaa2_mac_connect() take
|
||||
rtnl_lock() when it needs to.
|
||||
|
||||
To solve both requirements, we need to identify the writer side of the
|
||||
priv->mac pointer, which can be wrapped in a mutex private to the driver
|
||||
in a future patch. The dpaa2_mac_connect() cannot be part of the writer
|
||||
side critical section, because of an AB/BA deadlock with rtnl_lock().
|
||||
|
||||
So the strategy needs to be that where we prepare the DPMAC by calling
|
||||
dpaa2_mac_connect(), and only make priv->mac point to it once it's fully
|
||||
prepared. This ensures that the writer side critical section has the
|
||||
absolute minimum surface it can.
|
||||
|
||||
The reverse strategy is adopted in the dpaa2_eth_disconnect_mac() code
|
||||
path. This makes sure that priv->mac is NULL when we start tearing down
|
||||
the DPMAC that we disconnected from, and concurrent code will simply not
|
||||
see it.
|
||||
|
||||
No locking changes in this patch (concurrent code is still blocked by
|
||||
the rtnl_mutex).
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 21 +++++++++++--------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -4448,9 +4448,8 @@ static int dpaa2_eth_connect_mac(struct
|
||||
err = dpaa2_mac_open(mac);
|
||||
if (err)
|
||||
goto err_free_mac;
|
||||
- priv->mac = mac;
|
||||
|
||||
- if (dpaa2_eth_is_type_phy(priv)) {
|
||||
+ if (dpaa2_mac_is_type_phy(mac)) {
|
||||
err = dpaa2_mac_connect(mac);
|
||||
if (err && err != -EPROBE_DEFER)
|
||||
netdev_err(priv->net_dev, "Error connecting to the MAC endpoint: %pe",
|
||||
@@ -4459,11 +4458,12 @@ static int dpaa2_eth_connect_mac(struct
|
||||
goto err_close_mac;
|
||||
}
|
||||
|
||||
+ priv->mac = mac;
|
||||
+
|
||||
return 0;
|
||||
|
||||
err_close_mac:
|
||||
dpaa2_mac_close(mac);
|
||||
- priv->mac = NULL;
|
||||
err_free_mac:
|
||||
kfree(mac);
|
||||
return err;
|
||||
@@ -4471,15 +4471,18 @@ err_free_mac:
|
||||
|
||||
static void dpaa2_eth_disconnect_mac(struct dpaa2_eth_priv *priv)
|
||||
{
|
||||
- if (dpaa2_eth_is_type_phy(priv))
|
||||
- dpaa2_mac_disconnect(priv->mac);
|
||||
+ struct dpaa2_mac *mac = priv->mac;
|
||||
+
|
||||
+ priv->mac = NULL;
|
||||
|
||||
- if (!dpaa2_eth_has_mac(priv))
|
||||
+ if (!mac)
|
||||
return;
|
||||
|
||||
- dpaa2_mac_close(priv->mac);
|
||||
- kfree(priv->mac);
|
||||
- priv->mac = NULL;
|
||||
+ if (dpaa2_mac_is_type_phy(mac))
|
||||
+ dpaa2_mac_disconnect(mac);
|
||||
+
|
||||
+ dpaa2_mac_close(mac);
|
||||
+ kfree(mac);
|
||||
}
|
||||
|
||||
static irqreturn_t dpni_irq0_handler_thread(int irq_num, void *arg)
|
||||
@@ -0,0 +1,73 @@
|
||||
From a5e7f7e277bd4403c45c1c7922d56d0eb08dbc7c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:15 +0200
|
||||
Subject: [PATCH 08/14] net: dpaa2-switch: assign port_priv->mac after
|
||||
dpaa2_mac_connect() call
|
||||
|
||||
The dpaa2-switch has the exact same locking requirements when connected
|
||||
to a DPMAC, so it needs port_priv->mac to always point either to NULL,
|
||||
or to a DPMAC with a fully initialized phylink instance.
|
||||
|
||||
Make the same preparatory change in the dpaa2-switch driver as in the
|
||||
dpaa2-eth one.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../ethernet/freescale/dpaa2/dpaa2-switch.c | 21 +++++++++++--------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
@@ -1450,9 +1450,8 @@ static int dpaa2_switch_port_connect_mac
|
||||
err = dpaa2_mac_open(mac);
|
||||
if (err)
|
||||
goto err_free_mac;
|
||||
- port_priv->mac = mac;
|
||||
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
+ if (dpaa2_mac_is_type_phy(mac)) {
|
||||
err = dpaa2_mac_connect(mac);
|
||||
if (err) {
|
||||
netdev_err(port_priv->netdev,
|
||||
@@ -1462,11 +1461,12 @@ static int dpaa2_switch_port_connect_mac
|
||||
}
|
||||
}
|
||||
|
||||
+ port_priv->mac = mac;
|
||||
+
|
||||
return 0;
|
||||
|
||||
err_close_mac:
|
||||
dpaa2_mac_close(mac);
|
||||
- port_priv->mac = NULL;
|
||||
err_free_mac:
|
||||
kfree(mac);
|
||||
return err;
|
||||
@@ -1474,15 +1474,18 @@ err_free_mac:
|
||||
|
||||
static void dpaa2_switch_port_disconnect_mac(struct ethsw_port_priv *port_priv)
|
||||
{
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
- dpaa2_mac_disconnect(port_priv->mac);
|
||||
+ struct dpaa2_mac *mac = port_priv->mac;
|
||||
+
|
||||
+ port_priv->mac = NULL;
|
||||
|
||||
- if (!dpaa2_switch_port_has_mac(port_priv))
|
||||
+ if (!mac)
|
||||
return;
|
||||
|
||||
- dpaa2_mac_close(port_priv->mac);
|
||||
- kfree(port_priv->mac);
|
||||
- port_priv->mac = NULL;
|
||||
+ if (dpaa2_mac_is_type_phy(mac))
|
||||
+ dpaa2_mac_disconnect(mac);
|
||||
+
|
||||
+ dpaa2_mac_close(mac);
|
||||
+ kfree(mac);
|
||||
}
|
||||
|
||||
static irqreturn_t dpaa2_switch_irq0_handler_thread(int irq_num, void *arg)
|
||||
@@ -0,0 +1,111 @@
|
||||
From ce44b6ed9ee65efa9b3025552c513842eabcab88 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:16 +0200
|
||||
Subject: [PATCH 09/14] net: dpaa2: publish MAC stringset to ethtool -S even if
|
||||
MAC is missing
|
||||
|
||||
DPNIs and DPSW objects can connect and disconnect at runtime from DPMAC
|
||||
objects on the same fsl-mc bus. The DPMAC object also holds "ethtool -S"
|
||||
unstructured counters. Those counters are only shown for the entity
|
||||
owning the netdev (DPNI, DPSW) if it's connected to a DPMAC.
|
||||
|
||||
The ethtool stringset code path is split into multiple callbacks, but
|
||||
currently, connecting and disconnecting the DPMAC takes the rtnl_lock().
|
||||
This blocks the entire ethtool code path from running, see
|
||||
ethnl_default_doit() -> rtnl_lock() -> ops->prepare_data() ->
|
||||
strset_prepare_data().
|
||||
|
||||
This is going to be a problem if we are going to no longer require
|
||||
rtnl_lock() when connecting/disconnecting the DPMAC, because the DPMAC
|
||||
could appear between ops->get_sset_count() and ops->get_strings().
|
||||
If it appears out of the blue, we will provide a stringset into an array
|
||||
that was dimensioned thinking the DPMAC wouldn't be there => array
|
||||
accessed out of bounds.
|
||||
|
||||
There isn't really a good way to work around that, and I don't want to
|
||||
put too much pressure on the ethtool framework by playing locking games.
|
||||
Just make the DPMAC counters be always available. They'll be zeroes if
|
||||
the DPNI or DPSW isn't connected to a DPMAC.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 12 +++---------
|
||||
.../ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c | 11 ++---------
|
||||
2 files changed, 5 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
@@ -186,7 +186,6 @@ static int dpaa2_eth_set_pauseparam(stru
|
||||
static void dpaa2_eth_get_strings(struct net_device *netdev, u32 stringset,
|
||||
u8 *data)
|
||||
{
|
||||
- struct dpaa2_eth_priv *priv = netdev_priv(netdev);
|
||||
u8 *p = data;
|
||||
int i;
|
||||
|
||||
@@ -200,22 +199,17 @@ static void dpaa2_eth_get_strings(struct
|
||||
strscpy(p, dpaa2_ethtool_extras[i], ETH_GSTRING_LEN);
|
||||
p += ETH_GSTRING_LEN;
|
||||
}
|
||||
- if (dpaa2_eth_has_mac(priv))
|
||||
- dpaa2_mac_get_strings(p);
|
||||
+ dpaa2_mac_get_strings(p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int dpaa2_eth_get_sset_count(struct net_device *net_dev, int sset)
|
||||
{
|
||||
- int num_ss_stats = DPAA2_ETH_NUM_STATS + DPAA2_ETH_NUM_EXTRA_STATS;
|
||||
- struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
-
|
||||
switch (sset) {
|
||||
case ETH_SS_STATS: /* ethtool_get_stats(), ethtool_get_drvinfo() */
|
||||
- if (dpaa2_eth_has_mac(priv))
|
||||
- num_ss_stats += dpaa2_mac_get_sset_count();
|
||||
- return num_ss_stats;
|
||||
+ return DPAA2_ETH_NUM_STATS + DPAA2_ETH_NUM_EXTRA_STATS +
|
||||
+ dpaa2_mac_get_sset_count();
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
@@ -145,14 +145,9 @@ dpaa2_switch_set_link_ksettings(struct n
|
||||
static int
|
||||
dpaa2_switch_ethtool_get_sset_count(struct net_device *netdev, int sset)
|
||||
{
|
||||
- struct ethsw_port_priv *port_priv = netdev_priv(netdev);
|
||||
- int num_ss_stats = DPAA2_SWITCH_NUM_COUNTERS;
|
||||
-
|
||||
switch (sset) {
|
||||
case ETH_SS_STATS:
|
||||
- if (port_priv->mac)
|
||||
- num_ss_stats += dpaa2_mac_get_sset_count();
|
||||
- return num_ss_stats;
|
||||
+ return DPAA2_SWITCH_NUM_COUNTERS + dpaa2_mac_get_sset_count();
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -161,7 +156,6 @@ dpaa2_switch_ethtool_get_sset_count(stru
|
||||
static void dpaa2_switch_ethtool_get_strings(struct net_device *netdev,
|
||||
u32 stringset, u8 *data)
|
||||
{
|
||||
- struct ethsw_port_priv *port_priv = netdev_priv(netdev);
|
||||
u8 *p = data;
|
||||
int i;
|
||||
|
||||
@@ -172,8 +166,7 @@ static void dpaa2_switch_ethtool_get_str
|
||||
ETH_GSTRING_LEN);
|
||||
p += ETH_GSTRING_LEN;
|
||||
}
|
||||
- if (port_priv->mac)
|
||||
- dpaa2_mac_get_strings(p);
|
||||
+ dpaa2_mac_get_strings(p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
From c838d9fd7e6ba9ddd6006bf0a296396266e9f121 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:17 +0200
|
||||
Subject: [PATCH 10/14] net: dpaa2-switch replace direct MAC access with
|
||||
dpaa2_switch_port_has_mac()
|
||||
|
||||
The helper function will gain a lockdep annotation in a future patch.
|
||||
Make sure to benefit from it.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
@@ -189,7 +189,7 @@ static void dpaa2_switch_ethtool_get_sta
|
||||
dpaa2_switch_ethtool_counters[i].name, err);
|
||||
}
|
||||
|
||||
- if (port_priv->mac)
|
||||
+ if (dpaa2_switch_port_has_mac(port_priv))
|
||||
dpaa2_mac_get_ethtool_stats(port_priv->mac, data + i);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
From e0ea63162cb5f1ca7f844d6ef5fc4079448ee2d5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:18 +0200
|
||||
Subject: [PATCH 11/14] net: dpaa2-eth: connect to MAC before requesting the
|
||||
"endpoint changed" IRQ
|
||||
|
||||
dpaa2_eth_connect_mac() is called both from dpaa2_eth_probe() and from
|
||||
dpni_irq0_handler_thread().
|
||||
|
||||
It could happen that the DPNI gets connected to a DPMAC on the fsl-mc
|
||||
bus exactly during probe, as soon as the "endpoint change" interrupt is
|
||||
requested in dpaa2_eth_setup_irqs(). This will cause the
|
||||
dpni_irq0_handler_thread() to register a phylink instance for that DPMAC.
|
||||
|
||||
Then, the probing function will also try to register a phylink instance
|
||||
for the same DPMAC, operation which should fail (and this will fail the
|
||||
probing of the driver).
|
||||
|
||||
Reorder dpaa2_eth_setup_irqs() and dpaa2_eth_connect_mac(), such that
|
||||
dpni_irq0_handler_thread() never races with the DPMAC-related portion of
|
||||
the probing path.
|
||||
|
||||
Also reorder dpaa2_eth_disconnect_mac() to be in the mirror position of
|
||||
dpaa2_eth_connect_mac() in the teardown path.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 18 +++++++++---------
|
||||
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -4715,6 +4715,10 @@ static int dpaa2_eth_probe(struct fsl_mc
|
||||
}
|
||||
#endif
|
||||
|
||||
+ err = dpaa2_eth_connect_mac(priv);
|
||||
+ if (err)
|
||||
+ goto err_connect_mac;
|
||||
+
|
||||
err = dpaa2_eth_setup_irqs(dpni_dev);
|
||||
if (err) {
|
||||
netdev_warn(net_dev, "Failed to set link interrupt, fall back to polling\n");
|
||||
@@ -4727,10 +4731,6 @@ static int dpaa2_eth_probe(struct fsl_mc
|
||||
priv->do_link_poll = true;
|
||||
}
|
||||
|
||||
- err = dpaa2_eth_connect_mac(priv);
|
||||
- if (err)
|
||||
- goto err_connect_mac;
|
||||
-
|
||||
err = dpaa2_eth_dl_alloc(priv);
|
||||
if (err)
|
||||
goto err_dl_register;
|
||||
@@ -4766,13 +4766,13 @@ err_dl_port_add:
|
||||
err_dl_trap_register:
|
||||
dpaa2_eth_dl_free(priv);
|
||||
err_dl_register:
|
||||
- dpaa2_eth_disconnect_mac(priv);
|
||||
-err_connect_mac:
|
||||
if (priv->do_link_poll)
|
||||
kthread_stop(priv->poll_thread);
|
||||
else
|
||||
fsl_mc_free_irqs(dpni_dev);
|
||||
err_poll_thread:
|
||||
+ dpaa2_eth_disconnect_mac(priv);
|
||||
+err_connect_mac:
|
||||
dpaa2_eth_free_rings(priv);
|
||||
err_alloc_rings:
|
||||
err_csum:
|
||||
@@ -4820,9 +4820,6 @@ static int dpaa2_eth_remove(struct fsl_m
|
||||
#endif
|
||||
|
||||
unregister_netdev(net_dev);
|
||||
- rtnl_lock();
|
||||
- dpaa2_eth_disconnect_mac(priv);
|
||||
- rtnl_unlock();
|
||||
|
||||
dpaa2_eth_dl_port_del(priv);
|
||||
dpaa2_eth_dl_traps_unregister(priv);
|
||||
@@ -4833,6 +4830,9 @@ static int dpaa2_eth_remove(struct fsl_m
|
||||
else
|
||||
fsl_mc_free_irqs(ls_dev);
|
||||
|
||||
+ rtnl_lock();
|
||||
+ dpaa2_eth_disconnect_mac(priv);
|
||||
+ rtnl_unlock();
|
||||
dpaa2_eth_free_rings(priv);
|
||||
free_percpu(priv->fd);
|
||||
free_percpu(priv->sgt_cache);
|
||||
@@ -0,0 +1,320 @@
|
||||
From 5e448a17dfa2e95166534df7f677a3694ef6187d Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:19 +0200
|
||||
Subject: [PATCH 12/14] net: dpaa2-eth: serialize changes to priv->mac with a
|
||||
mutex
|
||||
|
||||
The dpaa2 architecture permits dynamic connections between objects on
|
||||
the fsl-mc bus, specifically between a DPNI object (represented by a
|
||||
struct net_device) and a DPMAC object (represented by a struct phylink).
|
||||
|
||||
The DPNI driver is notified when those connections are created/broken
|
||||
through the dpni_irq0_handler_thread() method. To ensure that ethtool
|
||||
operations, as well as netdev up/down operations serialize with the
|
||||
connection/disconnection of the DPNI with a DPMAC,
|
||||
dpni_irq0_handler_thread() takes the rtnl_lock() to block those other
|
||||
operations from taking place.
|
||||
|
||||
There is code called by dpaa2_mac_connect() which wants to acquire the
|
||||
rtnl_mutex once again, see phylink_create() -> phylink_register_sfp() ->
|
||||
sfp_bus_add_upstream() -> rtnl_lock(). So the strategy doesn't quite
|
||||
work out, even though it's fairly simple.
|
||||
|
||||
Create a different strategy, where all code paths in the dpaa2-eth
|
||||
driver access priv->mac only while they are holding priv->mac_lock.
|
||||
The phylink instance is not created or connected to the PHY under the
|
||||
priv->mac_lock, but only assigned to priv->mac then. This will eliminate
|
||||
the reliance on the rtnl_mutex.
|
||||
|
||||
Add lockdep annotations and put comments where holding the lock is not
|
||||
necessary, and priv->mac can be dereferenced freely.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 43 ++++++++++++--
|
||||
.../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 6 ++
|
||||
.../ethernet/freescale/dpaa2/dpaa2-ethtool.c | 58 +++++++++++++++----
|
||||
3 files changed, 91 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -2021,8 +2021,11 @@ static int dpaa2_eth_link_state_update(s
|
||||
|
||||
/* When we manage the MAC/PHY using phylink there is no need
|
||||
* to manually update the netif_carrier.
|
||||
+ * We can avoid locking because we are called from the "link changed"
|
||||
+ * IRQ handler, which is the same as the "endpoint changed" IRQ handler
|
||||
+ * (the writer to priv->mac), so we cannot race with it.
|
||||
*/
|
||||
- if (dpaa2_eth_is_type_phy(priv))
|
||||
+ if (dpaa2_mac_is_type_phy(priv->mac))
|
||||
goto out;
|
||||
|
||||
/* Chech link state; speed / duplex changes are not treated yet */
|
||||
@@ -2061,6 +2064,8 @@ static int dpaa2_eth_open(struct net_dev
|
||||
priv->dpbp_dev->obj_desc.id, priv->bpid);
|
||||
}
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
if (!dpaa2_eth_is_type_phy(priv)) {
|
||||
/* We'll only start the txqs when the link is actually ready;
|
||||
* make sure we don't race against the link up notification,
|
||||
@@ -2079,6 +2084,7 @@ static int dpaa2_eth_open(struct net_dev
|
||||
|
||||
err = dpni_enable(priv->mc_io, 0, priv->mc_token);
|
||||
if (err < 0) {
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
netdev_err(net_dev, "dpni_enable() failed\n");
|
||||
goto enable_err;
|
||||
}
|
||||
@@ -2086,6 +2092,8 @@ static int dpaa2_eth_open(struct net_dev
|
||||
if (dpaa2_eth_is_type_phy(priv))
|
||||
dpaa2_mac_start(priv->mac);
|
||||
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+
|
||||
return 0;
|
||||
|
||||
enable_err:
|
||||
@@ -2157,6 +2165,8 @@ static int dpaa2_eth_stop(struct net_dev
|
||||
int dpni_enabled = 0;
|
||||
int retries = 10;
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
if (dpaa2_eth_is_type_phy(priv)) {
|
||||
dpaa2_mac_stop(priv->mac);
|
||||
} else {
|
||||
@@ -2164,6 +2174,8 @@ static int dpaa2_eth_stop(struct net_dev
|
||||
netif_carrier_off(net_dev);
|
||||
}
|
||||
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+
|
||||
/* On dpni_disable(), the MC firmware will:
|
||||
* - stop MAC Rx and wait for all Rx frames to be enqueued to software
|
||||
* - cut off WRIOP dequeues from egress FQs and wait until transmission
|
||||
@@ -2489,12 +2501,20 @@ static int dpaa2_eth_ts_ioctl(struct net
|
||||
static int dpaa2_eth_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(dev);
|
||||
+ int err;
|
||||
|
||||
if (cmd == SIOCSHWTSTAMP)
|
||||
return dpaa2_eth_ts_ioctl(dev, rq, cmd);
|
||||
|
||||
- if (dpaa2_eth_is_type_phy(priv))
|
||||
- return phylink_mii_ioctl(priv->mac->phylink, rq, cmd);
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_eth_is_type_phy(priv)) {
|
||||
+ err = phylink_mii_ioctl(priv->mac->phylink, rq, cmd);
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -4458,7 +4478,9 @@ static int dpaa2_eth_connect_mac(struct
|
||||
goto err_close_mac;
|
||||
}
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
priv->mac = mac;
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -4471,9 +4493,12 @@ err_free_mac:
|
||||
|
||||
static void dpaa2_eth_disconnect_mac(struct dpaa2_eth_priv *priv)
|
||||
{
|
||||
- struct dpaa2_mac *mac = priv->mac;
|
||||
+ struct dpaa2_mac *mac;
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+ mac = priv->mac;
|
||||
priv->mac = NULL;
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
|
||||
if (!mac)
|
||||
return;
|
||||
@@ -4492,6 +4517,7 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
struct fsl_mc_device *dpni_dev = to_fsl_mc_device(dev);
|
||||
struct net_device *net_dev = dev_get_drvdata(dev);
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
+ bool had_mac;
|
||||
int err;
|
||||
|
||||
err = dpni_get_irq_status(dpni_dev->mc_io, 0, dpni_dev->mc_handle,
|
||||
@@ -4509,7 +4535,12 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
dpaa2_eth_update_tx_fqids(priv);
|
||||
|
||||
rtnl_lock();
|
||||
- if (dpaa2_eth_has_mac(priv))
|
||||
+ /* We can avoid locking because the "endpoint changed" IRQ
|
||||
+ * handler is the only one who changes priv->mac at runtime,
|
||||
+ * so we are not racing with anyone.
|
||||
+ */
|
||||
+ had_mac = !!priv->mac;
|
||||
+ if (had_mac)
|
||||
dpaa2_eth_disconnect_mac(priv);
|
||||
else
|
||||
dpaa2_eth_connect_mac(priv);
|
||||
@@ -4610,6 +4641,8 @@ static int dpaa2_eth_probe(struct fsl_mc
|
||||
priv = netdev_priv(net_dev);
|
||||
priv->net_dev = net_dev;
|
||||
|
||||
+ mutex_init(&priv->mac_lock);
|
||||
+
|
||||
priv->iommu_domain = iommu_get_domain_for_dev(dev);
|
||||
|
||||
priv->tx_tstamp_type = HWTSTAMP_TX_OFF;
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
|
||||
@@ -580,6 +580,8 @@ struct dpaa2_eth_priv {
|
||||
#endif
|
||||
|
||||
struct dpaa2_mac *mac;
|
||||
+ /* Serializes changes to priv->mac */
|
||||
+ struct mutex mac_lock;
|
||||
struct workqueue_struct *dpaa2_ptp_wq;
|
||||
struct work_struct tx_onestep_tstamp;
|
||||
struct sk_buff_head tx_skbs;
|
||||
@@ -733,11 +735,15 @@ static inline unsigned int dpaa2_eth_rx_
|
||||
|
||||
static inline bool dpaa2_eth_is_type_phy(struct dpaa2_eth_priv *priv)
|
||||
{
|
||||
+ lockdep_assert_held(&priv->mac_lock);
|
||||
+
|
||||
return dpaa2_mac_is_type_phy(priv->mac);
|
||||
}
|
||||
|
||||
static inline bool dpaa2_eth_has_mac(struct dpaa2_eth_priv *priv)
|
||||
{
|
||||
+ lockdep_assert_held(&priv->mac_lock);
|
||||
+
|
||||
return priv->mac ? true : false;
|
||||
}
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
|
||||
@@ -86,11 +86,16 @@ static void dpaa2_eth_get_drvinfo(struct
|
||||
static int dpaa2_eth_nway_reset(struct net_device *net_dev)
|
||||
{
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
+ int err = -EOPNOTSUPP;
|
||||
+
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
|
||||
if (dpaa2_eth_is_type_phy(priv))
|
||||
- return phylink_ethtool_nway_reset(priv->mac->phylink);
|
||||
+ err = phylink_ethtool_nway_reset(priv->mac->phylink);
|
||||
+
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
|
||||
- return -EOPNOTSUPP;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -98,10 +103,18 @@ dpaa2_eth_get_link_ksettings(struct net_
|
||||
struct ethtool_link_ksettings *link_settings)
|
||||
{
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
+ int err;
|
||||
|
||||
- if (dpaa2_eth_is_type_phy(priv))
|
||||
- return phylink_ethtool_ksettings_get(priv->mac->phylink,
|
||||
- link_settings);
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_eth_is_type_phy(priv)) {
|
||||
+ err = phylink_ethtool_ksettings_get(priv->mac->phylink,
|
||||
+ link_settings);
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
|
||||
link_settings->base.autoneg = AUTONEG_DISABLE;
|
||||
if (!(priv->link_state.options & DPNI_LINK_OPT_HALF_DUPLEX))
|
||||
@@ -116,11 +129,17 @@ dpaa2_eth_set_link_ksettings(struct net_
|
||||
const struct ethtool_link_ksettings *link_settings)
|
||||
{
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
+ int err = -EOPNOTSUPP;
|
||||
|
||||
- if (!dpaa2_eth_is_type_phy(priv))
|
||||
- return -EOPNOTSUPP;
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_eth_is_type_phy(priv))
|
||||
+ err = phylink_ethtool_ksettings_set(priv->mac->phylink,
|
||||
+ link_settings);
|
||||
|
||||
- return phylink_ethtool_ksettings_set(priv->mac->phylink, link_settings);
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+
|
||||
+ return err;
|
||||
}
|
||||
|
||||
static void dpaa2_eth_get_pauseparam(struct net_device *net_dev,
|
||||
@@ -129,11 +148,16 @@ static void dpaa2_eth_get_pauseparam(str
|
||||
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
|
||||
u64 link_options = priv->link_state.options;
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
if (dpaa2_eth_is_type_phy(priv)) {
|
||||
phylink_ethtool_get_pauseparam(priv->mac->phylink, pause);
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+
|
||||
pause->rx_pause = dpaa2_eth_rx_pause_enabled(link_options);
|
||||
pause->tx_pause = dpaa2_eth_tx_pause_enabled(link_options);
|
||||
pause->autoneg = AUTONEG_DISABLE;
|
||||
@@ -152,9 +176,17 @@ static int dpaa2_eth_set_pauseparam(stru
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
- if (dpaa2_eth_is_type_phy(priv))
|
||||
- return phylink_ethtool_set_pauseparam(priv->mac->phylink,
|
||||
- pause);
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_eth_is_type_phy(priv)) {
|
||||
+ err = phylink_ethtool_set_pauseparam(priv->mac->phylink,
|
||||
+ pause);
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
+
|
||||
if (pause->autoneg)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@@ -307,8 +339,12 @@ static void dpaa2_eth_get_ethtool_stats(
|
||||
}
|
||||
*(data + i++) = buf_cnt;
|
||||
|
||||
+ mutex_lock(&priv->mac_lock);
|
||||
+
|
||||
if (dpaa2_eth_has_mac(priv))
|
||||
dpaa2_mac_get_ethtool_stats(priv->mac, data + i);
|
||||
+
|
||||
+ mutex_unlock(&priv->mac_lock);
|
||||
}
|
||||
|
||||
static int dpaa2_eth_prep_eth_rule(struct ethhdr *eth_value, struct ethhdr *eth_mask,
|
||||
@@ -0,0 +1,203 @@
|
||||
From 80d12452a5f160c39d63efc1be07df36f9d07133 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:20 +0200
|
||||
Subject: [PATCH 13/14] net: dpaa2-switch: serialize changes to priv->mac with
|
||||
a mutex
|
||||
|
||||
The dpaa2-switch driver uses a DPMAC in the same way as the dpaa2-eth
|
||||
driver, so we need to duplicate the locking solution established by the
|
||||
previous change to the switch driver as well.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
.../freescale/dpaa2/dpaa2-switch-ethtool.c | 32 +++++++++++++++----
|
||||
.../ethernet/freescale/dpaa2/dpaa2-switch.c | 31 ++++++++++++++++--
|
||||
.../ethernet/freescale/dpaa2/dpaa2-switch.h | 2 ++
|
||||
3 files changed, 55 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
|
||||
@@ -60,11 +60,18 @@ dpaa2_switch_get_link_ksettings(struct n
|
||||
{
|
||||
struct ethsw_port_priv *port_priv = netdev_priv(netdev);
|
||||
struct dpsw_link_state state = {0};
|
||||
- int err = 0;
|
||||
+ int err;
|
||||
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
- return phylink_ethtool_ksettings_get(port_priv->mac->phylink,
|
||||
- link_ksettings);
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
+ err = phylink_ethtool_ksettings_get(port_priv->mac->phylink,
|
||||
+ link_ksettings);
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
|
||||
err = dpsw_if_get_link_state(port_priv->ethsw_data->mc_io, 0,
|
||||
port_priv->ethsw_data->dpsw_handle,
|
||||
@@ -99,9 +106,16 @@ dpaa2_switch_set_link_ksettings(struct n
|
||||
bool if_running;
|
||||
int err = 0, ret;
|
||||
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
- return phylink_ethtool_ksettings_set(port_priv->mac->phylink,
|
||||
- link_ksettings);
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+
|
||||
+ if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
+ err = phylink_ethtool_ksettings_set(port_priv->mac->phylink,
|
||||
+ link_ksettings);
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
|
||||
/* Interface needs to be down to change link settings */
|
||||
if_running = netif_running(netdev);
|
||||
@@ -189,8 +203,12 @@ static void dpaa2_switch_ethtool_get_sta
|
||||
dpaa2_switch_ethtool_counters[i].name, err);
|
||||
}
|
||||
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+
|
||||
if (dpaa2_switch_port_has_mac(port_priv))
|
||||
dpaa2_mac_get_ethtool_stats(port_priv->mac, data + i);
|
||||
+
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
}
|
||||
|
||||
const struct ethtool_ops dpaa2_switch_port_ethtool_ops = {
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
@@ -603,8 +603,11 @@ static int dpaa2_switch_port_link_state_
|
||||
|
||||
/* When we manage the MAC/PHY using phylink there is no need
|
||||
* to manually update the netif_carrier.
|
||||
+ * We can avoid locking because we are called from the "link changed"
|
||||
+ * IRQ handler, which is the same as the "endpoint changed" IRQ handler
|
||||
+ * (the writer to port_priv->mac), so we cannot race with it.
|
||||
*/
|
||||
- if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
+ if (dpaa2_mac_is_type_phy(port_priv->mac))
|
||||
return 0;
|
||||
|
||||
/* Interrupts are received even though no one issued an 'ifconfig up'
|
||||
@@ -684,6 +687,8 @@ static int dpaa2_switch_port_open(struct
|
||||
struct ethsw_core *ethsw = port_priv->ethsw_data;
|
||||
int err;
|
||||
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+
|
||||
if (!dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
/* Explicitly set carrier off, otherwise
|
||||
* netif_carrier_ok() will return true and cause 'ip link show'
|
||||
@@ -697,6 +702,7 @@ static int dpaa2_switch_port_open(struct
|
||||
port_priv->ethsw_data->dpsw_handle,
|
||||
port_priv->idx);
|
||||
if (err) {
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
netdev_err(netdev, "dpsw_if_enable err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
@@ -706,6 +712,8 @@ static int dpaa2_switch_port_open(struct
|
||||
if (dpaa2_switch_port_is_type_phy(port_priv))
|
||||
dpaa2_mac_start(port_priv->mac);
|
||||
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -715,6 +723,8 @@ static int dpaa2_switch_port_stop(struct
|
||||
struct ethsw_core *ethsw = port_priv->ethsw_data;
|
||||
int err;
|
||||
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+
|
||||
if (dpaa2_switch_port_is_type_phy(port_priv)) {
|
||||
dpaa2_mac_stop(port_priv->mac);
|
||||
} else {
|
||||
@@ -722,6 +732,8 @@ static int dpaa2_switch_port_stop(struct
|
||||
netif_carrier_off(netdev);
|
||||
}
|
||||
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
+
|
||||
err = dpsw_if_disable(port_priv->ethsw_data->mc_io, 0,
|
||||
port_priv->ethsw_data->dpsw_handle,
|
||||
port_priv->idx);
|
||||
@@ -1461,7 +1473,9 @@ static int dpaa2_switch_port_connect_mac
|
||||
}
|
||||
}
|
||||
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
port_priv->mac = mac;
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1474,9 +1488,12 @@ err_free_mac:
|
||||
|
||||
static void dpaa2_switch_port_disconnect_mac(struct ethsw_port_priv *port_priv)
|
||||
{
|
||||
- struct dpaa2_mac *mac = port_priv->mac;
|
||||
+ struct dpaa2_mac *mac;
|
||||
|
||||
+ mutex_lock(&port_priv->mac_lock);
|
||||
+ mac = port_priv->mac;
|
||||
port_priv->mac = NULL;
|
||||
+ mutex_unlock(&port_priv->mac_lock);
|
||||
|
||||
if (!mac)
|
||||
return;
|
||||
@@ -1495,6 +1512,7 @@ static irqreturn_t dpaa2_switch_irq0_han
|
||||
struct ethsw_port_priv *port_priv;
|
||||
u32 status = ~0;
|
||||
int err, if_id;
|
||||
+ bool had_mac;
|
||||
|
||||
err = dpsw_get_irq_status(ethsw->mc_io, 0, ethsw->dpsw_handle,
|
||||
DPSW_IRQ_INDEX_IF, &status);
|
||||
@@ -1513,7 +1531,12 @@ static irqreturn_t dpaa2_switch_irq0_han
|
||||
|
||||
if (status & DPSW_IRQ_EVENT_ENDPOINT_CHANGED) {
|
||||
rtnl_lock();
|
||||
- if (dpaa2_switch_port_has_mac(port_priv))
|
||||
+ /* We can avoid locking because the "endpoint changed" IRQ
|
||||
+ * handler is the only one who changes priv->mac at runtime,
|
||||
+ * so we are not racing with anyone.
|
||||
+ */
|
||||
+ had_mac = !!port_priv->mac;
|
||||
+ if (had_mac)
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
else
|
||||
dpaa2_switch_port_connect_mac(port_priv);
|
||||
@@ -3249,6 +3272,8 @@ static int dpaa2_switch_probe_port(struc
|
||||
port_priv->netdev = port_netdev;
|
||||
port_priv->ethsw_data = ethsw;
|
||||
|
||||
+ mutex_init(&port_priv->mac_lock);
|
||||
+
|
||||
port_priv->idx = port_idx;
|
||||
port_priv->stp_state = BR_STATE_FORWARDING;
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.h
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.h
|
||||
@@ -161,6 +161,8 @@ struct ethsw_port_priv {
|
||||
|
||||
struct dpaa2_switch_filter_block *filter_block;
|
||||
struct dpaa2_mac *mac;
|
||||
+ /* Protects against changes to port_priv->mac */
|
||||
+ struct mutex mac_lock;
|
||||
};
|
||||
|
||||
/* Switch data */
|
||||
@@ -0,0 +1,113 @@
|
||||
From 4ea2faf5bb13d9ba9f07e996d495c4cbe34a4236 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Date: Tue, 29 Nov 2022 16:12:21 +0200
|
||||
Subject: [PATCH 14/14] net: dpaa2-mac: move rtnl_lock() only around
|
||||
phylink_{,dis}connect_phy()
|
||||
|
||||
After the introduction of a private mac_lock that serializes access to
|
||||
priv->mac (and port_priv->mac in the switch), the only remaining purpose
|
||||
of rtnl_lock() is to satisfy the locking requirements of
|
||||
phylink_fwnode_phy_connect() and phylink_disconnect_phy().
|
||||
|
||||
But the functions these live in, dpaa2_mac_connect() and
|
||||
dpaa2_mac_disconnect(), have contradictory locking requirements.
|
||||
While phylink_fwnode_phy_connect() wants rtnl_lock() to be held,
|
||||
phylink_create() wants it to not be held.
|
||||
|
||||
Move the rtnl_lock() from top-level (in the dpaa2-eth and dpaa2-switch
|
||||
drivers) to only surround the phylink calls that require it, in the
|
||||
dpaa2-mac library code.
|
||||
|
||||
This is possible because dpaa2_mac_connect() and dpaa2_mac_disconnect()
|
||||
run unlocked, and there isn't any danger of an AB/BA deadlock between
|
||||
the rtnl_mutex and other private locks.
|
||||
|
||||
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 4 ----
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 5 +++++
|
||||
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 4 ----
|
||||
3 files changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
|
||||
@@ -4534,7 +4534,6 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
dpaa2_eth_set_mac_addr(netdev_priv(net_dev));
|
||||
dpaa2_eth_update_tx_fqids(priv);
|
||||
|
||||
- rtnl_lock();
|
||||
/* We can avoid locking because the "endpoint changed" IRQ
|
||||
* handler is the only one who changes priv->mac at runtime,
|
||||
* so we are not racing with anyone.
|
||||
@@ -4544,7 +4543,6 @@ static irqreturn_t dpni_irq0_handler_thr
|
||||
dpaa2_eth_disconnect_mac(priv);
|
||||
else
|
||||
dpaa2_eth_connect_mac(priv);
|
||||
- rtnl_unlock();
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
@@ -4863,9 +4861,7 @@ static int dpaa2_eth_remove(struct fsl_m
|
||||
else
|
||||
fsl_mc_free_irqs(ls_dev);
|
||||
|
||||
- rtnl_lock();
|
||||
dpaa2_eth_disconnect_mac(priv);
|
||||
- rtnl_unlock();
|
||||
dpaa2_eth_free_rings(priv);
|
||||
free_percpu(priv->fd);
|
||||
free_percpu(priv->sgt_cache);
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
|
||||
@@ -428,7 +428,9 @@ int dpaa2_mac_connect(struct dpaa2_mac *
|
||||
}
|
||||
mac->phylink = phylink;
|
||||
|
||||
+ rtnl_lock();
|
||||
err = phylink_fwnode_phy_connect(mac->phylink, dpmac_node, 0);
|
||||
+ rtnl_unlock();
|
||||
if (err) {
|
||||
netdev_err(net_dev, "phylink_fwnode_phy_connect() = %d\n", err);
|
||||
goto err_phylink_destroy;
|
||||
@@ -446,7 +448,10 @@ err_pcs_destroy:
|
||||
|
||||
void dpaa2_mac_disconnect(struct dpaa2_mac *mac)
|
||||
{
|
||||
+ rtnl_lock();
|
||||
phylink_disconnect_phy(mac->phylink);
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
phylink_destroy(mac->phylink);
|
||||
dpaa2_pcs_destroy(mac);
|
||||
of_phy_put(mac->serdes_phy);
|
||||
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c
|
||||
@@ -1530,7 +1530,6 @@ static irqreturn_t dpaa2_switch_irq0_han
|
||||
}
|
||||
|
||||
if (status & DPSW_IRQ_EVENT_ENDPOINT_CHANGED) {
|
||||
- rtnl_lock();
|
||||
/* We can avoid locking because the "endpoint changed" IRQ
|
||||
* handler is the only one who changes priv->mac at runtime,
|
||||
* so we are not racing with anyone.
|
||||
@@ -1540,7 +1539,6 @@ static irqreturn_t dpaa2_switch_irq0_han
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
else
|
||||
dpaa2_switch_port_connect_mac(port_priv);
|
||||
- rtnl_unlock();
|
||||
}
|
||||
|
||||
out:
|
||||
@@ -2951,9 +2949,7 @@ static void dpaa2_switch_remove_port(str
|
||||
{
|
||||
struct ethsw_port_priv *port_priv = ethsw->ports[port_idx];
|
||||
|
||||
- rtnl_lock();
|
||||
dpaa2_switch_port_disconnect_mac(port_priv);
|
||||
- rtnl_unlock();
|
||||
free_netdev(port_priv->netdev);
|
||||
ethsw->ports[port_idx] = NULL;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
From b77c0ecdc7915e5c5c515da1aa6cfaf6f4eb8351 Mon Sep 17 00:00:00 2001
|
||||
From: Mathew McBride <matt@traverse.com.au>
|
||||
Date: Wed, 28 Sep 2022 16:39:31 +1000
|
||||
Subject: [PATCH] arm: disable code size reduction measures
|
||||
(gc-sections,-f*-sections)
|
||||
|
||||
This interferes with the EFI boot stub on armv7l.
|
||||
|
||||
Signed-off-by: Mathew McBride <matt@traverse.com.au>
|
||||
---
|
||||
arch/arm/Kconfig | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -128,7 +128,6 @@ config ARM
|
||||
select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
|
||||
select IRQ_FORCED_THREADING
|
||||
select LOCK_MM_AND_FIND_VMA
|
||||
- select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
|
||||
select MODULES_USE_ELF_REL
|
||||
select NEED_DMA_MAP_STATE
|
||||
select OF_EARLY_FLATTREE if OF
|
||||
21
target/linux/at91/Makefile
Normal file
21
target/linux/at91/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
ARCH:=arm
|
||||
BOARD:=at91
|
||||
BOARDNAME:=Microchip (Atmel AT91)
|
||||
FEATURES:=ext4 squashfs targz usbgadget ubifs
|
||||
SUBTARGETS:=sama7 sama5 sam9x
|
||||
|
||||
KERNEL_PATCHVER:=6.1
|
||||
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
KERNELNAME:=zImage dtbs
|
||||
|
||||
DEFAULT_PACKAGES += kmod-usb-ohci kmod-at91-udc kmod-usb-gadget-eth
|
||||
|
||||
$(eval $(call BuildTarget))
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user