diff --git a/dts/Bindings/gpio/gpio-mpc8xxx.txt b/dts/Bindings/gpio/gpio-mpc8xxx.txt index f2455c5..120bc49 100644 --- a/dts/Bindings/gpio/gpio-mpc8xxx.txt +++ b/dts/Bindings/gpio/gpio-mpc8xxx.txt @@ -11,6 +11,10 @@ 0 = active high 1 = active low +Optional properties: +- little-endian : GPIO registers are used as little endian. If not + present registers are used as big endian by default. + Example: gpio0: gpio@1100 { diff --git a/dts/Makefile b/dts/Makefile new file mode 100644 index 0000000..5e8930c --- /dev/null +++ b/dts/Makefile @@ -0,0 +1,163 @@ + +DTC ?= dtc +CPP ?= cpp + +MAKEFLAGS += -rR --no-print-directory + +ALL_ARCHES := $(patsubst src/%,%,$(wildcard src/*)) + +PHONY += all +all: $(foreach i,$(ALL_ARCHES),all_$(i)) + +PHONY += clean +clean: $(foreach i,$(ALL_ARCHES),clean_$(i)) + +# Do not: +# o use make's built-in rules and variables +# (this increases performance and avoids hard-to-debug behaviour); +# o print "Entering directory ..."; +MAKEFLAGS += -rR --no-print-directory + +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands + +ifeq ("$(origin V)", "command line") + KBUILD_VERBOSE = $(V) +endif +ifndef KBUILD_VERBOSE + KBUILD_VERBOSE = 0 +endif + +# Beautify output +# --------------------------------------------------------------------------- +# +# Normally, we echo the whole command before executing it. By making +# that echo $($(quiet)$(cmd)), we now have the possibility to set +# $(quiet) to choose other forms of output instead, e.g. +# +# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ +# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< +# +# If $(quiet) is empty, the whole command will be printed. +# If it is set to "quiet_", only the short version will be printed. +# If it is set to "silent_", nothing will be printed at all, since +# the variable $(silent_cmd_cc_o_c) doesn't exist. +# +# A simple variant is to prefix commands with $(Q) - that's useful +# for commands that shall be hidden in non-verbose mode. +# +# $(Q)ln $@ :< +# +# If KBUILD_VERBOSE equals 0 then the above command will be hidden. +# If KBUILD_VERBOSE equals 1 then the above command is displayed. + +ifeq ($(KBUILD_VERBOSE),1) + quiet = + Q = +else + quiet=quiet_ + Q = @ +endif + +# If the user is running make -s (silent mode), suppress echoing of +# commands + +ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 +ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) + quiet=silent_ +endif +else # make-3.8x +ifneq ($(filter s% -s%,$(MAKEFLAGS)),) + quiet=silent_ +endif +endif + +export quiet Q KBUILD_VERBOSE + +all_%: + $(Q)$(MAKE) ARCH=$* all_arch + +clean_%: + $(Q)$(MAKE) ARCH=$* clean_arch + +ifeq ($(ARCH),) + +ALL_DTS := $(shell find src/* -name \*.dts) + +ALL_DTB := $(patsubst %.dts,%.dtb,$(ALL_DTS)) + +$(ALL_DTB): ARCH=$(word 2,$(subst /, ,$@)) +$(ALL_DTB): FORCE + $(Q)$(MAKE) ARCH=$(ARCH) $@ + +else + +ARCH_DTS := $(shell find src/$(ARCH) -name \*.dts) + +ARCH_DTB := $(patsubst %.dts,%.dtb,$(ARCH_DTS)) + +src := src/$(ARCH) +obj := src/$(ARCH) + +include scripts/Kbuild.include + +cmd_files := $(wildcard $(foreach f,$(ARCH_DTB),$(dir $(f)).$(notdir $(f)).cmd)) + +ifneq ($(cmd_files),) + include $(cmd_files) +endif + +quiet_cmd_clean = CLEAN $(obj) + cmd_clean = rm -f $(__clean-files) + +dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) + +dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \ + -Iinclude -I$(src) -Itestcase-data \ + -undef -D__DTS__ + +quiet_cmd_dtc = DTC $@ +cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ + $(DTC) -O dtb -o $@ -b 0 \ + -i $(src) $(DTC_FLAGS) \ + -d $(depfile).dtc.tmp $(dtc-tmp) ; \ + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + +$(obj)/%.dtb: $(src)/%.dts FORCE + $(call if_changed_dep,dtc) + +PHONY += all_arch +all_arch: $(ARCH_DTB) + @: + +RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ + -o -name .pc -o -name .hg -o -name .git \) -prune -o + +PHONY += clean_arch +clean_arch: __clean-files = $(ARCH_DTB) +clean_arch: FORCE + $(call cmd,clean) + @find . $(RCS_FIND_IGNORE) \ + \( -name '.*.cmd' \ + -o -name '.*.d' \ + -o -name '.*.tmp' \ + \) -type f -print | xargs rm -f + +endif + +help: + @echo "Targets:" + @echo " all: Build all device tree binaries for all architectures" + @echo " clean: Clean all generated files" + @echo "" + @echo " all_: Build all device tree binaries for " + @echo " clean_: Clean all generated files for " + @echo "" + @echo " src//.dtb Build a single device tree binary" + @echo "" + @echo "Architectures: $(ALL_ARCHES)" + +PHONY += FORCE +FORCE: + +.PHONY: $(PHONY) diff --git a/dts/README b/dts/README new file mode 100644 index 0000000..72724f5 --- /dev/null +++ b/dts/README @@ -0,0 +1,4 @@ +This tree contains device tree definitions extracted from the Linux +kernel source tree. It is synced regularly with mainline Linux. + +Type "make help" for a list of build targets. diff --git a/dts/scripts/Kbuild.include b/dts/scripts/Kbuild.include new file mode 100644 index 0000000..978416d --- /dev/null +++ b/dts/scripts/Kbuild.include @@ -0,0 +1,278 @@ +#### +# kbuild: Generic definitions + +# Convenient variables +comma := , +squote := ' +empty := +space := $(empty) $(empty) + +### +# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o +dot-target = $(dir $@).$(notdir $@) + +### +# The temporary file to save gcc -MD generated dependencies must not +# contain a comma +depfile = $(subst $(comma),_,$(dot-target).d) + +### +# filename of target with directory and extension stripped +basetarget = $(basename $(notdir $@)) + +### +# filename of first prerequisite with directory and extension stripped +baseprereq = $(basename $(notdir $<)) + +### +# Escape single quote for use in echo statements +escsq = $(subst $(squote),'\$(squote)',$1) + +### +# Easy method for doing a status message + kecho := : + quiet_kecho := echo +silent_kecho := : +kecho := $($(quiet)kecho) + +### +# filechk is used to check if the content of a generated file is updated. +# Sample usage: +# define filechk_sample +# echo $KERNELRELEASE +# endef +# version.h : Makefile +# $(call filechk,sample) +# The rule defined shall write to stdout the content of the new file. +# The existing file will be compared with the new one. +# - If no file exist it is created +# - If the content differ the new file is used +# - If they are equal no change, and no timestamp update +# - stdin is piped in from the first prerequisite ($<) so one has +# to specify a valid file as first prerequisite (often the kbuild file) +define filechk + $(Q)set -e; \ + $(kecho) ' CHK $@'; \ + mkdir -p $(dir $@); \ + $(filechk_$(1)) < $< > $@.tmp; \ + if [ -r $@ ] && cmp -s $@ $@.tmp; then \ + rm -f $@.tmp; \ + else \ + $(kecho) ' UPD $@'; \ + mv -f $@.tmp $@; \ + fi +endef + +###### +# gcc support functions +# See documentation in Documentation/kbuild/makefiles.txt + +# cc-cross-prefix +# Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-) +# Return first prefix where a prefix$(CC) is found in PATH. +# If no $(CC) found in PATH with listed prefixes return nothing +cc-cross-prefix = \ + $(word 1, $(foreach c,$(1), \ + $(shell set -e; \ + if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \ + echo $(c); \ + fi))) + +# output directory for tests below +TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) + +# try-run +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) +# Exit code chooses option. "$$TMP" is can be used as temporary file and +# is automatically cleaned up. +try-run = $(shell set -e; \ + TMP="$(TMPOUT).$$$$.tmp"; \ + TMPO="$(TMPOUT).$$$$.o"; \ + if ($(1)) >/dev/null 2>&1; \ + then echo "$(2)"; \ + else echo "$(3)"; \ + fi; \ + rm -f "$$TMP" "$$TMPO") + +# as-option +# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) + +as-option = $(call try-run,\ + $(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2)) + +# as-instr +# Usage: cflags-y += $(call as-instr,instr,option1,option2) + +as-instr = $(call try-run,\ + printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) + +# cc-option +# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) + +cc-option = $(call try-run,\ + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) + +# cc-option-yn +# Usage: flag := $(call cc-option-yn,-march=winchip-c6) +cc-option-yn = $(call try-run,\ + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) + +# cc-option-align +# Prefix align with either -falign or -malign +cc-option-align = $(subst -functions=0,,\ + $(call cc-option,-falign-functions=0,-malign-functions=0)) + +# cc-disable-warning +# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) +cc-disable-warning = $(call try-run,\ + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) + +# cc-version +# Usage gcc-ver := $(call cc-version) +cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) + +# cc-fullversion +# Usage gcc-ver := $(call cc-fullversion) +cc-fullversion = $(shell $(CONFIG_SHELL) \ + $(srctree)/scripts/gcc-version.sh -p $(CC)) + +# cc-ifversion +# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) +cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3)) + +# cc-ldoption +# Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) +cc-ldoption = $(call try-run,\ + $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) + +# ld-option +# Usage: LDFLAGS += $(call ld-option, -X) +ld-option = $(call try-run,\ + $(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) + +# ar-option +# Usage: KBUILD_ARFLAGS := $(call ar-option,D) +# Important: no spaces around options +ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2)) + +###### + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= +# Usage: +# $(Q)$(MAKE) $(build)=dir +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj + +### +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj= +# Usage: +# $(Q)$(MAKE) $(modbuiltin)=dir +modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj + +# Prefix -I with $(srctree) if it is not an absolute path. +# skip if -I has no parameter +addtree = $(if $(patsubst -I%,%,$(1)), \ +$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)) + +# Find all -I options and call addtree +flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o))) + +# echo command. +# Short version is used, if $(quiet) equals `quiet_', otherwise full one. +echo-cmd = $(if $($(quiet)cmd_$(1)),\ + echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';) + +# printing commands +cmd = @$(echo-cmd) $(cmd_$(1)) + +# Add $(obj)/ for paths that are not absolute +objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o))) + +### +# if_changed - execute command if any prerequisite is newer than +# target, or command line has changed +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies +# including used config symbols +# if_changed_rule - as if_changed but execute rule instead +# See Documentation/kbuild/makefiles.txt for more info + +ifneq ($(KBUILD_NOCMDDEP),1) +# Check if both arguments has same arguments. Result is empty string if equal. +# User may override this check using make KBUILD_NOCMDDEP=1 +arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ + $(filter-out $(cmd_$@), $(cmd_$(1))) ) +else +arg-check = $(if $(strip $(cmd_$@)),,1) +endif + +# >'< substitution is for echo to work, +# >$< substitution to preserve $ when reloading .cmd file +# note: when using inline perl scripts [perl -e '...$$t=1;...'] +# in $(cmd_xxx) double $$ your perl vars +make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))) + +# Find any prerequisites that is newer than target or that does not exist. +# PHONY targets skipped in both cases. +any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^) + +# Execute command if command has changed or prerequisite(s) are updated. +# +if_changed = $(if $(strip $(any-prereq) $(arg-check)), \ + @set -e; \ + $(echo-cmd) $(cmd_$(1)); \ + echo 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd) + +# Execute the command and also postprocess generated .d dependencies file. +if_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ), \ + @set -e; \ + $(echo-cmd) $(cmd_$(1)); \ + scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).tmp;\ + rm -f $(depfile); \ + mv -f $(dot-target).tmp $(dot-target).cmd) + +# Usage: $(call if_changed_rule,foo) +# Will check if $(cmd_foo) or any of the prerequisites changed, +# and if so will execute $(rule_foo). +if_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ), \ + @set -e; \ + $(rule_$(1))) + +### +# why - tell why a a target got build +# enabled by make V=2 +# Output (listed in the order they are checked): +# (1) - due to target is PHONY +# (2) - due to target missing +# (3) - due to: file1.h file2.h +# (4) - due to command line change +# (5) - due to missing .cmd file +# (6) - due to target not in $(targets) +# (1) PHONY targets are always build +# (2) No target, so we better build it +# (3) Prerequisite is newer than target +# (4) The command line stored in the file named dir/.target.cmd +# differed from actual command line. This happens when compiler +# options changes +# (5) No dir/.target.cmd file (used to store command line) +# (6) No dir/.target.cmd file and target not listed in $(targets) +# This is a good hint that there is a bug in the kbuild file +ifeq ($(KBUILD_VERBOSE),2) +why = \ + $(if $(filter $@, $(PHONY)),- due to target is PHONY, \ + $(if $(wildcard $@), \ + $(if $(strip $(any-prereq)),- due to: $(any-prereq), \ + $(if $(arg-check), \ + $(if $(cmd_$@),- due to command line change, \ + $(if $(filter $@, $(targets)), \ + - due to missing .cmd file, \ + - due to $(notdir $@) not in $$(targets) \ + ) \ + ) \ + ) \ + ), \ + - due to target missing \ + ) \ + ) + +echo-why = $(call escsq, $(strip $(why))) +endif diff --git a/dts/scripts/basic/fixdep b/dts/scripts/basic/fixdep new file mode 100755 index 0000000..cc412be --- /dev/null +++ b/dts/scripts/basic/fixdep @@ -0,0 +1,27 @@ +#!/bin/sh + +# Simplfied version of Linux scripts/basic/fixdep. We don't need +# CONFIG tracking etc for this usecase. + + +# Fixdep's interface is described: + +# It is invoked as +# +# fixdep +# +# and will read the dependency file +# +# The transformed dependency snipped is written to stdout. +# +# It first generates a line +# +# cmd_ = +# +# and then basically copies the ..d file to stdout, in the +# process filtering out the dependency on autoconf.h and adding +# dependencies on include/config/my/option.h for every +# CONFIG_MY_OPTION encountered in any of the prequisites. + +echo cmd_$2 = $3 +cat $1 diff --git a/dts/scripts/cronjob b/dts/scripts/cronjob new file mode 100755 index 0000000..eeedca0 --- /dev/null +++ b/dts/scripts/cronjob @@ -0,0 +1,115 @@ +#!/bin/bash + +set -e + +cd $(dirname $0)/.. + +UPSTREAM_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git" + +BRANCHES="master filter-state upstream/master upstream/dts" + +if [ ! -f scripts/filter.sh ] ; then + echo "`pwd`: does not appear to be a device-tree.git" 1>&2 + exit 1 +fi + +if [ -z "$LATEST_VERSION" ] ; then + FINGER_BANNER="https://www.kernel.org/finger_banner" + LATEST_VERSION=$(wget --quiet -O - "$FINGER_BANNER" |\ + sed -n -e '0,/^The latest mainline version of the Linux kernel is:\s*\(.*\)$/s//\1/p') +fi + +if [ -z "$LATEST_VERSION" ] ; then + echo "Unable to determine latest version" 1>&2 + exit 1 +fi + +echo "Latest Version: v$LATEST_VERSION" +if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION} ; then + echo "Latest version is new" +fi +echo + +echo "Current State:" +for branch in $BRANCHES ; do + REF=$(git show-ref --verify refs/heads/${branch}) + if [ $? -ne 0 ] ; then + echo "Tree is missing required branch ${branch}, aborting" 1>&2 + exit 1 + fi + echo " ${REF}" +done +echo + +trap ' +if [ -n "$FILTER_OUTPUT" ] ; then + echo "---------------------------------------------------------------------" + echo "Filter Output:" + echo "---------------------------------------------------------------------" + echo "$FILTER_OUTPUT" + echo +fi +if [ -n "$MERGE_OUTPUT" ] ; then + echo "---------------------------------------------------------------------" + echo "Merge Output:" + echo "---------------------------------------------------------------------" + echo "$MERGE_OUTPUT" + echo +fi +' EXIT + +FILTER_OUTPUT=`( +set -e +echo "Switching to master branch" +git checkout master + +echo "Fetching $UPSTREAM_GIT master" +git fetch --tags "$UPSTREAM_GIT" master +echo + +echo "Filtering" +./scripts/filter.sh +echo +) 2>&1 ` + +#git push --dry-run origin filter-state upstream/dts upstream/master +#git push --dry-run origin --tags +#echo + +DATE=$(date +%Y%m%d) +LATEST=latest-${DATE} +MERGE_OUTPUT=`( +set -e +git checkout -b ${LATEST} origin/master +git merge --no-edit upstream/dts +) 2>&1 ` +REF=$(git show-ref --verify refs/heads/${LATEST}) +echo "Testing: ${REF}" +if git log ${LATEST} -- MAINTAINERS | grep --quiet . ; then + echo "Filter branch has upstream-only content (MAINTAINERS file)" + exit 1 +fi + +make clean -s +TEST_OUTPUT=`make -k -s 2>&1 || true` +if [ -z "${TEST_OUTPUT}" ]; then + echo "Success!" +else + echo "---------------------------------------------------------------------" + echo "Test Output:" + echo "---------------------------------------------------------------------" + echo "$TEST_OUTPUT" +fi +echo + +echo "Switching back to master branch" +git checkout master + +echo "Final State:" +for branch in ${BRANCHES} ; do + REF=$(git show-ref --verify refs/heads/${branch}) + echo " ${REF}" +done +echo + +exit 0 diff --git a/dts/scripts/filter.sh b/dts/scripts/filter.sh new file mode 100755 index 0000000..e82218a1 --- /dev/null +++ b/dts/scripts/filter.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# git branch -D upstream/rewritten-prev upstream/master upstream/rewritten filter-state + +set -e + +export SCRIPTS=$(dirname $(readlink -f $0)) + +UPSTREAM_MASTER=upstream/master +UPSTREAM_REWRITTEN=upstream/dts + +LAST=$(git show-ref -s refs/heads/$UPSTREAM_MASTER||true) +if [ -n "$LAST" ] ; then + RANGE="$LAST..$UPSTREAM_REWRITTEN" +else + # This must be a new conversion... + RANGE="$UPSTREAM_REWRITTEN" +fi + +FETCH_HEAD=$(git rev-parse FETCH_HEAD) +if [ "$LAST" = "$FETCH_HEAD" ] ; then + echo "Nothing new in FETCH_HEAD: $FETCH_HEAD" + exit 0 +fi + +rm -f .git/refs/original/refs/heads/${UPSTREAM_REWRITTEN} + +git branch -f $UPSTREAM_REWRITTEN FETCH_HEAD + +sh $SCRIPTS/git-filter-branch --force \ + --index-filter ${SCRIPTS}/index-filter.sh \ + --msg-filter 'cat && /bin/echo -e "\n[ upstream commit: $GIT_COMMIT ]"' \ + --tag-name-filter 'while read t ; do /bin/echo -n $t-dts-raw ; done' \ + --prune-empty --state-branch refs/heads/filter-state \ + -- $RANGE + +git branch -f $UPSTREAM_MASTER FETCH_HEAD diff --git a/dts/scripts/flatten-symlinks.sh b/dts/scripts/flatten-symlinks.sh new file mode 100755 index 0000000..84d007f --- /dev/null +++ b/dts/scripts/flatten-symlinks.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e + +while read mode object stage path ; do + case "$mode" in + 120000) + # symbolic link + deref=$(echo $GIT_COMMIT:$path | git cat-file --batch-check='deref-ok %(objectname)' --follow-symlinks) + case "$deref" in + deref-ok*) + echo -e "100644 ${deref#deref-ok } $stage\t$path" + ;; + dangling*) # skip + ;; + *) # the rest, missing etc + echo >&2 "Failed to parse symlink $GIT_COMMIT:$path $deref" + exit 1 + ;; + esac + ;; + 100*) + # Regular file, just pass through + echo -e "$mode $object $stage\t$path" + ;; + *) + echo >&2 "Unhandled ls-tree entry: $line" + exit 1 + ;; + esac +done diff --git a/dts/scripts/git-filter-branch b/dts/scripts/git-filter-branch new file mode 100755 index 0000000..0e839ae --- /dev/null +++ b/dts/scripts/git-filter-branch @@ -0,0 +1,557 @@ +#!/bin/sh +# +# Rewrite revision history +# Copyright (c) Petr Baudis, 2006 +# Minimal changes to "port" it to core-git (c) Johannes Schindelin, 2007 +# +# Lets you rewrite the revision history of the current branch, creating +# a new branch. You can specify a number of filters to modify the commits, +# files and trees. + +# The following functions will also be available in the commit filter: + +export PATH=/usr/lib/git-core:$PATH + +functions=$(cat << \EOF +warn () { + echo "$*" >&2 +} + +map() +{ + # if it was not rewritten, take the original + if test -r "$workdir/../map/$1" + then + cat "$workdir/../map/$1" + else + echo "$1" + fi +} + +# if you run 'skip_commit "$@"' in a commit filter, it will print +# the (mapped) parents, effectively skipping the commit. + +skip_commit() +{ + shift; + while [ -n "$1" ]; + do + shift; + map "$1"; + shift; + done; +} + +# if you run 'git_commit_non_empty_tree "$@"' in a commit filter, +# it will skip commits that leave the tree untouched, commit the other. +git_commit_non_empty_tree() +{ + if test $# = 3 && test "$1" = $(git rev-parse "$3^{tree}"); then + map "$3" + else + git commit-tree "$@" + fi +} +# override die(): this version puts in an extra line break, so that +# the progress is still visible + +die() +{ + echo >&2 + echo "$*" >&2 + exit 1 +} +EOF +) + +eval "$functions" + +# When piped a commit, output a script to set the ident of either +# "author" or "committer + +set_ident () { + lid="$(echo "$1" | tr "[A-Z]" "[a-z]")" + uid="$(echo "$1" | tr "[a-z]" "[A-Z]")" + pick_id_script=' + /^'$lid' /{ + s/'\''/'\''\\'\'\''/g + h + s/^'$lid' \([^<]*\) <[^>]*> .*$/\1/ + s/'\''/'\''\'\'\''/g + s/.*/GIT_'$uid'_NAME='\''&'\''; export GIT_'$uid'_NAME/p + + g + s/^'$lid' [^<]* <\([^>]*\)> .*$/\1/ + s/'\''/'\''\'\'\''/g + s/.*/GIT_'$uid'_EMAIL='\''&'\''; export GIT_'$uid'_EMAIL/p + + g + s/^'$lid' [^<]* <[^>]*> \(.*\)$/\1/ + s/'\''/'\''\'\'\''/g + s/.*/GIT_'$uid'_DATE='\''&'\''; export GIT_'$uid'_DATE/p + + q + } + ' + + LANG=C LC_ALL=C sed -ne "$pick_id_script" + # Ensure non-empty id name. + echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac" +} + +USAGE="[--env-filter ] [--tree-filter ] + [--index-filter ] [--parent-filter ] + [--msg-filter ] [--commit-filter ] + [--tag-name-filter ] [--subdirectory-filter ] + [--original ] [-d ] [-f | --force] + [--state-branch ] + [...]" + +OPTIONS_SPEC= +. git-sh-setup + +if [ "$(is_bare_repository)" = false ]; then + require_clean_work_tree 'rewrite branches' +fi + +tempdir=.git-rewrite +filter_env= +filter_tree= +filter_index= +filter_parent= +filter_msg=cat +filter_commit= +filter_tag_name= +filter_subdir= +state_branch= +orig_namespace=refs/original/ +force= +prune_empty= +remap_to_ancestor= +while : +do + case "$1" in + --) + shift + break + ;; + --force|-f) + shift + force=t + continue + ;; + --remap-to-ancestor) + # deprecated ($remap_to_ancestor is set now automatically) + shift + remap_to_ancestor=t + continue + ;; + --prune-empty) + shift + prune_empty=t + continue + ;; + -*) + ;; + *) + break; + esac + + # all switches take one argument + ARG="$1" + case "$#" in 1) usage ;; esac + shift + OPTARG="$1" + shift + + case "$ARG" in + -d) + tempdir="$OPTARG" + ;; + --env-filter) + filter_env="$OPTARG" + ;; + --tree-filter) + filter_tree="$OPTARG" + ;; + --index-filter) + filter_index="$OPTARG" + ;; + --parent-filter) + filter_parent="$OPTARG" + ;; + --msg-filter) + filter_msg="$OPTARG" + ;; + --commit-filter) + filter_commit="$functions; $OPTARG" + ;; + --tag-name-filter) + filter_tag_name="$OPTARG" + ;; + --subdirectory-filter) + filter_subdir="$OPTARG" + remap_to_ancestor=t + ;; + --original) + orig_namespace=$(expr "$OPTARG/" : '\(.*[^/]\)/*$')/ + ;; + --state-branch) + state_branch="$OPTARG" + ;; + *) + usage + ;; + esac +done + +case "$prune_empty,$filter_commit" in +,) + filter_commit='git commit-tree "$@"';; +t,) + filter_commit="$functions;"' git_commit_non_empty_tree "$@"';; +,*) + ;; +*) + die "Cannot set --prune-empty and --commit-filter at the same time" +esac + +case "$force" in +t) + rm -rf "$tempdir" +;; +'') + test -d "$tempdir" && + die "$tempdir already exists, please remove it" +esac +mkdir -p "$tempdir/t" && +tempdir="$(cd "$tempdir"; pwd)" && +cd "$tempdir/t" && +workdir="$(pwd)" || +die "" + +# Remove tempdir on exit +trap 'cd ../..; rm -rf "$tempdir"' 0 + +ORIG_GIT_DIR="$GIT_DIR" +ORIG_GIT_WORK_TREE="$GIT_WORK_TREE" +ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE" +GIT_WORK_TREE=. +export GIT_DIR GIT_WORK_TREE + +# Make sure refs/original is empty +git for-each-ref > "$tempdir"/backup-refs || exit +while read sha1 type name +do + case "$force,$name" in + ,$orig_namespace*) + die "Cannot create a new backup. +A previous backup already exists in $orig_namespace +Force overwriting the backup with -f" + ;; + t,$orig_namespace*) + git update-ref -d "$name" $sha1 + ;; + esac +done < "$tempdir"/backup-refs + +# The refs should be updated if their heads were rewritten +git rev-parse --no-flags --revs-only --symbolic-full-name \ + --default HEAD "$@" > "$tempdir"/raw-heads || exit +sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads + +test -s "$tempdir"/heads || + die "Which ref do you want to rewrite?" + +GIT_INDEX_FILE="$(pwd)/../index" +export GIT_INDEX_FILE + +# map old->new commit ids for rewriting parents +mkdir ../map || die "Could not create map/ directory" + +if [ -n "$state_branch" ] ; then + state_commit=`git show-ref -s "$state_branch"` + if [ -n "$state_commit" ] ; then + echo "Populating map from $state_branch ($state_commit)" 1>&2 + git show "$state_commit":filter.map | + perl -n -e 'm/(.*):(.*)/ or die; + open F, ">../map/$1" or die; + print F "$2" or die; + close(F) or die' + else + echo "Branch $state_branch does not exist. Will create" 1>&2 + fi +fi + +# we need "--" only if there are no path arguments in $@ +nonrevs=$(git rev-parse --no-revs "$@") || exit +if test -z "$nonrevs" +then + dashdash=-- +else + dashdash= + remap_to_ancestor=t +fi + +rev_args=$(git rev-parse --revs-only "$@") + +case "$filter_subdir" in +"") + eval set -- "$(git rev-parse --sq --no-revs "$@")" + ;; +*) + eval set -- "$(git rev-parse --sq --no-revs "$@" $dashdash \ + "$filter_subdir")" + ;; +esac + +git rev-list --reverse --topo-order --default HEAD \ + --parents --simplify-merges $rev_args "$@" > ../revs || + die "Could not get the commits" +commits=$(wc -l <../revs | tr -d " ") + +test $commits -eq 0 && die "Found nothing to rewrite" + +# Rewrite the commits + +git_filter_branch__commit_count=0 +while read commit parents; do + git_filter_branch__commit_count=$(($git_filter_branch__commit_count+1)) + printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits)" + + case "$filter_subdir" in + "") + git read-tree -i -m $commit + ;; + *) + # The commit may not have the subdirectory at all + err=$(git read-tree -i -m $commit:"$filter_subdir" 2>&1) || { + if ! git rev-parse -q --verify $commit:"$filter_subdir" + then + rm -f "$GIT_INDEX_FILE" + else + echo >&2 "$err" + false + fi + } + esac || die "Could not initialize the index" + + GIT_COMMIT=$commit + export GIT_COMMIT + git cat-file commit "$commit" >../commit || + die "Cannot read commit $commit" + + eval "$(set_ident AUTHOR <../commit)" || + die "setting author failed for commit $commit" + eval "$(set_ident COMMITTER <../commit)" || + die "setting committer failed for commit $commit" + eval "$filter_env" < /dev/null || + die "env filter failed: $filter_env" + + if [ "$filter_tree" ]; then + git checkout-index -f -u -a || + die "Could not checkout the index" + # files that $commit removed are now still in the working tree; + # remove them, else they would be added again + git clean -d -q -f -x + eval "$filter_tree" < /dev/null || + die "tree filter failed: $filter_tree" + + ( + git diff-index -r --name-only --ignore-submodules $commit && + git ls-files --others + ) > "$tempdir"/tree-state || exit + git update-index --add --replace --remove --stdin \ + < "$tempdir"/tree-state || exit + fi + + eval "$filter_index" < /dev/null || + die "index filter failed: $filter_index" + + parentstr= + for parent in $parents; do + for reparent in $(map "$parent"); do + parentstr="$parentstr -p $reparent" + done + done + if [ "$filter_parent" ]; then + parentstr="$(echo "$parentstr" | eval "$filter_parent")" || + die "parent filter failed: $filter_parent" + fi + + sed -e '1,/^$/d' <../commit | \ + eval "$filter_msg" > ../message || + die "msg filter failed: $filter_msg" + workdir=$workdir /bin/sh -c "$filter_commit" "git commit-tree" \ + $(git write-tree) $parentstr < ../message > ../map/$commit || + die "could not write rewritten commit" +done <../revs + +# If we are filtering for paths, as in the case of a subdirectory +# filter, it is possible that a specified head is not in the set of +# rewritten commits, because it was pruned by the revision walker. +# Ancestor remapping fixes this by mapping these heads to the unique +# nearest ancestor that survived the pruning. + +if test "$remap_to_ancestor" = t +then + while read ref + do + sha1=$(git rev-parse "$ref"^0) + test -f "$workdir"/../map/$sha1 && continue + ancestor=$(git rev-list --simplify-merges -1 "$ref" "$@") + test "$ancestor" && echo $(map $ancestor) >> "$workdir"/../map/$sha1 + done < "$tempdir"/heads +fi + +# Finally update the refs + +_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' +_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" +echo +while read ref +do + # avoid rewriting a ref twice + test -f "$orig_namespace$ref" && continue + + sha1=$(git rev-parse "$ref"^0) + rewritten=$(map $sha1) + + test $sha1 = "$rewritten" && + warn "WARNING: Ref '$ref' is unchanged" && + continue + + case "$rewritten" in + '') + echo "Ref '$ref' was deleted" + git update-ref -m "filter-branch: delete" -d "$ref" $sha1 || + die "Could not delete $ref" + ;; + $_x40) + echo "Ref '$ref' was rewritten" + if ! git update-ref -m "filter-branch: rewrite" \ + "$ref" $rewritten $sha1 2>/dev/null; then + if test $(git cat-file -t "$ref") = tag; then + if test -z "$filter_tag_name"; then + warn "WARNING: You said to rewrite tagged commits, but not the corresponding tag." + warn "WARNING: Perhaps use '--tag-name-filter cat' to rewrite the tag." + fi + else + die "Could not rewrite $ref" + fi + fi + ;; + *) + # NEEDSWORK: possibly add -Werror, making this an error + warn "WARNING: '$ref' was rewritten into multiple commits:" + warn "$rewritten" + warn "WARNING: Ref '$ref' points to the first one now." + rewritten=$(echo "$rewritten" | head -n 1) + git update-ref -m "filter-branch: rewrite to first" \ + "$ref" $rewritten $sha1 || + die "Could not rewrite $ref" + ;; + esac + git update-ref -m "filter-branch: backup" "$orig_namespace$ref" $sha1 || + exit +done < "$tempdir"/heads + +# TODO: This should possibly go, with the semantics that all positive given +# refs are updated, and their original heads stored in refs/original/ +# Filter tags + +if [ "$filter_tag_name" ]; then + git for-each-ref --format='%(objectname) %(objecttype) %(refname)' refs/tags | + while read sha1 type ref; do + ref="${ref#refs/tags/}" + # XXX: Rewrite tagged trees as well? + if [ "$type" != "commit" -a "$type" != "tag" ]; then + continue; + fi + + if [ "$type" = "tag" ]; then + # Dereference to a commit + sha1t="$sha1" + sha1="$(git rev-parse -q "$sha1"^{commit})" || continue + fi + + [ -f "../map/$sha1" ] || continue + new_sha1="$(cat "../map/$sha1")" + GIT_COMMIT="$sha1" + export GIT_COMMIT + new_ref="$(echo "$ref" | eval "$filter_tag_name")" || + die "tag name filter failed: $filter_tag_name" + + echo "$ref -> $new_ref ($sha1 -> $new_sha1)" + + if [ "$type" = "tag" ]; then + new_sha1=$( ( printf 'object %s\ntype commit\ntag %s\n' \ + "$new_sha1" "$new_ref" + git cat-file tag "$ref" | + awk '/^tagger/ { tagged=1 } + /^$/ { if (!tagged && !done) { print "tagger Unknown 0 +0000" } ; done=1 } + // { print }' | + sed -n \ + -e '1,/^$/{ + /^object /d + /^type /d + /^tag /d + }' \ + -e '/^-----BEGIN PGP SIGNATURE-----/q' \ + -e 'p' ) | + git mktag) || + die "Could not create new tag object for $ref" + if git cat-file tag "$ref" | \ + sane_grep '^-----BEGIN PGP SIGNATURE-----' >/dev/null 2>&1 + then + warn "gpg signature stripped from tag object $sha1t" + fi + fi + + git update-ref "refs/tags/$new_ref" "$new_sha1" || + die "Could not write tag $new_ref" + done +fi + +if [ -n "$state_branch" ] ; then + echo "Saving rewrite state to $state_branch" 1>&2 + STATE_BLOB=$(ls ../map | + perl -n -e 'chomp(); + open F, "<../map/$_" or die; + chomp($f = ); print "$_:$f\n";' | + git hash-object -w --stdin ) + STATE_TREE=$(/bin/echo -e "100644 blob $STATE_BLOB\tfilter.map" | git mktree) + STATE_PARENT=$(git show-ref -s "$state_branch") + unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE + unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE + if [ -n "$STATE_PARENT" ] ; then + STATE_COMMIT=$(/bin/echo "Sync" | git commit-tree "$STATE_TREE" -p "$STATE_PARENT") + else + STATE_COMMIT=$(/bin/echo "Sync" | git commit-tree "$STATE_TREE" ) + fi + git update-ref "$state_branch" "$STATE_COMMIT" +fi + +cd ../.. +rm -rf "$tempdir" + +trap - 0 + +unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE +test -z "$ORIG_GIT_DIR" || { + GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR +} +test -z "$ORIG_GIT_WORK_TREE" || { + GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" && + export GIT_WORK_TREE +} +test -z "$ORIG_GIT_INDEX_FILE" || { + GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && + export GIT_INDEX_FILE +} + +if [ "$(is_bare_repository)" = false ]; then + git read-tree -u -m HEAD || exit +fi + +exit 0 diff --git a/dts/scripts/index-filter.sh b/dts/scripts/index-filter.sh new file mode 100755 index 0000000..e672867 --- /dev/null +++ b/dts/scripts/index-filter.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e +set -o pipefail + +crumbs=/tmp/device-tree-export +git ls-files -s | tee $crumbs-orig | \ + ${SCRIPTS}/flatten-symlinks.sh | tee $crumbs-flattened | \ + sed -n -f ${SCRIPTS}/rewrite-paths.sed | tee $crumbs-rewritten | \ + GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info + +if [ -f "$GIT_INDEX_FILE.new" ] ; then + mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE" +else + rm "$GIT_INDEX_FILE" +fi + +exit 0 diff --git a/dts/scripts/merge-new-release.sh b/dts/scripts/merge-new-release.sh new file mode 100755 index 0000000..cf2ac41 --- /dev/null +++ b/dts/scripts/merge-new-release.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +case $1 in + v*-dts) ;; + '') + echo >&2 "No version given" + exit 1 + ;; + *) + echo >&2 "Unexpected version: $1" + exit 1 + ;; +esac + +v=$1 + +set -ex + +git merge --no-edit "${v}-raw" +git clean -fdqx +make -k -j12 -s +git tag -s -m "Tagging ${v}" -u 695A46C6 "${v}" diff --git a/dts/scripts/rewrite-paths.sed b/dts/scripts/rewrite-paths.sed new file mode 100644 index 0000000..b73fbce --- /dev/null +++ b/dts/scripts/rewrite-paths.sed @@ -0,0 +1,38 @@ +# Keep the copyright. Also ensures we never have a completely empty commit. +/\tCOPYING$/p + +# A few architectures have dts files at non standard paths. Massage those into +# a standard arch/ARCH/boot/dts first. + +# symlink: arch/microblaze/boot/dts/system.dts -> ../../platform/generic/system.dts +\,\tarch/microblaze/boot/dts/system.dts$,d +s,\tarch/microblaze/platform/generic/\(system.dts\)$,\tarch/microblaze/boot/dts/\1,g + +# arch/mips/lantiq/dts/easy50712.dts +# arch/mips/lantiq/dts/danube.dtsi +# arch/mips/netlogic/dts/xlp_evp.dts +# arch/mips/ralink/dts/rt3050.dtsi +# arch/mips/ralink/dts/rt3052_eval.dts +s,\tarch/mips/\([^/]*\)/dts/\(.*\.dts.\?\)$,\tarch/mips/boot/dts/\2,g + +# arch/mips/cavium-octeon/octeon_68xx.dts +# arch/mips/cavium-octeon/octeon_3xxx.dts +# arch/mips/mti-sead3/sead3.dts +s,\tarch/mips/\([^/]*\)/\([^/]*\.dts.\?\)$,\tarch/mips/boot/dts/\2,g + +# arch/x86/platform/ce4100/falconfalls.dts +s,\tarch/x86/platform/ce4100/falconfalls.dts,\tarch/x86/boot/dts/falconfalls.dts,g + +# test cases +s,\tdrivers/of/testcase-data/,\ttestcase-data/,gp + +# Now rewrite generic DTS paths +s,\tarch/\([^/]*\)/boot/dts/\(.*\.dts.\?\)$,\tsrc/\1/\2,gp +s,\tarch/\([^/]*\)/boot/dts/\(.*\.h\)$,\tsrc/\1/\2,gp + +# Also rewrite the DTS include paths for dtc+cpp support +s,\tarch/\([^/]*\)/include/dts/,\tsrc/\1/include/,gp +s,\tinclude/dt-bindings/,\tinclude/dt-bindings/,gp + +# Rewrite the bindings subdirectory +s,\tDocumentation/devicetree/bindings/,\tBindings/,gp diff --git a/dts/src/arm/am4372.dtsi b/dts/src/arm/am4372.dtsi index d83ff9c..de8791a 100644 --- a/dts/src/arm/am4372.dtsi +++ b/dts/src/arm/am4372.dtsi @@ -74,7 +74,7 @@ reg = <0x48240200 0x100>; interrupts = ; interrupt-parent = <&gic>; - clocks = <&dpll_mpu_m2_ck>; + clocks = <&mpu_periphclk>; }; local_timer: timer@48240600 { @@ -82,7 +82,7 @@ reg = <0x48240600 0x100>; interrupts = ; interrupt-parent = <&gic>; - clocks = <&dpll_mpu_m2_ck>; + clocks = <&mpu_periphclk>; }; l2-cache-controller@48242000 { diff --git a/dts/src/arm/am43xx-clocks.dtsi b/dts/src/arm/am43xx-clocks.dtsi index cc88728..a38af2b 100644 --- a/dts/src/arm/am43xx-clocks.dtsi +++ b/dts/src/arm/am43xx-clocks.dtsi @@ -259,6 +259,14 @@ ti,invert-autoidle-bit; }; + mpu_periphclk: mpu_periphclk { + #clock-cells = <0>; + compatible = "fixed-factor-clock"; + clocks = <&dpll_mpu_m2_ck>; + clock-mult = <1>; + clock-div = <2>; + }; + dpll_ddr_ck: dpll_ddr_ck { #clock-cells = <0>; compatible = "ti,am3-dpll-clock"; diff --git a/dts/src/arm/at91-sama5d2_xplained.dts b/dts/src/arm/at91-sama5d2_xplained.dts index ad6de73..e74df32 100644 --- a/dts/src/arm/at91-sama5d2_xplained.dts +++ b/dts/src/arm/at91-sama5d2_xplained.dts @@ -184,6 +184,7 @@ regulator-name = "VDD_SDHC_1V8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + regulator-always-on; }; }; }; diff --git a/dts/src/arm/berlin2q.dtsi b/dts/src/arm/berlin2q.dtsi index 8ea177f..fb1da99 100644 --- a/dts/src/arm/berlin2q.dtsi +++ b/dts/src/arm/berlin2q.dtsi @@ -118,7 +118,8 @@ sdhci0: sdhci@ab0000 { compatible = "mrvl,pxav3-mmc"; reg = <0xab0000 0x200>; - clocks = <&chip_clk CLKID_SDIO1XIN>; + clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>; + clock-names = "io", "core"; interrupts = ; status = "disabled"; }; @@ -126,7 +127,8 @@ sdhci1: sdhci@ab0800 { compatible = "mrvl,pxav3-mmc"; reg = <0xab0800 0x200>; - clocks = <&chip_clk CLKID_SDIO1XIN>; + clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>; + clock-names = "io", "core"; interrupts = ; status = "disabled"; }; @@ -135,7 +137,7 @@ compatible = "mrvl,pxav3-mmc"; reg = <0xab1000 0x200>; interrupts = ; - clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>; + clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>; clock-names = "io", "core"; status = "disabled"; }; diff --git a/dts/src/arm/dm816x.dtsi b/dts/src/arm/dm816x.dtsi index 3c99cfa..eee636d 100644 --- a/dts/src/arm/dm816x.dtsi +++ b/dts/src/arm/dm816x.dtsi @@ -218,6 +218,7 @@ reg = <0x480c8000 0x2000>; interrupts = <77>; ti,hwmods = "mailbox"; + #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <12>; mbox_dsp: mbox_dsp { @@ -279,8 +280,11 @@ ti,spi-num-cs = <4>; ti,hwmods = "mcspi1"; dmas = <&edma 16 &edma 17 - &edma 18 &edma 19>; - dma-names = "tx0", "rx0", "tx1", "rx1"; + &edma 18 &edma 19 + &edma 20 &edma 21 + &edma 22 &edma 23>; + dma-names = "tx0", "rx0", "tx1", "rx1", + "tx2", "rx2", "tx3", "rx3"; }; mmc1: mmc@48060000 { diff --git a/dts/src/arm/vf610-colibri.dtsi b/dts/src/arm/vf610-colibri.dtsi index 19fe045..2d7eab7 100644 --- a/dts/src/arm/vf610-colibri.dtsi +++ b/dts/src/arm/vf610-colibri.dtsi @@ -18,8 +18,3 @@ reg = <0x80000000 0x10000000>; }; }; - -&L2 { - arm,data-latency = <2 1 2>; - arm,tag-latency = <3 2 3>; -}; diff --git a/dts/src/arm/vf610.dtsi b/dts/src/arm/vf610.dtsi index 5f8eb1b..58bc6e4 100644 --- a/dts/src/arm/vf610.dtsi +++ b/dts/src/arm/vf610.dtsi @@ -19,7 +19,7 @@ reg = <0x40006000 0x1000>; cache-unified; cache-level = <2>; - arm,data-latency = <1 1 1>; + arm,data-latency = <3 3 3>; arm,tag-latency = <2 2 2>; }; }; diff --git a/dts/src/arm/vfxxx.dtsi b/dts/src/arm/vfxxx.dtsi index 0d5acc2..3cd1b27 100644 --- a/dts/src/arm/vfxxx.dtsi +++ b/dts/src/arm/vfxxx.dtsi @@ -178,8 +178,10 @@ compatible = "fsl,vf610-sai"; reg = <0x40031000 0x1000>; interrupts = <86 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&clks VF610_CLK_SAI2>; - clock-names = "sai"; + clocks = <&clks VF610_CLK_SAI2>, + <&clks VF610_CLK_SAI2_DIV>, + <&clks 0>, <&clks 0>; + clock-names = "bus", "mclk1", "mclk2", "mclk3"; dma-names = "tx", "rx"; dmas = <&edma0 0 21>, <&edma0 0 20>; diff --git a/dts/src/arm64/freescale/fsl-ls2080a.dtsi b/dts/src/arm64/freescale/fsl-ls2080a.dtsi index e81cd48..925552e 100644 --- a/dts/src/arm64/freescale/fsl-ls2080a.dtsi +++ b/dts/src/arm64/freescale/fsl-ls2080a.dtsi @@ -269,6 +269,7 @@ clock-frequency = <0>; /* Updated by bootloader */ voltage-ranges = <1800 1800 3300 3300>; sdhci,auto-cmd12; + little-endian; bus-width = <4>; }; @@ -277,6 +278,7 @@ reg = <0x0 0x2300000 0x0 0x10000>; interrupts = <0 36 0x4>; /* Level high type */ gpio-controller; + little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; @@ -287,6 +289,7 @@ reg = <0x0 0x2310000 0x0 0x10000>; interrupts = <0 36 0x4>; /* Level high type */ gpio-controller; + little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; @@ -297,6 +300,7 @@ reg = <0x0 0x2320000 0x0 0x10000>; interrupts = <0 37 0x4>; /* Level high type */ gpio-controller; + little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; @@ -307,6 +311,7 @@ reg = <0x0 0x2330000 0x0 0x10000>; interrupts = <0 37 0x4>; /* Level high type */ gpio-controller; + little-endian; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; diff --git a/dts/src/powerpc/sbc8641d.dts b/dts/src/powerpc/sbc8641d.dts index 631ede7..68f0ed7 100644 --- a/dts/src/powerpc/sbc8641d.dts +++ b/dts/src/powerpc/sbc8641d.dts @@ -227,23 +227,15 @@ reg = <0x520 0x20>; phy0: ethernet-phy@1f { - interrupt-parent = <&mpic>; - interrupts = <10 1>; reg = <0x1f>; }; phy1: ethernet-phy@0 { - interrupt-parent = <&mpic>; - interrupts = <10 1>; reg = <0>; }; phy2: ethernet-phy@1 { - interrupt-parent = <&mpic>; - interrupts = <10 1>; reg = <1>; }; phy3: ethernet-phy@2 { - interrupt-parent = <&mpic>; - interrupts = <10 1>; reg = <2>; }; tbi0: tbi-phy@11 {