Squashed 'dts/upstream/' content from commit aaba2d45dc2a

git-subtree-dir: dts/upstream
git-subtree-split: aaba2d45dc2a1b3bbb710f2a3808ee1c9f340abe
This commit is contained in:
Tom Rini
2024-02-29 12:33:36 -05:00
commit 53633a893a
11277 changed files with 2103666 additions and 0 deletions

278
scripts/Kbuild.include Normal file
View File

@@ -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

27
scripts/basic/fixdep Executable file
View File

@@ -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 <depfile> <target> <cmdline>
#
# and will read the dependency file <depfile>
#
# The transformed dependency snipped is written to stdout.
#
# It first generates a line
#
# cmd_<target> = <cmdline>
#
# and then basically copies the .<target>.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

124
scripts/cronjob Executable file
View File

@@ -0,0 +1,124 @@
#!/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
if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION}-dts ; then
echo "Latest version is unmerged"
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)
TESTBRANCH=test-${DATE}
MERGE_OUTPUT=`(
set -e
git checkout -b ${TESTBRANCH} origin/master
git -c merge.renameLimit=1000000 merge --no-edit upstream/dts
) 2>&1 `
REF=$(git show-ref --verify refs/heads/${TESTBRANCH})
echo "Testing: ${REF}"
if git log ${TESTBRANCH} -- 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 "Recording refs/tests/${DATE}"
git update-ref refs/tests/${DATE} ${TESTBRANCH}
echo "Removing ${TESTBRANCH}"
git branch -D "${TESTBRANCH}"
echo "Final State:"
for branch in ${BRANCHES} ; do
REF=$(git show-ref --verify refs/heads/${branch})
echo " ${REF}"
done
echo
exit 0

40
scripts/filter.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/sh
# git branch -D upstream/rewritten-prev upstream/master upstream/rewritten filter-state
set -e
export SCRIPTS=$(dirname $(readlink -f $0))
export FILTER_BRANCH_SQUELCH_WARNING=1
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
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' \
--parent-filter 'sed "s/-p //g" | xargs -r git show-branch --independent | sed "s/\</-p /g"' \
--prune-empty --state-branch refs/heads/filter-state \
-- $RANGE
git branch -f $UPSTREAM_MASTER FETCH_HEAD

14
scripts/index-filter.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
set -e
set -o pipefail
${SCRIPTS}/rewrite-index.pl | 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

48
scripts/merge-new-release.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/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 -e
# Use the date of Linus' originally tagged commit for the merge. This might
# differ from what the commit that the rewritten tag points to, since the
# orignal commit may have been discarded.
export GIT_AUTHOR_DATE=$(git log -1 --format=%ad "${v%-dts}")
if [ ! "${GIT_AUTHOR_DATE}" ] ; then
echo >&2 "Unable to determine commit date for merge"
exit 1
fi
if [ "${v}" = "v2.6.12-rc2-dts" ] ; then
auh="--allow-unrelated-histories"
fi
git merge $auh --no-edit "${v}-raw"
git clean -fdqx
# Use the date of Linus' original tag for the tag.
case "${v%-dts}" in
v2.6.12*|v2.6.13-rc[123])
# Commits from v2.6.12-rc2..v2.6.13-rc3 lacked the date. So use the commit's
# date.
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
;;
*)
export GIT_COMMITTER_DATE="$(git for-each-ref --format='%(taggerdate)' "refs/tags/${v%-dts}")"
;;
esac
if [ ! "${GIT_COMMITTER_DATE}" ] ; then
echo >&2 "Unable to determine date for tag"
exit 1
fi
git tag -s -m "Tagging ${v}" -u 695A46C6 "${v}"
make -k -j12 -s

72
scripts/rewrite-index.pl Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open2;
my $pid;
open(my $lsfiles, "-|", "git ls-files -s") or die "fork lsfiles: $!";
while (<$lsfiles>) {
if ($_ =~ m/^120000 ([0-9a-f]{40}) (.*)\t(.*)/) {
my ($obj, $stage, $path) = ($1,$2,$3);
if (!defined $pid) {
$pid = open2(*Rderef, *Wderef, "git cat-file --batch-check='deref-ok %(objectname)' --follow-symlinks")
or die "open git cat-file: $!";
}
print Wderef "$ENV{GIT_COMMIT}:$path\n" or die "write Wderef: $!";
my $deref = <Rderef>;
if ($deref =~ m/^deref-ok ([0-9a-f]{40})$/) {
$_ = "100644 $1 $stage\t$path\n"
} elsif ($deref =~ /^dangling /) {
# Skip next line
my $dummy = <Rderef>;
} else {
die "Failed to parse symlink $ENV{GIT_COMMIT}:$path $deref";
}
}
my $m = 0;
# Keep the copyright. Also ensures we never have a completely empty commit.
$m++ if m/\tCOPYING$/;
# 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
next if m,\tarch/microblaze/boot/dts/system.dts$,;
$m++ if s,\tarch/microblaze/platform/generic/(system.dts)$,\tarch/microblaze/boot/dts/$1,;
# 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
$m++ if s,\tarch/mips/([^/]*)/dts/(.*\.dts.?)$,\tarch/mips/boot/dts/$2,;
# arch/mips/cavium-octeon/octeon_68xx.dts
# arch/mips/cavium-octeon/octeon_3xxx.dts
# arch/mips/mti-sead3/sead3.dts
$m++ if s,\tarch/mips/([^/]*)/([^/]*\.dts.?)$,\tarch/mips/boot/dts/$2,;
# arch/x86/platform/ce4100/falconfalls.dts
$m++ if s,\tarch/x86/platform/ce4100/falconfalls.dts,\tarch/x86/boot/dts/falconfalls.dts,;
# test cases
$m++ if s,\tdrivers/of/testcase-data/,\ttestcase-data/,;
# Now rewrite generic DTS paths
$m++ if s,\tarch/([^/]*)/boot/dts/(.*\.dts.?)$,\tsrc/$1/$2,;
$m++ if s,\tarch/([^/]*)/boot/dts/(.*\.h)$,\tsrc/$1/$2,;
# Also rewrite the DTS include paths for dtc+cpp support
$m++ if s,\tarch/([^/]*)/include/dts/,\tsrc/$1/include/,;
$m++ if s,\tinclude/dt-bindings/,\tinclude/dt-bindings/,;
# Rewrite the bindings subdirectory
$m++ if s,\tDocumentation/devicetree/bindings/,\tBindings/,;
print if $m > 0;
}
kill $pid if $pid;
exit 0;