mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-14 11:13:29 +00:00
sync with OpenWrt trunk
This commit is contained in:
parent
6ee9c240c0
commit
806f5db174
4
Makefile
4
Makefile
@ -27,6 +27,8 @@ ifneq ($(OPENWRT_BUILD),1)
|
||||
export OPENWRT_BUILD
|
||||
GREP_OPTIONS=
|
||||
export GREP_OPTIONS
|
||||
CDPATH=
|
||||
export CDPATH
|
||||
include $(TOPDIR)/include/debug.mk
|
||||
include $(TOPDIR)/include/depends.mk
|
||||
include $(TOPDIR)/include/toplevel.mk
|
||||
@ -85,7 +87,7 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages
|
||||
fi
|
||||
|
||||
checksum: FORCE
|
||||
$(call sha256sums,$(BIN_DIR))
|
||||
$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
|
||||
|
||||
diffconfig: FORCE
|
||||
mkdir -p $(BIN_DIR)
|
||||
|
@ -31,7 +31,7 @@ config KERNEL_CRASHLOG
|
||||
|
||||
config KERNEL_SWAP
|
||||
bool "Support for paging of anonymous memory (swap)"
|
||||
default y
|
||||
default y if !SMALL_FLASH
|
||||
|
||||
config KERNEL_DEBUG_FS
|
||||
bool "Compile the kernel with debug filesystem enabled"
|
||||
@ -65,9 +65,30 @@ config KERNEL_PROFILING
|
||||
Enable the extended profiling support mechanisms used by profilers such
|
||||
as OProfile.
|
||||
|
||||
config KERNEL_TASKSTATS
|
||||
bool "Compile the kernel with task resource/io statistics and accounting"
|
||||
default n
|
||||
help
|
||||
Enable the collection and publishing of task/io statistics and
|
||||
accounting. Enable this option to enable i/o monitoring in system
|
||||
monitors.
|
||||
|
||||
if KERNEL_TASKSTATS
|
||||
|
||||
config KERNEL_TASK_DELAY_ACCT
|
||||
def_bool y
|
||||
|
||||
config KERNEL_TASK_IO_ACCOUNTING
|
||||
def_bool y
|
||||
|
||||
config KERNEL_TASK_XACCT
|
||||
def_bool y
|
||||
|
||||
endif
|
||||
|
||||
config KERNEL_KALLSYMS
|
||||
bool "Compile the kernel with symbol table information"
|
||||
default n
|
||||
default y if !SMALL_FLASH
|
||||
help
|
||||
This will give you more information in stack traces from kernel oopses.
|
||||
|
||||
@ -112,7 +133,7 @@ config KERNEL_DEBUG_KERNEL
|
||||
|
||||
config KERNEL_DEBUG_INFO
|
||||
bool "Compile the kernel with debug information"
|
||||
default y
|
||||
default y if !SMALL_FLASH
|
||||
select KERNEL_DEBUG_KERNEL
|
||||
help
|
||||
This will compile your kernel and modules with debug information.
|
||||
@ -205,7 +226,7 @@ config KERNEL_COREDUMP
|
||||
config KERNEL_ELF_CORE
|
||||
bool "Enable process core dump support"
|
||||
select KERNEL_COREDUMP
|
||||
default y
|
||||
default y if !SMALL_FLASH
|
||||
|
||||
config KERNEL_PROVE_LOCKING
|
||||
bool "Enable kernel lock checking"
|
||||
@ -785,3 +806,30 @@ config KERNEL_DEVKMEM
|
||||
Say Y here if you want to support the /dev/kmem device. The
|
||||
/dev/kmem device is rarely used, but can be used for certain
|
||||
kind of kernel debugging operations.
|
||||
|
||||
config KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE
|
||||
int "Number of squashfs fragments cached"
|
||||
default 2 if (SMALL_FLASH && !LOW_MEMORY_FOOTPRINT)
|
||||
default 3
|
||||
|
||||
#
|
||||
# compile optimiziation setting
|
||||
#
|
||||
choice
|
||||
prompt "Compiler optimization level"
|
||||
default KERNEL_CC_OPTIMIZE_FOR_SIZE if SMALL_FLASH
|
||||
|
||||
config KERNEL_CC_OPTIMIZE_FOR_PERFORMANCE
|
||||
bool "Optimize for performance"
|
||||
help
|
||||
This is the default optimization level for the kernel, building
|
||||
with the "-O2" compiler flag for best performance and most
|
||||
helpful compile-time warnings.
|
||||
|
||||
config KERNEL_CC_OPTIMIZE_FOR_SIZE
|
||||
bool "Optimize for size"
|
||||
help
|
||||
Enabling this option will pass "-Os" instead of "-O2" to
|
||||
your compiler resulting in a smaller kernel.
|
||||
|
||||
endchoice
|
||||
|
@ -1,4 +0,0 @@
|
||||
src-git packages https://git.openwrt.org/feed/packages.git;openwrt-18.06
|
||||
src-git luci https://git.openwrt.org/project/luci.git;openwrt-18.06
|
||||
src-git routing https://git.openwrt.org/feed/routing.git;openwrt-18.06
|
||||
#src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-18.06
|
@ -19,17 +19,23 @@ endif
|
||||
|
||||
DOWNLOAD_RDEP=$(STAMP_PREPARED) $(HOST_STAMP_PREPARED)
|
||||
|
||||
define dl_method_git
|
||||
$(if $(filter https://github.com/% git://github.com/%,$(1)),github_archive,git)
|
||||
endef
|
||||
|
||||
# Try to guess the download method from the URL
|
||||
define dl_method
|
||||
$(strip \
|
||||
$(if $(2),$(2), \
|
||||
$(if $(filter @APACHE/% @GITHUB/% @GNOME/% @GNU/% @KERNEL/% @SF/% @SAVANNAH/% ftp://% http://% https://% file://%,$(1)),default, \
|
||||
$(if $(filter git://%,$(1)),git, \
|
||||
$(if $(filter svn://%,$(1)),svn, \
|
||||
$(if $(filter cvs://%,$(1)),cvs, \
|
||||
$(if $(filter hg://%,$(1)),hg, \
|
||||
$(if $(filter sftp://%,$(1)),bzr, \
|
||||
unknown \
|
||||
$(if $(filter git,$(2)),$(call dl_method_git,$(1),$(2)),
|
||||
$(if $(2),$(2), \
|
||||
$(if $(filter @APACHE/% @GITHUB/% @GNOME/% @GNU/% @KERNEL/% @SF/% @SAVANNAH/% ftp://% http://% https://% file://%,$(1)),default, \
|
||||
$(if $(filter git://%,$(1)),$(call dl_method_git,$(1),$(2)), \
|
||||
$(if $(filter svn://%,$(1)),svn, \
|
||||
$(if $(filter cvs://%,$(1)),cvs, \
|
||||
$(if $(filter hg://%,$(1)),hg, \
|
||||
$(if $(filter sftp://%,$(1)),bzr, \
|
||||
unknown \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
@ -56,6 +62,10 @@ ifdef CHECK
|
||||
check_escape=$(subst ','\'',$(1))
|
||||
#')
|
||||
|
||||
# $(1): suffix of the F_, C_ variables, e.g. hash_deprecated, hash_mismatch, etc.
|
||||
# $(2): filename
|
||||
# $(3): expected hash value
|
||||
# $(4): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
||||
check_warn_nofix = $(info $(shell printf "$(_R)WARNING: %s$(_N)" '$(call check_escape,$(call C_$(1),$(2),$(3),$(4)))'))
|
||||
ifndef FIXUP
|
||||
check_warn = $(check_warn_nofix)
|
||||
@ -71,11 +81,17 @@ F_hash_mismatch = $(F_hash_deprecated)
|
||||
F_hash_missing = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile add-hash $(3) $(call gen_sha256sum,$(1))
|
||||
endif
|
||||
|
||||
# $(1): filename
|
||||
# $(2): expected hash value
|
||||
# $(3): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
||||
C_download_missing = $(1) is missing, please run make download before re-running this check
|
||||
C_hash_mismatch = $(3) does not match $(1) hash $(call gen_sha256sum,$(1))
|
||||
C_hash_deprecated = $(3) uses deprecated hash, set to $(call gen_sha256sum,$(1))
|
||||
C_hash_missing = $(3) is missing, set to $(call gen_sha256sum,$(1))
|
||||
|
||||
# $(1): filename
|
||||
# $(2): expected hash value
|
||||
# $(3): var name of the the form: {PKG_,Download/<name>:}{,MIRROR_}{HASH,MIRROR_HASH}
|
||||
check_hash = \
|
||||
$(if $(wildcard $(DL_DIR)/$(1)), \
|
||||
$(if $(filter-out x,$(2)), \
|
||||
@ -116,6 +132,9 @@ define DownloadMethod/default
|
||||
)
|
||||
endef
|
||||
|
||||
# $(1): "check"
|
||||
# $(2): "PKG_" if <name> as in Download/<name> is "default", otherwise "Download/<name>:"
|
||||
# $(3): shell command sequence to do the download
|
||||
define wrap_mirror
|
||||
$(if $(if $(MIRROR),$(filter-out x,$(MIRROR_HASH))),$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(FILE)" "$(MIRROR_HASH)" "" || ( $(3) ),$(3)) \
|
||||
$(if $(filter check,$(1)), \
|
||||
@ -159,23 +178,41 @@ endef
|
||||
|
||||
define DownloadMethod/git
|
||||
$(call wrap_mirror,$(1),$(2), \
|
||||
echo "Checking out files from the git repository..."; \
|
||||
mkdir -p $(TMP_DIR)/dl && \
|
||||
cd $(TMP_DIR)/dl && \
|
||||
rm -rf $(SUBDIR) && \
|
||||
[ \! -d $(SUBDIR) ] && \
|
||||
git clone $(OPTS) $(URL) $(SUBDIR) && \
|
||||
(cd $(SUBDIR) && git checkout $(VERSION) && \
|
||||
git submodule update --init --recursive) && \
|
||||
echo "Packing checkout..." && \
|
||||
export TAR_TIMESTAMP=`cd $(SUBDIR) && git log -1 --format='@%ct'` && \
|
||||
rm -rf $(SUBDIR)/.git && \
|
||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
||||
rm -rf $(SUBDIR); \
|
||||
$(call DownloadMethod/rawgit) \
|
||||
)
|
||||
endef
|
||||
|
||||
define DownloadMethod/github_archive
|
||||
$(call wrap_mirror,$(1),$(2), \
|
||||
$(SCRIPT_DIR)/dl_github_archive.py \
|
||||
--dl-dir="$(DL_DIR)" \
|
||||
--url="$(URL)" \
|
||||
--version="$(VERSION)" \
|
||||
--subdir="$(SUBDIR)" \
|
||||
--source="$(FILE)" \
|
||||
--hash="$(MIRROR_HASH)" \
|
||||
|| ( $(call DownloadMethod/rawgit) ); \
|
||||
)
|
||||
endef
|
||||
|
||||
# Only intends to be called as a submethod from other DownloadMethod
|
||||
define DownloadMethod/rawgit
|
||||
echo "Checking out files from the git repository..."; \
|
||||
mkdir -p $(TMP_DIR)/dl && \
|
||||
cd $(TMP_DIR)/dl && \
|
||||
rm -rf $(SUBDIR) && \
|
||||
[ \! -d $(SUBDIR) ] && \
|
||||
git clone $(OPTS) $(URL) $(SUBDIR) && \
|
||||
(cd $(SUBDIR) && git checkout $(VERSION) && \
|
||||
git submodule update --init --recursive) && \
|
||||
echo "Packing checkout..." && \
|
||||
export TAR_TIMESTAMP=`cd $(SUBDIR) && git log -1 --format='@%ct'` && \
|
||||
rm -rf $(SUBDIR)/.git && \
|
||||
$(call dl_tar_pack,$(TMP_DIR)/dl/$(FILE),$(SUBDIR)) && \
|
||||
mv $(TMP_DIR)/dl/$(FILE) $(DL_DIR)/ && \
|
||||
rm -rf $(SUBDIR);
|
||||
endef
|
||||
|
||||
define DownloadMethod/bzr
|
||||
$(call wrap_mirror,$(1),$(2), \
|
||||
echo "Checking out files from the bzr repository..."; \
|
||||
|
@ -18,8 +18,8 @@ ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY
|
||||
endif
|
||||
ifdef CONFIG_PKG_ASLR_PIE
|
||||
ifeq ($(strip $(PKG_ASLR_PIE)),1)
|
||||
TARGET_CFLAGS += -fPIC
|
||||
TARGET_LDFLAGS += -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
||||
TARGET_CFLAGS += $(FPIC)
|
||||
TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
||||
endif
|
||||
endif
|
||||
ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR
|
||||
|
@ -132,7 +132,7 @@ define Host/Exports/Default
|
||||
$(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX)
|
||||
$(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||
$(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||
$(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache
|
||||
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache)
|
||||
$(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
|
||||
$(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
|
||||
endef
|
||||
|
@ -49,6 +49,27 @@ define Build/eva-image
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/zyxel-ras-image
|
||||
let \
|
||||
newsize="$(subst k,* 1024,$(RAS_ROOTFS_SIZE))"; \
|
||||
$(STAGING_DIR_HOST)/bin/mkrasimage \
|
||||
-b $(RAS_BOARD) \
|
||||
-v $(RAS_VERSION) \
|
||||
-r $@ \
|
||||
-s $$newsize \
|
||||
-o $@.new \
|
||||
$(if $(findstring separate-kernel,$(word 1,$(1))),-k $(IMAGE_KERNEL)) \
|
||||
&& mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/mkbuffaloimg
|
||||
$(STAGING_DIR_HOST)/bin/mkbuffaloimg -B $(BOARDNAME) \
|
||||
-R $$(($(subst k, * 1024,$(ROOTFS_SIZE)))) \
|
||||
-K $$(($(subst k, * 1024,$(KERNEL_SIZE)))) \
|
||||
-i $@ -o $@.new
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/netgear-chk
|
||||
$(STAGING_DIR_HOST)/bin/mkchkimg \
|
||||
-o $@.new \
|
||||
@ -102,6 +123,16 @@ define Build/tplink-safeloader
|
||||
$(if $(findstring sysupgrade,$(word 1,$(1))),-S) && mv $@.new $@ || rm -f $@
|
||||
endef
|
||||
|
||||
define Build/mksercommfw
|
||||
-$(STAGING_DIR_HOST)/bin/mksercommfw \
|
||||
$@ \
|
||||
$(KERNEL_OFFSET) \
|
||||
$(HWID) \
|
||||
$(HWVER) \
|
||||
$(SWVER)
|
||||
endef
|
||||
|
||||
|
||||
define Build/append-dtb
|
||||
cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@
|
||||
endef
|
||||
@ -243,6 +274,11 @@ define Build/openmesh-image
|
||||
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
|
||||
endef
|
||||
|
||||
define Build/senao-header
|
||||
$(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new
|
||||
mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/sysupgrade-tar
|
||||
sh $(TOPDIR)/scripts/sysupgrade-tar.sh \
|
||||
--board $(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)) \
|
||||
@ -296,6 +332,12 @@ metadata_json = \
|
||||
|
||||
define Build/append-metadata
|
||||
$(if $(SUPPORTED_DEVICES),-echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@)
|
||||
[ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" ] || { \
|
||||
cp "$(BUILD_KEY).ucert" "$@.ucert" ;\
|
||||
usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\
|
||||
ucert -A -c "$@.ucert" -x "$@.sig" ;\
|
||||
fwtool -S "$@.ucert" "$@" ;\
|
||||
}
|
||||
endef
|
||||
|
||||
define Build/kernel2minor
|
||||
|
@ -2,11 +2,13 @@
|
||||
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-4.9 = .123
|
||||
LINUX_VERSION-4.14 = .66
|
||||
LINUX_VERSION-3.18 = .119
|
||||
LINUX_VERSION-4.9 = .124
|
||||
LINUX_VERSION-4.14 = .67
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.123 = 8d12ceab9f8cbfd0555c881b35ed4384cf3ea8e223d894c030b04786005e5071
|
||||
LINUX_KERNEL_HASH-4.14.66 = a38061ca4c864d11a72beb3dc5918a99f13372fe9ee35508d004fdfabd460413
|
||||
LINUX_KERNEL_HASH-3.18.119 = 2bab623ed868b679eac224f62212cc285264061bedf1e32897f72e35aa26160d
|
||||
LINUX_KERNEL_HASH-4.9.124 = 5ca6b0d48c8dd1265005169f1b97149a4e893668c0d8aa566a73c7663c8e4311
|
||||
LINUX_KERNEL_HASH-4.14.67 = 3f4b056dc27233a78f7a4a35ed6fdcfd0a9680ec40b611a898bb6c8b905070ba
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
@ -106,6 +106,7 @@ $(eval $(call nf_add,IPT_PHYSDEV,CONFIG_NETFILTER_XT_MATCH_PHYSDEV, $(P_XT)xt_ph
|
||||
# filter
|
||||
|
||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_string))
|
||||
$(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_BPF, $(P_XT)xt_bpf))
|
||||
|
||||
|
||||
# ipopt
|
||||
|
@ -144,7 +144,7 @@ define Build/Exports/Default
|
||||
$(1) : export CONFIG_SITE:=$$(CONFIG_SITE)
|
||||
$(1) : export PKG_CONFIG_PATH:=$$(PKG_CONFIG_PATH)
|
||||
$(1) : export PKG_CONFIG_LIBDIR:=$$(PKG_CONFIG_PATH)
|
||||
$(1) : export CCACHE_DIR:=$(STAGING_DIR)/ccache
|
||||
$(if $(CONFIG_CCACHE),$(1) : export CCACHE_DIR:=$(STAGING_DIR)/ccache)
|
||||
endef
|
||||
Build/Exports=$(Build/Exports/Default)
|
||||
|
||||
|
@ -27,7 +27,7 @@ $(eval $(call TestHostCommand,proper-umask, \
|
||||
umask | grep -xE 00[012][012]))
|
||||
|
||||
$(eval $(call SetupHostCommand,gcc, \
|
||||
Please install the GNU C Compiler (gcc) 4.8 or later \
|
||||
Please install the GNU C Compiler (gcc) 4.8 or later, \
|
||||
$(CC) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \
|
||||
gcc -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \
|
||||
gcc48 --version | grep gcc, \
|
||||
@ -46,7 +46,7 @@ $(eval $(call TestHostCommand,working-gcc, \
|
||||
gcc -x c -o $(TMP_DIR)/a.out -))
|
||||
|
||||
$(eval $(call SetupHostCommand,g++, \
|
||||
Please install the GNU C++ Compiler (g++) 4.8 or later \
|
||||
Please install the GNU C++ Compiler (g++) 4.8 or later, \
|
||||
$(CXX) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \
|
||||
g++ -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \
|
||||
g++48 --version | grep g++, \
|
||||
@ -138,11 +138,6 @@ $(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \
|
||||
$(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \
|
||||
wget --version | grep GNU))
|
||||
|
||||
$(eval $(call SetupHostCommand,time,Please install GNU 'time' or BusyBox 'time' that supports -f, \
|
||||
gtime --version 2>&1 | grep GNU, \
|
||||
time --version 2>&1 | grep GNU, \
|
||||
busybox time 2>&1 | grep -- '-f FMT'))
|
||||
|
||||
$(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \
|
||||
perl --version | grep "perl.*v5"))
|
||||
|
||||
|
@ -43,7 +43,7 @@ log_make = \
|
||||
$(if $(BUILD_LOG), \
|
||||
set -o pipefail; \
|
||||
mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \
|
||||
env time -f "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \
|
||||
$(SCRIPT_DIR)/time.pl "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)" \
|
||||
$$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \
|
||||
$(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt)
|
||||
|
||||
|
@ -22,7 +22,7 @@ luci-app-sfe luci-app-flowoffload luci-app-nlbwmon
|
||||
# For nas targets
|
||||
DEFAULT_PACKAGES.nas:=block-mount fdisk lsblk mdadm
|
||||
# For router targets
|
||||
DEFAULT_PACKAGES.router:=dnsmasq-full iptables ip6tables ppp ppp-mod-pppoe firewall kmod-ipt-offload
|
||||
DEFAULT_PACKAGES.router:=dnsmasq-full iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd-ipv6only odhcp6c kmod-ipt-offload
|
||||
DEFAULT_PACKAGES.bootloader:=
|
||||
|
||||
ifneq ($(DUMP),)
|
||||
@ -56,7 +56,7 @@ else
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(filter 4.9,$(KERNEL_PATCHVER)),)
|
||||
ifneq ($(filter 3.18 4.9,$(KERNEL_PATCHVER)),)
|
||||
DEFAULT_PACKAGES.router:=$(filter-out kmod-ipt-offload,$(DEFAULT_PACKAGES.router))
|
||||
endif
|
||||
|
||||
@ -179,7 +179,7 @@ ifeq ($(DUMP),1)
|
||||
CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
|
||||
CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
|
||||
CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
|
||||
CPU_CFLAGS_octeon = -march=octeon -mabi=64
|
||||
CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
CPU_TYPE ?= pentium
|
||||
|
@ -54,7 +54,7 @@ ifeq ($(findstring s,$(OPENWRT_VERBOSE)),)
|
||||
else
|
||||
SILENT:=>/dev/null $(if $(findstring w,$(OPENWRT_VERBOSE)),,2>&1)
|
||||
export QUIET:=1
|
||||
SUBMAKE=cmd() { $(SILENT) $(MAKE) -s $$* < /dev/null || { echo "make $$*: build failed. Please re-run make with -j1 V=s to see what's going on"; false; } } 8>&1 9>&2; cmd
|
||||
SUBMAKE=cmd() { $(SILENT) $(MAKE) -s "$$@" < /dev/null || { echo "make $$*: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on"; false; } } 8>&1 9>&2; cmd
|
||||
endif
|
||||
|
||||
.SILENT: $(MAKECMDGOALS)
|
||||
|
@ -11,6 +11,7 @@
|
||||
# SOURCE_DATE_EPOCH:=x
|
||||
|
||||
PKG_CONFIG_DEPENDS += \
|
||||
CONFIG_VERSION_HOME_URL \
|
||||
CONFIG_VERSION_BUG_URL \
|
||||
CONFIG_VERSION_NUMBER \
|
||||
CONFIG_VERSION_CODE \
|
||||
@ -25,13 +26,13 @@ PKG_CONFIG_DEPENDS += \
|
||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
||||
|
||||
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),18.06-SNAPSHOT)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),SNAPSHOT)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/18.06-SNAPSHOT)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/snapshots)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
@ -46,6 +47,9 @@ VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURE
|
||||
VERSION_BUG_URL:=$(call qstrip,$(CONFIG_VERSION_BUG_URL))
|
||||
VERSION_BUG_URL:=$(if $(VERSION_BUG_URL),$(VERSION_BUG_URL),http://bugs.openwrt.org/)
|
||||
|
||||
VERSION_HOME_URL:=$(call qstrip,$(CONFIG_VERSION_HOME_URL))
|
||||
VERSION_HOME_URL:=$(if $(VERSION_HOME_URL),$(VERSION_HOME_URL),http://openwrt.org/)
|
||||
|
||||
VERSION_SUPPORT_URL:=$(call qstrip,$(CONFIG_VERSION_SUPPORT_URL))
|
||||
VERSION_SUPPORT_URL:=$(if $(VERSION_SUPPORT_URL),$(VERSION_SUPPORT_URL),http://forum.lede-project.org/)
|
||||
|
||||
@ -100,6 +104,7 @@ VERSION_SED_SCRIPT:=$(SED) 's,%U,$(call sed_escape,$(VERSION_REPO)),g' \
|
||||
-e 's,%M,$(call sed_escape,$(VERSION_MANUFACTURER)),g' \
|
||||
-e 's,%m,$(call sed_escape,$(VERSION_MANUFACTURER_URL)),g' \
|
||||
-e 's,%b,$(call sed_escape,$(VERSION_BUG_URL)),g' \
|
||||
-e 's,%u,$(call sed_escape,$(VERSION_HOME_URL)),g' \
|
||||
-e 's,%s,$(call sed_escape,$(VERSION_SUPPORT_URL)),g' \
|
||||
-e 's,%P,$(call sed_escape,$(VERSION_PRODUCT)),g' \
|
||||
-e 's,%h,$(call sed_escape,$(VERSION_HWREV)),g'
|
||||
|
@ -12,11 +12,11 @@ include $(INCLUDE_DIR)/version.mk
|
||||
include $(INCLUDE_DIR)/feeds.mk
|
||||
|
||||
PKG_NAME:=base-files
|
||||
PKG_RELEASE:=192
|
||||
PKG_RELEASE:=195
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||
PKG_BUILD_DEPENDS:=usign/host
|
||||
PKG_BUILD_DEPENDS:=usign/host ucert/host
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
# Extend depends from version.mk
|
||||
@ -49,6 +49,7 @@ define Package/base-files/conffiles
|
||||
/etc/config/system
|
||||
/etc/crontabs/
|
||||
/etc/dropbear/
|
||||
/etc/ethers
|
||||
/etc/group
|
||||
/etc/hosts
|
||||
/etc/inittab
|
||||
@ -102,6 +103,9 @@ ifdef CONFIG_SIGNED_PACKAGES
|
||||
[ -s $(BUILD_KEY) -a -s $(BUILD_KEY).pub ] || \
|
||||
$(STAGING_DIR_HOST)/bin/usign -G -s $(BUILD_KEY) -p $(BUILD_KEY).pub -c "Local build key"
|
||||
|
||||
[ -s $(BUILD_KEY).ucert ] || \
|
||||
$(STAGING_DIR_HOST)/bin/ucert -I -c $(BUILD_KEY).ucert -p $(BUILD_KEY).pub -s $(BUILD_KEY)
|
||||
|
||||
endef
|
||||
|
||||
define Package/base-files/install-key
|
||||
|
@ -15,10 +15,14 @@ generate_static_network() {
|
||||
set network.loopback.proto='static'
|
||||
set network.loopback.ipaddr='127.0.0.1'
|
||||
set network.loopback.netmask='255.0.0.0'
|
||||
delete network.globals
|
||||
set network.globals='globals'
|
||||
set network.globals.ula_prefix='auto'
|
||||
EOF
|
||||
[ -e /proc/sys/net/ipv6 ] && {
|
||||
uci -q batch <<-EOF
|
||||
delete network.globals
|
||||
set network.globals='globals'
|
||||
set network.globals.ula_prefix='auto'
|
||||
EOF
|
||||
}
|
||||
|
||||
if json_is_a dsl object; then
|
||||
json_select dsl
|
||||
@ -102,21 +106,23 @@ generate_network() {
|
||||
set network.$1.proto='static'
|
||||
set network.$1.ipaddr='$ipad'
|
||||
set network.$1.netmask='$netm'
|
||||
set network.$1.ip6assign='60'
|
||||
EOF
|
||||
[ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60'
|
||||
;;
|
||||
|
||||
dhcp)
|
||||
# fixup IPv6 slave interface if parent is a bridge
|
||||
[ "$type" = "bridge" ] && ifname="br-$1"
|
||||
|
||||
uci -q batch <<-EOF
|
||||
set network.$1.proto='dhcp'
|
||||
delete network.${1}6
|
||||
set network.${1}6='interface'
|
||||
set network.${1}6.ifname='$ifname'
|
||||
set network.${1}6.proto='dhcpv6'
|
||||
EOF
|
||||
uci set network.$1.proto='dhcp'
|
||||
[ -e /proc/sys/net/ipv6 ] && {
|
||||
uci -q batch <<-EOF
|
||||
delete network.${1}6
|
||||
set network.${1}6='interface'
|
||||
set network.${1}6.ifname='$ifname'
|
||||
set network.${1}6.proto='dhcpv6'
|
||||
EOF
|
||||
}
|
||||
;;
|
||||
|
||||
pppoe)
|
||||
@ -124,12 +130,16 @@ generate_network() {
|
||||
set network.$1.proto='pppoe'
|
||||
set network.$1.username='username'
|
||||
set network.$1.password='password'
|
||||
set network.$1.ipv6='1'
|
||||
delete network.${1}6
|
||||
set network.${1}6='interface'
|
||||
set network.${1}6.ifname='@${1}'
|
||||
set network.${1}6.proto='dhcpv6'
|
||||
EOF
|
||||
[ -e /proc/sys/net/ipv6 ] && {
|
||||
uci -q batch <<-EOF
|
||||
set network.$1.ipv6='1'
|
||||
delete network.${1}6
|
||||
set network.${1}6='interface'
|
||||
set network.${1}6.ifname='@${1}'
|
||||
set network.${1}6.proto='dhcpv6'
|
||||
EOF
|
||||
}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
6
package/base-files/files/etc/ethers
Normal file
6
package/base-files/files/etc/ethers
Normal file
@ -0,0 +1,6 @@
|
||||
#
|
||||
# Lookup man 5 ethers for syntax documentation
|
||||
#
|
||||
# Examples :
|
||||
# 02:00:11:22:33:44 OpenWrt.lan
|
||||
# 02:00:11:22:33:44 192.168.1.1
|
@ -14,7 +14,11 @@ export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
|
||||
export HOME=${HOME:-/root}
|
||||
export PS1='\u@\h:\w\$ '
|
||||
|
||||
[ "$TERM" = "xterm" ] && export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
|
||||
;;
|
||||
esac
|
||||
|
||||
[ -x /bin/more ] || alias more=less
|
||||
[ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
|
||||
|
@ -20,8 +20,7 @@ find_mtd_chardev() {
|
||||
echo "${INDEX:+$PREFIX$INDEX}"
|
||||
}
|
||||
|
||||
mtd_get_mac_ascii()
|
||||
{
|
||||
mtd_get_mac_ascii() {
|
||||
local mtdname="$1"
|
||||
local key="$2"
|
||||
local part
|
||||
@ -39,6 +38,29 @@ mtd_get_mac_ascii()
|
||||
[ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
|
||||
}
|
||||
|
||||
mtd_get_mac_text() {
|
||||
local mtdname=$1
|
||||
local offset=$2
|
||||
local part
|
||||
local mac_dirty
|
||||
|
||||
part=$(find_mtd_part "$mtdname")
|
||||
if [ -z "$part" ]; then
|
||||
echo "mtd_get_mac_text: partition $mtdname not found!" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -z "$offset" ]; then
|
||||
echo "mtd_get_mac_text: offset missing!" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
mac_dirty=$(dd if="$part" bs=1 skip="$offset" count=17 2>/dev/null)
|
||||
|
||||
# "canonicalize" mac
|
||||
[ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
|
||||
}
|
||||
|
||||
mtd_get_mac_binary() {
|
||||
local mtdname="$1"
|
||||
local offset="$2"
|
||||
@ -87,22 +109,19 @@ macaddr_add() {
|
||||
echo $oui:$nic
|
||||
}
|
||||
|
||||
macaddr_setbit_la()
|
||||
{
|
||||
macaddr_setbit_la() {
|
||||
local mac=$1
|
||||
|
||||
printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:}
|
||||
}
|
||||
|
||||
macaddr_2bin()
|
||||
{
|
||||
macaddr_2bin() {
|
||||
local mac=$1
|
||||
|
||||
echo -ne \\x${mac//:/\\x}
|
||||
}
|
||||
|
||||
macaddr_canonicalize()
|
||||
{
|
||||
macaddr_canonicalize() {
|
||||
local mac="$1"
|
||||
local canon=""
|
||||
|
||||
|
@ -27,30 +27,33 @@ json_select_object() {
|
||||
json_select "$1"
|
||||
}
|
||||
|
||||
_ucidef_set_interface() {
|
||||
local name="$1"
|
||||
local iface="$2"
|
||||
local proto="$3"
|
||||
ucidef_set_interface() {
|
||||
local network=$1; shift
|
||||
|
||||
json_select_object "$name"
|
||||
json_add_string ifname "$iface"
|
||||
[ -z "$network" ] && return
|
||||
|
||||
if ! json_is_a protocol string || [ -n "$proto" ]; then
|
||||
case "$proto" in
|
||||
static|dhcp|none|pppoe) : ;;
|
||||
*)
|
||||
case "$name" in
|
||||
lan) proto="static" ;;
|
||||
wan) proto="dhcp" ;;
|
||||
*) proto="none" ;;
|
||||
esac
|
||||
;;
|
||||
json_select_object network
|
||||
json_select_object "$network"
|
||||
|
||||
while [ -n "$1" ]; do
|
||||
local opt=$1; shift
|
||||
local val=$1; shift
|
||||
|
||||
[ -n "$opt" -a -n "$val" ] || break
|
||||
|
||||
json_add_string "$opt" "$val"
|
||||
done
|
||||
|
||||
if ! json_is_a protocol string; then
|
||||
case "$network" in
|
||||
lan) json_add_string protocol static ;;
|
||||
wan) json_add_string protocol dhcp ;;
|
||||
*) json_add_string protocol none ;;
|
||||
esac
|
||||
|
||||
json_add_string protocol "$proto"
|
||||
fi
|
||||
|
||||
json_select ..
|
||||
json_select ..
|
||||
}
|
||||
|
||||
ucidef_set_board_id() {
|
||||
@ -66,31 +69,19 @@ ucidef_set_model_name() {
|
||||
}
|
||||
|
||||
ucidef_set_interface_lan() {
|
||||
json_select_object network
|
||||
_ucidef_set_interface lan "$@"
|
||||
json_select ..
|
||||
ucidef_set_interface "lan" ifname "$1" protocol "${2:-static}"
|
||||
}
|
||||
|
||||
ucidef_set_interface_wan() {
|
||||
json_select_object network
|
||||
_ucidef_set_interface wan "$@"
|
||||
json_select ..
|
||||
ucidef_set_interface "wan" ifname "$1" protocol "${2:-dhcp}"
|
||||
}
|
||||
|
||||
ucidef_set_interfaces_lan_wan() {
|
||||
local lan_if="$1"
|
||||
local wan_if="$2"
|
||||
|
||||
json_select_object network
|
||||
_ucidef_set_interface lan "$lan_if"
|
||||
_ucidef_set_interface wan "$wan_if"
|
||||
json_select ..
|
||||
}
|
||||
|
||||
ucidef_set_interface_raw() {
|
||||
json_select_object network
|
||||
_ucidef_set_interface "$@"
|
||||
json_select ..
|
||||
ucidef_set_interface_lan "$lan_if"
|
||||
ucidef_set_interface_wan "$wan_if"
|
||||
}
|
||||
|
||||
_ucidef_add_switch_port() {
|
||||
@ -185,9 +176,9 @@ _ucidef_finish_switch_roles() {
|
||||
devices="${devices:+$devices }$device"
|
||||
fi
|
||||
json_select ..
|
||||
|
||||
_ucidef_set_interface "$role" "$devices"
|
||||
json_select ..
|
||||
|
||||
ucidef_set_interface "$role" ifname "$devices"
|
||||
done
|
||||
}
|
||||
|
||||
@ -300,18 +291,7 @@ ucidef_set_interface_macaddr() {
|
||||
local network="$1"
|
||||
local macaddr="$2"
|
||||
|
||||
json_select_object network
|
||||
|
||||
json_select "$network"
|
||||
[ $? -eq 0 ] || {
|
||||
json_select ..
|
||||
return
|
||||
}
|
||||
|
||||
json_add_string macaddr "$macaddr"
|
||||
json_select ..
|
||||
|
||||
json_select ..
|
||||
ucidef_set_interface "$network" macaddr "$macaddr"
|
||||
}
|
||||
|
||||
ucidef_add_atm_bridge() {
|
||||
|
@ -211,6 +211,11 @@ jffs2_copy_config() {
|
||||
fi
|
||||
}
|
||||
|
||||
indicate_upgrade() {
|
||||
. /etc/diag.sh
|
||||
set_state upgrade
|
||||
}
|
||||
|
||||
# Flash firmware to MTD partition
|
||||
#
|
||||
# $(1): path to image
|
||||
@ -222,6 +227,7 @@ default_do_upgrade() {
|
||||
else
|
||||
get_image "$1" "$2" | mtd write - "${PART_NAME:-image}"
|
||||
fi
|
||||
[ $? -ne 0 ] && exit 1
|
||||
}
|
||||
|
||||
do_upgrade_stage2() {
|
||||
|
@ -1,3 +1,28 @@
|
||||
fwtool_check_signature() {
|
||||
[ $# -gt 1 ] && return 1
|
||||
|
||||
[ ! -x /usr/bin/ucert ] && {
|
||||
if [ "$REQUIRE_IMAGE_SIGNATURE" = 1 ]; then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
if ! fwtool -q -t -s /tmp/sysupgrade.ucert "$1"; then
|
||||
echo "Image signature not found"
|
||||
[ "$REQUIRE_IMAGE_SIGNATURE" = 1 -a "$FORCE" != 1 ] && {
|
||||
echo "Use sysupgrade -F to override this check when downgrading or flashing to vendor firmware"
|
||||
}
|
||||
[ "$REQUIRE_IMAGE_SIGNATURE" = 1 ] && return 1
|
||||
return 0
|
||||
fi
|
||||
|
||||
ucert -V -m "$1" -c "/tmp/sysupgrade.ucert" -P /etc/opkg/keys
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
fwtool_check_image() {
|
||||
[ $# -gt 1 ] && return 1
|
||||
|
||||
|
@ -122,6 +122,7 @@ kill_remaining() { # [ <signal> [ <loop> ] ]
|
||||
echo
|
||||
}
|
||||
|
||||
indicate_upgrade
|
||||
|
||||
killall -9 telnetd
|
||||
killall -9 dropbear
|
||||
|
@ -136,7 +136,7 @@ add_overlayfiles() {
|
||||
}
|
||||
|
||||
# hooks
|
||||
sysupgrade_image_check="fwtool_check_image platform_check_image"
|
||||
sysupgrade_image_check="fwtool_check_signature fwtool_check_image platform_check_image"
|
||||
|
||||
if [ $SAVE_OVERLAY = 1 ]; then
|
||||
[ ! -d /overlay/upper/etc ] && {
|
||||
@ -165,6 +165,11 @@ do_save_conffiles() {
|
||||
v "Saving config files..."
|
||||
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
|
||||
tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Failed to create the configuration backup."
|
||||
rm -f "$conf_tar"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -f "$CONFFILES"
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $0 [config|down|reload|status]
|
||||
Usage: $0 [config|up|down|reload|status]
|
||||
enables (default), disables or configures devices not yet configured.
|
||||
EOF
|
||||
exit 1
|
||||
@ -241,5 +241,6 @@ case "$1" in
|
||||
reload) wifi_reload "$2";;
|
||||
reload_legacy) wifi_reload_legacy "$2";;
|
||||
--help|help) usage;;
|
||||
*) ubus call network reload; wifi_updown "enable" "$2";;
|
||||
''|up) ubus call network reload; wifi_updown "enable" "$2";;
|
||||
*) usage; exit 1;;
|
||||
esac
|
||||
|
@ -4,7 +4,7 @@ ID="%d"
|
||||
ID_LIKE="lede openwrt"
|
||||
PRETTY_NAME="%D %V"
|
||||
VERSION_ID="%v"
|
||||
HOME_URL="%m"
|
||||
HOME_URL="%u"
|
||||
BUG_URL="%b"
|
||||
SUPPORT_URL="%s"
|
||||
BUILD_ID="%R"
|
||||
|
@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.openwrt.org/releases/18.06-SNAPSHOT"
|
||||
default "http://downloads.lede-project.org/snapshots"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
@ -202,6 +202,12 @@ if VERSIONOPT
|
||||
%P .. Product name or "Generic"
|
||||
%h .. Hardware revision or "v0"
|
||||
|
||||
config VERSION_HOME_URL
|
||||
string
|
||||
prompt "Release Homepage"
|
||||
help
|
||||
This is the release version homepage
|
||||
|
||||
config VERSION_MANUFACTURER
|
||||
string
|
||||
prompt "Manufacturer name"
|
||||
|
@ -13,7 +13,7 @@ PKG_VERSION:=1.6.9
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
|
||||
PKG_SOURCE_URL:=https://downloads.openwrt.org/sources/
|
||||
PKG_HASH:=1d2bc04c2c6bb3d2d6c1916b6dc559cda2b1ecb045d7801fd49af6af4234abeb
|
||||
PKG_TARGETS:=bin
|
||||
|
||||
@ -27,7 +27,6 @@ define Package/apex
|
||||
DEPENDS:=@TARGET_ixp4xx
|
||||
DEFAULT:=y
|
||||
TITLE:=Boot loader for NSLU2, FSG3, NAS100D and others
|
||||
URL:=http://wiki.buici.com/wiki/Apex_Bootloader
|
||||
endef
|
||||
|
||||
define build_apex
|
||||
|
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=https://github.com/apritzel/arm-trusted-firmware
|
||||
PKG_SOURCE_DATE:=2018-02-04
|
||||
PKG_SOURCE_VERSION:=ae78724247a01560164d607ed66db111c74d8df0
|
||||
PKG_MIRROR_HASH:=e4ddc3294f86c1e163d683a2322427bbdd5b63762ead4b1792b34df75d7bda28
|
||||
PKG_SOURCE_DATE:=2018-02-10
|
||||
PKG_SOURCE_VERSION:=c9f55c023164a6c8c49f70f7ac6c68c626839d6f
|
||||
PKG_MIRROR_HASH:=94b5338592cf0bcc353b55da5fdd62c91ae8e6263822f73724cb72ecde3dbbf9
|
||||
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_LICENSE_FILES:=license.md
|
||||
|
@ -12,7 +12,7 @@ PKG_VERSION:=20080329
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://andrzejekiert.ovh.org/software/fconfig/
|
||||
PKG_SOURCE_URL:=https://downloads.openwrt.org/sources
|
||||
PKG_HASH:=4ff0e8f07e35e46b705c0dbe9d9544ede01ea092a69e3f7db03e55a3f2bb8eb7
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
@ -24,7 +24,6 @@ define Package/fconfig
|
||||
CATEGORY:=Utilities
|
||||
SUBMENU:=Boot Loaders
|
||||
TITLE:=RedBoot configuration editor
|
||||
URL:=http://andrzejekiert.ovh.org/software.html.en
|
||||
endef
|
||||
|
||||
define Package/fconfig/description
|
||||
|
@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
PKG_NAME:=grub
|
||||
PKG_CPE_ID:=cpe:/a:gnu:grub2
|
||||
PKG_VERSION:=2.02
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/grub
|
||||
|
@ -0,0 +1,71 @@
|
||||
From 563b1da6e6ae7af46cc8354cadb5dab416989f0a Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Mon, 26 Mar 2018 16:52:34 +0800
|
||||
Subject: Fix packed-not-aligned error on GCC 8
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When building with GCC 8, there are several errors regarding packed-not-aligned.
|
||||
|
||||
./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned]
|
||||
|
||||
This patch fixes the build error by cleaning up the ambiguity of placing
|
||||
aligned structure in a packed one. In "struct grub_btrfs_time" and "struct
|
||||
grub_gpt_part_type", the aligned attribute seems to be superfluous, and also
|
||||
has to be packed, to ensure the structure is bit-to-bit mapped to the format
|
||||
laid on disk. I think we could blame to copy and paste error here for the
|
||||
mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as
|
||||
the name suggests. :)
|
||||
|
||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
Tested-by: Michael Chang <mchang@suse.com>
|
||||
Tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/fs/btrfs.c | 2 +-
|
||||
include/grub/efiemu/runtime.h | 2 +-
|
||||
include/grub/gpt_partition.h | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 4849c1ceb..be195448d 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -175,7 +175,7 @@ struct grub_btrfs_time
|
||||
{
|
||||
grub_int64_t sec;
|
||||
grub_uint32_t nanosec;
|
||||
-} __attribute__ ((aligned (4)));
|
||||
+} GRUB_PACKED;
|
||||
|
||||
struct grub_btrfs_inode
|
||||
{
|
||||
diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
|
||||
index 9b6b729f4..36d2dedf4 100644
|
||||
--- a/include/grub/efiemu/runtime.h
|
||||
+++ b/include/grub/efiemu/runtime.h
|
||||
@@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel
|
||||
|
||||
struct efi_variable
|
||||
{
|
||||
- grub_efi_guid_t guid;
|
||||
+ grub_efi_packed_guid_t guid;
|
||||
grub_uint32_t namelen;
|
||||
grub_uint32_t size;
|
||||
grub_efi_uint32_t attributes;
|
||||
diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
|
||||
index 1b32f6725..9668a68c3 100644
|
||||
--- a/include/grub/gpt_partition.h
|
||||
+++ b/include/grub/gpt_partition.h
|
||||
@@ -28,7 +28,7 @@ struct grub_gpt_part_type
|
||||
grub_uint16_t data2;
|
||||
grub_uint16_t data3;
|
||||
grub_uint8_t data4[8];
|
||||
-} __attribute__ ((aligned(8)));
|
||||
+} GRUB_PACKED;
|
||||
typedef struct grub_gpt_part_type grub_gpt_part_type_t;
|
||||
|
||||
#define GRUB_GPT_PARTITION_TYPE_EMPTY \
|
||||
--
|
||||
cgit v1.1-33-g03f6
|
40
package/boot/grub2/patches/300-CVE-2015-8370.patch
Normal file
40
package/boot/grub2/patches/300-CVE-2015-8370.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Date: Fri, 13 Nov 2015 16:21:09 +0100
|
||||
Subject: [PATCH] Fix security issue when reading username and password
|
||||
|
||||
This patch fixes two integer underflows at:
|
||||
* grub-core/lib/crypto.c
|
||||
* grub-core/normal/auth.c
|
||||
|
||||
Resolves: CVE-2015-8370
|
||||
|
||||
Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Signed-off-by: Ismael Ripoll-Ripoll <iripoll@disca.upv.es>
|
||||
---
|
||||
grub-core/lib/crypto.c | 2 +-
|
||||
grub-core/normal/auth.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/grub-core/lib/crypto.c
|
||||
+++ b/grub-core/lib/crypto.c
|
||||
@@ -468,7 +468,7 @@ grub_password_get (char buf[], unsigned
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == '\b')
|
||||
+ if (key == '\b' && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
cur_len--;
|
||||
--- a/grub-core/normal/auth.c
|
||||
+++ b/grub-core/normal/auth.c
|
||||
@@ -172,7 +172,7 @@ grub_username_get (char buf[], unsigned
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == '\b')
|
||||
+ if (key == '\b' && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
{
|
27
package/boot/uboot-envtools/files/ath79
Normal file
27
package/boot/uboot-envtools/files/ath79
Normal file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2011-2014 OpenWrt.org
|
||||
#
|
||||
|
||||
[ -e /etc/config/ubootenv ] && exit 0
|
||||
|
||||
touch /etc/config/ubootenv
|
||||
|
||||
. /lib/uboot-envtools.sh
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
glinet,ar300m|\
|
||||
ocedo,koala|\
|
||||
ocedo,raccoon|\
|
||||
openmesh,om5p-ac-v2)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
config_foreach ubootenv_add_app_config ubootenv
|
||||
|
||||
exit 0
|
@ -35,6 +35,9 @@ openmesh,a42 |\
|
||||
openmesh,a62)
|
||||
ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000"
|
||||
;;
|
||||
zyxel,nbg6617)
|
||||
ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x10000" "0x10000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
|
@ -15,6 +15,7 @@ board=$(board_name)
|
||||
case "$board" in
|
||||
cloudengines,pogoe02|\
|
||||
cloudengines,pogoplugv4|\
|
||||
iom,ix2-200|\
|
||||
linksys,viper|\
|
||||
raidsonic,ib-nas62x0|\
|
||||
seagate,dockstar|\
|
||||
|
25
package/boot/uboot-envtools/files/layerscape
Normal file
25
package/boot/uboot-envtools/files/layerscape
Normal file
@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2016 LEDE
|
||||
#
|
||||
|
||||
[ -f /etc/config/ubootenv ] && exit 0
|
||||
|
||||
touch /etc/config/ubootenv
|
||||
|
||||
. /lib/uboot-envtools.sh
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
traverse,ls1043v | \
|
||||
traverse,ls1043s)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x40000" "0x2000" "0x20000"
|
||||
;;
|
||||
esac
|
||||
|
||||
config_load ubootenv
|
||||
config_foreach ubootenv_add_app_config ubootenv
|
||||
|
||||
exit 0
|
@ -7,10 +7,10 @@
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_VERSION:=2014.04
|
||||
PKG_VERSION:=2018.03
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_HASH:=7b6444bd23eb61068c43bd1d44ec7e7bfdbce5cadeca20c833eee186b4d3fd31
|
||||
PKG_HASH:=7e7477534409d5368eb1371ffde6820f0f79780a1a1f676161c48442cb303dfd
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -20,7 +20,15 @@ define U-Boot/Default
|
||||
UBOOT_IMAGE:=u-boot.imx
|
||||
endef
|
||||
|
||||
define U-Boot/mx6qsabresd
|
||||
define U-Boot/mx6cuboxi
|
||||
NAME:=SolidRun Cubox-i boards
|
||||
UBOOT_IMAGE:=SPL u-boot.img
|
||||
UBOOT_MAKE_FLAGS:=SPL u-boot.img
|
||||
BUILD_DEVICES:=cubox-i
|
||||
HIDDEN:=1
|
||||
endef
|
||||
|
||||
define U-Boot/mx6sabresd
|
||||
NAME:=SABRE i.MX6Quad board
|
||||
endef
|
||||
|
||||
@ -48,31 +56,29 @@ define U-Boot/nitrogen6s1g
|
||||
NAME:=Nitrogen6x i.MX6Solo 1GB board
|
||||
endef
|
||||
|
||||
define U-Boot/wandboard_dl
|
||||
NAME:=Wandboard Dual Lite
|
||||
BUILD_DEVICES:=wandboard
|
||||
endef
|
||||
|
||||
define U-Boot/wandboard_quad
|
||||
NAME:=Wandboard Quad
|
||||
BUILD_DEVICES:=wandboard
|
||||
endef
|
||||
|
||||
define U-Boot/wandboard_solo
|
||||
NAME:=Wandboard Solo
|
||||
define U-Boot/wandboard
|
||||
NAME:=Wandboard Dual Lite/Quad/Solo
|
||||
BUILD_DEVICES:=wandboard
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
mx6qsabresd \
|
||||
mx6cuboxi \
|
||||
mx6sabresd \
|
||||
nitrogen6dl \
|
||||
nitrogen6dl2g \
|
||||
nitrogen6q \
|
||||
nitrogen6q2g \
|
||||
nitrogen6s \
|
||||
nitrogen6s1g \
|
||||
wandboard_dl \
|
||||
wandboard_quad \
|
||||
wandboard_solo
|
||||
wandboard
|
||||
|
||||
UBOOT_MAKE_FLAGS += u-boot.imx
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||
$(foreach img,$(UBOOT_IMAGE), \
|
||||
$(CP) $(PKG_BUILD_DIR)/$(img) $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-$(img); \
|
||||
)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage/U-Boot))
|
||||
|
@ -1,72 +0,0 @@
|
||||
From: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Date: Sun, 22 Jun 2014 21:10:39 +0000 (+0200)
|
||||
Subject: ARM:asm:io.h use static inline
|
||||
X-Git-Tag: v2014.10-rc2~47
|
||||
X-Git-Url: http://git.denx.de/?p=u-boot.git;a=commitdiff_plain;h=8863aa5c984460ce1112d8db895cbf8b13a6ac9d
|
||||
|
||||
ARM:asm:io.h use static inline
|
||||
|
||||
When compiling u-boot with W=1 the extern inline void for
|
||||
read* is likely causing the most noise. gcc / clang will
|
||||
warn there is never a actual declaration for these functions.
|
||||
Instead of declaring these extern make them static inline so
|
||||
it is actually declared.
|
||||
|
||||
cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
|
||||
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
---
|
||||
|
||||
--- a/arch/arm/include/asm/io.h
|
||||
+++ b/arch/arm/include/asm/io.h
|
||||
@@ -75,7 +75,7 @@ static inline phys_addr_t virt_to_phys(v
|
||||
#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
|
||||
#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v))
|
||||
|
||||
-extern inline void __raw_writesb(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesb(unsigned long addr, const void *data,
|
||||
int bytelen)
|
||||
{
|
||||
uint8_t *buf = (uint8_t *)data;
|
||||
@@ -83,7 +83,7 @@ extern inline void __raw_writesb(unsigne
|
||||
__arch_putb(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_writesw(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesw(unsigned long addr, const void *data,
|
||||
int wordlen)
|
||||
{
|
||||
uint16_t *buf = (uint16_t *)data;
|
||||
@@ -91,7 +91,7 @@ extern inline void __raw_writesw(unsigne
|
||||
__arch_putw(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_writesl(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesl(unsigned long addr, const void *data,
|
||||
int longlen)
|
||||
{
|
||||
uint32_t *buf = (uint32_t *)data;
|
||||
@@ -99,21 +99,21 @@ extern inline void __raw_writesl(unsigne
|
||||
__arch_putl(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
|
||||
+static inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
|
||||
{
|
||||
uint8_t *buf = (uint8_t *)data;
|
||||
while(bytelen--)
|
||||
*buf++ = __arch_getb(addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
|
||||
+static inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
|
||||
{
|
||||
uint16_t *buf = (uint16_t *)data;
|
||||
while(wordlen--)
|
||||
*buf++ = __arch_getw(addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
||||
+static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
||||
{
|
||||
uint32_t *buf = (uint32_t *)data;
|
||||
while(longlen--)
|
@ -1,80 +0,0 @@
|
||||
From: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Date: Wed, 8 Oct 2014 20:57:21 +0000 (+0200)
|
||||
Subject: arm: board: use __weak
|
||||
X-Git-Tag: v2015.01-rc1~176
|
||||
X-Git-Url: http://git.denx.de/?p=u-boot.git;a=commitdiff_plain;h=8590c800ee60e46f15d6085e3c1fed0d6881fc62
|
||||
|
||||
arm: board: use __weak
|
||||
|
||||
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Acked-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
|
||||
---
|
||||
|
||||
--- a/arch/arm/lib/board.c
|
||||
+++ b/arch/arm/lib/board.c
|
||||
@@ -63,25 +63,15 @@ extern void dataflash_print_info(void);
|
||||
************************************************************************
|
||||
* May be supplied by boards if desired
|
||||
*/
|
||||
-inline void __coloured_LED_init(void) {}
|
||||
-void coloured_LED_init(void)
|
||||
- __attribute__((weak, alias("__coloured_LED_init")));
|
||||
-inline void __red_led_on(void) {}
|
||||
-void red_led_on(void) __attribute__((weak, alias("__red_led_on")));
|
||||
-inline void __red_led_off(void) {}
|
||||
-void red_led_off(void) __attribute__((weak, alias("__red_led_off")));
|
||||
-inline void __green_led_on(void) {}
|
||||
-void green_led_on(void) __attribute__((weak, alias("__green_led_on")));
|
||||
-inline void __green_led_off(void) {}
|
||||
-void green_led_off(void) __attribute__((weak, alias("__green_led_off")));
|
||||
-inline void __yellow_led_on(void) {}
|
||||
-void yellow_led_on(void) __attribute__((weak, alias("__yellow_led_on")));
|
||||
-inline void __yellow_led_off(void) {}
|
||||
-void yellow_led_off(void) __attribute__((weak, alias("__yellow_led_off")));
|
||||
-inline void __blue_led_on(void) {}
|
||||
-void blue_led_on(void) __attribute__((weak, alias("__blue_led_on")));
|
||||
-inline void __blue_led_off(void) {}
|
||||
-void blue_led_off(void) __attribute__((weak, alias("__blue_led_off")));
|
||||
+__weak void coloured_LED_init(void) {}
|
||||
+__weak void red_led_on(void) {}
|
||||
+__weak void red_led_off(void) {}
|
||||
+__weak void green_led_on(void) {}
|
||||
+__weak void green_led_off(void) {}
|
||||
+__weak void yellow_led_on(void) {}
|
||||
+__weak void yellow_led_off(void) {}
|
||||
+__weak void blue_led_on(void) {}
|
||||
+__weak void blue_led_off(void) {}
|
||||
|
||||
/*
|
||||
************************************************************************
|
||||
@@ -198,27 +188,21 @@ static int arm_pci_init(void)
|
||||
*/
|
||||
typedef int (init_fnc_t) (void);
|
||||
|
||||
-void __dram_init_banksize(void)
|
||||
+__weak void dram_init_banksize(void)
|
||||
{
|
||||
gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
|
||||
gd->bd->bi_dram[0].size = gd->ram_size;
|
||||
}
|
||||
-void dram_init_banksize(void)
|
||||
- __attribute__((weak, alias("__dram_init_banksize")));
|
||||
|
||||
-int __arch_cpu_init(void)
|
||||
+__weak int arch_cpu_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
-int arch_cpu_init(void)
|
||||
- __attribute__((weak, alias("__arch_cpu_init")));
|
||||
|
||||
-int __power_init_board(void)
|
||||
+__weak int power_init_board(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
-int power_init_board(void)
|
||||
- __attribute__((weak, alias("__power_init_board")));
|
||||
|
||||
/* Record the board_init_f() bootstage (after arch_cpu_init()) */
|
||||
static int mark_bootstage(void)
|
@ -1,27 +0,0 @@
|
||||
From: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Date: Thu, 26 Jun 2014 18:18:31 +0000 (+0200)
|
||||
Subject: common: main.c: make show_boot_progress __weak
|
||||
X-Git-Tag: v2014.10-rc1~130
|
||||
X-Git-Url: http://git.denx.de/?p=u-boot.git;a=commitdiff_plain;h=3422299dc28fa8257677d03cc1253e3c9bf17e9f
|
||||
|
||||
common: main.c: make show_boot_progress __weak
|
||||
|
||||
This not only looks a bit better it also prevents a
|
||||
warning with W=1 (no previous prototype).
|
||||
|
||||
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Acked-by: Simon Glass <sjg@chromium.org>
|
||||
---
|
||||
|
||||
--- a/common/main.c
|
||||
+++ b/common/main.c
|
||||
@@ -27,8 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
/*
|
||||
* Board-specific Platform code can reimplement show_boot_progress () if needed
|
||||
*/
|
||||
-void inline __show_boot_progress (int val) {}
|
||||
-void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
|
||||
+__weak void show_boot_progress(int val) {}
|
||||
|
||||
#define MAX_DELAY_STOP_STR 32
|
||||
|
@ -1,10 +1,17 @@
|
||||
--- a/include/configs/wandboard.h
|
||||
+++ b/include/configs/wandboard.h
|
||||
@@ -238,4 +238,7 @@
|
||||
#define CONFIG_CMD_CACHE
|
||||
#endif
|
||||
|
||||
+#define CONFIG_FIT
|
||||
+#define CONFIG_FIT_VERBOSE
|
||||
+
|
||||
#endif /* __CONFIG_H * */
|
||||
--- a/configs/wandboard_defconfig
|
||||
+++ b/configs/wandboard_defconfig
|
||||
@@ -27,7 +27,7 @@ CONFIG_CMD_I2C=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_SATA=y
|
||||
CONFIG_CMD_USB=y
|
||||
-CONFIG_CMD_CACHE=y
|
||||
+# CONFIG_CMD_CACHE is not set
|
||||
CONFIG_CMD_EXT4_WRITE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_DM=y
|
||||
@@ -39,3 +39,5 @@ CONFIG_USB_STORAGE=y
|
||||
CONFIG_VIDEO=y
|
||||
# CONFIG_VIDEO_SW_CURSOR is not set
|
||||
CONFIG_OF_LIBFDT=y
|
||||
+CONFIG_FIT=y
|
||||
+CONFIG_FIT_VERBOSE=y
|
||||
|
@ -1,480 +0,0 @@
|
||||
From fb8ffd7cfc68b3dc44e182356a207d784cb30b34 Mon Sep 17 00:00:00 2001
|
||||
From: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||
Date: Thu, 4 Sep 2014 02:40:58 +0900
|
||||
Subject: compiler*.h: sync include/linux/compiler*.h with Linux 3.16
|
||||
|
||||
Copy them from Linux v3.16 tag.
|
||||
My main motivation of this commit is to add compiler-clang.h.
|
||||
|
||||
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||
Cc: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
---
|
||||
include/linux/compiler-clang.h | 12 ++++++
|
||||
include/linux/compiler-gcc.h | 57 ++++++++++++++++++--------
|
||||
include/linux/compiler-gcc3.h | 20 ++++-----
|
||||
include/linux/compiler-gcc4.h | 59 +++++++++++++++++++--------
|
||||
include/linux/compiler-intel.h | 40 ++++++++++++++++++
|
||||
include/linux/compiler.h | 92 +++++++++++++++++++++++++++++++++++++++++-
|
||||
6 files changed, 236 insertions(+), 44 deletions(-)
|
||||
create mode 100644 include/linux/compiler-clang.h
|
||||
create mode 100644 include/linux/compiler-intel.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/linux/compiler-clang.h
|
||||
@@ -0,0 +1,12 @@
|
||||
+#ifndef __LINUX_COMPILER_H
|
||||
+#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead."
|
||||
+#endif
|
||||
+
|
||||
+/* Some compiler specific definitions are overwritten here
|
||||
+ * for Clang compiler
|
||||
+ */
|
||||
+
|
||||
+#ifdef uninitialized_var
|
||||
+#undef uninitialized_var
|
||||
+#define uninitialized_var(x) x = *(&(x))
|
||||
+#endif
|
||||
--- a/include/linux/compiler-gcc.h
|
||||
+++ b/include/linux/compiler-gcc.h
|
||||
@@ -5,6 +5,9 @@
|
||||
/*
|
||||
* Common definitions for all gcc versions go here.
|
||||
*/
|
||||
+#define GCC_VERSION (__GNUC__ * 10000 \
|
||||
+ + __GNUC_MINOR__ * 100 \
|
||||
+ + __GNUC_PATCHLEVEL__)
|
||||
|
||||
|
||||
/* Optimization barrier */
|
||||
@@ -34,9 +37,15 @@
|
||||
__asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
|
||||
(typeof(ptr)) (__ptr + (off)); })
|
||||
|
||||
+/* Make the optimizer believe the variable can be manipulated arbitrarily. */
|
||||
+#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var))
|
||||
+
|
||||
+#ifdef __CHECKER__
|
||||
+#define __must_be_array(arr) 0
|
||||
+#else
|
||||
/* &a[0] degrades to a pointer: a different type from an array */
|
||||
-#define __must_be_array(a) \
|
||||
- BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0])))
|
||||
+#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Force always-inline if the user requests it so via the .config,
|
||||
@@ -44,15 +53,18 @@
|
||||
*/
|
||||
#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
|
||||
!defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
|
||||
-# define inline inline __attribute__((always_inline))
|
||||
-# define __inline__ __inline__ __attribute__((always_inline))
|
||||
-# define __inline __inline __attribute__((always_inline))
|
||||
+# define inline inline __attribute__((always_inline)) notrace
|
||||
+# define __inline__ __inline__ __attribute__((always_inline)) notrace
|
||||
+# define __inline __inline __attribute__((always_inline)) notrace
|
||||
+#else
|
||||
+/* A lot of inline functions can cause havoc with function tracing */
|
||||
+# define inline inline notrace
|
||||
+# define __inline__ __inline__ notrace
|
||||
+# define __inline __inline notrace
|
||||
#endif
|
||||
|
||||
#define __deprecated __attribute__((deprecated))
|
||||
-#ifndef __packed
|
||||
-# define __packed __attribute__((packed))
|
||||
-#endif
|
||||
+#define __packed __attribute__((packed))
|
||||
#define __weak __attribute__((weak))
|
||||
|
||||
/*
|
||||
@@ -60,8 +72,12 @@
|
||||
* naked functions because then mcount is called without stack and frame pointer
|
||||
* being set up and there is no chance to restore the lr register to the value
|
||||
* before mcount was called.
|
||||
+ *
|
||||
+ * The asm() bodies of naked functions often depend on standard calling conventions,
|
||||
+ * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce
|
||||
+ * this, so we must do so ourselves. See GCC PR44290.
|
||||
*/
|
||||
-#define __naked __attribute__((naked)) notrace
|
||||
+#define __naked __attribute__((naked)) noinline __noclone notrace
|
||||
|
||||
#define __noreturn __attribute__((noreturn))
|
||||
|
||||
@@ -75,13 +91,10 @@
|
||||
* would be.
|
||||
* [...]
|
||||
*/
|
||||
-#ifndef __pure
|
||||
-# define __pure __attribute__((pure))
|
||||
-#endif
|
||||
-#ifndef __aligned
|
||||
-# define __aligned(x) __attribute__((aligned(x)))
|
||||
-#endif
|
||||
-#define __printf(a,b) __attribute__((format(printf,a,b)))
|
||||
+#define __pure __attribute__((pure))
|
||||
+#define __aligned(x) __attribute__((aligned(x)))
|
||||
+#define __printf(a, b) __attribute__((format(printf, a, b)))
|
||||
+#define __scanf(a, b) __attribute__((format(scanf, a, b)))
|
||||
#define noinline __attribute__((noinline))
|
||||
#define __attribute_const__ __attribute__((__const__))
|
||||
#define __maybe_unused __attribute__((unused))
|
||||
@@ -91,3 +104,15 @@
|
||||
#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
|
||||
#define gcc_header(x) _gcc_header(x)
|
||||
#include gcc_header(__GNUC__)
|
||||
+
|
||||
+#if !defined(__noclone)
|
||||
+#define __noclone /* not needed */
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ * A trick to suppress uninitialized variable warning without generating any
|
||||
+ * code
|
||||
+ */
|
||||
+#define uninitialized_var(x) x = x
|
||||
+
|
||||
+#define __always_inline inline __attribute__((always_inline))
|
||||
--- a/include/linux/compiler-gcc3.h
|
||||
+++ b/include/linux/compiler-gcc3.h
|
||||
@@ -2,20 +2,22 @@
|
||||
#error "Please don't include <linux/compiler-gcc3.h> directly, include <linux/compiler.h> instead."
|
||||
#endif
|
||||
|
||||
-#if __GNUC_MINOR__ >= 3
|
||||
+#if GCC_VERSION < 30200
|
||||
+# error Sorry, your compiler is too old - please upgrade it.
|
||||
+#endif
|
||||
+
|
||||
+#if GCC_VERSION >= 30300
|
||||
# define __used __attribute__((__used__))
|
||||
#else
|
||||
# define __used __attribute__((__unused__))
|
||||
#endif
|
||||
|
||||
-#if __GNUC_MINOR__ >= 4
|
||||
+#if GCC_VERSION >= 30400
|
||||
#define __must_check __attribute__((warn_unused_result))
|
||||
#endif
|
||||
|
||||
-/*
|
||||
- * A trick to suppress uninitialized variable warning without generating any
|
||||
- * code
|
||||
- */
|
||||
-#define uninitialized_var(x) x = x
|
||||
-
|
||||
-#define __always_inline inline __attribute__((always_inline))
|
||||
+#ifdef CONFIG_GCOV_KERNEL
|
||||
+# if GCC_VERSION < 30400
|
||||
+# error "GCOV profiling support for gcc versions below 3.4 not included"
|
||||
+# endif /* __GNUC_MINOR__ */
|
||||
+#endif /* CONFIG_GCOV_KERNEL */
|
||||
--- a/include/linux/compiler-gcc4.h
|
||||
+++ b/include/linux/compiler-gcc4.h
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
/* GCC 4.1.[01] miscompiles __weak */
|
||||
#ifdef __KERNEL__
|
||||
-# if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
|
||||
+# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101
|
||||
# error Your version of gcc miscompiles the __weak directive
|
||||
# endif
|
||||
#endif
|
||||
@@ -12,17 +12,12 @@
|
||||
#define __used __attribute__((__used__))
|
||||
#define __must_check __attribute__((warn_unused_result))
|
||||
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
||||
-#ifndef __always_inline
|
||||
-# define __always_inline inline __attribute__((always_inline))
|
||||
-#endif
|
||||
|
||||
-/*
|
||||
- * A trick to suppress uninitialized variable warning without generating any
|
||||
- * code
|
||||
- */
|
||||
-#define uninitialized_var(x) x = x
|
||||
+#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
|
||||
+# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||
+#endif
|
||||
|
||||
-#if __GNUC_MINOR__ >= 3
|
||||
+#if GCC_VERSION >= 40300
|
||||
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
to them will be unlikely. This means a lot of manual unlikely()s
|
||||
are unnecessary now for any paths leading to the usual suspects
|
||||
@@ -38,8 +33,15 @@
|
||||
the kernel context */
|
||||
#define __cold __attribute__((__cold__))
|
||||
|
||||
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
|
||||
-#if __GNUC_MINOR__ >= 5
|
||||
+#ifndef __CHECKER__
|
||||
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#endif /* __CHECKER__ */
|
||||
+#endif /* GCC_VERSION >= 40300 */
|
||||
+
|
||||
+#if GCC_VERSION >= 40500
|
||||
/*
|
||||
* Mark a position in code as unreachable. This can be used to
|
||||
* suppress control flow warnings after asm blocks that transfer
|
||||
@@ -50,14 +52,37 @@
|
||||
* unreleased. Really, we need to have autoconf for the kernel.
|
||||
*/
|
||||
#define unreachable() __builtin_unreachable()
|
||||
-#endif
|
||||
|
||||
+/* Mark a function definition as prohibited from being cloned. */
|
||||
+#define __noclone __attribute__((__noclone__))
|
||||
+
|
||||
+#endif /* GCC_VERSION >= 40500 */
|
||||
+
|
||||
+#if GCC_VERSION >= 40600
|
||||
+/*
|
||||
+ * Tell the optimizer that something else uses this function or variable.
|
||||
+ */
|
||||
+#define __visible __attribute__((externally_visible))
|
||||
#endif
|
||||
|
||||
-#if __GNUC_MINOR__ > 0
|
||||
-#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||
+/*
|
||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||
+ *
|
||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
+ *
|
||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
+ * Fixed in GCC 4.8.2 and later versions.
|
||||
+ *
|
||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||
+ */
|
||||
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
+
|
||||
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
+#if GCC_VERSION >= 40400
|
||||
+#define __HAVE_BUILTIN_BSWAP32__
|
||||
+#define __HAVE_BUILTIN_BSWAP64__
|
||||
#endif
|
||||
-#if __GNUC_MINOR__ >= 4
|
||||
-#define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
-#define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
#endif
|
||||
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||
--- /dev/null
|
||||
+++ b/include/linux/compiler-intel.h
|
||||
@@ -0,0 +1,40 @@
|
||||
+#ifndef __LINUX_COMPILER_H
|
||||
+#error "Please don't include <linux/compiler-intel.h> directly, include <linux/compiler.h> instead."
|
||||
+#endif
|
||||
+
|
||||
+#ifdef __ECC
|
||||
+
|
||||
+/* Some compiler specific definitions are overwritten here
|
||||
+ * for Intel ECC compiler
|
||||
+ */
|
||||
+
|
||||
+#include <asm/intrinsics.h>
|
||||
+
|
||||
+/* Intel ECC compiler doesn't support gcc specific asm stmts.
|
||||
+ * It uses intrinsics to do the equivalent things.
|
||||
+ */
|
||||
+#undef RELOC_HIDE
|
||||
+#undef OPTIMIZER_HIDE_VAR
|
||||
+
|
||||
+#define RELOC_HIDE(ptr, off) \
|
||||
+ ({ unsigned long __ptr; \
|
||||
+ __ptr = (unsigned long) (ptr); \
|
||||
+ (typeof(ptr)) (__ptr + (off)); })
|
||||
+
|
||||
+/* This should act as an optimization barrier on var.
|
||||
+ * Given that this compiler does not have inline assembly, a compiler barrier
|
||||
+ * is the best we can do.
|
||||
+ */
|
||||
+#define OPTIMIZER_HIDE_VAR(var) barrier()
|
||||
+
|
||||
+/* Intel ECC compiler doesn't support __builtin_types_compatible_p() */
|
||||
+#define __must_be_array(a) 0
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+#ifndef __HAVE_BUILTIN_BSWAP16__
|
||||
+/* icc has this, but it's called _bswap16 */
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
+#define __builtin_bswap16 _bswap16
|
||||
+#endif
|
||||
+
|
||||
--- a/include/linux/compiler.h
|
||||
+++ b/include/linux/compiler.h
|
||||
@@ -5,16 +5,23 @@
|
||||
|
||||
#ifdef __CHECKER__
|
||||
# define __user __attribute__((noderef, address_space(1)))
|
||||
-# define __kernel /* default address space */
|
||||
+# define __kernel __attribute__((address_space(0)))
|
||||
# define __safe __attribute__((safe))
|
||||
# define __force __attribute__((force))
|
||||
# define __nocast __attribute__((nocast))
|
||||
# define __iomem __attribute__((noderef, address_space(2)))
|
||||
+# define __must_hold(x) __attribute__((context(x,1,1)))
|
||||
# define __acquires(x) __attribute__((context(x,0,1)))
|
||||
# define __releases(x) __attribute__((context(x,1,0)))
|
||||
# define __acquire(x) __context__(x,1)
|
||||
# define __release(x) __context__(x,-1)
|
||||
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
|
||||
+# define __percpu __attribute__((noderef, address_space(3)))
|
||||
+#ifdef CONFIG_SPARSE_RCU_POINTER
|
||||
+# define __rcu __attribute__((noderef, address_space(4)))
|
||||
+#else
|
||||
+# define __rcu
|
||||
+#endif
|
||||
extern void __chk_user_ptr(const volatile void __user *);
|
||||
extern void __chk_io_ptr(const volatile void __iomem *);
|
||||
#else
|
||||
@@ -27,13 +34,20 @@ extern void __chk_io_ptr(const volatile
|
||||
# define __chk_user_ptr(x) (void)0
|
||||
# define __chk_io_ptr(x) (void)0
|
||||
# define __builtin_warning(x, y...) (1)
|
||||
+# define __must_hold(x)
|
||||
# define __acquires(x)
|
||||
# define __releases(x)
|
||||
# define __acquire(x) (void)0
|
||||
# define __release(x) (void)0
|
||||
# define __cond_lock(x,c) (c)
|
||||
+# define __percpu
|
||||
+# define __rcu
|
||||
#endif
|
||||
|
||||
+/* Indirect macros required for expanded argument pasting, eg. __LINE__. */
|
||||
+#define ___PASTE(a,b) a##b
|
||||
+#define __PASTE(a,b) ___PASTE(a,b)
|
||||
+
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#ifdef __GNUC__
|
||||
@@ -49,6 +63,13 @@ extern void __chk_io_ptr(const volatile
|
||||
# include <linux/compiler-intel.h>
|
||||
#endif
|
||||
|
||||
+/* Clang compiler defines __GNUC__. So we will overwrite implementations
|
||||
+ * coming from above header files here
|
||||
+ */
|
||||
+#ifdef __clang__
|
||||
+#include <linux/compiler-clang.h>
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Generic compiler-dependent macros required for kernel
|
||||
* build go below this comment. Actual compiler/compiler version
|
||||
@@ -156,6 +177,15 @@ void ftrace_likely_update(struct ftrace_
|
||||
(typeof(ptr)) (__ptr + (off)); })
|
||||
#endif
|
||||
|
||||
+#ifndef OPTIMIZER_HIDE_VAR
|
||||
+#define OPTIMIZER_HIDE_VAR(var) barrier()
|
||||
+#endif
|
||||
+
|
||||
+/* Not-quite-unique ID. */
|
||||
+#ifndef __UNIQUE_ID
|
||||
+# define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__)
|
||||
+#endif
|
||||
+
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
@@ -228,7 +258,7 @@ void ftrace_likely_update(struct ftrace_
|
||||
|
||||
/*
|
||||
* Rather then using noinline to prevent stack consumption, use
|
||||
- * noinline_for_stack instead. For documentaiton reasons.
|
||||
+ * noinline_for_stack instead. For documentation reasons.
|
||||
*/
|
||||
#define noinline_for_stack noinline
|
||||
|
||||
@@ -270,11 +300,20 @@ void ftrace_likely_update(struct ftrace_
|
||||
# define __section(S) __attribute__ ((__section__(#S)))
|
||||
#endif
|
||||
|
||||
+#ifndef __visible
|
||||
+#define __visible
|
||||
+#endif
|
||||
+
|
||||
/* Are two types/vars the same type (ignoring qualifiers)? */
|
||||
#ifndef __same_type
|
||||
# define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
|
||||
#endif
|
||||
|
||||
+/* Is this type a native word size -- useful for atomic operations */
|
||||
+#ifndef __native_word
|
||||
+# define __native_word(t) (sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
|
||||
+#endif
|
||||
+
|
||||
/* Compile time object size, -1 for unknown */
|
||||
#ifndef __compiletime_object_size
|
||||
# define __compiletime_object_size(obj) -1
|
||||
@@ -284,7 +323,48 @@ void ftrace_likely_update(struct ftrace_
|
||||
#endif
|
||||
#ifndef __compiletime_error
|
||||
# define __compiletime_error(message)
|
||||
+/*
|
||||
+ * Sparse complains of variable sized arrays due to the temporary variable in
|
||||
+ * __compiletime_assert. Unfortunately we can't just expand it out to make
|
||||
+ * sparse see a constant array size without breaking compiletime_assert on old
|
||||
+ * versions of GCC (e.g. 4.2.4), so hide the array from sparse altogether.
|
||||
+ */
|
||||
+# ifndef __CHECKER__
|
||||
+# define __compiletime_error_fallback(condition) \
|
||||
+ do { ((void)sizeof(char[1 - 2 * condition])); } while (0)
|
||||
+# endif
|
||||
#endif
|
||||
+#ifndef __compiletime_error_fallback
|
||||
+# define __compiletime_error_fallback(condition) do { } while (0)
|
||||
+#endif
|
||||
+
|
||||
+#define __compiletime_assert(condition, msg, prefix, suffix) \
|
||||
+ do { \
|
||||
+ bool __cond = !(condition); \
|
||||
+ extern void prefix ## suffix(void) __compiletime_error(msg); \
|
||||
+ if (__cond) \
|
||||
+ prefix ## suffix(); \
|
||||
+ __compiletime_error_fallback(__cond); \
|
||||
+ } while (0)
|
||||
+
|
||||
+#define _compiletime_assert(condition, msg, prefix, suffix) \
|
||||
+ __compiletime_assert(condition, msg, prefix, suffix)
|
||||
+
|
||||
+/**
|
||||
+ * compiletime_assert - break build and emit msg if condition is false
|
||||
+ * @condition: a compile-time constant condition to check
|
||||
+ * @msg: a message to emit if condition is false
|
||||
+ *
|
||||
+ * In tradition of POSIX assert, this macro will break the build if the
|
||||
+ * supplied condition is *false*, emitting the supplied error message if the
|
||||
+ * compiler has support to do so.
|
||||
+ */
|
||||
+#define compiletime_assert(condition, msg) \
|
||||
+ _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
|
||||
+
|
||||
+#define compiletime_assert_atomic_type(t) \
|
||||
+ compiletime_assert(__native_word(t), \
|
||||
+ "Need native word sized stores/loads for atomicity.")
|
||||
|
||||
/*
|
||||
* Prevent the compiler from merging or refetching accesses. The compiler
|
||||
@@ -300,4 +380,12 @@ void ftrace_likely_update(struct ftrace_
|
||||
*/
|
||||
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
|
||||
+/* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */
|
||||
+#ifdef CONFIG_KPROBES
|
||||
+# define __kprobes __attribute__((__section__(".kprobes.text")))
|
||||
+# define nokprobe_inline __always_inline
|
||||
+#else
|
||||
+# define __kprobes
|
||||
+# define nokprobe_inline inline
|
||||
+#endif
|
||||
#endif /* __LINUX_COMPILER_H */
|
@ -1,69 +0,0 @@
|
||||
From 0a5051ce6ebd5f6fad58fd50d6922493d8447f14 Mon Sep 17 00:00:00 2001
|
||||
From: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Date: Thu, 18 Sep 2014 20:10:27 +0200
|
||||
Subject: compiler_gcc: prevent redefining attributes
|
||||
|
||||
The libc headers on FreeBSD and likely related projects as well contain an
|
||||
header file, cdefs.h which provides similiar functionality as linux/compiler.h.
|
||||
It provides compiler independent defines like __weak __packed, to allow
|
||||
compiling with multiple compilers which might have a different syntax for such
|
||||
extension.
|
||||
|
||||
Since that header file is included in multiple standard headers, like stddef.h
|
||||
and stdarg.h, multiple definitions of those defines will be present if both are
|
||||
included. When compiling u-boot the compiler will warn about it hundreds of
|
||||
times since e.g. common.h will include both files indirectly.
|
||||
|
||||
commit 7ea50d52849fe8ffa5b5b74c979b60b1045d6fc9 "compiler_gcc: do not redefine
|
||||
__gnu_attributes" prevented such redefinitions, but this was undone by commit
|
||||
fb8ffd7cfc68b3dc44e182356a207d784cb30b34 "compiler*.h: sync
|
||||
include/linux/compiler*.h with Linux 3.16".
|
||||
|
||||
Add the checks back where necessary to prevent such warnings.
|
||||
|
||||
As the original patch this checkpatch warning is ignored:
|
||||
"WARNING: Adding new packed members is to be done with care"
|
||||
|
||||
Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||
Cc: Tom Rini <trini@ti.com>
|
||||
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
|
||||
Acked-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||
---
|
||||
include/linux/compiler-gcc.h | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
--- a/include/linux/compiler-gcc.h
|
||||
+++ b/include/linux/compiler-gcc.h
|
||||
@@ -64,8 +64,12 @@
|
||||
#endif
|
||||
|
||||
#define __deprecated __attribute__((deprecated))
|
||||
+#ifndef __packed
|
||||
#define __packed __attribute__((packed))
|
||||
+#endif
|
||||
+#ifndef __weak
|
||||
#define __weak __attribute__((weak))
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* it doesn't make sense on ARM (currently the only user of __naked) to trace
|
||||
@@ -91,8 +95,12 @@
|
||||
* would be.
|
||||
* [...]
|
||||
*/
|
||||
+#ifndef __pure
|
||||
#define __pure __attribute__((pure))
|
||||
+#endif
|
||||
+#ifndef __aligned
|
||||
#define __aligned(x) __attribute__((aligned(x)))
|
||||
+#endif
|
||||
#define __printf(a, b) __attribute__((format(printf, a, b)))
|
||||
#define __scanf(a, b) __attribute__((format(scanf, a, b)))
|
||||
#define noinline __attribute__((noinline))
|
||||
@@ -115,4 +123,6 @@
|
||||
*/
|
||||
#define uninitialized_var(x) x = x
|
||||
|
||||
+#ifndef __always_inline
|
||||
#define __always_inline inline __attribute__((always_inline))
|
||||
+#endif
|
@ -1,87 +0,0 @@
|
||||
From 478b02f1a7043b673565075ea5016376f3293b23 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sat, 7 Feb 2015 22:52:40 +0100
|
||||
Subject: Add linux/compiler-gcc5.h to fix builds with gcc5
|
||||
|
||||
Add linux/compiler-gcc5/h from the kernel sources at:
|
||||
|
||||
commit 5631b8fba640a4ab2f8a954f63a603fa34eda96b
|
||||
Author: Steven Noonan <steven@uplinklabs.net>
|
||||
Date: Sat Oct 25 15:09:42 2014 -0700
|
||||
|
||||
compiler/gcc4+: Remove inaccurate comment about 'asm goto' miscompiles
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
include/linux/compiler-gcc5.h | 65 +++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 65 insertions(+)
|
||||
create mode 100644 include/linux/compiler-gcc5.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/linux/compiler-gcc5.h
|
||||
@@ -0,0 +1,65 @@
|
||||
+#ifndef __LINUX_COMPILER_H
|
||||
+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||
+#endif
|
||||
+
|
||||
+#define __used __attribute__((__used__))
|
||||
+#define __must_check __attribute__((warn_unused_result))
|
||||
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||
+
|
||||
+/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
+ to them will be unlikely. This means a lot of manual unlikely()s
|
||||
+ are unnecessary now for any paths leading to the usual suspects
|
||||
+ like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
+ older compilers]
|
||||
+
|
||||
+ Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
+ in the preprocessor, but we can live with this because they're unreleased.
|
||||
+ Maketime probing would be overkill here.
|
||||
+
|
||||
+ gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
+ a special section, but I don't see any sense in this right now in
|
||||
+ the kernel context */
|
||||
+#define __cold __attribute__((__cold__))
|
||||
+
|
||||
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
+
|
||||
+#ifndef __CHECKER__
|
||||
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#endif /* __CHECKER__ */
|
||||
+
|
||||
+/*
|
||||
+ * Mark a position in code as unreachable. This can be used to
|
||||
+ * suppress control flow warnings after asm blocks that transfer
|
||||
+ * control elsewhere.
|
||||
+ *
|
||||
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
+ * this in the preprocessor, but we can live with this because they're
|
||||
+ * unreleased. Really, we need to have autoconf for the kernel.
|
||||
+ */
|
||||
+#define unreachable() __builtin_unreachable()
|
||||
+
|
||||
+/* Mark a function definition as prohibited from being cloned. */
|
||||
+#define __noclone __attribute__((__noclone__))
|
||||
+
|
||||
+/*
|
||||
+ * Tell the optimizer that something else uses this function or variable.
|
||||
+ */
|
||||
+#define __visible __attribute__((externally_visible))
|
||||
+
|
||||
+/*
|
||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||
+ *
|
||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
+ *
|
||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
+ *
|
||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||
+ */
|
||||
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
+
|
||||
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
+#define __HAVE_BUILTIN_BSWAP32__
|
||||
+#define __HAVE_BUILTIN_BSWAP64__
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
@ -1,790 +0,0 @@
|
||||
From 9b2c282b348dfe966bbba967dc7a45ce817cce50 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Rini <trini@konsulko.com>
|
||||
Date: Mon, 29 Feb 2016 11:34:15 -0500
|
||||
Subject: compiler*.h: sync include/linux/compiler*.h with Linux 4.5-rc6
|
||||
|
||||
Copy these from Linux v4.5-rc6 tag.
|
||||
|
||||
This is needed so that we can keep up with newer gcc versions. Note
|
||||
that we don't have the uapi/ hierarchy from the kernel so continue to
|
||||
use <linux/types.h>
|
||||
|
||||
Signed-off-by: Tom Rini <trini@konsulko.com>
|
||||
---
|
||||
include/linux/compiler-gcc.h | 259 ++++++++++++++++++++++++++++++++---------
|
||||
include/linux/compiler-gcc3.h | 23 ----
|
||||
include/linux/compiler-gcc4.h | 88 --------------
|
||||
include/linux/compiler-gcc5.h | 65 -----------
|
||||
include/linux/compiler-intel.h | 5 +
|
||||
include/linux/compiler.h | 178 ++++++++++++++++++++++++++--
|
||||
6 files changed, 383 insertions(+), 235 deletions(-)
|
||||
delete mode 100644 include/linux/compiler-gcc3.h
|
||||
delete mode 100644 include/linux/compiler-gcc4.h
|
||||
delete mode 100644 include/linux/compiler-gcc5.h
|
||||
|
||||
--- a/include/linux/compiler-gcc.h
|
||||
+++ b/include/linux/compiler-gcc.h
|
||||
@@ -5,14 +5,28 @@
|
||||
/*
|
||||
* Common definitions for all gcc versions go here.
|
||||
*/
|
||||
-#define GCC_VERSION (__GNUC__ * 10000 \
|
||||
- + __GNUC_MINOR__ * 100 \
|
||||
- + __GNUC_PATCHLEVEL__)
|
||||
-
|
||||
+#define GCC_VERSION (__GNUC__ * 10000 \
|
||||
+ + __GNUC_MINOR__ * 100 \
|
||||
+ + __GNUC_PATCHLEVEL__)
|
||||
|
||||
/* Optimization barrier */
|
||||
+
|
||||
/* The "volatile" is due to gcc bugs */
|
||||
#define barrier() __asm__ __volatile__("": : :"memory")
|
||||
+/*
|
||||
+ * This version is i.e. to prevent dead stores elimination on @ptr
|
||||
+ * where gcc and llvm may behave differently when otherwise using
|
||||
+ * normal barrier(): while gcc behavior gets along with a normal
|
||||
+ * barrier(), llvm needs an explicit input variable to be assumed
|
||||
+ * clobbered. The issue is as follows: while the inline asm might
|
||||
+ * access any memory it wants, the compiler could have fit all of
|
||||
+ * @ptr into memory registers instead, and since @ptr never escaped
|
||||
+ * from that, it proofed that the inline asm wasn't touching any of
|
||||
+ * it. This version works well with both compilers, i.e. we're telling
|
||||
+ * the compiler that the inline asm absolutely may see the contents
|
||||
+ * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495
|
||||
+ */
|
||||
+#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory")
|
||||
|
||||
/*
|
||||
* This macro obfuscates arithmetic on a variable address so that gcc
|
||||
@@ -32,58 +46,63 @@
|
||||
* the inline assembly constraint from =g to =r, in this particular
|
||||
* case either is valid.
|
||||
*/
|
||||
-#define RELOC_HIDE(ptr, off) \
|
||||
- ({ unsigned long __ptr; \
|
||||
- __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
|
||||
- (typeof(ptr)) (__ptr + (off)); })
|
||||
+#define RELOC_HIDE(ptr, off) \
|
||||
+({ \
|
||||
+ unsigned long __ptr; \
|
||||
+ __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
|
||||
+ (typeof(ptr)) (__ptr + (off)); \
|
||||
+})
|
||||
|
||||
/* Make the optimizer believe the variable can be manipulated arbitrarily. */
|
||||
-#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var))
|
||||
+#define OPTIMIZER_HIDE_VAR(var) \
|
||||
+ __asm__ ("" : "=r" (var) : "0" (var))
|
||||
|
||||
#ifdef __CHECKER__
|
||||
-#define __must_be_array(arr) 0
|
||||
+#define __must_be_array(a) 0
|
||||
#else
|
||||
/* &a[0] degrades to a pointer: a different type from an array */
|
||||
-#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
||||
+#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Force always-inline if the user requests it so via the .config,
|
||||
* or if gcc is too old:
|
||||
*/
|
||||
-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
|
||||
+#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
|
||||
!defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
|
||||
-# define inline inline __attribute__((always_inline)) notrace
|
||||
-# define __inline__ __inline__ __attribute__((always_inline)) notrace
|
||||
-# define __inline __inline __attribute__((always_inline)) notrace
|
||||
+#define inline inline __attribute__((always_inline)) notrace
|
||||
+#define __inline__ __inline__ __attribute__((always_inline)) notrace
|
||||
+#define __inline __inline __attribute__((always_inline)) notrace
|
||||
#else
|
||||
/* A lot of inline functions can cause havoc with function tracing */
|
||||
-# define inline inline notrace
|
||||
-# define __inline__ __inline__ notrace
|
||||
-# define __inline __inline notrace
|
||||
+#define inline inline notrace
|
||||
+#define __inline__ __inline__ notrace
|
||||
+#define __inline __inline notrace
|
||||
#endif
|
||||
|
||||
-#define __deprecated __attribute__((deprecated))
|
||||
-#ifndef __packed
|
||||
-#define __packed __attribute__((packed))
|
||||
-#endif
|
||||
-#ifndef __weak
|
||||
-#define __weak __attribute__((weak))
|
||||
-#endif
|
||||
+#define __always_inline inline __attribute__((always_inline))
|
||||
+#define noinline __attribute__((noinline))
|
||||
+
|
||||
+#define __deprecated __attribute__((deprecated))
|
||||
+#define __packed __attribute__((packed))
|
||||
+#define __weak __attribute__((weak))
|
||||
+#define __alias(symbol) __attribute__((alias(#symbol)))
|
||||
|
||||
/*
|
||||
- * it doesn't make sense on ARM (currently the only user of __naked) to trace
|
||||
- * naked functions because then mcount is called without stack and frame pointer
|
||||
- * being set up and there is no chance to restore the lr register to the value
|
||||
- * before mcount was called.
|
||||
+ * it doesn't make sense on ARM (currently the only user of __naked)
|
||||
+ * to trace naked functions because then mcount is called without
|
||||
+ * stack and frame pointer being set up and there is no chance to
|
||||
+ * restore the lr register to the value before mcount was called.
|
||||
+ *
|
||||
+ * The asm() bodies of naked functions often depend on standard calling
|
||||
+ * conventions, therefore they must be noinline and noclone.
|
||||
*
|
||||
- * The asm() bodies of naked functions often depend on standard calling conventions,
|
||||
- * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce
|
||||
- * this, so we must do so ourselves. See GCC PR44290.
|
||||
+ * GCC 4.[56] currently fail to enforce this, so we must do so ourselves.
|
||||
+ * See GCC PR44290.
|
||||
*/
|
||||
-#define __naked __attribute__((naked)) noinline __noclone notrace
|
||||
+#define __naked __attribute__((naked)) noinline __noclone notrace
|
||||
|
||||
-#define __noreturn __attribute__((noreturn))
|
||||
+#define __noreturn __attribute__((noreturn))
|
||||
|
||||
/*
|
||||
* From the GCC manual:
|
||||
@@ -95,34 +114,170 @@
|
||||
* would be.
|
||||
* [...]
|
||||
*/
|
||||
-#ifndef __pure
|
||||
-#define __pure __attribute__((pure))
|
||||
+#define __pure __attribute__((pure))
|
||||
+#define __aligned(x) __attribute__((aligned(x)))
|
||||
+#define __printf(a, b) __attribute__((format(printf, a, b)))
|
||||
+#define __scanf(a, b) __attribute__((format(scanf, a, b)))
|
||||
+#define __attribute_const__ __attribute__((__const__))
|
||||
+#define __maybe_unused __attribute__((unused))
|
||||
+#define __always_unused __attribute__((unused))
|
||||
+
|
||||
+/* gcc version specific checks */
|
||||
+
|
||||
+#if GCC_VERSION < 30200
|
||||
+# error Sorry, your compiler is too old - please upgrade it.
|
||||
+#endif
|
||||
+
|
||||
+#if GCC_VERSION < 30300
|
||||
+# define __used __attribute__((__unused__))
|
||||
+#else
|
||||
+# define __used __attribute__((__used__))
|
||||
+#endif
|
||||
+
|
||||
+#ifdef CONFIG_GCOV_KERNEL
|
||||
+# if GCC_VERSION < 30400
|
||||
+# error "GCOV profiling support for gcc versions below 3.4 not included"
|
||||
+# endif /* __GNUC_MINOR__ */
|
||||
+#endif /* CONFIG_GCOV_KERNEL */
|
||||
+
|
||||
+#if GCC_VERSION >= 30400
|
||||
+#define __must_check __attribute__((warn_unused_result))
|
||||
#endif
|
||||
-#ifndef __aligned
|
||||
-#define __aligned(x) __attribute__((aligned(x)))
|
||||
+
|
||||
+#if GCC_VERSION >= 40000
|
||||
+
|
||||
+/* GCC 4.1.[01] miscompiles __weak */
|
||||
+#ifdef __KERNEL__
|
||||
+# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101
|
||||
+# error Your version of gcc miscompiles the __weak directive
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
+#define __used __attribute__((__used__))
|
||||
+#define __compiler_offsetof(a, b) \
|
||||
+ __builtin_offsetof(a, b)
|
||||
+
|
||||
+#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
|
||||
+# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||
#endif
|
||||
-#define __printf(a, b) __attribute__((format(printf, a, b)))
|
||||
-#define __scanf(a, b) __attribute__((format(scanf, a, b)))
|
||||
-#define noinline __attribute__((noinline))
|
||||
-#define __attribute_const__ __attribute__((__const__))
|
||||
-#define __maybe_unused __attribute__((unused))
|
||||
-#define __always_unused __attribute__((unused))
|
||||
-
|
||||
-#define __gcc_header(x) #x
|
||||
-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
|
||||
-#define gcc_header(x) _gcc_header(x)
|
||||
-#include gcc_header(__GNUC__)
|
||||
+
|
||||
+#if GCC_VERSION >= 40300
|
||||
+/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
+ * to them will be unlikely. This means a lot of manual unlikely()s
|
||||
+ * are unnecessary now for any paths leading to the usual suspects
|
||||
+ * like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
+ * older compilers]
|
||||
+ *
|
||||
+ * Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
+ * in the preprocessor, but we can live with this because they're unreleased.
|
||||
+ * Maketime probing would be overkill here.
|
||||
+ *
|
||||
+ * gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
+ * a special section, but I don't see any sense in this right now in
|
||||
+ * the kernel context
|
||||
+ */
|
||||
+#define __cold __attribute__((__cold__))
|
||||
+
|
||||
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
+
|
||||
+#ifndef __CHECKER__
|
||||
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#endif /* __CHECKER__ */
|
||||
+#endif /* GCC_VERSION >= 40300 */
|
||||
+
|
||||
+#if GCC_VERSION >= 40500
|
||||
+/*
|
||||
+ * Mark a position in code as unreachable. This can be used to
|
||||
+ * suppress control flow warnings after asm blocks that transfer
|
||||
+ * control elsewhere.
|
||||
+ *
|
||||
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
+ * this in the preprocessor, but we can live with this because they're
|
||||
+ * unreleased. Really, we need to have autoconf for the kernel.
|
||||
+ */
|
||||
+#define unreachable() __builtin_unreachable()
|
||||
+
|
||||
+/* Mark a function definition as prohibited from being cloned. */
|
||||
+#define __noclone __attribute__((__noclone__))
|
||||
+
|
||||
+#endif /* GCC_VERSION >= 40500 */
|
||||
+
|
||||
+#if GCC_VERSION >= 40600
|
||||
+/*
|
||||
+ * When used with Link Time Optimization, gcc can optimize away C functions or
|
||||
+ * variables which are referenced only from assembly code. __visible tells the
|
||||
+ * optimizer that something else uses this function or variable, thus preventing
|
||||
+ * this.
|
||||
+ */
|
||||
+#define __visible __attribute__((externally_visible))
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
|
||||
+/*
|
||||
+ * __assume_aligned(n, k): Tell the optimizer that the returned
|
||||
+ * pointer can be assumed to be k modulo n. The second argument is
|
||||
+ * optional (default 0), so we use a variadic macro to make the
|
||||
+ * shorthand.
|
||||
+ *
|
||||
+ * Beware: Do not apply this to functions which may return
|
||||
+ * ERR_PTRs. Also, it is probably unwise to apply it to functions
|
||||
+ * returning extra information in the low bits (but in that case the
|
||||
+ * compiler should see some alignment anyway, when the return value is
|
||||
+ * massaged by 'flags = ptr & 3; ptr &= ~3;').
|
||||
+ */
|
||||
+#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||
+ *
|
||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
+ *
|
||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
+ *
|
||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||
+ */
|
||||
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
+
|
||||
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
+#if GCC_VERSION >= 40400
|
||||
+#define __HAVE_BUILTIN_BSWAP32__
|
||||
+#define __HAVE_BUILTIN_BSWAP64__
|
||||
+#endif
|
||||
+#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
+#endif
|
||||
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||
+
|
||||
+#if GCC_VERSION >= 50000
|
||||
+#define KASAN_ABI_VERSION 4
|
||||
+#elif GCC_VERSION >= 40902
|
||||
+#define KASAN_ABI_VERSION 3
|
||||
+#endif
|
||||
+
|
||||
+#if GCC_VERSION >= 40902
|
||||
+/*
|
||||
+ * Tell the compiler that address safety instrumentation (KASAN)
|
||||
+ * should not be applied to that function.
|
||||
+ * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
|
||||
+ */
|
||||
+#define __no_sanitize_address __attribute__((no_sanitize_address))
|
||||
+#endif
|
||||
+
|
||||
+#endif /* gcc version >= 40000 specific checks */
|
||||
|
||||
#if !defined(__noclone)
|
||||
#define __noclone /* not needed */
|
||||
#endif
|
||||
|
||||
+#if !defined(__no_sanitize_address)
|
||||
+#define __no_sanitize_address
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* A trick to suppress uninitialized variable warning without generating any
|
||||
* code
|
||||
*/
|
||||
#define uninitialized_var(x) x = x
|
||||
-
|
||||
-#ifndef __always_inline
|
||||
-#define __always_inline inline __attribute__((always_inline))
|
||||
-#endif
|
||||
--- a/include/linux/compiler-gcc3.h
|
||||
+++ /dev/null
|
||||
@@ -1,23 +0,0 @@
|
||||
-#ifndef __LINUX_COMPILER_H
|
||||
-#error "Please don't include <linux/compiler-gcc3.h> directly, include <linux/compiler.h> instead."
|
||||
-#endif
|
||||
-
|
||||
-#if GCC_VERSION < 30200
|
||||
-# error Sorry, your compiler is too old - please upgrade it.
|
||||
-#endif
|
||||
-
|
||||
-#if GCC_VERSION >= 30300
|
||||
-# define __used __attribute__((__used__))
|
||||
-#else
|
||||
-# define __used __attribute__((__unused__))
|
||||
-#endif
|
||||
-
|
||||
-#if GCC_VERSION >= 30400
|
||||
-#define __must_check __attribute__((warn_unused_result))
|
||||
-#endif
|
||||
-
|
||||
-#ifdef CONFIG_GCOV_KERNEL
|
||||
-# if GCC_VERSION < 30400
|
||||
-# error "GCOV profiling support for gcc versions below 3.4 not included"
|
||||
-# endif /* __GNUC_MINOR__ */
|
||||
-#endif /* CONFIG_GCOV_KERNEL */
|
||||
--- a/include/linux/compiler-gcc4.h
|
||||
+++ /dev/null
|
||||
@@ -1,88 +0,0 @@
|
||||
-#ifndef __LINUX_COMPILER_H
|
||||
-#error "Please don't include <linux/compiler-gcc4.h> directly, include <linux/compiler.h> instead."
|
||||
-#endif
|
||||
-
|
||||
-/* GCC 4.1.[01] miscompiles __weak */
|
||||
-#ifdef __KERNEL__
|
||||
-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101
|
||||
-# error Your version of gcc miscompiles the __weak directive
|
||||
-# endif
|
||||
-#endif
|
||||
-
|
||||
-#define __used __attribute__((__used__))
|
||||
-#define __must_check __attribute__((warn_unused_result))
|
||||
-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
||||
-
|
||||
-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
|
||||
-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||
-#endif
|
||||
-
|
||||
-#if GCC_VERSION >= 40300
|
||||
-/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
- to them will be unlikely. This means a lot of manual unlikely()s
|
||||
- are unnecessary now for any paths leading to the usual suspects
|
||||
- like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
- older compilers]
|
||||
-
|
||||
- Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
- in the preprocessor, but we can live with this because they're unreleased.
|
||||
- Maketime probing would be overkill here.
|
||||
-
|
||||
- gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
- a special section, but I don't see any sense in this right now in
|
||||
- the kernel context */
|
||||
-#define __cold __attribute__((__cold__))
|
||||
-
|
||||
-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
-
|
||||
-#ifndef __CHECKER__
|
||||
-# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
-# define __compiletime_error(message) __attribute__((error(message)))
|
||||
-#endif /* __CHECKER__ */
|
||||
-#endif /* GCC_VERSION >= 40300 */
|
||||
-
|
||||
-#if GCC_VERSION >= 40500
|
||||
-/*
|
||||
- * Mark a position in code as unreachable. This can be used to
|
||||
- * suppress control flow warnings after asm blocks that transfer
|
||||
- * control elsewhere.
|
||||
- *
|
||||
- * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
- * this in the preprocessor, but we can live with this because they're
|
||||
- * unreleased. Really, we need to have autoconf for the kernel.
|
||||
- */
|
||||
-#define unreachable() __builtin_unreachable()
|
||||
-
|
||||
-/* Mark a function definition as prohibited from being cloned. */
|
||||
-#define __noclone __attribute__((__noclone__))
|
||||
-
|
||||
-#endif /* GCC_VERSION >= 40500 */
|
||||
-
|
||||
-#if GCC_VERSION >= 40600
|
||||
-/*
|
||||
- * Tell the optimizer that something else uses this function or variable.
|
||||
- */
|
||||
-#define __visible __attribute__((externally_visible))
|
||||
-#endif
|
||||
-
|
||||
-/*
|
||||
- * GCC 'asm goto' miscompiles certain code sequences:
|
||||
- *
|
||||
- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
- *
|
||||
- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
- * Fixed in GCC 4.8.2 and later versions.
|
||||
- *
|
||||
- * (asm goto is automatically volatile - the naming reflects this.)
|
||||
- */
|
||||
-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
-
|
||||
-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
-#if GCC_VERSION >= 40400
|
||||
-#define __HAVE_BUILTIN_BSWAP32__
|
||||
-#define __HAVE_BUILTIN_BSWAP64__
|
||||
-#endif
|
||||
-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
|
||||
-#define __HAVE_BUILTIN_BSWAP16__
|
||||
-#endif
|
||||
-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||
--- a/include/linux/compiler-gcc5.h
|
||||
+++ /dev/null
|
||||
@@ -1,65 +0,0 @@
|
||||
-#ifndef __LINUX_COMPILER_H
|
||||
-#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||
-#endif
|
||||
-
|
||||
-#define __used __attribute__((__used__))
|
||||
-#define __must_check __attribute__((warn_unused_result))
|
||||
-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||
-
|
||||
-/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
- to them will be unlikely. This means a lot of manual unlikely()s
|
||||
- are unnecessary now for any paths leading to the usual suspects
|
||||
- like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
- older compilers]
|
||||
-
|
||||
- Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
- in the preprocessor, but we can live with this because they're unreleased.
|
||||
- Maketime probing would be overkill here.
|
||||
-
|
||||
- gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
- a special section, but I don't see any sense in this right now in
|
||||
- the kernel context */
|
||||
-#define __cold __attribute__((__cold__))
|
||||
-
|
||||
-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
-
|
||||
-#ifndef __CHECKER__
|
||||
-# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
-# define __compiletime_error(message) __attribute__((error(message)))
|
||||
-#endif /* __CHECKER__ */
|
||||
-
|
||||
-/*
|
||||
- * Mark a position in code as unreachable. This can be used to
|
||||
- * suppress control flow warnings after asm blocks that transfer
|
||||
- * control elsewhere.
|
||||
- *
|
||||
- * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
- * this in the preprocessor, but we can live with this because they're
|
||||
- * unreleased. Really, we need to have autoconf for the kernel.
|
||||
- */
|
||||
-#define unreachable() __builtin_unreachable()
|
||||
-
|
||||
-/* Mark a function definition as prohibited from being cloned. */
|
||||
-#define __noclone __attribute__((__noclone__))
|
||||
-
|
||||
-/*
|
||||
- * Tell the optimizer that something else uses this function or variable.
|
||||
- */
|
||||
-#define __visible __attribute__((externally_visible))
|
||||
-
|
||||
-/*
|
||||
- * GCC 'asm goto' miscompiles certain code sequences:
|
||||
- *
|
||||
- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
- *
|
||||
- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
- *
|
||||
- * (asm goto is automatically volatile - the naming reflects this.)
|
||||
- */
|
||||
-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
-
|
||||
-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
-#define __HAVE_BUILTIN_BSWAP32__
|
||||
-#define __HAVE_BUILTIN_BSWAP64__
|
||||
-#define __HAVE_BUILTIN_BSWAP16__
|
||||
-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||
--- a/include/linux/compiler-intel.h
|
||||
+++ b/include/linux/compiler-intel.h
|
||||
@@ -13,9 +13,14 @@
|
||||
/* Intel ECC compiler doesn't support gcc specific asm stmts.
|
||||
* It uses intrinsics to do the equivalent things.
|
||||
*/
|
||||
+#undef barrier
|
||||
+#undef barrier_data
|
||||
#undef RELOC_HIDE
|
||||
#undef OPTIMIZER_HIDE_VAR
|
||||
|
||||
+#define barrier() __memory_barrier()
|
||||
+#define barrier_data(ptr) barrier()
|
||||
+
|
||||
#define RELOC_HIDE(ptr, off) \
|
||||
({ unsigned long __ptr; \
|
||||
__ptr = (unsigned long) (ptr); \
|
||||
--- a/include/linux/compiler.h
|
||||
+++ b/include/linux/compiler.h
|
||||
@@ -17,6 +17,7 @@
|
||||
# define __release(x) __context__(x,-1)
|
||||
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
|
||||
# define __percpu __attribute__((noderef, address_space(3)))
|
||||
+# define __pmem __attribute__((noderef, address_space(5)))
|
||||
#ifdef CONFIG_SPARSE_RCU_POINTER
|
||||
# define __rcu __attribute__((noderef, address_space(4)))
|
||||
#else
|
||||
@@ -42,6 +43,7 @@ extern void __chk_io_ptr(const volatile
|
||||
# define __cond_lock(x,c) (c)
|
||||
# define __percpu
|
||||
# define __rcu
|
||||
+# define __pmem
|
||||
#endif
|
||||
|
||||
/* Indirect macros required for expanded argument pasting, eg. __LINE__. */
|
||||
@@ -54,7 +56,11 @@ extern void __chk_io_ptr(const volatile
|
||||
#include <linux/compiler-gcc.h>
|
||||
#endif
|
||||
|
||||
+#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__)
|
||||
+#define notrace __attribute__((hotpatch(0,0)))
|
||||
+#else
|
||||
#define notrace __attribute__((no_instrument_function))
|
||||
+#endif
|
||||
|
||||
/* Intel compiler defines __GNUC__. So we will overwrite implementations
|
||||
* coming from above header files here
|
||||
@@ -138,7 +144,7 @@ void ftrace_likely_update(struct ftrace_
|
||||
*/
|
||||
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
|
||||
#define __trace_if(cond) \
|
||||
- if (__builtin_constant_p((cond)) ? !!(cond) : \
|
||||
+ if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
|
||||
({ \
|
||||
int ______r; \
|
||||
static struct ftrace_branch_data \
|
||||
@@ -165,6 +171,10 @@ void ftrace_likely_update(struct ftrace_
|
||||
# define barrier() __memory_barrier()
|
||||
#endif
|
||||
|
||||
+#ifndef barrier_data
|
||||
+# define barrier_data(ptr) barrier()
|
||||
+#endif
|
||||
+
|
||||
/* Unreachable code */
|
||||
#ifndef unreachable
|
||||
# define unreachable() do { } while (1)
|
||||
@@ -186,6 +196,126 @@ void ftrace_likely_update(struct ftrace_
|
||||
# define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__)
|
||||
#endif
|
||||
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+#define __READ_ONCE_SIZE \
|
||||
+({ \
|
||||
+ switch (size) { \
|
||||
+ case 1: *(__u8 *)res = *(volatile __u8 *)p; break; \
|
||||
+ case 2: *(__u16 *)res = *(volatile __u16 *)p; break; \
|
||||
+ case 4: *(__u32 *)res = *(volatile __u32 *)p; break; \
|
||||
+ case 8: *(__u64 *)res = *(volatile __u64 *)p; break; \
|
||||
+ default: \
|
||||
+ barrier(); \
|
||||
+ __builtin_memcpy((void *)res, (const void *)p, size); \
|
||||
+ barrier(); \
|
||||
+ } \
|
||||
+})
|
||||
+
|
||||
+static __always_inline
|
||||
+void __read_once_size(const volatile void *p, void *res, int size)
|
||||
+{
|
||||
+ __READ_ONCE_SIZE;
|
||||
+}
|
||||
+
|
||||
+#ifdef CONFIG_KASAN
|
||||
+/*
|
||||
+ * This function is not 'inline' because __no_sanitize_address confilcts
|
||||
+ * with inlining. Attempt to inline it may cause a build failure.
|
||||
+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
|
||||
+ * '__maybe_unused' allows us to avoid defined-but-not-used warnings.
|
||||
+ */
|
||||
+static __no_sanitize_address __maybe_unused
|
||||
+void __read_once_size_nocheck(const volatile void *p, void *res, int size)
|
||||
+{
|
||||
+ __READ_ONCE_SIZE;
|
||||
+}
|
||||
+#else
|
||||
+static __always_inline
|
||||
+void __read_once_size_nocheck(const volatile void *p, void *res, int size)
|
||||
+{
|
||||
+ __READ_ONCE_SIZE;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+static __always_inline void __write_once_size(volatile void *p, void *res, int size)
|
||||
+{
|
||||
+ switch (size) {
|
||||
+ case 1: *(volatile __u8 *)p = *(__u8 *)res; break;
|
||||
+ case 2: *(volatile __u16 *)p = *(__u16 *)res; break;
|
||||
+ case 4: *(volatile __u32 *)p = *(__u32 *)res; break;
|
||||
+ case 8: *(volatile __u64 *)p = *(__u64 *)res; break;
|
||||
+ default:
|
||||
+ barrier();
|
||||
+ __builtin_memcpy((void *)p, (const void *)res, size);
|
||||
+ barrier();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Prevent the compiler from merging or refetching reads or writes. The
|
||||
+ * compiler is also forbidden from reordering successive instances of
|
||||
+ * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the
|
||||
+ * compiler is aware of some particular ordering. One way to make the
|
||||
+ * compiler aware of ordering is to put the two invocations of READ_ONCE,
|
||||
+ * WRITE_ONCE or ACCESS_ONCE() in different C statements.
|
||||
+ *
|
||||
+ * In contrast to ACCESS_ONCE these two macros will also work on aggregate
|
||||
+ * data types like structs or unions. If the size of the accessed data
|
||||
+ * type exceeds the word size of the machine (e.g., 32 bits or 64 bits)
|
||||
+ * READ_ONCE() and WRITE_ONCE() will fall back to memcpy and print a
|
||||
+ * compile-time warning.
|
||||
+ *
|
||||
+ * Their two major use cases are: (1) Mediating communication between
|
||||
+ * process-level code and irq/NMI handlers, all running on the same CPU,
|
||||
+ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise
|
||||
+ * mutilate accesses that either do not require ordering or that interact
|
||||
+ * with an explicit memory barrier or atomic instruction that provides the
|
||||
+ * required ordering.
|
||||
+ */
|
||||
+
|
||||
+#define __READ_ONCE(x, check) \
|
||||
+({ \
|
||||
+ union { typeof(x) __val; char __c[1]; } __u; \
|
||||
+ if (check) \
|
||||
+ __read_once_size(&(x), __u.__c, sizeof(x)); \
|
||||
+ else \
|
||||
+ __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
|
||||
+ __u.__val; \
|
||||
+})
|
||||
+#define READ_ONCE(x) __READ_ONCE(x, 1)
|
||||
+
|
||||
+/*
|
||||
+ * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need
|
||||
+ * to hide memory access from KASAN.
|
||||
+ */
|
||||
+#define READ_ONCE_NOCHECK(x) __READ_ONCE(x, 0)
|
||||
+
|
||||
+#define WRITE_ONCE(x, val) \
|
||||
+({ \
|
||||
+ union { typeof(x) __val; char __c[1]; } __u = \
|
||||
+ { .__val = (__force typeof(x)) (val) }; \
|
||||
+ __write_once_size(&(x), __u.__c, sizeof(x)); \
|
||||
+ __u.__val; \
|
||||
+})
|
||||
+
|
||||
+/**
|
||||
+ * smp_cond_acquire() - Spin wait for cond with ACQUIRE ordering
|
||||
+ * @cond: boolean expression to wait for
|
||||
+ *
|
||||
+ * Equivalent to using smp_load_acquire() on the condition variable but employs
|
||||
+ * the control dependency of the wait to reduce the barrier on many platforms.
|
||||
+ *
|
||||
+ * The control dependency provides a LOAD->STORE order, the additional RMB
|
||||
+ * provides LOAD->LOAD order, together they provide LOAD->{LOAD,STORE} order,
|
||||
+ * aka. ACQUIRE.
|
||||
+ */
|
||||
+#define smp_cond_acquire(cond) do { \
|
||||
+ while (!(cond)) \
|
||||
+ cpu_relax(); \
|
||||
+ smp_rmb(); /* ctrl + rmb := acquire */ \
|
||||
+} while (0)
|
||||
+
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
@@ -304,6 +434,14 @@ void ftrace_likely_update(struct ftrace_
|
||||
#define __visible
|
||||
#endif
|
||||
|
||||
+/*
|
||||
+ * Assume alignment of return value.
|
||||
+ */
|
||||
+#ifndef __assume_aligned
|
||||
+#define __assume_aligned(a, ...)
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Are two types/vars the same type (ignoring qualifiers)? */
|
||||
#ifndef __same_type
|
||||
# define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
|
||||
@@ -311,7 +449,7 @@ void ftrace_likely_update(struct ftrace_
|
||||
|
||||
/* Is this type a native word size -- useful for atomic operations */
|
||||
#ifndef __native_word
|
||||
-# define __native_word(t) (sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
|
||||
+# define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
|
||||
#endif
|
||||
|
||||
/* Compile time object size, -1 for unknown */
|
||||
@@ -373,12 +511,38 @@ void ftrace_likely_update(struct ftrace_
|
||||
* to make the compiler aware of ordering is to put the two invocations of
|
||||
* ACCESS_ONCE() in different C statements.
|
||||
*
|
||||
- * This macro does absolutely -nothing- to prevent the CPU from reordering,
|
||||
- * merging, or refetching absolutely anything at any time. Its main intended
|
||||
- * use is to mediate communication between process-level code and irq/NMI
|
||||
- * handlers, all running on the same CPU.
|
||||
+ * ACCESS_ONCE will only work on scalar types. For union types, ACCESS_ONCE
|
||||
+ * on a union member will work as long as the size of the member matches the
|
||||
+ * size of the union and the size is smaller than word size.
|
||||
+ *
|
||||
+ * The major use cases of ACCESS_ONCE used to be (1) Mediating communication
|
||||
+ * between process-level code and irq/NMI handlers, all running on the same CPU,
|
||||
+ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise
|
||||
+ * mutilate accesses that either do not require ordering or that interact
|
||||
+ * with an explicit memory barrier or atomic instruction that provides the
|
||||
+ * required ordering.
|
||||
+ *
|
||||
+ * If possible use READ_ONCE()/WRITE_ONCE() instead.
|
||||
*/
|
||||
-#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
+#define __ACCESS_ONCE(x) ({ \
|
||||
+ __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \
|
||||
+ (volatile typeof(x) *)&(x); })
|
||||
+#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))
|
||||
+
|
||||
+/**
|
||||
+ * lockless_dereference() - safely load a pointer for later dereference
|
||||
+ * @p: The pointer to load
|
||||
+ *
|
||||
+ * Similar to rcu_dereference(), but for situations where the pointed-to
|
||||
+ * object's lifetime is managed by something other than RCU. That
|
||||
+ * "something other" might be reference counting or simple immortality.
|
||||
+ */
|
||||
+#define lockless_dereference(p) \
|
||||
+({ \
|
||||
+ typeof(p) _________p1 = READ_ONCE(p); \
|
||||
+ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \
|
||||
+ (_________p1); \
|
||||
+})
|
||||
|
||||
/* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */
|
||||
#ifdef CONFIG_KPROBES
|
@ -0,0 +1,26 @@
|
||||
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
|
||||
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
|
||||
@@ -334,6 +334,12 @@ int board_init(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+void board_boot_order(u32 *spl_boot_list)
|
||||
+{
|
||||
+ spl_boot_list[0] = spl_boot_device();
|
||||
+ spl_boot_list[1] = BOOT_DEVICE_MMC1;
|
||||
+}
|
||||
+
|
||||
static bool is_hummingboard(void)
|
||||
{
|
||||
int val1, val2;
|
||||
--- a/arch/arm/mach-imx/spl.c
|
||||
+++ b/arch/arm/mach-imx/spl.c
|
||||
@@ -136,7 +136,7 @@ int g_dnl_bind_fixup(struct usb_device_d
|
||||
/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
|
||||
u32 spl_boot_mode(const u32 boot_device)
|
||||
{
|
||||
- switch (spl_boot_device()) {
|
||||
+ switch (boot_device) {
|
||||
/* for MMC return either RAW or FAT mode */
|
||||
case BOOT_DEVICE_MMC1:
|
||||
case BOOT_DEVICE_MMC2:
|
@ -1,89 +0,0 @@
|
||||
--- a/include/configs/wandboard.h
|
||||
+++ b/include/configs/wandboard.h
|
||||
@@ -49,7 +49,7 @@
|
||||
#define CONFIG_CMD_BMODE
|
||||
#define CONFIG_CMD_SETEXPR
|
||||
|
||||
-#define CONFIG_BOOTDELAY 5
|
||||
+#define CONFIG_BOOTDELAY 3
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START 0x10000000
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
|
||||
@@ -102,13 +102,15 @@
|
||||
|
||||
#if defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
|
||||
#define CONFIG_DEFAULT_FDT_FILE "imx6dl-wandboard.dtb"
|
||||
+#define CONFIG_OWRT_NAME "openwrt-imx6-imx6dl-wandboard-fit-uImage.itb"
|
||||
#elif defined(CONFIG_MX6Q)
|
||||
#define CONFIG_DEFAULT_FDT_FILE "imx6q-wandboard.dtb"
|
||||
+#define CONFIG_OWRT_NAME "openwrt-imx6-imx6q-wandboard-fit-uImage.itb"
|
||||
#endif
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"script=boot.scr\0" \
|
||||
- "image=zImage\0" \
|
||||
+ "image=" CONFIG_OWRT_NAME "\0" \
|
||||
"console=ttymxc0\0" \
|
||||
"splashpos=m,m\0" \
|
||||
"fdt_high=0xffffffff\0" \
|
||||
@@ -137,11 +139,11 @@
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"root=${mmcroot}\0" \
|
||||
"loadbootscript=" \
|
||||
- "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
+ "ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source\0" \
|
||||
- "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
|
||||
- "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
+ "loaduimage=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
|
||||
+ "loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
@@ -155,31 +157,7 @@
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
- "bootz; " \
|
||||
- "fi;\0" \
|
||||
- "netargs=setenv bootargs console=${console},${baudrate} " \
|
||||
- "root=/dev/nfs " \
|
||||
- "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
|
||||
- "netboot=echo Booting from net ...; " \
|
||||
- "run netargs; " \
|
||||
- "if test ${ip_dyn} = yes; then " \
|
||||
- "setenv get_cmd dhcp; " \
|
||||
- "else " \
|
||||
- "setenv get_cmd tftp; " \
|
||||
- "fi; " \
|
||||
- "${get_cmd} ${image}; " \
|
||||
- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
- "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
|
||||
- "bootz ${loadaddr} - ${fdt_addr}; " \
|
||||
- "else " \
|
||||
- "if test ${boot_fdt} = try; then " \
|
||||
- "bootz; " \
|
||||
- "else " \
|
||||
- "echo WARN: Cannot load the DT; " \
|
||||
- "fi; " \
|
||||
- "fi; " \
|
||||
- "else " \
|
||||
- "bootz; " \
|
||||
+ "bootm; " \
|
||||
"fi;\0"
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
@@ -189,10 +167,10 @@
|
||||
"else " \
|
||||
"if run loadimage; then " \
|
||||
"run mmcboot; " \
|
||||
- "else run netboot; " \
|
||||
+ "else echo WARN: Can not boot the image; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
- "else run netboot; fi"
|
||||
+ "fi"
|
||||
|
||||
/* Miscellaneous configurable options */
|
||||
#define CONFIG_SYS_LONGHELP
|
@ -28,20 +28,20 @@ NOTE: this patch is ready for upstream, LEDE-specific parts are in
|
||||
@@ -56,6 +56,9 @@ config TARGET_GOFLEXHOME
|
||||
config TARGET_NAS220
|
||||
bool "BlackArmor NAS220"
|
||||
|
||||
|
||||
+config TARGET_NSA310
|
||||
+ bool "Zyxel NSA310 Board"
|
||||
+
|
||||
config TARGET_NSA310S
|
||||
bool "Zyxel NSA310S"
|
||||
|
||||
|
||||
@@ -80,6 +83,7 @@ source "board/raidsonic/ib62x0/Kconfig"
|
||||
source "board/Seagate/dockstar/Kconfig"
|
||||
source "board/Seagate/goflexhome/Kconfig"
|
||||
source "board/Seagate/nas220/Kconfig"
|
||||
+source "board/zyxel/nsa310/Kconfig"
|
||||
source "board/zyxel/nsa310s/Kconfig"
|
||||
|
||||
|
||||
endif
|
||||
--- /dev/null
|
||||
+++ b/board/zyxel/nsa310/Kconfig
|
||||
|
@ -3,19 +3,19 @@
|
||||
@@ -62,6 +62,9 @@ config TARGET_NSA310
|
||||
config TARGET_NSA310S
|
||||
bool "Zyxel NSA310S"
|
||||
|
||||
|
||||
+config TARGET_NSA325
|
||||
+ bool "Zyxel NSA325 board"
|
||||
+
|
||||
endchoice
|
||||
|
||||
|
||||
config SYS_SOC
|
||||
@@ -85,5 +88,6 @@ source "board/Seagate/goflexhome/Kconfig
|
||||
source "board/Seagate/nas220/Kconfig"
|
||||
source "board/zyxel/nsa310/Kconfig"
|
||||
source "board/zyxel/nsa310s/Kconfig"
|
||||
+source "board/zyxel/nsa325/Kconfig"
|
||||
|
||||
|
||||
endif
|
||||
--- /dev/null
|
||||
+++ b/board/zyxel/nsa325/Kconfig
|
||||
|
@ -3,13 +3,13 @@
|
||||
@@ -25,6 +25,9 @@ config TARGET_LSXL
|
||||
config TARGET_POGO_E02
|
||||
bool "pogo_e02 Board"
|
||||
|
||||
|
||||
+config TARGET_POGOPLUGV4
|
||||
+ bool "Pogoplug V4 Board"
|
||||
+
|
||||
config TARGET_DNS325
|
||||
bool "dns325 Board"
|
||||
|
||||
|
||||
@@ -77,6 +80,7 @@ source "board/Marvell/guruplug/Kconfig"
|
||||
source "board/Marvell/sheevaplug/Kconfig"
|
||||
source "board/buffalo/lsxl/Kconfig"
|
||||
@ -22,11 +22,11 @@
|
||||
+++ b/arch/arm/mach-kirkwood/include/mach/kw88f6192.h
|
||||
@@ -16,6 +16,6 @@
|
||||
#define KW_REGS_PHY_BASE KW88F6192_REGS_PHYS_BASE
|
||||
|
||||
|
||||
/* TCLK Core Clock defination */
|
||||
-#define CONFIG_SYS_TCLK 166000000 /* 166MHz */
|
||||
+#define CONFIG_SYS_TCLK 166666667 /* 166MHz */
|
||||
|
||||
|
||||
#endif /* _CONFIG_KW88F6192_H */
|
||||
--- a/arch/arm/mach-kirkwood/include/mach/mpp.h
|
||||
+++ b/arch/arm/mach-kirkwood/include/mach/mpp.h
|
||||
@ -35,12 +35,12 @@
|
||||
#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP33_GE1_13 MPP( 33, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP33_SATA1_ACTn MPP( 33, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
|
||||
|
||||
#define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1 )
|
||||
#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP34_GE1_14 MPP( 34, 0x3, 0, 0, 0, 1, 1, 1 )
|
||||
+#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 1, 0, 1, 1, 1 )
|
||||
|
||||
|
||||
#define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1 )
|
||||
--- /dev/null
|
||||
@ -619,7 +619,7 @@
|
||||
obj-$(CONFIG_MMC_SDHCI_XENON) += xenon_sdhci.o
|
||||
obj-$(CONFIG_MMC_SDHCI_ZYNQ) += zynq_sdhci.o
|
||||
+obj-$(CONFIG_KIRKWOOD_MMC) += kirkwood_mmc.o
|
||||
|
||||
|
||||
obj-$(CONFIG_MMC_SUNXI) += sunxi_mmc.o
|
||||
obj-$(CONFIG_MMC_UNIPHIER) += uniphier-sd.o
|
||||
--- /dev/null
|
||||
@ -1112,7 +1112,7 @@
|
||||
@@ -117,4 +117,10 @@
|
||||
#define CONFIG_MTD_PARTITIONS
|
||||
#endif
|
||||
|
||||
|
||||
+/*
|
||||
+ * Kirkwood MMC
|
||||
+ */
|
||||
|
@ -5,7 +5,7 @@
|
||||
#define CONFIG_KW88F6281 1 /* SOC Name */
|
||||
#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */
|
||||
+#define CONFIG_SYS_MVFS
|
||||
|
||||
|
||||
/*
|
||||
* mv-common.h should be defined after CMD configs since it used them
|
||||
@@ -36,27 +37,22 @@
|
||||
@ -15,7 +15,7 @@
|
||||
-#define CONFIG_ENV_ADDR 0x80000
|
||||
-#define CONFIG_ENV_OFFSET 0x80000 /* env starts here */
|
||||
+#define CONFIG_ENV_OFFSET 0xe0000 /* env starts here */
|
||||
|
||||
|
||||
/*
|
||||
* Default environment variables
|
||||
*/
|
||||
@ -29,7 +29,7 @@
|
||||
+ "ubi part ubi; " \
|
||||
+ "ubi read 0x800000 kernel; " \
|
||||
+ "bootm 0x800000"
|
||||
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
- "console=console=ttyS0,115200\0" \
|
||||
- "mtdids=nand0=orion_nand\0" \
|
||||
@ -41,7 +41,7 @@
|
||||
+ "mtdids=nand0=orion_nand\0" \
|
||||
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
|
||||
+ "bootargs_root=\0"
|
||||
|
||||
|
||||
/*
|
||||
* Ethernet Driver configuration
|
||||
--- a/configs/dockstar_defconfig
|
||||
|
@ -6,7 +6,7 @@
|
||||
#define CONFIG_ENV_SIZE 0x20000
|
||||
-#define CONFIG_ENV_OFFSET 0x80000
|
||||
+#define CONFIG_ENV_OFFSET 0xe0000
|
||||
|
||||
|
||||
/*
|
||||
* Default environment variables
|
||||
*/
|
||||
@ -18,7 +18,7 @@
|
||||
+ "ubi part ubi; " \
|
||||
+ "ubi read 0x800000 kernel; " \
|
||||
"bootm 0x800000"
|
||||
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"console=console=ttyS0,115200\0" \
|
||||
"mtdids=nand0=orion_nand\0" \
|
||||
@ -27,7 +27,7 @@
|
||||
- "bootargs_root=noinitrd ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs\0"
|
||||
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
|
||||
+ "bootargs_root=\0"
|
||||
|
||||
|
||||
/*
|
||||
* Ethernet driver configuration
|
||||
--- a/configs/iconnect_defconfig
|
||||
|
@ -14,7 +14,7 @@
|
||||
+ "ubi part ubi; " \
|
||||
+ "ubi read 0x800000 kernel; " \
|
||||
+ "bootm 0x800000"
|
||||
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"console=console=ttyS0,115200\0" \
|
||||
"mtdids=nand0=orion_nand\0" \
|
||||
@ -24,7 +24,7 @@
|
||||
- "bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs rw\0"
|
||||
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
|
||||
+ "bootargs_root=\0"
|
||||
|
||||
|
||||
/*
|
||||
* Ethernet driver configuration
|
||||
--- a/configs/ib62x0_defconfig
|
||||
|
@ -2,11 +2,11 @@
|
||||
+++ b/include/configs/pogo_e02.h
|
||||
@@ -44,23 +44,23 @@
|
||||
#endif
|
||||
|
||||
|
||||
#define CONFIG_ENV_SIZE 0x20000 /* 128k */
|
||||
-#define CONFIG_ENV_OFFSET 0x60000 /* env starts here */
|
||||
+#define CONFIG_ENV_OFFSET 0xe0000 /* env starts here */
|
||||
|
||||
|
||||
/*
|
||||
* Default environment variables
|
||||
*/
|
||||
@ -19,7 +19,7 @@
|
||||
+ "ubifsmount ubi:rootfs; " \
|
||||
+ "ubi read 0x800000 kernel; " \
|
||||
+ "bootm 0x800000"
|
||||
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
- "mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage)," \
|
||||
- "32M(rootfs),-(data)\0"\
|
||||
@ -31,7 +31,7 @@
|
||||
+ "mtdids=nand0=orion_nand\0" \
|
||||
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
|
||||
+ "bootargs_root=\0"
|
||||
|
||||
|
||||
/*
|
||||
* Ethernet Driver configuration
|
||||
--- a/configs/pogo_e02_defconfig
|
||||
|
@ -10,7 +10,7 @@
|
||||
+ "ubi part ubi; " \
|
||||
+ "ubi read 0x800000 kernel; " \
|
||||
"bootm 0x800000"
|
||||
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"console=console=ttyS0,115200\0" \
|
||||
"mtdids=nand0=orion_nand\0" \
|
||||
@ -19,7 +19,7 @@
|
||||
- "bootargs_root=ubi.mtd=root root=ubi0:root rootfstype=ubifs ro\0"
|
||||
+ "mtdparts="CONFIG_MTDPARTS_DEFAULT "\0" \
|
||||
+ "bootargs_root=\0"
|
||||
|
||||
|
||||
/*
|
||||
* Ethernet Driver configuration
|
||||
--- a/configs/goflexhome_defconfig
|
||||
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2017.01
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_HASH:=6c425175f93a4bcf2ec9faf5658ef279633dbd7856a293d95bd1ff516528ecf2
|
||||
|
||||
@ -24,17 +24,17 @@ endef
|
||||
|
||||
define U-Boot/omap4_panda
|
||||
NAME:=Pandaboard
|
||||
BUILD_DEVICES:=omap4-panda
|
||||
BUILD_DEVICES:=ti_omap4-panda
|
||||
endef
|
||||
|
||||
define U-Boot/am335x_boneblack
|
||||
NAME:=TI AM335x BeagleBone Black
|
||||
BUILD_DEVICES:=am335x-boneblack
|
||||
BUILD_DEVICES:=ti_am335x-bone-black
|
||||
endef
|
||||
|
||||
define U-Boot/am335x_evm
|
||||
NAME:=AM335x EVM
|
||||
BUILD_DEVICES:=am335x-evm
|
||||
BUILD_DEVICES:=ti_am335x-evm
|
||||
endef
|
||||
|
||||
define U-Boot/omap3_overo
|
||||
@ -43,7 +43,7 @@ endef
|
||||
|
||||
define U-Boot/omap3_beagle
|
||||
NAME:=BeagleBoard
|
||||
BUILD_DEVICES:=omap3-beagle
|
||||
BUILD_DEVICES:=ti_omap3-beagle
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS:=omap4_panda am335x_evm omap3_overo omap3_beagle am335x_boneblack
|
||||
|
@ -9,9 +9,9 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_VERSION:=2017.11
|
||||
PKG_VERSION:=2018.05
|
||||
|
||||
PKG_HASH:=6a018fd3caf58f3dcfa23ee989a82bd35df03af71872b9dca8c6d758a0d26c05
|
||||
PKG_HASH:=4da13c2a6139a78cc08608f21fd4741db27eda336cfad7ab8264fda923b9c048
|
||||
|
||||
PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
|
||||
|
||||
@ -207,6 +207,14 @@ define U-Boot/orangepi_zero_plus
|
||||
UENV:=a64
|
||||
endef
|
||||
|
||||
define U-Boot/orangepi_pc2
|
||||
BUILD_SUBTARGET:=cortexa53
|
||||
NAME:=Xunlong Orange Pi PC2
|
||||
BUILD_DEVICES:=sun50i-h5-orangepi-pc2
|
||||
DEPENDS:=+PACKAGE_u-boot-orangepi_pc2:arm-trusted-firmware-sunxi
|
||||
UENV:=a64
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
A10-OLinuXino-Lime \
|
||||
A13-OLinuXino \
|
||||
@ -233,6 +241,7 @@ UBOOT_TARGETS := \
|
||||
orangepi_pc \
|
||||
orangepi_plus \
|
||||
orangepi_2 \
|
||||
orangepi_pc2 \
|
||||
pangolin \
|
||||
pine64_plus \
|
||||
sopine_baseboard \
|
||||
@ -245,11 +254,7 @@ UBOOT_MAKE_FLAGS += \
|
||||
|
||||
define Build/InstallDev
|
||||
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
|
||||
ifeq ($(SUBTARGET),cortexa53)
|
||||
cat $(PKG_BUILD_DIR)/spl/sunxi-spl.bin $(PKG_BUILD_DIR)/u-boot.itb > $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin
|
||||
else
|
||||
$(CP) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin
|
||||
endif
|
||||
mkimage -C none -A arm -T script -d uEnv-$(UENV).txt \
|
||||
$(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-boot.scr
|
||||
endef
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -261,6 +261,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
|
||||
@@ -290,6 +290,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \
|
||||
sun6i-a31-m9.dtb \
|
||||
sun6i-a31-mele-a1000g-quad.dtb \
|
||||
sun6i-a31-mixtile-loftq.dtb \
|
||||
@ -360,7 +360,7 @@
|
||||
+CONFIG_SUNXI_SPI=y
|
||||
--- a/arch/arm/mach-sunxi/Kconfig
|
||||
+++ b/arch/arm/mach-sunxi/Kconfig
|
||||
@@ -752,6 +752,14 @@ config VIDEO_LCD_PANEL_I2C_SCL
|
||||
@@ -836,6 +836,14 @@ config VIDEO_LCD_PANEL_I2C_SCL
|
||||
Set the SCL pin for the LCD i2c interface. This takes a string in the
|
||||
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
--- a/configs/A20-OLinuXino-Lime2_defconfig
|
||||
+++ b/configs/A20-OLinuXino-Lime2_defconfig
|
||||
@@ -24,6 +24,7 @@ CONFIG_DFU_RAM=y
|
||||
@@ -22,6 +22,7 @@ CONFIG_DFU_RAM=y
|
||||
CONFIG_ETH_DESIGNWARE=y
|
||||
CONFIG_RGMII=y
|
||||
CONFIG_SUN7I_GMAC=y
|
||||
|
@ -14,7 +14,7 @@ More specifically, the following settings are now used:
|
||||
|
||||
--- a/arch/arm/mach-sunxi/clock_sun6i.c
|
||||
+++ b/arch/arm/mach-sunxi/clock_sun6i.c
|
||||
@@ -113,11 +113,12 @@ void clock_set_pll1(unsigned int clk)
|
||||
@@ -112,11 +112,12 @@ void clock_set_pll1(unsigned int clk)
|
||||
struct sunxi_ccm_reg * const ccm =
|
||||
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
|
||||
const int p = 0;
|
||||
|
@ -18,7 +18,7 @@ required setting for the PLL LDO is 1.37v as per the A31 manual.
|
||||
|
||||
--- a/arch/arm/mach-sunxi/clock_sun6i.c
|
||||
+++ b/arch/arm/mach-sunxi/clock_sun6i.c
|
||||
@@ -26,13 +26,26 @@ void clock_init_safe(void)
|
||||
@@ -25,13 +25,26 @@ void clock_init_safe(void)
|
||||
struct sunxi_prcm_reg * const prcm =
|
||||
(struct sunxi_prcm_reg *)SUNXI_PRCM_BASE;
|
||||
|
||||
@ -49,7 +49,7 @@ required setting for the PLL LDO is 1.37v as per the A31 manual.
|
||||
#if defined(CONFIG_MACH_SUN8I_R40) || defined(CONFIG_MACH_SUN50I)
|
||||
--- a/arch/arm/include/asm/arch-sunxi/prcm.h
|
||||
+++ b/arch/arm/include/asm/arch-sunxi/prcm.h
|
||||
@@ -111,13 +111,13 @@
|
||||
@@ -110,13 +110,13 @@
|
||||
#define PRCM_PLL_CTRL_LDO_OUT_MASK \
|
||||
__PRCM_PLL_CTRL_LDO_OUT(0x7)
|
||||
/* When using the low voltage 20 mV steps, and high voltage 30 mV steps */
|
||||
|
@ -6,7 +6,7 @@ Subject: sun6i: define alternate-function for UART2 on GPG
|
||||
|
||||
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||
@@ -186,6 +186,7 @@ enum sunxi_gpio_number {
|
||||
@@ -185,6 +185,7 @@ enum sunxi_gpio_number {
|
||||
#define SUN6I_GPG_SDC1 2
|
||||
#define SUN8I_GPG_SDC1 2
|
||||
#define SUN6I_GPG_TWI3 2
|
||||
|
@ -6,7 +6,7 @@ Subject: ARM: sun6i: Support console on UART2 (GPG6/GPG7)
|
||||
|
||||
--- a/arch/arm/mach-sunxi/board.c
|
||||
+++ b/arch/arm/mach-sunxi/board.c
|
||||
@@ -124,6 +124,10 @@ static int gpio_init(void)
|
||||
@@ -123,6 +123,10 @@ static int gpio_init(void)
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG_UART1);
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG_UART1);
|
||||
sunxi_gpio_set_pull(SUNXI_GPG(4), SUNXI_GPIO_PULL_UP);
|
||||
|
@ -6,7 +6,7 @@ Subject: ARM: sunxi: Make CONS_INDEX configurable
|
||||
|
||||
--- a/arch/arm/mach-sunxi/Kconfig
|
||||
+++ b/arch/arm/mach-sunxi/Kconfig
|
||||
@@ -416,6 +416,14 @@ config SYS_BOARD
|
||||
@@ -500,6 +500,14 @@ config SYS_BOARD
|
||||
config SYS_SOC
|
||||
default "sunxi"
|
||||
|
||||
|
@ -17,7 +17,7 @@ Cc: Simon Glass <sjg@chromium.org>
|
||||
|
||||
--- a/tools/fit_image.c
|
||||
+++ b/tools/fit_image.c
|
||||
@@ -650,9 +650,14 @@ static int fit_handle_file(struct image_
|
||||
@@ -649,9 +649,14 @@ static int fit_handle_file(struct image_
|
||||
}
|
||||
*cmd = '\0';
|
||||
} else if (params->datafile) {
|
||||
@ -26,10 +26,10 @@ Cc: Simon Glass <sjg@chromium.org>
|
||||
+ if (!dtc)
|
||||
+ dtc = MKIMAGE_DTC;
|
||||
+
|
||||
/* dtc -I dts -O dtb -p 500 datafile > tmpfile */
|
||||
snprintf(cmd, sizeof(cmd), "%s %s \"%s\" > \"%s\"",
|
||||
- MKIMAGE_DTC, params->dtc, params->datafile, tmpfile);
|
||||
+ dtc, params->dtc, params->datafile, tmpfile);
|
||||
/* dtc -I dts -O dtb -p 500 -o tmpfile datafile */
|
||||
snprintf(cmd, sizeof(cmd), "%s %s -o \"%s\" \"%s\"",
|
||||
- MKIMAGE_DTC, params->dtc, tmpfile, params->datafile);
|
||||
+ dtc, params->dtc, tmpfile, params->datafile);
|
||||
debug("Trying to execute \"%s\"\n", cmd);
|
||||
} else {
|
||||
snprintf(cmd, sizeof(cmd), "cp \"%s\" \"%s\"",
|
||||
|
@ -12,17 +12,26 @@ old way of generating images.
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1144,9 +1144,10 @@ u-boot-x86-16bit.bin: u-boot FORCE
|
||||
endif
|
||||
@@ -1215,8 +1215,10 @@ endif
|
||||
|
||||
ifneq ($(CONFIG_ARCH_SUNXI),)
|
||||
-u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb \
|
||||
- checkbinman FORCE
|
||||
ifeq ($(CONFIG_ARM64),)
|
||||
-u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE
|
||||
- $(call if_changed,binman)
|
||||
+OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
|
||||
+ --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
|
||||
+u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE
|
||||
+ $(call if_changed,pad_cat)
|
||||
endif
|
||||
else
|
||||
u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.itb FORCE
|
||||
$(call if_changed,cat)
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -711,7 +711,6 @@ config ARCH_SOCFPGA
|
||||
|
||||
ifneq ($(CONFIG_TEGRA),)
|
||||
config ARCH_SUNXI
|
||||
bool "Support sunxi (Allwinner) SoCs"
|
||||
- select BINMAN
|
||||
select CMD_GPIO
|
||||
select CMD_MMC if MMC
|
||||
select CMD_USB if DISTRO_DEFAULTS
|
||||
|
@ -1,165 +0,0 @@
|
||||
From 77f54e8698001d8a987f2aa4870f71b65dc089eb Mon Sep 17 00:00:00 2001
|
||||
In-Reply-To: <20170921152217.4011-1-antony@phenome.org>
|
||||
References: <20170921152217.4011-1-antony@phenome.org>
|
||||
From: Antony Antony <antony@phenome.org>
|
||||
Date: Thu, 21 Sep 2017 13:34:07 +0200
|
||||
Subject: [PATCH v5 1/2] sun50i: h5: Add NanoPi Neo Plus2 DT initial support
|
||||
|
||||
Add initial DT for NanoPi NEO Plus2 by FriendlyARM
|
||||
- Allwinner quad core H5 Cortex A53 with an ARM Mali-450MP GPU
|
||||
- 1 GB DDR3 RAM
|
||||
- 8GB eMMC flash (Samsung KLM8G1WEPD-B031)
|
||||
- micro SD card slot
|
||||
- Gigabit Ethernet (external RTL8211E-VB-CG chip)
|
||||
- 802.11 b/g/n WiFi, Bluetooth 4.0 (Ampak AP6212A module)
|
||||
- 2x USB 2.0 host ports
|
||||
|
||||
Signed-off-by: Antony Antony <antony@phenome.org>
|
||||
---
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 106 ++++++++++++++++++++++++++++
|
||||
configs/nanopi_neo_plus2_defconfig | 18 +++++
|
||||
3 files changed, 125 insertions(+)
|
||||
create mode 100644 arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts
|
||||
create mode 100644 configs/nanopi_neo_plus2_defconfig
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -337,6 +337,7 @@ dtb-$(CONFIG_MACH_SUN8I_V3S) += \
|
||||
sun8i-v3s-licheepi-zero.dtb
|
||||
dtb-$(CONFIG_MACH_SUN50I_H5) += \
|
||||
sun50i-h5-nanopi-neo2.dtb \
|
||||
+ sun50i-h5-nanopi-neo-plus2.dtb \
|
||||
sun50i-h5-orangepi-pc2.dtb \
|
||||
sun50i-h5-orangepi-prime.dtb \
|
||||
sun50i-h5-orangepi-zero-plus2.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts
|
||||
@@ -0,0 +1,106 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2017 Antony Antony <antony@phenome.org>
|
||||
+ * Copyright (c) 2016 ARM Ltd.
|
||||
+ *
|
||||
+ * This file is dual-licensed: you can use it either under the terms
|
||||
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||
+ * licensing only applies to this file, and not this project as a
|
||||
+ * whole.
|
||||
+ *
|
||||
+ * a) This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License as
|
||||
+ * published by the Free Software Foundation; either version 2 of the
|
||||
+ * License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * Or, alternatively,
|
||||
+ *
|
||||
+ * b) Permission is hereby granted, free of charge, to any person
|
||||
+ * obtaining a copy of this software and associated documentation
|
||||
+ * files (the "Software"), to deal in the Software without
|
||||
+ * restriction, including without limitation the rights to use,
|
||||
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
+ * sell copies of the Software, and to permit persons to whom the
|
||||
+ * Software is furnished to do so, subject to the following
|
||||
+ * conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be
|
||||
+ * included in all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "sun50i-h5.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "FriendlyARM NanoPi NEO Plus 2";
|
||||
+ compatible = "friendlyarm,nanopi-neo-plus2", "allwinner,sun50i-h5";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc3v3: vcc3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ehci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ bus-width = <4>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
|
||||
+ cd-inverted;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ bus-width = <8>;
|
||||
+ non-removable;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_pins_a>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/configs/nanopi_neo_plus2_defconfig
|
||||
@@ -0,0 +1,18 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_MACH_SUN50I_H5=y
|
||||
+CONFIG_DRAM_CLK=408
|
||||
+CONFIG_DRAM_ZQ=3881977
|
||||
+CONFIG_MACPWR="PD6"
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-nanopi-neo-plus2"
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+CONFIG_SPL=y
|
||||
+# CONFIG_CMD_IMLS is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_CMD_FPGA is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_ISO_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
@ -21,7 +21,7 @@ dtc from kernel 4.9.
|
||||
###
|
||||
--- a/scripts/Makefile.extrawarn
|
||||
+++ b/scripts/Makefile.extrawarn
|
||||
@@ -58,8 +58,8 @@ endif
|
||||
@@ -56,8 +56,8 @@ endif
|
||||
|
||||
KBUILD_CFLAGS += $(warning)
|
||||
|
||||
@ -32,7 +32,7 @@ dtc from kernel 4.9.
|
||||
|
||||
dtc-warning := $(dtc-warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
||||
dtc-warning += $(dtc-warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
||||
@@ -70,11 +70,11 @@ DTC_FLAGS += $(dtc-warning)
|
||||
@@ -68,11 +68,11 @@ DTC_FLAGS += $(dtc-warning)
|
||||
else
|
||||
|
||||
# Disable noisy checks by default
|
||||
|
@ -0,0 +1,63 @@
|
||||
From 96c04aab58e351fa9ed7e95783018d6dbf60768f Mon Sep 17 00:00:00 2001
|
||||
From: Jun Nie <jun.nie@linaro.org>
|
||||
Date: Mon, 7 May 2018 13:03:40 +0530
|
||||
Subject: sunxi: h3: Sync OTG and HCI nodes from Linux DT
|
||||
|
||||
Allwinner H3 have a dual-routed USB PHY0 -- routed to either OHCI/EHCI
|
||||
or MUSB controller.
|
||||
|
||||
Signed-off-by: Jun Nie <jun.nie@linaro.org>
|
||||
Reviewed-by: Jagan Teki <jagan@openedev.com>
|
||||
Acked-by: Jun Nie <jun.nie@linaro.org>
|
||||
---
|
||||
arch/arm/dts/sun8i-h3.dtsi | 32 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
--- a/arch/arm/dts/sun8i-h3.dtsi
|
||||
+++ b/arch/arm/dts/sun8i-h3.dtsi
|
||||
@@ -219,6 +219,19 @@
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
+ usb_otg: usb@1c19000 {
|
||||
+ compatible = "allwinner,sun8i-h3-musb";
|
||||
+ reg = <0x01c19000 0x400>;
|
||||
+ clocks = <&ccu CLK_BUS_OTG>;
|
||||
+ resets = <&ccu RST_BUS_OTG>;
|
||||
+ interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "mc";
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ extcon = <&usbphy 0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
usbphy: phy@01c19400 {
|
||||
compatible = "allwinner,sun8i-h3-usb-phy";
|
||||
reg = <0x01c19400 0x2c>,
|
||||
@@ -251,6 +264,25 @@
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
+ ehci0: usb@1c1a000 {
|
||||
+ compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
|
||||
+ reg = <0x01c1a000 0x100>;
|
||||
+ interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>;
|
||||
+ resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ohci0: usb@1c1a400 {
|
||||
+ compatible = "allwinner,sun8i-h3-ohci", "generic-ohci";
|
||||
+ reg = <0x01c1a400 0x100>;
|
||||
+ interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>,
|
||||
+ <&ccu CLK_USB_OHCI0>;
|
||||
+ resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
ehci1: usb@01c1b000 {
|
||||
compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
|
||||
reg = <0x01c1b000 0x100>;
|
@ -1,34 +1,48 @@
|
||||
From 068fb0d5728c5ec93cb961718d59e7c718886edd Mon Sep 17 00:00:00 2001
|
||||
From fd3736abbe57a819312c8df96d14ec396b074581 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Tue, 26 Sep 2017 22:16:59 +0200
|
||||
Subject: sunxi: Add support for Orange Pi R1
|
||||
Subject: sun8i: h2: Add initial Orange Pi R1
|
||||
|
||||
The device tree files are also submitted for inclusion into the Linux
|
||||
kernel.
|
||||
Orange Pi R1 is an open-source single-board computer using the
|
||||
Allwinner H2+ SOC.
|
||||
|
||||
H2+ Orange Pi R1 has
|
||||
- Quad-core Cortex-A7
|
||||
- 256MB DDR3
|
||||
- micrSD slot
|
||||
- 128MBit SPI Nor flash
|
||||
- Debug TTL UART
|
||||
- 100MBit/s Ethernet (H2+)
|
||||
- 100MBit/s Ethernet (RTL8152B)
|
||||
- Wifi (RTL8189ETV)
|
||||
- USB 2.0 OTG + power supply
|
||||
This board is very similar to the Orange Pi Zero.
|
||||
|
||||
The device tree file is copied from the Linux kernel 4.18.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts | 77 ++++++++++++++++++++++++++++++
|
||||
board/sunxi/MAINTAINERS | 5 ++
|
||||
configs/orangepi_r1_defconfig | 26 ++++++++++
|
||||
4 files changed, 109 insertions(+)
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts | 101 +++++++++++++++++++++++++++++
|
||||
board/sunxi/MAINTAINERS | 5 ++
|
||||
configs/orangepi_r1_defconfig | 16 +++++
|
||||
4 files changed, 123 insertions(+)
|
||||
create mode 100644 arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts
|
||||
create mode 100644 configs/orangepi_r1_defconfig
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -318,6 +318,7 @@ dtb-$(CONFIG_MACH_SUN8I_A83T) += \
|
||||
sun8i-a83t-bananapi-m3.dtb \
|
||||
sun8i-a83t-cubietruck-plus.dtb
|
||||
@@ -350,6 +350,7 @@ dtb-$(CONFIG_MACH_SUN8I_A83T) += \
|
||||
sun8i-a83t-cubietruck-plus.dtb \
|
||||
sun8i-a83t-tbs-a711.dts
|
||||
dtb-$(CONFIG_MACH_SUN8I_H3) += \
|
||||
+ sun8i-h2-plus-orangepi-r1.dtb \
|
||||
sun8i-h2-plus-orangepi-zero.dtb \
|
||||
sun8i-h3-bananapi-m2-plus.dtb \
|
||||
sun8i-h3-orangepi-2.dtb \
|
||||
sun8i-h3-libretech-all-h3-cc.dtb \
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts
|
||||
@@ -0,0 +1,91 @@
|
||||
@@ -0,0 +1,101 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz>
|
||||
+ *
|
||||
@ -87,8 +101,8 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+ */
|
||||
+ reg_vcc_usb_eth: reg-vcc-usb-ethernet {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-usb-ethernet";
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 0 20 GPIO_ACTIVE_HIGH>;
|
||||
@ -99,6 +113,16 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+&spi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ compatible = "mxicy,mx25l12805d", "jedec,spi-nor";
|
||||
+ };
|
||||
+};
|
||||
+*/
|
||||
+
|
||||
+&ohci1 {
|
||||
+ /*
|
||||
+ * RTL8152B USB-Ethernet adapter is connected to USB1,
|
||||
@ -122,7 +146,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+};
|
||||
--- a/board/sunxi/MAINTAINERS
|
||||
+++ b/board/sunxi/MAINTAINERS
|
||||
@@ -326,6 +326,11 @@ M: Jagan Teki <jagan@amarulasolutions.co
|
||||
@@ -342,6 +342,11 @@ M: Jagan Teki <jagan@amarulasolutions.co
|
||||
S: Maintained
|
||||
F: configs/orangepi_prime_defconfig
|
||||
|
||||
@ -136,22 +160,20 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
S: Maintained
|
||||
--- /dev/null
|
||||
+++ b/configs/orangepi_r1_defconfig
|
||||
@@ -0,0 +1,18 @@
|
||||
@@ -0,0 +1,16 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN8I_H3=y
|
||||
+CONFIG_DRAM_CLK=624
|
||||
+CONFIG_DRAM_ZQ=3881979
|
||||
+CONFIG_DRAM_ODT_EN=y
|
||||
+# CONFIG_VIDEO_DE2 is not set
|
||||
+CONFIG_SPL_SPI_SUNXI=y
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-orangepi-r1"
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+CONFIG_CONSOLE_MUX=y
|
||||
+CONFIG_SPL=y
|
||||
+# CONFIG_CMD_IMLS is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_CMD_FPGA is not set
|
||||
+CONFIG_SPL_SPI_SUNXI=y
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||
|
@ -1,6 +1,37 @@
|
||||
From fd576a3c594ee2356b50a0738403e5cef094935a Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sat, 9 Jun 2018 15:16:42 +0200
|
||||
Subject: sun50i: h5: Add initial Orange Pi Zero Plus support
|
||||
|
||||
Orange Pi Zero Plus is an open-source single-board computer
|
||||
using the Allwinner H5 SOC.
|
||||
|
||||
H5 Orangepi Zero Plus has
|
||||
- Quad-core Cortex-A53
|
||||
- 512MB DDR3
|
||||
- micrSD slot
|
||||
- 16MBit SPI Nor flash
|
||||
- Debug TTL UART
|
||||
- 1GBit/s Ethernet (RTL8211E)
|
||||
- Wifi (RTL8189FTV)
|
||||
- USB 2.0 Host
|
||||
- USB 2.0 OTG + power supply
|
||||
|
||||
The device tree file is copied from the Linux kernel 4.18.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts | 145 ++++++++++++++++++++++++++
|
||||
board/sunxi/MAINTAINERS | 5 +
|
||||
configs/orangepi_zero_plus_defconfig | 16 +++
|
||||
4 files changed, 167 insertions(+)
|
||||
create mode 100644 arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts
|
||||
create mode 100644 configs/orangepi_zero_plus_defconfig
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -339,6 +339,7 @@ dtb-$(CONFIG_MACH_SUN8I_V3S) += \
|
||||
@@ -372,6 +372,7 @@ dtb-$(CONFIG_MACH_SUN8I_V3S) += \
|
||||
dtb-$(CONFIG_MACH_SUN50I_H5) += \
|
||||
sun50i-h5-nanopi-neo2.dtb \
|
||||
sun50i-h5-nanopi-neo-plus2.dtb \
|
||||
@ -9,94 +40,25 @@
|
||||
sun50i-h5-orangepi-prime.dtb \
|
||||
sun50i-h5-orangepi-zero-plus2.dtb
|
||||
--- /dev/null
|
||||
+++ b/configs/orangepi_zero_plus_defconfig
|
||||
@@ -0,0 +1,19 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_MACH_SUN50I_H5=y
|
||||
+CONFIG_DRAM_CLK=624
|
||||
+CONFIG_DRAM_ZQ=3881977
|
||||
+CONFIG_MACPWR="PD6"
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-orangepi-zero-plus"
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+CONFIG_SPL=y
|
||||
+# CONFIG_CMD_IMLS is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_CMD_FPGA is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_ISO_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_SPL_SPI_SUNXI=y
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts
|
||||
@@ -0,0 +1,113 @@
|
||||
@@ -0,0 +1,145 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2017 Antony Antony <antony@phenome.org>
|
||||
+ * Copyright (c) 2016 ARM Ltd.
|
||||
+ * Copyright (C) 2016 ARM Ltd.
|
||||
+ * Copyright (C) 2018 Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+ *
|
||||
+ * This file is dual-licensed: you can use it either under the terms
|
||||
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||
+ * licensing only applies to this file, and not this project as a
|
||||
+ * whole.
|
||||
+ *
|
||||
+ * a) This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License as
|
||||
+ * published by the Free Software Foundation; either version 2 of the
|
||||
+ * License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * Or, alternatively,
|
||||
+ *
|
||||
+ * b) Permission is hereby granted, free of charge, to any person
|
||||
+ * obtaining a copy of this software and associated documentation
|
||||
+ * files (the "Software"), to deal in the Software without
|
||||
+ * restriction, including without limitation the rights to use,
|
||||
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
+ * sell copies of the Software, and to permit persons to whom the
|
||||
+ * Software is furnished to do so, subject to the following
|
||||
+ * conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be
|
||||
+ * included in all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ * SPDX-License-Identifier: (GPL-2.0+ OR X11)
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "sun50i-h5.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "Xunlong Orange Pi Zero Plus";
|
||||
+ compatible = "xunlong,orangepizero-zero-plus", "allwinner,sun50i-h5";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ memory {
|
||||
+ reg = <0x40000000 0x40000000>;
|
||||
+ };
|
||||
+ compatible = "xunlong,orangepi-zero-plus", "allwinner,sun50i-h5";
|
||||
+
|
||||
+ reg_vcc3v3: vcc3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
@ -104,32 +66,104 @@
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ };
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &emac;
|
||||
+ ethernet1 = &rtl8189ftv;
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ pwr {
|
||||
+ label = "orangepi:green:pwr";
|
||||
+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+
|
||||
+ status {
|
||||
+ label = "orangepi:red:status";
|
||||
+ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_gmac_3v3: gmac-3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "gmac-3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ehci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ compatible = "allwinner,sun50i-h5-mmc",
|
||||
+ "allwinner,sun50i-a64-mmc",
|
||||
+ "allwinner,sun5i-a13-mmc";
|
||||
+&emac {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ bus-width = <4>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
|
||||
+ cd-inverted;
|
||||
+ pinctrl-0 = <&emac_rgmii_pins>;
|
||||
+ phy-supply = <®_gmac_3v3>;
|
||||
+ phy-handle = <&ext_rgmii_phy>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc2_8bit_pins>;
|
||||
+&external_mdio {
|
||||
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ bus-width = <8>;
|
||||
+ bus-width = <4>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc1 {
|
||||
+ vmmc-supply = <®_vcc3v3>;
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ /*
|
||||
+ * Explicitly define the sdio device, so that we can add an ethernet
|
||||
+ * alias for it (which e.g. makes u-boot set a mac-address).
|
||||
+ */
|
||||
+ rtl8189ftv: sdio_wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+&spi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ compatible = "mxicy,mx25l1606e", "winbond,w25q128";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <40000000>;
|
||||
+ };
|
||||
+};
|
||||
+*/
|
||||
+
|
||||
+&ohci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
@ -143,6 +177,46 @@
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy {
|
||||
+&usb_otg {
|
||||
+ dr_mode = "peripheral";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy {
|
||||
+ /* USB Type-A ports' VBUS is always on */
|
||||
+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
|
||||
+ status = "okay";
|
||||
+};
|
||||
--- a/board/sunxi/MAINTAINERS
|
||||
+++ b/board/sunxi/MAINTAINERS
|
||||
@@ -327,6 +327,11 @@ M: Icenowy Zheng <icenowy@aosc.xyz>
|
||||
S: Maintained
|
||||
F: configs/orangepi_zero_defconfig
|
||||
|
||||
+ORANGEPI ZERO PLUS BOARD
|
||||
+M: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
+S: Maintained
|
||||
+F: configs/orangepi_zero_plus_defconfig
|
||||
+
|
||||
ORANGEPI ZERO PLUS 2 BOARD
|
||||
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||
S: Maintained
|
||||
--- /dev/null
|
||||
+++ b/configs/orangepi_zero_plus_defconfig
|
||||
@@ -0,0 +1,16 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN50I_H5=y
|
||||
+CONFIG_DRAM_CLK=624
|
||||
+CONFIG_DRAM_ZQ=3881977
|
||||
+CONFIG_MMC0_CD_PIN="PH13"
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-orangepi-zero-plus"
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||
|
@ -7,9 +7,9 @@
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_VERSION:=2016.03
|
||||
PKG_VERSION:=2018.07
|
||||
|
||||
PKG_HASH:=e49337262ecac44dbdeac140f2c6ebd1eba345e0162b0464172e7f05583ed7bb
|
||||
PKG_HASH:=9f10df88bc91b35642e461217f73256bbaeeca9ae2db8db56197ba5e89e1f6d4
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
@ -18,7 +18,7 @@ include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
define U-Boot/Default
|
||||
BUILD_TARGET:=zynq
|
||||
UBOOT_IMAGE:=u-boot u-boot-dtb.bin u-boot.dtb u-boot-dtb.img spl/boot.bin spl/u-boot-spl spl/u-boot-spl-dtb.bin
|
||||
UBOOT_IMAGE:=spl/boot.bin u-boot.img
|
||||
UBOOT_CONFIG:=zynq_$(1)
|
||||
endef
|
||||
|
||||
@ -38,10 +38,15 @@ define U-Boot/zybo
|
||||
NAME:=Digilent Zybo Dev Board
|
||||
endef
|
||||
|
||||
define U-Boot/zybo_z7
|
||||
NAME:=Digilent Zybo Z7 board
|
||||
endef
|
||||
|
||||
UBOOT_TARGETS := \
|
||||
zc702 \
|
||||
zed \
|
||||
zybo
|
||||
zybo \
|
||||
zybo_z7
|
||||
|
||||
Build/Exports:=$(Host/Exports)
|
||||
|
||||
|
@ -0,0 +1,38 @@
|
||||
From a492fdffa3c86f6b8420b6433a2ce07271597324 Mon Sep 17 00:00:00 2001
|
||||
From: Luis Araneda <luaraneda@gmail.com>
|
||||
Date: Fri, 27 Jul 2018 04:43:42 -0400
|
||||
Subject: [PATCH] arm: zynq: dts: add spi flash node to zedboard
|
||||
|
||||
Add a flash node to fix the detection of the memory IC.
|
||||
With the changes introduced with commit 8fee8845e754
|
||||
("enf_sf: reuse setup_flash_device instead of open coding it")
|
||||
the SPI speed is now read from device-tree or a default value
|
||||
is applied. This replaced the old behavior of setting the
|
||||
SPI speed to CONFIG_ENV_SPI_MAX_HZ.
|
||||
|
||||
As this board didn't have a flash node, the default value
|
||||
was applied to the SPI speed, producing an error when probing
|
||||
the flash memory (speed too slow).
|
||||
|
||||
Signed-off-by: Luis Araneda <luaraneda@gmail.com>
|
||||
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
|
||||
---
|
||||
arch/arm/dts/zynq-zed.dts | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
--- a/arch/arm/dts/zynq-zed.dts
|
||||
+++ b/arch/arm/dts/zynq-zed.dts
|
||||
@@ -51,6 +51,13 @@
|
||||
&qspi {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
+ num-cs = <1>;
|
||||
+ flash@0 {
|
||||
+ compatible = "spansion,s25fl256s", "spi-flash";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <30000000>;
|
||||
+ m25p,fast-read;
|
||||
+ };
|
||||
};
|
||||
|
||||
&sdhci0 {
|
@ -0,0 +1,499 @@
|
||||
From 58f449676ac29938ea2970e240a2defe99240a8e Mon Sep 17 00:00:00 2001
|
||||
From: Luis Araneda <luaraneda@gmail.com>
|
||||
Date: Tue, 24 Jul 2018 11:31:19 -0400
|
||||
Subject: [PATCH] arm: zynq: add support for the zybo z7 board
|
||||
|
||||
The board is manufactured by Digilent
|
||||
Main features:
|
||||
- Soc: XC7Z010 (Z7-10) or XC7Z020 (Z7-20)
|
||||
- RAM: 1 GB DDR3L
|
||||
- FLASH: 16 MB QSPI
|
||||
- 1 Gbps Ethernet
|
||||
- USB 2.0
|
||||
- microSD slot
|
||||
- Pcam camera connector
|
||||
- HDMI Tx and Rx
|
||||
- Audio codec: stereo out, stereo in, mic
|
||||
- 5 (Z7-10) or 6 (Z7-20) Pmod ports
|
||||
- 6 push-buttons, 4 switches, 5 LEDs
|
||||
- 1 (Z7-10) or 2 (Z7-20) RGB LEDs
|
||||
|
||||
Signed-off-by: Luis Araneda <luaraneda@gmail.com>
|
||||
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
|
||||
---
|
||||
arch/arm/dts/Makefile | 3 +-
|
||||
arch/arm/dts/zynq-zybo-z7.dts | 81 +++++
|
||||
board/xilinx/zynq/zynq-zybo-z7/ps7_init_gpl.c | 297 ++++++++++++++++++
|
||||
configs/zynq_zybo_z7_defconfig | 68 ++++
|
||||
4 files changed, 448 insertions(+), 1 deletion(-)
|
||||
create mode 100644 arch/arm/dts/zynq-zybo-z7.dts
|
||||
create mode 100644 board/xilinx/zynq/zynq-zybo-z7/ps7_init_gpl.c
|
||||
create mode 100644 configs/zynq_zybo_z7_defconfig
|
||||
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -145,7 +145,8 @@ dtb-$(CONFIG_ARCH_ZYNQ) += \
|
||||
zynq-zc770-xm013.dtb \
|
||||
zynq-zed.dtb \
|
||||
zynq-zturn.dtb \
|
||||
- zynq-zybo.dtb
|
||||
+ zynq-zybo.dtb \
|
||||
+ zynq-zybo-z7.dtb
|
||||
dtb-$(CONFIG_ARCH_ZYNQMP) += \
|
||||
zynqmp-mini-emmc0.dtb \
|
||||
zynqmp-mini-emmc1.dtb \
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/zynq-zybo-z7.dts
|
||||
@@ -0,0 +1,81 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0+
|
||||
+/*
|
||||
+ * Copyright (C) 2011 - 2015 Xilinx
|
||||
+ * Copyright (C) 2012 National Instruments Corp.
|
||||
+ */
|
||||
+/dts-v1/;
|
||||
+#include "zynq-7000.dtsi"
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "Digilent Zybo Z7 board";
|
||||
+ compatible = "digilent,zynq-zybo-z7", "xlnx,zynq-7000";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &gem0;
|
||||
+ serial0 = &uart1;
|
||||
+ spi0 = &qspi;
|
||||
+ mmc0 = &sdhci0;
|
||||
+ };
|
||||
+
|
||||
+ memory@0 {
|
||||
+ device_type = "memory";
|
||||
+ reg = <0x0 0x40000000>;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "";
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ ld4 {
|
||||
+ label = "zynq-zybo-z7:green:ld4";
|
||||
+ gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ usb_phy0: phy0 {
|
||||
+ #phy-cells = <0>;
|
||||
+ compatible = "usb-nop-xceiv";
|
||||
+ reset-gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&clkc {
|
||||
+ ps-clk-frequency = <33333333>;
|
||||
+};
|
||||
+
|
||||
+&gem0 {
|
||||
+ status = "okay";
|
||||
+ phy-mode = "rgmii-id";
|
||||
+ phy-handle = <ðernet_phy>;
|
||||
+
|
||||
+ ethernet_phy: ethernet-phy@0 {
|
||||
+ reg = <0>;
|
||||
+ device_type = "ethernet-phy";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&qspi {
|
||||
+ u-boot,dm-pre-reloc;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdhci0 {
|
||||
+ u-boot,dm-pre-reloc;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart1 {
|
||||
+ u-boot,dm-pre-reloc;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb0 {
|
||||
+ status = "okay";
|
||||
+ dr_mode = "host";
|
||||
+ usb-phy = <&usb_phy0>;
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/board/xilinx/zynq/zynq-zybo-z7/ps7_init_gpl.c
|
||||
@@ -0,0 +1,297 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0+
|
||||
+/*
|
||||
+ * (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Procedure to generate this file (using Vivado Webpack 2018.2):
|
||||
+ * + Install board files from digilent/vivado-boards repository
|
||||
+ * (commit 6a45981 from 2018-06-05)
|
||||
+ * + Start Vivado and create a new RTL project with the Zybo-z7-20 board
|
||||
+ * + Create a block design
|
||||
+ * - Add "ZYNQ7 Processing System" IP
|
||||
+ * - Run "Block Automation" (Check "Apply Board Preset")
|
||||
+ * - Connect ports FCLK_CLK0 and M_AXI_GP0_ACLK
|
||||
+ * - Save diagram changes
|
||||
+ * - Go to sources view, select the block diagram,
|
||||
+ * and select "Generate Output Products"
|
||||
+ * + Copy the generated "ps7_init_gpl.c" file
|
||||
+ * + Perform manual editions based on existing Zynq boards
|
||||
+ * and the checkpatch.pl script
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include <asm/arch/ps7_init_gpl.h>
|
||||
+
|
||||
+static unsigned long ps7_pll_init_data_3_0[] = {
|
||||
+ EMIT_WRITE(0xF8000008, 0x0000DF0DU),
|
||||
+ EMIT_MASKWRITE(0xF8000110, 0x003FFFF0U, 0x000FA220U),
|
||||
+ EMIT_MASKWRITE(0xF8000100, 0x0007F000U, 0x00028000U),
|
||||
+ EMIT_MASKWRITE(0xF8000100, 0x00000010U, 0x00000010U),
|
||||
+ EMIT_MASKWRITE(0xF8000100, 0x00000001U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000100, 0x00000001U, 0x00000000U),
|
||||
+ EMIT_MASKPOLL(0xF800010C, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000100, 0x00000010U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF8000120, 0x1F003F30U, 0x1F000200U),
|
||||
+ EMIT_MASKWRITE(0xF8000114, 0x003FFFF0U, 0x0012C220U),
|
||||
+ EMIT_MASKWRITE(0xF8000104, 0x0007F000U, 0x00020000U),
|
||||
+ EMIT_MASKWRITE(0xF8000104, 0x00000010U, 0x00000010U),
|
||||
+ EMIT_MASKWRITE(0xF8000104, 0x00000001U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000104, 0x00000001U, 0x00000000U),
|
||||
+ EMIT_MASKPOLL(0xF800010C, 0x00000002U),
|
||||
+ EMIT_MASKWRITE(0xF8000104, 0x00000010U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF8000124, 0xFFF00003U, 0x0C200003U),
|
||||
+ EMIT_MASKWRITE(0xF8000118, 0x003FFFF0U, 0x001452C0U),
|
||||
+ EMIT_MASKWRITE(0xF8000108, 0x0007F000U, 0x0001E000U),
|
||||
+ EMIT_MASKWRITE(0xF8000108, 0x00000010U, 0x00000010U),
|
||||
+ EMIT_MASKWRITE(0xF8000108, 0x00000001U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000108, 0x00000001U, 0x00000000U),
|
||||
+ EMIT_MASKPOLL(0xF800010C, 0x00000004U),
|
||||
+ EMIT_MASKWRITE(0xF8000108, 0x00000010U, 0x00000000U),
|
||||
+ EMIT_WRITE(0xF8000004, 0x0000767BU),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+static unsigned long ps7_clock_init_data_3_0[] = {
|
||||
+ EMIT_WRITE(0xF8000008, 0x0000DF0DU),
|
||||
+ EMIT_MASKWRITE(0xF8000128, 0x03F03F01U, 0x00700F01U),
|
||||
+ EMIT_MASKWRITE(0xF8000138, 0x00000011U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000140, 0x03F03F71U, 0x00100801U),
|
||||
+ EMIT_MASKWRITE(0xF800014C, 0x00003F31U, 0x00000501U),
|
||||
+ EMIT_MASKWRITE(0xF8000150, 0x00003F33U, 0x00001401U),
|
||||
+ EMIT_MASKWRITE(0xF8000154, 0x00003F33U, 0x00000A02U),
|
||||
+ EMIT_MASKWRITE(0xF8000168, 0x00003F31U, 0x00000501U),
|
||||
+ EMIT_MASKWRITE(0xF8000170, 0x03F03F30U, 0x00400500U),
|
||||
+ EMIT_MASKWRITE(0xF80001C4, 0x00000001U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF800012C, 0x01FFCCCDU, 0x01EC044DU),
|
||||
+ EMIT_WRITE(0xF8000004, 0x0000767BU),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+static unsigned long ps7_ddr_init_data_3_0[] = {
|
||||
+ EMIT_MASKWRITE(0xF8006000, 0x0001FFFFU, 0x00000080U),
|
||||
+ EMIT_MASKWRITE(0xF8006004, 0x0007FFFFU, 0x00001081U),
|
||||
+ EMIT_MASKWRITE(0xF8006008, 0x03FFFFFFU, 0x03C0780FU),
|
||||
+ EMIT_MASKWRITE(0xF800600C, 0x03FFFFFFU, 0x02001001U),
|
||||
+ EMIT_MASKWRITE(0xF8006010, 0x03FFFFFFU, 0x00014001U),
|
||||
+ EMIT_MASKWRITE(0xF8006014, 0x001FFFFFU, 0x0004281AU),
|
||||
+ EMIT_MASKWRITE(0xF8006018, 0xF7FFFFFFU, 0x44E458D2U),
|
||||
+ EMIT_MASKWRITE(0xF800601C, 0xFFFFFFFFU, 0x720238E5U),
|
||||
+ EMIT_MASKWRITE(0xF8006020, 0x7FDFFFFCU, 0x270872D0U),
|
||||
+ EMIT_MASKWRITE(0xF8006024, 0x0FFFFFC3U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF8006028, 0x00003FFFU, 0x00002007U),
|
||||
+ EMIT_MASKWRITE(0xF800602C, 0xFFFFFFFFU, 0x00000008U),
|
||||
+ EMIT_MASKWRITE(0xF8006030, 0xFFFFFFFFU, 0x00040930U),
|
||||
+ EMIT_MASKWRITE(0xF8006034, 0x13FF3FFFU, 0x000116D4U),
|
||||
+ EMIT_MASKWRITE(0xF8006038, 0x00000003U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF800603C, 0x000FFFFFU, 0x00000777U),
|
||||
+ EMIT_MASKWRITE(0xF8006040, 0xFFFFFFFFU, 0xFFF00000U),
|
||||
+ EMIT_MASKWRITE(0xF8006044, 0x0FFFFFFFU, 0x0F666666U),
|
||||
+ EMIT_MASKWRITE(0xF8006048, 0x0003F03FU, 0x0003C008U),
|
||||
+ EMIT_MASKWRITE(0xF8006050, 0xFF0F8FFFU, 0x77010800U),
|
||||
+ EMIT_MASKWRITE(0xF8006058, 0x00010000U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF800605C, 0x0000FFFFU, 0x00005003U),
|
||||
+ EMIT_MASKWRITE(0xF8006060, 0x000017FFU, 0x0000003EU),
|
||||
+ EMIT_MASKWRITE(0xF8006064, 0x00021FE0U, 0x00020000U),
|
||||
+ EMIT_MASKWRITE(0xF8006068, 0x03FFFFFFU, 0x00284141U),
|
||||
+ EMIT_MASKWRITE(0xF800606C, 0x0000FFFFU, 0x00001610U),
|
||||
+ EMIT_MASKWRITE(0xF8006078, 0x03FFFFFFU, 0x00466111U),
|
||||
+ EMIT_MASKWRITE(0xF800607C, 0x000FFFFFU, 0x00032222U),
|
||||
+ EMIT_MASKWRITE(0xF80060A4, 0xFFFFFFFFU, 0x10200802U),
|
||||
+ EMIT_MASKWRITE(0xF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
|
||||
+ EMIT_MASKWRITE(0xF80060AC, 0x000001FFU, 0x000001FEU),
|
||||
+ EMIT_MASKWRITE(0xF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
|
||||
+ EMIT_MASKWRITE(0xF80060B4, 0x00000200U, 0x00000200U),
|
||||
+ EMIT_MASKWRITE(0xF80060B8, 0x01FFFFFFU, 0x00200066U),
|
||||
+ EMIT_MASKWRITE(0xF80060C4, 0x00000003U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80060C8, 0x000000FFU, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80060DC, 0x00000001U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80060F0, 0x0000FFFFU, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80060F4, 0x0000000FU, 0x00000008U),
|
||||
+ EMIT_MASKWRITE(0xF8006114, 0x000000FFU, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF8006118, 0x7FFFFFCFU, 0x40000001U),
|
||||
+ EMIT_MASKWRITE(0xF800611C, 0x7FFFFFCFU, 0x40000001U),
|
||||
+ EMIT_MASKWRITE(0xF8006120, 0x7FFFFFCFU, 0x40000001U),
|
||||
+ EMIT_MASKWRITE(0xF8006124, 0x7FFFFFCFU, 0x40000001U),
|
||||
+ EMIT_MASKWRITE(0xF800612C, 0x000FFFFFU, 0x00027000U),
|
||||
+ EMIT_MASKWRITE(0xF8006130, 0x000FFFFFU, 0x00027000U),
|
||||
+ EMIT_MASKWRITE(0xF8006134, 0x000FFFFFU, 0x00026C00U),
|
||||
+ EMIT_MASKWRITE(0xF8006138, 0x000FFFFFU, 0x00028800U),
|
||||
+ EMIT_MASKWRITE(0xF8006140, 0x000FFFFFU, 0x00000035U),
|
||||
+ EMIT_MASKWRITE(0xF8006144, 0x000FFFFFU, 0x00000035U),
|
||||
+ EMIT_MASKWRITE(0xF8006148, 0x000FFFFFU, 0x00000035U),
|
||||
+ EMIT_MASKWRITE(0xF800614C, 0x000FFFFFU, 0x00000035U),
|
||||
+ EMIT_MASKWRITE(0xF8006154, 0x000FFFFFU, 0x0000007AU),
|
||||
+ EMIT_MASKWRITE(0xF8006158, 0x000FFFFFU, 0x0000007AU),
|
||||
+ EMIT_MASKWRITE(0xF800615C, 0x000FFFFFU, 0x0000007CU),
|
||||
+ EMIT_MASKWRITE(0xF8006160, 0x000FFFFFU, 0x00000073U),
|
||||
+ EMIT_MASKWRITE(0xF8006168, 0x001FFFFFU, 0x000000F1U),
|
||||
+ EMIT_MASKWRITE(0xF800616C, 0x001FFFFFU, 0x000000F1U),
|
||||
+ EMIT_MASKWRITE(0xF8006170, 0x001FFFFFU, 0x000000F0U),
|
||||
+ EMIT_MASKWRITE(0xF8006174, 0x001FFFFFU, 0x000000F7U),
|
||||
+ EMIT_MASKWRITE(0xF800617C, 0x000FFFFFU, 0x000000BAU),
|
||||
+ EMIT_MASKWRITE(0xF8006180, 0x000FFFFFU, 0x000000BAU),
|
||||
+ EMIT_MASKWRITE(0xF8006184, 0x000FFFFFU, 0x000000BCU),
|
||||
+ EMIT_MASKWRITE(0xF8006188, 0x000FFFFFU, 0x000000B3U),
|
||||
+ EMIT_MASKWRITE(0xF8006190, 0x6FFFFEFEU, 0x00040080U),
|
||||
+ EMIT_MASKWRITE(0xF8006194, 0x000FFFFFU, 0x0001FC82U),
|
||||
+ EMIT_MASKWRITE(0xF8006204, 0xFFFFFFFFU, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF8006208, 0x000703FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF800620C, 0x000703FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF8006210, 0x000703FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF8006214, 0x000703FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF8006218, 0x000F03FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF800621C, 0x000F03FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF8006220, 0x000F03FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF8006224, 0x000F03FFU, 0x000003FFU),
|
||||
+ EMIT_MASKWRITE(0xF80062A8, 0x00000FF5U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80062AC, 0xFFFFFFFFU, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xF80062B0, 0x003FFFFFU, 0x00005125U),
|
||||
+ EMIT_MASKWRITE(0xF80062B4, 0x0003FFFFU, 0x000012A8U),
|
||||
+ EMIT_MASKPOLL(0xF8000B74, 0x00002000U),
|
||||
+ EMIT_MASKWRITE(0xF8006000, 0x0001FFFFU, 0x00000081U),
|
||||
+ EMIT_MASKPOLL(0xF8006054, 0x00000007U),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+static unsigned long ps7_mio_init_data_3_0[] = {
|
||||
+ EMIT_WRITE(0xF8000008, 0x0000DF0DU),
|
||||
+ EMIT_MASKWRITE(0xF8000B40, 0x00000FFFU, 0x00000600U),
|
||||
+ EMIT_MASKWRITE(0xF8000B44, 0x00000FFFU, 0x00000600U),
|
||||
+ EMIT_MASKWRITE(0xF8000B48, 0x00000FFFU, 0x00000672U),
|
||||
+ EMIT_MASKWRITE(0xF8000B4C, 0x00000FFFU, 0x00000672U),
|
||||
+ EMIT_MASKWRITE(0xF8000B50, 0x00000FFFU, 0x00000674U),
|
||||
+ EMIT_MASKWRITE(0xF8000B54, 0x00000FFFU, 0x00000674U),
|
||||
+ EMIT_MASKWRITE(0xF8000B58, 0x00000FFFU, 0x00000600U),
|
||||
+ EMIT_MASKWRITE(0xF8000B5C, 0xFFFFFFFFU, 0x0018C068U),
|
||||
+ EMIT_MASKWRITE(0xF8000B60, 0xFFFFFFFFU, 0x00F98068U),
|
||||
+ EMIT_MASKWRITE(0xF8000B64, 0xFFFFFFFFU, 0x00F98068U),
|
||||
+ EMIT_MASKWRITE(0xF8000B68, 0xFFFFFFFFU, 0x00F98068U),
|
||||
+ EMIT_MASKWRITE(0xF8000B6C, 0x00007FFFU, 0x00000260U),
|
||||
+ EMIT_MASKWRITE(0xF8000B70, 0x00000001U, 0x00000001U),
|
||||
+ EMIT_MASKWRITE(0xF8000B70, 0x00000021U, 0x00000020U),
|
||||
+ EMIT_MASKWRITE(0xF8000B70, 0x07FEFFFFU, 0x00000823U),
|
||||
+ EMIT_MASKWRITE(0xF8000700, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000704, 0x00003FFFU, 0x00001602U),
|
||||
+ EMIT_MASKWRITE(0xF8000708, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF800070C, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF8000710, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF8000714, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF8000718, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF800071C, 0x00003FFFU, 0x00000600U),
|
||||
+ EMIT_MASKWRITE(0xF8000720, 0x00003FFFU, 0x00000602U),
|
||||
+ EMIT_MASKWRITE(0xF8000724, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000728, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF800072C, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000730, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000734, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000738, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF800073C, 0x00003FFFU, 0x00001600U),
|
||||
+ EMIT_MASKWRITE(0xF8000740, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF8000744, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF8000748, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF800074C, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF8000750, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF8000754, 0x00003FFFU, 0x00001302U),
|
||||
+ EMIT_MASKWRITE(0xF8000758, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF800075C, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF8000760, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF8000764, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF8000768, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF800076C, 0x00003FFFU, 0x00001303U),
|
||||
+ EMIT_MASKWRITE(0xF8000770, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF8000774, 0x00003FFFU, 0x00001305U),
|
||||
+ EMIT_MASKWRITE(0xF8000778, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF800077C, 0x00003FFFU, 0x00001305U),
|
||||
+ EMIT_MASKWRITE(0xF8000780, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF8000784, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF8000788, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF800078C, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF8000790, 0x00003FFFU, 0x00001305U),
|
||||
+ EMIT_MASKWRITE(0xF8000794, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF8000798, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF800079C, 0x00003FFFU, 0x00001304U),
|
||||
+ EMIT_MASKWRITE(0xF80007A0, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007A4, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007A8, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007AC, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007B0, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007B4, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007B8, 0x00003FFFU, 0x00001200U),
|
||||
+ EMIT_MASKWRITE(0xF80007BC, 0x00003F01U, 0x00001201U),
|
||||
+ EMIT_MASKWRITE(0xF80007C0, 0x00003FFFU, 0x000012E0U),
|
||||
+ EMIT_MASKWRITE(0xF80007C4, 0x00003FFFU, 0x000012E1U),
|
||||
+ EMIT_MASKWRITE(0xF80007C8, 0x00003FFFU, 0x00001200U),
|
||||
+ EMIT_MASKWRITE(0xF80007CC, 0x00003FFFU, 0x00001200U),
|
||||
+ EMIT_MASKWRITE(0xF80007D0, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF80007D4, 0x00003FFFU, 0x00001280U),
|
||||
+ EMIT_MASKWRITE(0xF8000830, 0x003F003FU, 0x002F0037U),
|
||||
+ EMIT_WRITE(0xF8000004, 0x0000767BU),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+static unsigned long ps7_peripherals_init_data_3_0[] = {
|
||||
+ EMIT_WRITE(0xF8000008, 0x0000DF0DU),
|
||||
+ EMIT_MASKWRITE(0xF8000B48, 0x00000180U, 0x00000180U),
|
||||
+ EMIT_MASKWRITE(0xF8000B4C, 0x00000180U, 0x00000180U),
|
||||
+ EMIT_MASKWRITE(0xF8000B50, 0x00000180U, 0x00000180U),
|
||||
+ EMIT_MASKWRITE(0xF8000B54, 0x00000180U, 0x00000180U),
|
||||
+ EMIT_WRITE(0xF8000004, 0x0000767BU),
|
||||
+ EMIT_MASKWRITE(0xE0001034, 0x000000FFU, 0x00000006U),
|
||||
+ EMIT_MASKWRITE(0xE0001018, 0x0000FFFFU, 0x0000007CU),
|
||||
+ EMIT_MASKWRITE(0xE0001000, 0x000001FFU, 0x00000017U),
|
||||
+ EMIT_MASKWRITE(0xE0001004, 0x000003FFU, 0x00000020U),
|
||||
+ EMIT_MASKWRITE(0xE000D000, 0x00080000U, 0x00080000U),
|
||||
+ EMIT_MASKWRITE(0xF8007000, 0x20000000U, 0x00000000U),
|
||||
+ EMIT_MASKWRITE(0xE000A244, 0x003FFFFFU, 0x00004000U),
|
||||
+ EMIT_MASKWRITE(0xE000A008, 0xFFFFFFFFU, 0xBFFF4000U),
|
||||
+ EMIT_MASKWRITE(0xE000A248, 0x003FFFFFU, 0x00004000U),
|
||||
+ EMIT_MASKWRITE(0xE000A008, 0xFFFFFFFFU, 0xBFFF0000U),
|
||||
+ EMIT_MASKDELAY(0xF8F00200, 1),
|
||||
+ EMIT_MASKWRITE(0xE000A008, 0xFFFFFFFFU, 0xBFFF4000U),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+static unsigned long ps7_post_config_3_0[] = {
|
||||
+ EMIT_WRITE(0xF8000008, 0x0000DF0DU),
|
||||
+ EMIT_MASKWRITE(0xF8000900, 0x0000000FU, 0x0000000FU),
|
||||
+ EMIT_MASKWRITE(0xF8000240, 0xFFFFFFFFU, 0x00000000U),
|
||||
+ EMIT_WRITE(0xF8000004, 0x0000767BU),
|
||||
+ EMIT_EXIT(),
|
||||
+};
|
||||
+
|
||||
+int ps7_post_config(void)
|
||||
+{
|
||||
+ int ret = -1;
|
||||
+
|
||||
+ ret = ps7_config(ps7_post_config_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ return PS7_INIT_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+int ps7_init(void)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = ps7_config(ps7_mio_init_data_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = ps7_config(ps7_pll_init_data_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = ps7_config(ps7_clock_init_data_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = ps7_config(ps7_ddr_init_data_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = ps7_config(ps7_peripherals_init_data_3_0);
|
||||
+ if (ret != PS7_INIT_SUCCESS)
|
||||
+ return ret;
|
||||
+
|
||||
+ return PS7_INIT_SUCCESS;
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/configs/zynq_zybo_z7_defconfig
|
||||
@@ -0,0 +1,68 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_ZYNQ=y
|
||||
+CONFIG_SYS_TEXT_BASE=0x4000000
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_DEBUG_UART_BASE=0xe0001000
|
||||
+CONFIG_DEBUG_UART_CLOCK=50000000
|
||||
+CONFIG_SPL_STACK_R_ADDR=0x200000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="zynq-zybo-z7"
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_DISTRO_DEFAULTS=y
|
||||
+CONFIG_FIT=y
|
||||
+CONFIG_FIT_SIGNATURE=y
|
||||
+CONFIG_FIT_VERBOSE=y
|
||||
+CONFIG_IMAGE_FORMAT_LEGACY=y
|
||||
+CONFIG_BOOTCOMMAND="run $modeboot || run distro_bootcmd"
|
||||
+CONFIG_SPL_STACK_R=y
|
||||
+CONFIG_SPL_OS_BOOT=y
|
||||
+CONFIG_SPL_SPI_LOAD=y
|
||||
+CONFIG_SYS_PROMPT="Zynq> "
|
||||
+CONFIG_CMD_THOR_DOWNLOAD=y
|
||||
+CONFIG_CMD_DFU=y
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+CONFIG_CMD_FPGA_LOADBP=y
|
||||
+CONFIG_CMD_FPGA_LOADFS=y
|
||||
+CONFIG_CMD_FPGA_LOADMK=y
|
||||
+CONFIG_CMD_FPGA_LOADP=y
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+CONFIG_CMD_I2C=y
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_SF=y
|
||||
+CONFIG_CMD_USB=y
|
||||
+# CONFIG_CMD_SETEXPR is not set
|
||||
+CONFIG_CMD_TFTPPUT=y
|
||||
+CONFIG_CMD_CACHE=y
|
||||
+CONFIG_CMD_EXT4_WRITE=y
|
||||
+CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+CONFIG_SPL_DM_SEQ_ALIAS=y
|
||||
+CONFIG_DFU_MMC=y
|
||||
+CONFIG_DFU_RAM=y
|
||||
+CONFIG_FPGA_XILINX=y
|
||||
+CONFIG_FPGA_ZYNQPL=y
|
||||
+CONFIG_DM_GPIO=y
|
||||
+CONFIG_SYS_I2C_ZYNQ=y
|
||||
+CONFIG_ZYNQ_I2C0=y
|
||||
+CONFIG_ZYNQ_I2C1=y
|
||||
+CONFIG_MMC_SDHCI=y
|
||||
+CONFIG_MMC_SDHCI_ZYNQ=y
|
||||
+CONFIG_SPI_FLASH=y
|
||||
+CONFIG_SPI_FLASH_BAR=y
|
||||
+CONFIG_SPI_FLASH_SPANSION=y
|
||||
+CONFIG_PHY_REALTEK=y
|
||||
+CONFIG_ZYNQ_GEM=y
|
||||
+CONFIG_DEBUG_UART_ZYNQ=y
|
||||
+CONFIG_ZYNQ_SERIAL=y
|
||||
+CONFIG_ZYNQ_QSPI=y
|
||||
+CONFIG_USB=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB_ULPI_VIEWPORT=y
|
||||
+CONFIG_USB_ULPI=y
|
||||
+CONFIG_USB_STORAGE=y
|
||||
+CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_GADGET_MANUFACTURER="Xilinx"
|
||||
+CONFIG_USB_GADGET_VENDOR_NUM=0x03fd
|
||||
+CONFIG_USB_GADGET_PRODUCT_NUM=0x0300
|
||||
+CONFIG_CI_UDC=y
|
||||
+CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
+CONFIG_USB_FUNCTION_THOR=y
|
@ -0,0 +1,107 @@
|
||||
From ac8fcc92d87436715ce85f39a4fe4f07c3bfa15e Mon Sep 17 00:00:00 2001
|
||||
From: Luis Araneda <luaraneda@gmail.com>
|
||||
Date: Sun, 22 Jul 2018 02:52:41 -0400
|
||||
Subject: [U-Boot] [RFC PATCH] arm: zynq: read mac address from SPI flash memory
|
||||
|
||||
Implement a method for reading the MAC address from an
|
||||
SPI flash memory.
|
||||
In particular, this method is used by the Zybo Z7 board
|
||||
to read the MAC address from the OTP region in the SPI NOR
|
||||
memory
|
||||
|
||||
Signed-off-by: Luis Araneda <luaraneda@gmail.com>
|
||||
---
|
||||
As of 2018-08-23, this patch has been sent to U-Boot's mailing list
|
||||
and is being reviewed. Some changes on the implementation are expected,
|
||||
but the functionality should not change
|
||||
---
|
||||
board/xilinx/zynq/board.c | 28 ++++++++++++++++++++++++++++
|
||||
configs/zynq_zybo_z7_defconfig | 3 +++
|
||||
drivers/misc/Kconfig | 17 +++++++++++++++++
|
||||
3 files changed, 48 insertions(+)
|
||||
|
||||
--- a/board/xilinx/zynq/board.c
|
||||
+++ b/board/xilinx/zynq/board.c
|
||||
@@ -6,9 +6,12 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <dm/uclass.h>
|
||||
+#include <dm/device.h>
|
||||
+#include <dm/device-internal.h>
|
||||
#include <fdtdec.h>
|
||||
#include <fpga.h>
|
||||
#include <mmc.h>
|
||||
+#include <spi_flash.h>
|
||||
#include <watchdog.h>
|
||||
#include <wdt.h>
|
||||
#include <zynqpl.h>
|
||||
@@ -83,6 +86,31 @@ int zynq_board_read_rom_ethaddr(unsigned
|
||||
printf("I2C EEPROM MAC address read failed\n");
|
||||
#endif
|
||||
|
||||
+#if defined(CONFIG_MAC_ADDR_IN_SPI_FLASH)
|
||||
+ struct spi_flash *flash;
|
||||
+ struct udevice *dev;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS,
|
||||
+ CONFIG_SF_DEFAULT_CS,
|
||||
+ 0, 0, &dev);
|
||||
+ if (ret) {
|
||||
+ printf("SPI(bus:%u cs:%u) probe failed\n",
|
||||
+ CONFIG_SF_DEFAULT_BUS,
|
||||
+ CONFIG_SF_DEFAULT_CS);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ flash = dev_get_uclass_priv(dev);
|
||||
+ flash->read_cmd = CONFIG_MAC_ADDR_SPI_FLASH_READ_CMD;
|
||||
+
|
||||
+ if (spi_flash_read_dm(dev,
|
||||
+ CONFIG_MAC_ADDR_SPI_FLASH_DATA_OFFSET,
|
||||
+ 6, ethaddr))
|
||||
+ printf("SPI MAC address read failed\n");
|
||||
+
|
||||
+ device_remove(dev, DM_REMOVE_NORMAL);
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/configs/zynq_zybo_z7_defconfig
|
||||
+++ b/configs/zynq_zybo_z7_defconfig
|
||||
@@ -44,6 +44,9 @@ CONFIG_DM_GPIO=y
|
||||
CONFIG_SYS_I2C_ZYNQ=y
|
||||
CONFIG_ZYNQ_I2C0=y
|
||||
CONFIG_ZYNQ_I2C1=y
|
||||
+CONFIG_MAC_ADDR_IN_SPI_FLASH=y
|
||||
+CONFIG_MAC_ADDR_SPI_FLASH_READ_CMD=0x4b
|
||||
+CONFIG_MAC_ADDR_SPI_FLASH_DATA_OFFSET=0x20
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_ZYNQ=y
|
||||
CONFIG_SPI_FLASH=y
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -272,6 +272,23 @@ config SYS_I2C_EEPROM_ADDR_OVERFLOW
|
||||
|
||||
endif
|
||||
|
||||
+config MAC_ADDR_IN_SPI_FLASH
|
||||
+ bool "MAC address in SPI flash"
|
||||
+ help
|
||||
+ Read MAC address from an SPI flash memory
|
||||
+
|
||||
+if MAC_ADDR_IN_SPI_FLASH
|
||||
+
|
||||
+config MAC_ADDR_SPI_FLASH_READ_CMD
|
||||
+ hex "Read command for the SPI flash memory"
|
||||
+ default 0
|
||||
+
|
||||
+config MAC_ADDR_SPI_FLASH_DATA_OFFSET
|
||||
+ hex "Offset of MAC data in SPI flash memory"
|
||||
+ default 0
|
||||
+
|
||||
+endif
|
||||
+
|
||||
config GDSYS_RXAUI_CTRL
|
||||
bool "Enable gdsys RXAUI control driver"
|
||||
depends on MISC
|
@ -3,9 +3,9 @@ needed dependencies are added too.
|
||||
|
||||
--- a/tools/Makefile
|
||||
+++ b/tools/Makefile
|
||||
@@ -128,7 +128,7 @@ endif
|
||||
@@ -146,7 +146,7 @@ endif
|
||||
# MXSImage needs LibSSL
|
||||
ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),)
|
||||
ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
|
||||
HOSTLOADLIBES_mkimage += \
|
||||
- $(shell pkg-config --libs libssl libcrypto 2> /dev/null || echo "-lssl -lcrypto")
|
||||
+ $(shell pkg-config --libs --static libssl libcrypto 2> /dev/null || echo "-lssl -lpthread -lcrypto")
|
||||
|
@ -12,7 +12,7 @@ PKG_VERSION:=20051022
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)_gruen.4g__$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
|
||||
PKG_SOURCE_URL:=https://downloads.openwrt.org/sources
|
||||
PKG_HASH:=466eca9cdad2c15e957fb9ce7d0b6927ecd17d85c4cc2dff37e97a3e6b209c67
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
@ -27,7 +27,6 @@ define Package/yamonenv
|
||||
SUBMENU:=Boot Loaders
|
||||
DEPENDS:=@TARGET_au1000
|
||||
TITLE:=YAMON configuration utility
|
||||
URL:=http://meshcube.org/nylon/stable/sources/
|
||||
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
|
||||
endef
|
||||
|
||||
|
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gdb
|
||||
PKG_VERSION:=8.0.1
|
||||
PKG_VERSION:=8.1.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/gdb
|
||||
PKG_HASH:=3dbd5f93e36ba2815ad0efab030dcd0c7b211d7b353a40a53f4c02d7d56295e3
|
||||
PKG_HASH:=97dcc3169bd430270fc29adb65145846a58c1b55cdbb73382a4a89307bdad03c
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1300,13 +1300,13 @@ if test -z "$LD"; then
|
||||
@@ -1293,13 +1293,13 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_LINK_IFELSE([
|
||||
#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
|
||||
@@ -1632,7 +1632,7 @@ AC_ARG_WITH(stage1-ldflags,
|
||||
@@ -1625,7 +1625,7 @@ AC_ARG_WITH(stage1-ldflags,
|
||||
# if supported. But if the user explicitly specified the libraries to use,
|
||||
# trust that they are doing what they want.
|
||||
if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then
|
||||
@ -26,7 +26,7 @@
|
||||
fi])
|
||||
AC_SUBST(stage1_ldflags)
|
||||
|
||||
@@ -1661,7 +1661,7 @@ AC_ARG_WITH(boot-ldflags,
|
||||
@@ -1654,7 +1654,7 @@ AC_ARG_WITH(boot-ldflags,
|
||||
# statically. But if the user explicitly specified the libraries to
|
||||
# use, trust that they are doing what they want.
|
||||
if test "$poststage1_libs" = ""; then
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -5005,14 +5005,14 @@ if test -z "$LD"; then
|
||||
@@ -4998,14 +4998,14 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
ac_ext=cpp
|
||||
ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
@@ -5795,7 +5795,7 @@ else
|
||||
@@ -5788,7 +5788,7 @@ else
|
||||
# if supported. But if the user explicitly specified the libraries to use,
|
||||
# trust that they are doing what they want.
|
||||
if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then
|
||||
@ -65,7 +65,7 @@
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -5831,7 +5831,7 @@ else
|
||||
@@ -5824,7 +5824,7 @@ else
|
||||
# statically. But if the user explicitly specified the libraries to
|
||||
# use, trust that they are doing what they want.
|
||||
if test "$poststage1_libs" = ""; then
|
||||
|
@ -27,7 +27,7 @@ gdb/ChangeLog:
|
||||
|
||||
--- a/gdb/common/signals-state-save-restore.c
|
||||
+++ b/gdb/common/signals-state-save-restore.c
|
||||
@@ -41,7 +41,7 @@ save_original_signals_state (void)
|
||||
@@ -41,7 +41,7 @@ save_original_signals_state (bool quiet)
|
||||
int i;
|
||||
int res;
|
||||
|
||||
|
@ -61,12 +61,6 @@ MAKE_FLAGS = \
|
||||
WERROR=0 \
|
||||
prefix=/usr
|
||||
|
||||
ifdef CONFIG_LINUX_4_4
|
||||
ifdef CONFIG_USE_MUSL
|
||||
MAKE_FLAGS += EXTRA_CFLAGS="-I$(CURDIR)/musl-include -include $(CURDIR)/musl-compat.h -D__UCLIBC__"
|
||||
endif
|
||||
endif
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE_FLAGS) $(MAKE) $(PKG_JOBS) \
|
||||
-C $(PKG_BUILD_DIR) \
|
||||
|
@ -1,43 +0,0 @@
|
||||
#ifndef __PERF_MUSL_COMPAT_H
|
||||
#define __PERF_MUSL_COMPAT_H
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#undef _IOWR
|
||||
#undef _IOR
|
||||
#undef _IOW
|
||||
#undef _IOC
|
||||
#undef _IO
|
||||
|
||||
#define _SC_LEVEL1_DCACHE_LINESIZE -1
|
||||
|
||||
static inline long sysconf_wrap(int name)
|
||||
{
|
||||
FILE *f;
|
||||
int val;
|
||||
|
||||
switch (name) {
|
||||
case _SC_LEVEL1_DCACHE_LINESIZE:
|
||||
f = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r");
|
||||
if (!f)
|
||||
return 0;
|
||||
|
||||
if (fscanf(f, "%d", &val) != 1)
|
||||
return 0;
|
||||
|
||||
fclose(f);
|
||||
return val;
|
||||
default:
|
||||
return sysconf(name);
|
||||
}
|
||||
}
|
||||
|
||||
#define sysconf(_n) sysconf_wrap(_n)
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,8 +0,0 @@
|
||||
#ifndef __MUSL_COMPAT_ASM_ERRNO_H
|
||||
#define __MUSL_COMPAT_ASM_ERRNO_H
|
||||
|
||||
/* Avoid including different versions of errno.h, the defines (incorrectly)
|
||||
* cause a redefinition error on PowerPC */
|
||||
#include <errno.h>
|
||||
|
||||
#endif
|
@ -1,18 +0,0 @@
|
||||
#ifndef __MUSL_COMPAT_STRING_H
|
||||
#define __MUSL_COMPAT_STRING_H
|
||||
|
||||
#include_next <string.h>
|
||||
|
||||
/* Change XSI compliant version into GNU extension hackery */
|
||||
static inline char *
|
||||
gnu_strerror_r(int err, char *buf, size_t buflen)
|
||||
{
|
||||
if (strerror_r(err, buf, buflen))
|
||||
return NULL;
|
||||
return buf;
|
||||
}
|
||||
#ifdef _GNU_SOURCE
|
||||
#define strerror_r gnu_strerror_r
|
||||
#endif
|
||||
|
||||
#endif
|
@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=strace
|
||||
PKG_VERSION:=4.20
|
||||
PKG_VERSION:=4.24
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
|
||||
PKG_HASH:=5bf3148dd17306a42566f7da17368fdd781afa147db05ea63a4ca2b50f58c523
|
||||
PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION)
|
||||
PKG_HASH:=1f4e59fc1edfa2bfb4adf2a748623dc25b105ec79713dd84404199f91b0b0634
|
||||
|
||||
PKG_LICENSE:=BSD-3c
|
||||
PKG_LICENSE_FILES:=COPYRIGHT
|
||||
@ -30,6 +30,10 @@ include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
HOST_CFLAGS += -I$(LINUX_DIR)/user_headers/include
|
||||
|
||||
ifeq ($(ARCH),aarch64)
|
||||
CONFIGURE_ARGS += --enable-mpers=check
|
||||
endif
|
||||
|
||||
CONFIGURE_VARS+= \
|
||||
LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
|
||||
CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/ptrace.h
|
||||
+++ b/ptrace.h
|
||||
@@ -48,7 +48,14 @@
|
||||
@@ -49,7 +49,14 @@
|
||||
# define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
|
||||
#endif
|
||||
|
||||
|
@ -8,9 +8,9 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ath10k-firmware
|
||||
PKG_SOURCE_DATE:=2018-04-19
|
||||
PKG_SOURCE_VERSION:=71e50312b54cc972657a7b08c470088447cb9676
|
||||
PKG_MIRROR_HASH:=726e7bce9917532e3b39ced6a17ca2d4c39fdf4c9bec4a3f8f2ea3e5defa6a54
|
||||
PKG_SOURCE_DATE:=2018-05-12
|
||||
PKG_SOURCE_VERSION:=952afa4949cb34193040cd4e7441e1aee50ac731
|
||||
PKG_MIRROR_HASH:=dd300f3f28b8f8c07c93065fd9dc1c9785ebda8f15398b4d2d33f9418adcaf46
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
@ -64,17 +64,17 @@ define Download/ct-firmware-htt
|
||||
URL_FILE:=$($(1)_FIRMWARE_FILE_CT_HTT)
|
||||
endef
|
||||
|
||||
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-21.bin.lede.001
|
||||
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-21.bin.lede.002
|
||||
define Download/ath10k-firmware-qca988x-ct
|
||||
$(call Download/ct-firmware,QCA988X,)
|
||||
HASH:=a3d029c46a77be265e33bb57f827a59f01969f157825d66ecf42a9d327127578
|
||||
HASH:=354b8a116a406ba6521a8bf6165ea2dce76996ab36e7905cd71e772ea240017d
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca988x-ct))
|
||||
|
||||
QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-21.bin.lede.001
|
||||
QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-21.bin.lede.002
|
||||
define Download/ath10k-firmware-qca988x-ct-htt
|
||||
$(call Download/ct-firmware-htt,QCA988X,)
|
||||
HASH:=8666523a6271c4aa6409880d2efd52643258c21464d6bf5948507bcb72d3e350
|
||||
HASH:=7a8369b33f07200bf0bbf8c88617c25c7f3435a51f8ca0e330d220586338f991
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca988x-ct-htt))
|
||||
|
||||
@ -403,7 +403,7 @@ define Package/ath10k-firmware-qca4019/install
|
||||
$(PKG_BUILD_DIR)/QCA4019/hw1.0/board-2.bin \
|
||||
$(1)/lib/firmware/ath10k/QCA4019/hw1.0/
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA4019/hw1.0/3.4/firmware-5.bin_10.4-3.4-00104 \
|
||||
$(PKG_BUILD_DIR)/QCA4019/hw1.0/3.5.3/firmware-5.bin_10.4-3.5.3-00057 \
|
||||
$(1)/lib/firmware/ath10k/QCA4019/hw1.0/firmware-5.bin
|
||||
endef
|
||||
|
||||
@ -433,13 +433,25 @@ define Package/ath10k-firmware-qca988x/install
|
||||
$(PKG_BUILD_DIR)/QCA988X/hw2.0/board.bin \
|
||||
$(1)/lib/firmware/ath10k/QCA988X/hw2.0/
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00033 \
|
||||
$(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00037 \
|
||||
$(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin
|
||||
endef
|
||||
|
||||
define Package/ath10k-firmware-qca6174/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k
|
||||
$(CP) $(PKG_BUILD_DIR)/QCA6174 $(1)/lib/firmware/ath10k/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw2.1
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA6174/hw2.1/board-2.bin \
|
||||
$(1)/lib/firmware/ath10k/QCA6174/hw2.1/
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA6174/hw2.1/firmware-5.bin_SW_RM.1.1.1-00157-QCARMSWPZ-1 \
|
||||
$(1)/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw3.0
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA6174/hw3.0/board-2.bin \
|
||||
$(1)/lib/firmware/ath10k/QCA6174/hw3.0/
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/QCA6174/hw3.0/4.4.1.c1/firmware-6.bin_RM.4.4.1.c1-00042-QCARMSWP-1 \
|
||||
$(1)/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin
|
||||
endef
|
||||
|
||||
define Package/ath10k-firmware-qca99x0/install
|
||||
|
88
package/firmware/brcmfmac-board-rpi/Makefile
Normal file
88
package/firmware/brcmfmac-board-rpi/Makefile
Normal file
@ -0,0 +1,88 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=brcmfmac-board-rpi
|
||||
PKG_VERSION:=2018-03-12
|
||||
PKG_RELEASE:=86e88fbf0345da49555d0ec34c80b4fbae7d0cd3
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
BRCMFMAC434XX_SDIO_URL:=@GITHUB/RPi-Distro/firmware-nonfree/$(PKG_RELEASE)/brcm/
|
||||
BRCMFMAC43430_SDIO_FILE:=brcmfmac43430-sdio-$(PKG_RELEASE)
|
||||
BRCMFMAC43455_SDIO_FILE:=brcmfmac43455-sdio-$(PKG_RELEASE)
|
||||
|
||||
define Download/brcmfmac43430_sdio_txt
|
||||
FILE:=$(BRCMFMAC43430_SDIO_FILE).txt
|
||||
URL:=$(BRCMFMAC434XX_SDIO_URL)
|
||||
URL_FILE:=brcmfmac43430-sdio.txt
|
||||
HASH:=e4ce7ad5ce72406f958ed758539b65d958d1c0eb3e46e3f8e9f02b510d88e0b0
|
||||
endef
|
||||
$(eval $(call Download,brcmfmac43430_sdio_txt))
|
||||
|
||||
define Download/brcmfmac43455_sdio_txt
|
||||
FILE:=$(BRCMFMAC43455_SDIO_FILE).txt
|
||||
URL:=$(BRCMFMAC434XX_SDIO_URL)
|
||||
URL_FILE:=brcmfmac43455-sdio.txt
|
||||
HASH:=15698c62457bcf25e60d063e6c666d6e1b7dacdf2b03e6d14ebbc619de6da6b7
|
||||
endef
|
||||
$(eval $(call Download,brcmfmac43455_sdio_txt))
|
||||
|
||||
define Download/brcmfmac43455_sdio_clm_blob
|
||||
FILE:=$(BRCMFMAC43455_SDIO_FILE).clm_blob
|
||||
URL:=$(BRCMFMAC434XX_SDIO_URL)
|
||||
URL_FILE:=brcmfmac43455-sdio.clm_blob
|
||||
HASH:=8e2250518bc789e53109728c3c0a6124bc3801a75a1cb4966125753cf1f0252e
|
||||
endef
|
||||
$(eval $(call Download,brcmfmac43455_sdio_clm_blob))
|
||||
|
||||
define Package/brcmfmac-board-rpi/Default
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
URL:=https://github.com/RPi-Distro/firmware-nonfree/
|
||||
DEPENDS:=@TARGET_brcm2708
|
||||
PKGARCH:=all
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi2
|
||||
$(call Package/brcmfmac-board-rpi/Default)
|
||||
TITLE:=BCM43430 RPi SDIO NVRAM
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi2/description
|
||||
NVRAM for the Broadcom BCM43430 on RPi boards.
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi3
|
||||
$(call Package/brcmfmac-board-rpi/Default)
|
||||
TITLE:=BCM43455 RPi SDIO NVRAM
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi3/description
|
||||
NVRAM and localisations blob for the Broadcom BCM43455 on RPi boards.
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
rm -rf $(PKG_BUILD_DIR)
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
cp $(DL_DIR)/$(BRCMFMAC43430_SDIO_FILE).txt $(PKG_BUILD_DIR)/brcmfmac43430-sdio.txt
|
||||
cp $(DL_DIR)/$(BRCMFMAC43455_SDIO_FILE).txt $(PKG_BUILD_DIR)/brcmfmac43455-sdio.txt
|
||||
cp $(DL_DIR)/$(BRCMFMAC43455_SDIO_FILE).clm_blob $(PKG_BUILD_DIR)/brcmfmac43455-sdio.clm_blob
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
true
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi2/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/brcmfmac43430-sdio.txt $(1)/lib/firmware/brcm/
|
||||
endef
|
||||
|
||||
define Package/brcmfmac-board-rpi3/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/brcmfmac43455-sdio.txt $(1)/lib/firmware/brcm/
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/brcmfmac43455-sdio.clm_blob $(1)/lib/firmware/brcm/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,brcmfmac-board-rpi2))
|
||||
$(eval $(call BuildPackage,brcmfmac-board-rpi3))
|
@ -43,6 +43,15 @@ define Package/brcmfmac-firmware-43430-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43430-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 FullMac SDIO firmware)
|
||||
define Package/brcmfmac-firmware-43455-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
$(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.bin \
|
||||
$(1)/lib/firmware/brcm/brcmfmac43455-sdio.bin
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43455-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-usb = $(call Package/firmware-default,Broadcom BCM43xx fullmac USB firmware)
|
||||
define Package/brcmfmac-firmware-usb/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
|
@ -4,6 +4,10 @@ define Package/ar3k-firmware/install
|
||||
$(CP) \
|
||||
$(PKG_BUILD_DIR)/ar3k/*.dfu \
|
||||
$(1)/lib/firmware/ar3k
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/qca
|
||||
$(CP) \
|
||||
$(PKG_BUILD_DIR)/qca/*.bin \
|
||||
$(1)/lib/firmware/qca
|
||||
endef
|
||||
$(eval $(call BuildPackage,ar3k-firmware))
|
||||
|
||||
|
@ -42,6 +42,13 @@ define Package/rtl8192de-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192de-firmware))
|
||||
|
||||
Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware)
|
||||
define Package/rtl8192eu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192eu_nic.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192eu-firmware))
|
||||
|
||||
Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware)
|
||||
define Package/rtl8192se-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
@ -56,6 +63,22 @@ define Package/rtl8192su-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192su-firmware))
|
||||
|
||||
Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware)
|
||||
define Package/rtl8723au-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_A.bin $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_B.bin $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_B_NoBT.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8723au-firmware))
|
||||
|
||||
Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware)
|
||||
define Package/rtl8723bu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8723bu-firmware))
|
||||
|
||||
Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware)
|
||||
define Package/rtl8821ae-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
|
@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2018-03-16
|
||||
PKG_SOURCE_VERSION:=30827f7d5b9841905c4efe918da2d95fc518c921
|
||||
PKG_MIRROR_HASH:=aac023d7f9b09becf27058b1d09ae6d068b14bb6f10c5b5a248c7ee5ecff04dc
|
||||
PKG_SOURCE_DATE:=2018-08-22
|
||||
PKG_SOURCE_VERSION:=34954f0f333fa43827b2af67313db2b1e830bb48
|
||||
PKG_MIRROR_HASH:=aa77f388727ff2201de615c3211ab5c0b2dc5e3c041bd1cde4d6eebde0ca437a
|
||||
|
||||
# Build the 4.13 ath10k-ct driver version. Other options are "-4.9", or
|
||||
# leave un-defined for 4.7 kernel. Probably this should match as closely as
|
||||
|
@ -46,7 +46,7 @@
|
||||
ath10k_dbg(ar, ATH10K_DBG_REGULATORY, "reg-notifier: dfs region 0x%x\n",
|
||||
request->dfs_region);
|
||||
result = ar->dfs_detector->set_dfs_domain(ar->dfs_detector,
|
||||
@@ -8938,7 +8938,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -8939,7 +8939,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
|
||||
ar->hw->netdev_features = NETIF_F_HW_CSUM;
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
/* Init ath dfs pattern detector */
|
||||
ar->ath_common.debug_mask = ATH_DBG_DFS;
|
||||
ar->dfs_detector = dfs_pattern_detector_init(&ar->ath_common,
|
||||
@@ -8983,7 +8983,7 @@ err_unregister:
|
||||
@@ -8984,7 +8984,7 @@ err_unregister:
|
||||
ieee80211_unregister_hw(ar->hw);
|
||||
|
||||
err_dfs_detector_exit:
|
||||
@ -64,7 +64,7 @@
|
||||
ar->dfs_detector->exit(ar->dfs_detector);
|
||||
|
||||
err_free:
|
||||
@@ -8998,7 +8998,7 @@ void ath10k_mac_unregister(struct ath10k
|
||||
@@ -8999,7 +8999,7 @@ void ath10k_mac_unregister(struct ath10k
|
||||
{
|
||||
ieee80211_unregister_hw(ar->hw);
|
||||
|
||||
@ -86,7 +86,7 @@
|
||||
hwmon_dev = devm_hwmon_device_register_with_groups(ar->dev,
|
||||
--- a/ath10k/wmi.c
|
||||
+++ b/ath10k/wmi.c
|
||||
@@ -3883,7 +3883,7 @@ void ath10k_wmi_event_dfs(struct ath10k
|
||||
@@ -3903,7 +3903,7 @@ void ath10k_wmi_event_dfs(struct ath10k
|
||||
phyerr->tsf_timestamp, tsf, buf_len);
|
||||
|
||||
/* Skip event if DFS disabled */
|
||||
@ -95,3 +95,14 @@
|
||||
return;
|
||||
|
||||
ATH10K_DFS_STAT_INC(ar, pulses_total);
|
||||
--- a/ath10k-4.13/wmi.c
|
||||
+++ b/ath10k-4.13/wmi.c
|
||||
@@ -3990,7 +3990,7 @@ static void ath10k_dfs_radar_report(stru
|
||||
|
||||
ATH10K_DFS_STAT_INC(ar, pulses_detected);
|
||||
|
||||
- if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe)) {
|
||||
+ if (!ar->dfs_detector->add_pulse(ar->dfs_detector, &pe, NULL)) {
|
||||
ath10k_dbg(ar, ATH10K_DBG_REGULATORY,
|
||||
"dfs no pulse pattern detected, yet\n");
|
||||
return;
|
||||
|
@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=brcm2708-gpu-fw
|
||||
PKG_VERSION:=2017-08-08
|
||||
PKG_RELEASE:=e7ba7ab135f5a68b2c00a919ea9ac8d5528a5d5b
|
||||
PKG_VERSION:=2018-05-16
|
||||
PKG_RELEASE:=0f5f899ccec1c2ef8bba02aa49700b4ec19b4199
|
||||
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE)
|
||||
|
||||
@ -33,7 +33,7 @@ define Download/bootcode_bin
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-bootcode.bin
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=bootcode.bin
|
||||
HASH:=b5928ef5253774362014f9e7de856397a932514fe1bc5d7f7817a73c0e10e863
|
||||
HASH:=c9eb5258766fabf7127e790b257f106e2717f0ccaaed37544b970b0d113956fc
|
||||
endef
|
||||
$(eval $(call Download,bootcode_bin))
|
||||
|
||||
@ -41,7 +41,7 @@ define Download/fixup_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup.dat
|
||||
HASH:=d95fcac57de7ab71e863a115fd60444f6099cb2ea100f4a68b2c606f79e775ed
|
||||
HASH:=8a6311e73d0f349be9b8424db0644fd8f48aaf721f3f2f487488c83d7316cbdf
|
||||
endef
|
||||
$(eval $(call Download,fixup_dat))
|
||||
|
||||
@ -49,7 +49,7 @@ define Download/fixup_cd_dat
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-fixup_cd.dat
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=fixup_cd.dat
|
||||
HASH:=28f3ec8388df4e0c47489f8370a29ca81dbc536fe7db9978342865b5d093ec36
|
||||
HASH:=973b008aae9711d57ddce4f058354fe5a0b4725dd825673f784a2e2754da1f28
|
||||
endef
|
||||
$(eval $(call Download,fixup_cd_dat))
|
||||
|
||||
@ -57,7 +57,7 @@ define Download/start_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start.elf
|
||||
HASH:=8712fb4e241a22f7a33de0f1d420e0fdfff237952aa685c907b91e59c8d487fa
|
||||
HASH:=8e77c4cce7e44ced609e5046dd55f19cb7656a8ce4694e733b7eb6ecab915fe1
|
||||
endef
|
||||
$(eval $(call Download,start_elf))
|
||||
|
||||
@ -65,7 +65,7 @@ define Download/start_cd_elf
|
||||
FILE:=$(RPI_FIRMWARE_FILE)-start_cd.elf
|
||||
URL:=$(RPI_FIRMWARE_URL)
|
||||
URL_FILE:=start_cd.elf
|
||||
HASH:=c600ab34bea389da10aac541bf2f9c62e5f774093b7e1f2f72c4637f9cf3a83c
|
||||
HASH:=25223b479b7aca1d74c6f7a1829aba69fd14906ca5b25ae12571fe71ea2c5a4a
|
||||
endef
|
||||
$(eval $(call Download,start_cd_elf))
|
||||
|
||||
|
@ -13,9 +13,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git
|
||||
PKG_SOURCE_DATE:=2018-07-16
|
||||
PKG_SOURCE_VERSION:=f39ab9a402ad51d7c17d4cde18ca15b2b7022030
|
||||
PKG_MIRROR_HASH:=fc22fc6eb7a24f4595c2777f33758ebcf9a2a404c16d00aa37ae389cd7f9c78f
|
||||
PKG_SOURCE_DATE:=2018-08-25
|
||||
PKG_SOURCE_VERSION:=42175bfc76c5e7fbca5b50fd4c5cca7801f123f2
|
||||
PKG_MIRROR_HASH:=9b3748ee97e774f8ae63e808dd85de04d28b9b9a0abb0367d4e372129e5d8096
|
||||
PKG_MAINTAINER:=Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
@ -187,7 +187,6 @@ static inline void u64_add_u32(ppe_u64_t, unsigned int, ppe_u64_t *);
|
||||
*/
|
||||
static inline struct sk_buff* alloc_skb_rx(void);
|
||||
static inline struct sk_buff* alloc_skb_tx(unsigned int);
|
||||
struct sk_buff* atm_alloc_tx(struct atm_vcc *, unsigned int);
|
||||
static inline void atm_free_tx_skb_vcc(struct sk_buff *, struct atm_vcc *);
|
||||
static inline struct sk_buff *get_skb_rx_pointer(unsigned int);
|
||||
static inline int get_tx_desc(unsigned int);
|
||||
@ -261,8 +260,6 @@ EXPORT_SYMBOL(ifx_mei_atm_showtime_exit);
|
||||
|
||||
#endif
|
||||
|
||||
static struct sk_buff* (*ifx_atm_alloc_tx)(struct atm_vcc *, unsigned int) = NULL;
|
||||
|
||||
static struct atm_priv_data g_atm_priv_data;
|
||||
|
||||
static struct atmdev_ops g_ifx_atm_ops = {
|
||||
@ -430,8 +427,6 @@ static int ppe_open(struct atm_vcc *vcc)
|
||||
|
||||
/* enable irq */
|
||||
if ( f_enable_irq ) {
|
||||
ifx_atm_alloc_tx = atm_alloc_tx;
|
||||
|
||||
*MBOX_IGU1_ISRC = (1 << RX_DMA_CH_AAL) | (1 << RX_DMA_CH_OAM);
|
||||
*MBOX_IGU1_IER = (1 << RX_DMA_CH_AAL) | (1 << RX_DMA_CH_OAM);
|
||||
|
||||
@ -480,10 +475,8 @@ static void ppe_close(struct atm_vcc *vcc)
|
||||
clear_bit(conn, &g_atm_priv_data.conn_table);
|
||||
|
||||
/* disable irq */
|
||||
if ( g_atm_priv_data.conn_table == 0 ) {
|
||||
if ( g_atm_priv_data.conn_table == 0 )
|
||||
disable_irq(PPE_MAILBOX_IGU1_INT);
|
||||
ifx_atm_alloc_tx = NULL;
|
||||
}
|
||||
|
||||
/* release bandwidth */
|
||||
switch ( vcc->qos.txtp.traffic_class )
|
||||
@ -785,42 +778,6 @@ static inline struct sk_buff* alloc_skb_tx(unsigned int size)
|
||||
return skb;
|
||||
}
|
||||
|
||||
struct sk_buff* atm_alloc_tx(struct atm_vcc *vcc, unsigned int size)
|
||||
{
|
||||
int conn;
|
||||
struct sk_buff *skb;
|
||||
|
||||
/* oversize packet */
|
||||
if ( size > aal5s_max_packet_size ) {
|
||||
pr_err("atm_alloc_tx: oversize packet\n");
|
||||
return NULL;
|
||||
}
|
||||
/* send buffer overflow */
|
||||
if ( sk_wmem_alloc_get(sk_atm(vcc)) && !atm_may_send(vcc, size) ) {
|
||||
pr_err("atm_alloc_tx: send buffer overflow\n");
|
||||
return NULL;
|
||||
}
|
||||
conn = find_vcc(vcc);
|
||||
if ( conn < 0 ) {
|
||||
pr_err("atm_alloc_tx: unknown VCC\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
skb = dev_alloc_skb(size);
|
||||
if ( skb == NULL ) {
|
||||
pr_err("atm_alloc_tx: sk buffer is used up\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
|
||||
refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
#else
|
||||
atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
|
||||
#endif
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline void atm_free_tx_skb_vcc(struct sk_buff *skb, struct atm_vcc *vcc)
|
||||
{
|
||||
if ( vcc->pop != NULL )
|
||||
|
42
package/kernel/lantiq/ltq-vdsl-fw/Makefile
Normal file
42
package/kernel/lantiq/ltq-vdsl-fw/Makefile
Normal file
@ -0,0 +1,42 @@
|
||||
# Copyright (C) 2012 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ltq-vdsl-fw
|
||||
PKG_VERSION:=6.8.6
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/ltq-vdsl-vr9-vectoring-fw-installer
|
||||
TITLE:=VDSL2 Vectoring Firmware installer
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
DEPENDS:=@TARGET_lantiq_xrx200 +kmod-ltq-vdsl-vr9
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)
|
||||
$(CP) ./src/* $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
CFLAGS="$(TARGET_CFLAGS)" \
|
||||
LDFLAGS="$(TARGET_LDFLAGS)" \
|
||||
$(MAKE) -C $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Package/ltq-vdsl-vr9-vectoring-fw-installer/install
|
||||
$(INSTALL_DIR) $(1)/sbin
|
||||
$(CP) $(PKG_BUILD_DIR)/w921v_fw_cutter $(PKG_BUILD_DIR)/vdsl_fw_install.sh $(1)/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ltq-vdsl-vr9-vectoring-fw-installer))
|
584
package/kernel/lantiq/ltq-vdsl-fw/src/LzmaDecode.c
Normal file
584
package/kernel/lantiq/ltq-vdsl-fw/src/LzmaDecode.c
Normal file
@ -0,0 +1,584 @@
|
||||
/*
|
||||
LzmaDecode.c
|
||||
LZMA Decoder (optimized for Speed version)
|
||||
|
||||
LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
|
||||
http://www.7-zip.org/
|
||||
|
||||
LZMA SDK is licensed under two licenses:
|
||||
1) GNU Lesser General Public License (GNU LGPL)
|
||||
2) Common Public License (CPL)
|
||||
It means that you can select one of these two licenses and
|
||||
follow rules of that license.
|
||||
|
||||
SPECIAL EXCEPTION:
|
||||
Igor Pavlov, as the author of this Code, expressly permits you to
|
||||
statically or dynamically link your Code (or bind by name) to the
|
||||
interfaces of this file without subjecting your linked Code to the
|
||||
terms of the CPL or GNU LGPL. Any modifications or additions
|
||||
to this file, however, are subject to the LGPL or CPL terms.
|
||||
*/
|
||||
|
||||
#include "LzmaDecode.h"
|
||||
|
||||
#define kNumTopBits 24
|
||||
#define kTopValue ((UInt32)1 << kNumTopBits)
|
||||
|
||||
#define kNumBitModelTotalBits 11
|
||||
#define kBitModelTotal (1 << kNumBitModelTotalBits)
|
||||
#define kNumMoveBits 5
|
||||
|
||||
#define RC_READ_BYTE (*Buffer++)
|
||||
|
||||
#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
|
||||
{ int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
|
||||
|
||||
#ifdef _LZMA_IN_CB
|
||||
|
||||
#define RC_TEST { if (Buffer == BufferLim) \
|
||||
{ SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
|
||||
BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
|
||||
|
||||
#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
|
||||
|
||||
#else
|
||||
|
||||
#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
|
||||
|
||||
#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
|
||||
|
||||
#endif
|
||||
|
||||
#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
|
||||
|
||||
#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
|
||||
#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
|
||||
#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
|
||||
|
||||
#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
|
||||
{ UpdateBit0(p); mi <<= 1; A0; } else \
|
||||
{ UpdateBit1(p); mi = (mi + mi) + 1; A1; }
|
||||
|
||||
#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)
|
||||
|
||||
#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
|
||||
{ int i = numLevels; res = 1; \
|
||||
do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
|
||||
res -= (1 << numLevels); }
|
||||
|
||||
|
||||
#define kNumPosBitsMax 4
|
||||
#define kNumPosStatesMax (1 << kNumPosBitsMax)
|
||||
|
||||
#define kLenNumLowBits 3
|
||||
#define kLenNumLowSymbols (1 << kLenNumLowBits)
|
||||
#define kLenNumMidBits 3
|
||||
#define kLenNumMidSymbols (1 << kLenNumMidBits)
|
||||
#define kLenNumHighBits 8
|
||||
#define kLenNumHighSymbols (1 << kLenNumHighBits)
|
||||
|
||||
#define LenChoice 0
|
||||
#define LenChoice2 (LenChoice + 1)
|
||||
#define LenLow (LenChoice2 + 1)
|
||||
#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
|
||||
#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
|
||||
#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
|
||||
|
||||
|
||||
#define kNumStates 12
|
||||
#define kNumLitStates 7
|
||||
|
||||
#define kStartPosModelIndex 4
|
||||
#define kEndPosModelIndex 14
|
||||
#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
|
||||
|
||||
#define kNumPosSlotBits 6
|
||||
#define kNumLenToPosStates 4
|
||||
|
||||
#define kNumAlignBits 4
|
||||
#define kAlignTableSize (1 << kNumAlignBits)
|
||||
|
||||
#define kMatchMinLen 2
|
||||
|
||||
#define IsMatch 0
|
||||
#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
|
||||
#define IsRepG0 (IsRep + kNumStates)
|
||||
#define IsRepG1 (IsRepG0 + kNumStates)
|
||||
#define IsRepG2 (IsRepG1 + kNumStates)
|
||||
#define IsRep0Long (IsRepG2 + kNumStates)
|
||||
#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
|
||||
#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
|
||||
#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
|
||||
#define LenCoder (Align + kAlignTableSize)
|
||||
#define RepLenCoder (LenCoder + kNumLenProbs)
|
||||
#define Literal (RepLenCoder + kNumLenProbs)
|
||||
|
||||
#if Literal != LZMA_BASE_SIZE
|
||||
StopCompilingDueBUG
|
||||
#endif
|
||||
|
||||
int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size)
|
||||
{
|
||||
unsigned char prop0;
|
||||
if (size < LZMA_PROPERTIES_SIZE)
|
||||
return LZMA_RESULT_DATA_ERROR;
|
||||
prop0 = propsData[0];
|
||||
if (prop0 >= (9 * 5 * 5))
|
||||
return LZMA_RESULT_DATA_ERROR;
|
||||
{
|
||||
for (propsRes->pb = 0; prop0 >= (9 * 5); propsRes->pb++, prop0 -= (9 * 5));
|
||||
for (propsRes->lp = 0; prop0 >= 9; propsRes->lp++, prop0 -= 9);
|
||||
propsRes->lc = prop0;
|
||||
/*
|
||||
unsigned char remainder = (unsigned char)(prop0 / 9);
|
||||
propsRes->lc = prop0 % 9;
|
||||
propsRes->pb = remainder / 5;
|
||||
propsRes->lp = remainder % 5;
|
||||
*/
|
||||
}
|
||||
|
||||
#ifdef _LZMA_OUT_READ
|
||||
{
|
||||
int i;
|
||||
propsRes->DictionarySize = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
propsRes->DictionarySize += (UInt32)(propsData[1 + i]) << (i * 8);
|
||||
if (propsRes->DictionarySize == 0)
|
||||
propsRes->DictionarySize = 1;
|
||||
}
|
||||
#endif
|
||||
return LZMA_RESULT_OK;
|
||||
}
|
||||
|
||||
#define kLzmaStreamWasFinishedId (-1)
|
||||
|
||||
int LzmaDecode(CLzmaDecoderState *vs,
|
||||
#ifdef _LZMA_IN_CB
|
||||
ILzmaInCallback *InCallback,
|
||||
#else
|
||||
const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
|
||||
#endif
|
||||
unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed)
|
||||
{
|
||||
CProb *p = vs->Probs;
|
||||
SizeT nowPos = 0;
|
||||
Byte previousByte = 0;
|
||||
UInt32 posStateMask = (1 << (vs->Properties.pb)) - 1;
|
||||
UInt32 literalPosMask = (1 << (vs->Properties.lp)) - 1;
|
||||
int lc = vs->Properties.lc;
|
||||
|
||||
#ifdef _LZMA_OUT_READ
|
||||
|
||||
UInt32 Range = vs->Range;
|
||||
UInt32 Code = vs->Code;
|
||||
#ifdef _LZMA_IN_CB
|
||||
const Byte *Buffer = vs->Buffer;
|
||||
const Byte *BufferLim = vs->BufferLim;
|
||||
#else
|
||||
const Byte *Buffer = inStream;
|
||||
const Byte *BufferLim = inStream + inSize;
|
||||
#endif
|
||||
int state = vs->State;
|
||||
UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
|
||||
int len = vs->RemainLen;
|
||||
UInt32 globalPos = vs->GlobalPos;
|
||||
UInt32 distanceLimit = vs->DistanceLimit;
|
||||
|
||||
Byte *dictionary = vs->Dictionary;
|
||||
UInt32 dictionarySize = vs->Properties.DictionarySize;
|
||||
UInt32 dictionaryPos = vs->DictionaryPos;
|
||||
|
||||
Byte tempDictionary[4];
|
||||
|
||||
#ifndef _LZMA_IN_CB
|
||||
*inSizeProcessed = 0;
|
||||
#endif
|
||||
*outSizeProcessed = 0;
|
||||
if (len == kLzmaStreamWasFinishedId)
|
||||
return LZMA_RESULT_OK;
|
||||
|
||||
if (dictionarySize == 0)
|
||||
{
|
||||
dictionary = tempDictionary;
|
||||
dictionarySize = 1;
|
||||
tempDictionary[0] = vs->TempDictionary[0];
|
||||
}
|
||||
|
||||
if (len == kLzmaNeedInitId)
|
||||
{
|
||||
{
|
||||
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
|
||||
UInt32 i;
|
||||
for (i = 0; i < numProbs; i++)
|
||||
p[i] = kBitModelTotal >> 1;
|
||||
rep0 = rep1 = rep2 = rep3 = 1;
|
||||
state = 0;
|
||||
globalPos = 0;
|
||||
distanceLimit = 0;
|
||||
dictionaryPos = 0;
|
||||
dictionary[dictionarySize - 1] = 0;
|
||||
#ifdef _LZMA_IN_CB
|
||||
RC_INIT;
|
||||
#else
|
||||
RC_INIT(inStream, inSize);
|
||||
#endif
|
||||
}
|
||||
len = 0;
|
||||
}
|
||||
while(len != 0 && nowPos < outSize)
|
||||
{
|
||||
UInt32 pos = dictionaryPos - rep0;
|
||||
if (pos >= dictionarySize)
|
||||
pos += dictionarySize;
|
||||
outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
|
||||
if (++dictionaryPos == dictionarySize)
|
||||
dictionaryPos = 0;
|
||||
len--;
|
||||
}
|
||||
if (dictionaryPos == 0)
|
||||
previousByte = dictionary[dictionarySize - 1];
|
||||
else
|
||||
previousByte = dictionary[dictionaryPos - 1];
|
||||
|
||||
#else /* if !_LZMA_OUT_READ */
|
||||
|
||||
int state = 0;
|
||||
UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
|
||||
int len = 0;
|
||||
const Byte *Buffer;
|
||||
const Byte *BufferLim;
|
||||
UInt32 Range;
|
||||
UInt32 Code;
|
||||
|
||||
#ifndef _LZMA_IN_CB
|
||||
*inSizeProcessed = 0;
|
||||
#endif
|
||||
*outSizeProcessed = 0;
|
||||
|
||||
{
|
||||
UInt32 i;
|
||||
UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp));
|
||||
for (i = 0; i < numProbs; i++)
|
||||
p[i] = kBitModelTotal >> 1;
|
||||
}
|
||||
|
||||
#ifdef _LZMA_IN_CB
|
||||
RC_INIT;
|
||||
#else
|
||||
RC_INIT(inStream, inSize);
|
||||
#endif
|
||||
|
||||
#endif /* _LZMA_OUT_READ */
|
||||
|
||||
while(nowPos < outSize)
|
||||
{
|
||||
CProb *prob;
|
||||
UInt32 bound;
|
||||
int posState = (int)(
|
||||
(nowPos
|
||||
#ifdef _LZMA_OUT_READ
|
||||
+ globalPos
|
||||
#endif
|
||||
)
|
||||
& posStateMask);
|
||||
|
||||
prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
|
||||
IfBit0(prob)
|
||||
{
|
||||
int symbol = 1;
|
||||
UpdateBit0(prob)
|
||||
prob = p + Literal + (LZMA_LIT_SIZE *
|
||||
(((
|
||||
(nowPos
|
||||
#ifdef _LZMA_OUT_READ
|
||||
+ globalPos
|
||||
#endif
|
||||
)
|
||||
& literalPosMask) << lc) + (previousByte >> (8 - lc))));
|
||||
|
||||
if (state >= kNumLitStates)
|
||||
{
|
||||
int matchByte;
|
||||
#ifdef _LZMA_OUT_READ
|
||||
UInt32 pos = dictionaryPos - rep0;
|
||||
if (pos >= dictionarySize)
|
||||
pos += dictionarySize;
|
||||
matchByte = dictionary[pos];
|
||||
#else
|
||||
matchByte = outStream[nowPos - rep0];
|
||||
#endif
|
||||
do
|
||||
{
|
||||
int bit;
|
||||
CProb *probLit;
|
||||
matchByte <<= 1;
|
||||
bit = (matchByte & 0x100);
|
||||
probLit = prob + 0x100 + bit + symbol;
|
||||
RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
|
||||
}
|
||||
while (symbol < 0x100);
|
||||
}
|
||||
while (symbol < 0x100)
|
||||
{
|
||||
CProb *probLit = prob + symbol;
|
||||
RC_GET_BIT(probLit, symbol)
|
||||
}
|
||||
previousByte = (Byte)symbol;
|
||||
|
||||
outStream[nowPos++] = previousByte;
|
||||
#ifdef _LZMA_OUT_READ
|
||||
if (distanceLimit < dictionarySize)
|
||||
distanceLimit++;
|
||||
|
||||
dictionary[dictionaryPos] = previousByte;
|
||||
if (++dictionaryPos == dictionarySize)
|
||||
dictionaryPos = 0;
|
||||
#endif
|
||||
if (state < 4) state = 0;
|
||||
else if (state < 10) state -= 3;
|
||||
else state -= 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(prob);
|
||||
prob = p + IsRep + state;
|
||||
IfBit0(prob)
|
||||
{
|
||||
UpdateBit0(prob);
|
||||
rep3 = rep2;
|
||||
rep2 = rep1;
|
||||
rep1 = rep0;
|
||||
state = state < kNumLitStates ? 0 : 3;
|
||||
prob = p + LenCoder;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(prob);
|
||||
prob = p + IsRepG0 + state;
|
||||
IfBit0(prob)
|
||||
{
|
||||
UpdateBit0(prob);
|
||||
prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
|
||||
IfBit0(prob)
|
||||
{
|
||||
#ifdef _LZMA_OUT_READ
|
||||
UInt32 pos;
|
||||
#endif
|
||||
UpdateBit0(prob);
|
||||
|
||||
#ifdef _LZMA_OUT_READ
|
||||
if (distanceLimit == 0)
|
||||
#else
|
||||
if (nowPos == 0)
|
||||
#endif
|
||||
return LZMA_RESULT_DATA_ERROR;
|
||||
|
||||
state = state < kNumLitStates ? 9 : 11;
|
||||
#ifdef _LZMA_OUT_READ
|
||||
pos = dictionaryPos - rep0;
|
||||
if (pos >= dictionarySize)
|
||||
pos += dictionarySize;
|
||||
previousByte = dictionary[pos];
|
||||
dictionary[dictionaryPos] = previousByte;
|
||||
if (++dictionaryPos == dictionarySize)
|
||||
dictionaryPos = 0;
|
||||
#else
|
||||
previousByte = outStream[nowPos - rep0];
|
||||
#endif
|
||||
outStream[nowPos++] = previousByte;
|
||||
#ifdef _LZMA_OUT_READ
|
||||
if (distanceLimit < dictionarySize)
|
||||
distanceLimit++;
|
||||
#endif
|
||||
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(prob);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UInt32 distance;
|
||||
UpdateBit1(prob);
|
||||
prob = p + IsRepG1 + state;
|
||||
IfBit0(prob)
|
||||
{
|
||||
UpdateBit0(prob);
|
||||
distance = rep1;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(prob);
|
||||
prob = p + IsRepG2 + state;
|
||||
IfBit0(prob)
|
||||
{
|
||||
UpdateBit0(prob);
|
||||
distance = rep2;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(prob);
|
||||
distance = rep3;
|
||||
rep3 = rep2;
|
||||
}
|
||||
rep2 = rep1;
|
||||
}
|
||||
rep1 = rep0;
|
||||
rep0 = distance;
|
||||
}
|
||||
state = state < kNumLitStates ? 8 : 11;
|
||||
prob = p + RepLenCoder;
|
||||
}
|
||||
{
|
||||
int numBits, offset;
|
||||
CProb *probLen = prob + LenChoice;
|
||||
IfBit0(probLen)
|
||||
{
|
||||
UpdateBit0(probLen);
|
||||
probLen = prob + LenLow + (posState << kLenNumLowBits);
|
||||
offset = 0;
|
||||
numBits = kLenNumLowBits;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(probLen);
|
||||
probLen = prob + LenChoice2;
|
||||
IfBit0(probLen)
|
||||
{
|
||||
UpdateBit0(probLen);
|
||||
probLen = prob + LenMid + (posState << kLenNumMidBits);
|
||||
offset = kLenNumLowSymbols;
|
||||
numBits = kLenNumMidBits;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateBit1(probLen);
|
||||
probLen = prob + LenHigh;
|
||||
offset = kLenNumLowSymbols + kLenNumMidSymbols;
|
||||
numBits = kLenNumHighBits;
|
||||
}
|
||||
}
|
||||
RangeDecoderBitTreeDecode(probLen, numBits, len);
|
||||
len += offset;
|
||||
}
|
||||
|
||||
if (state < 4)
|
||||
{
|
||||
int posSlot;
|
||||
state += kNumLitStates;
|
||||
prob = p + PosSlot +
|
||||
((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
|
||||
kNumPosSlotBits);
|
||||
RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
|
||||
if (posSlot >= kStartPosModelIndex)
|
||||
{
|
||||
int numDirectBits = ((posSlot >> 1) - 1);
|
||||
rep0 = (2 | ((UInt32)posSlot & 1));
|
||||
if (posSlot < kEndPosModelIndex)
|
||||
{
|
||||
rep0 <<= numDirectBits;
|
||||
prob = p + SpecPos + rep0 - posSlot - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
numDirectBits -= kNumAlignBits;
|
||||
do
|
||||
{
|
||||
RC_NORMALIZE
|
||||
Range >>= 1;
|
||||
rep0 <<= 1;
|
||||
if (Code >= Range)
|
||||
{
|
||||
Code -= Range;
|
||||
rep0 |= 1;
|
||||
}
|
||||
}
|
||||
while (--numDirectBits != 0);
|
||||
prob = p + Align;
|
||||
rep0 <<= kNumAlignBits;
|
||||
numDirectBits = kNumAlignBits;
|
||||
}
|
||||
{
|
||||
int i = 1;
|
||||
int mi = 1;
|
||||
do
|
||||
{
|
||||
CProb *prob3 = prob + mi;
|
||||
RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
|
||||
i <<= 1;
|
||||
}
|
||||
while(--numDirectBits != 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
rep0 = posSlot;
|
||||
if (++rep0 == (UInt32)(0))
|
||||
{
|
||||
/* it's for stream version */
|
||||
len = kLzmaStreamWasFinishedId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
len += kMatchMinLen;
|
||||
#ifdef _LZMA_OUT_READ
|
||||
if (rep0 > distanceLimit)
|
||||
#else
|
||||
if (rep0 > nowPos)
|
||||
#endif
|
||||
return LZMA_RESULT_DATA_ERROR;
|
||||
|
||||
#ifdef _LZMA_OUT_READ
|
||||
if (dictionarySize - distanceLimit > (UInt32)len)
|
||||
distanceLimit += len;
|
||||
else
|
||||
distanceLimit = dictionarySize;
|
||||
#endif
|
||||
|
||||
do
|
||||
{
|
||||
#ifdef _LZMA_OUT_READ
|
||||
UInt32 pos = dictionaryPos - rep0;
|
||||
if (pos >= dictionarySize)
|
||||
pos += dictionarySize;
|
||||
previousByte = dictionary[pos];
|
||||
dictionary[dictionaryPos] = previousByte;
|
||||
if (++dictionaryPos == dictionarySize)
|
||||
dictionaryPos = 0;
|
||||
#else
|
||||
previousByte = outStream[nowPos - rep0];
|
||||
#endif
|
||||
len--;
|
||||
outStream[nowPos++] = previousByte;
|
||||
}
|
||||
while(len != 0 && nowPos < outSize);
|
||||
}
|
||||
}
|
||||
RC_NORMALIZE;
|
||||
|
||||
#ifdef _LZMA_OUT_READ
|
||||
vs->Range = Range;
|
||||
vs->Code = Code;
|
||||
vs->DictionaryPos = dictionaryPos;
|
||||
vs->GlobalPos = globalPos + (UInt32)nowPos;
|
||||
vs->DistanceLimit = distanceLimit;
|
||||
vs->Reps[0] = rep0;
|
||||
vs->Reps[1] = rep1;
|
||||
vs->Reps[2] = rep2;
|
||||
vs->Reps[3] = rep3;
|
||||
vs->State = state;
|
||||
vs->RemainLen = len;
|
||||
vs->TempDictionary[0] = tempDictionary[0];
|
||||
#endif
|
||||
|
||||
#ifdef _LZMA_IN_CB
|
||||
vs->Buffer = Buffer;
|
||||
vs->BufferLim = BufferLim;
|
||||
#else
|
||||
*inSizeProcessed = (SizeT)(Buffer - inStream);
|
||||
#endif
|
||||
*outSizeProcessed = nowPos;
|
||||
return LZMA_RESULT_OK;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user