Merge branch 'next'

Pull in changes that have been pending in our 'next' branch.  This
includes:
- A large number of CI improvements including moving to gcc-9.2 for all
  platforms.
- amlogic, xilinx, stm32, TI SoC updates
- USB and i2c subsystem updtaes
- Re-sync Kbuild/etc logic with v4.19 of the Linux kernel.
- RSA key handling improvements
This commit is contained in:
Tom Rini 2020-04-13 11:27:00 -04:00
commit 8914831860
403 changed files with 15436 additions and 6389 deletions

View file

@ -1,7 +1,7 @@
variables: variables:
windows_vm: vs2017-win2016 windows_vm: vs2017-win2016
ubuntu_vm: ubuntu-18.04 ubuntu_vm: ubuntu-18.04
ci_runner_image: trini/u-boot-gitlab-ci-runner:bionic-20200112-21Feb2020 ci_runner_image: trini/u-boot-gitlab-ci-runner:bionic-20200311-10Apr2020
# Add '-u 0' options for Azure pipelines, otherwise we get "permission # Add '-u 0' options for Azure pipelines, otherwise we get "permission
# denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer", # denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
# since our $(ci_runner_image) user is not root. # since our $(ci_runner_image) user is not root.
@ -52,7 +52,7 @@ jobs:
image: $(ci_runner_image) image: $(ci_runner_image)
options: $(container_option) options: $(container_option)
steps: steps:
- script: cppcheck --force --quiet --inline-suppr . - script: cppcheck -j$(nproc) --force --quiet --inline-suppr .
- job: htmldocs - job: htmldocs
displayName: 'Build HTML documentation' displayName: 'Build HTML documentation'
@ -120,7 +120,7 @@ jobs:
make tools-only_config envtools -j$(nproc) make tools-only_config envtools -j$(nproc)
- job: utils - job: utils
displayName: 'Run binman, buildman, dtoc and patman testsuites' displayName: 'Run binman, buildman, dtoc, Kconfig and patman testsuites'
pool: pool:
vmImage: $(ubuntu_vm) vmImage: $(ubuntu_vm)
steps: steps:
@ -135,15 +135,16 @@ jobs:
export USER=azure export USER=azure
virtualenv -p /usr/bin/python3 /tmp/venv virtualenv -p /usr/bin/python3 /tmp/venv
. /tmp/venv/bin/activate . /tmp/venv/bin/activate
pip install pyelftools pip install pyelftools pytest
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH} export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}
./tools/buildman/buildman -o /tmp -P sandbox_spl ./tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w sandbox_spl
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test
./tools/buildman/buildman -t ./tools/buildman/buildman -t
./tools/dtoc/dtoc -t ./tools/dtoc/dtoc -t
./tools/patman/patman --test ./tools/patman/patman --test
make O=${UBOOT_TRAVIS_BUILD_DIR} testconfig
EOF EOF
cat build.sh cat build.sh
# We cannot use "container" like other jobs above, as buildman # We cannot use "container" like other jobs above, as buildman
@ -158,90 +159,78 @@ jobs:
matrix: matrix:
sandbox: sandbox:
TEST_PY_BD: "sandbox" TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
sandbox_clang: sandbox_clang:
TEST_PY_BD: "sandbox" TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
OVERRIDE: "-O clang-7" OVERRIDE: "-O clang-7"
sandbox_spl: sandbox_spl:
TEST_PY_BD: "sandbox_spl" TEST_PY_BD: "sandbox_spl"
TEST_PY_TEST_SPEC: "test_ofplatdata" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff"
BUILDMAN: "^sandbox_spl$"
sandbox_flattree: sandbox_flattree:
TEST_PY_BD: "sandbox_flattree" TEST_PY_BD: "sandbox_flattree"
BUILDMAN: "^sandbox_flattree$"
evb_ast2500: evb_ast2500:
TEST_PY_BD: "evb-ast2500" TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^evb-ast2500$"
vexpress_ca15_tc2: vexpress_ca15_tc2:
TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_BD: "vexpress_ca15_tc2"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca15_tc2$"
vexpress_ca9x4: vexpress_ca9x4:
TEST_PY_BD: "vexpress_ca9x4" TEST_PY_BD: "vexpress_ca9x4"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca9x4$"
integratorcp_cm926ejs: integratorcp_cm926ejs:
TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_BD: "integratorcp_cm926ejs"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^integratorcp_cm926ejs$"
qemu_arm: qemu_arm:
TEST_PY_BD: "qemu_arm" TEST_PY_BD: "qemu_arm"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm$"
qemu_arm64: qemu_arm64:
TEST_PY_BD: "qemu_arm64" TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm64$"
qemu_mips: qemu_mips:
TEST_PY_BD: "qemu_mips" TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips$"
qemu_mipsel: qemu_mipsel:
TEST_PY_BD: "qemu_mipsel" TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mipsel$"
qemu_mips64: qemu_mips64:
TEST_PY_BD: "qemu_mips64" TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64$"
qemu_mips64el: qemu_mips64el:
TEST_PY_BD: "qemu_mips64el" TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64el$"
qemu_ppce500: qemu_ppce500:
TEST_PY_BD: "qemu-ppce500" TEST_PY_BD: "qemu-ppce500"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-ppce500$" qemu_riscv32:
TEST_PY_BD: "qemu-riscv32"
TEST_PY_TEST_SPEC: "not sleep"
qemu_riscv64: qemu_riscv64:
TEST_PY_BD: "qemu-riscv64" TEST_PY_BD: "qemu-riscv64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-riscv64$" qemu_riscv32_spl:
TEST_PY_BD: "qemu-riscv32_spl"
TEST_PY_TEST_SPEC: "not sleep"
qemu_riscv64_spl:
TEST_PY_BD: "qemu-riscv64_spl"
TEST_PY_TEST_SPEC: "not sleep"
qemu_x86: qemu_x86:
TEST_PY_BD: "qemu-x86" TEST_PY_BD: "qemu-x86"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86$"
qemu_x86_64: qemu_x86_64:
TEST_PY_BD: "qemu-x86_64" TEST_PY_BD: "qemu-x86_64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86_64$" xilinx_zynq_virt:
zynq_zc702: TEST_PY_BD: "xilinx_zynq_virt"
TEST_PY_BD: "zynq_zc702"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^zynq_zc702$"
xilinx_versal_virt: xilinx_versal_virt:
TEST_PY_BD: "xilinx_versal_virt" TEST_PY_BD: "xilinx_versal_virt"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^xilinx_versal_virt$"
xtfpga: xtfpga:
TEST_PY_BD: "xtfpga" TEST_PY_BD: "xtfpga"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^xtfpga$"
steps: steps:
- script: | - script: |
cat << EOF > test.sh cat << EOF > test.sh
@ -251,7 +240,6 @@ jobs:
export TEST_PY_BD="${TEST_PY_BD}" export TEST_PY_BD="${TEST_PY_BD}"
export TEST_PY_ID="${TEST_PY_ID}" export TEST_PY_ID="${TEST_PY_ID}"
export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}" export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}"
export BUILDMAN="${BUILDMAN}"
export OVERRIDE="${OVERRIDE}" export OVERRIDE="${OVERRIDE}"
EOF EOF
cat << "EOF" >> test.sh cat << "EOF" >> test.sh
@ -263,31 +251,28 @@ jobs:
grub-mkimage --prefix=\"\" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd grub-mkimage --prefix=\"\" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
grub-mkimage --prefix=\"\" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd grub-mkimage --prefix=\"\" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
cp /opt/grub/grubriscv64.efi ~/grub_riscv64.efi cp /opt/grub/grubriscv64.efi ~/grub_riscv64.efi
cp /opt/grub/grubriscv32.efi ~/grub_riscv32.efi
cp /opt/grub/grubaa64.efi ~/grub_arm64.efi cp /opt/grub/grubaa64.efi ~/grub_arm64.efi
cp /opt/grub/grubarm.efi ~/grub_arm.efi cp /opt/grub/grubarm.efi ~/grub_arm.efi
if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv32-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv32-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv64-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv64-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
# the below corresponds to .gitlab-ci.yml "script" # the below corresponds to .gitlab-ci.yml "script"
cd ${WORK_DIR} cd ${WORK_DIR}
if [[ "${BUILDMAN}" != "" ]]; then export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD};
ret=0; tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board ${TEST_PY_BD} ${OVERRIDE}
tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN};
exit $ret;
fi;
fi
virtualenv -p /usr/bin/python3 /tmp/venv virtualenv -p /usr/bin/python3 /tmp/venv
. /tmp/venv/bin/activate . /tmp/venv/bin/activate
pip install -r test/py/requirements.txt pip install -r test/py/requirements.txt
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD};
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
if [[ "${TEST_PY_BD}" != "" ]]; then # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"; ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR";
ret=$?;
if [[ $ret -ne 0 ]]; then
exit $ret;
fi;
fi
# the below corresponds to .gitlab-ci.yml "after_script" # the below corresponds to .gitlab-ci.yml "after_script"
rm -rf /tmp/uboot-test-hooks /tmp/venv rm -rf /tmp/uboot-test-hooks /tmp/venv
EOF EOF
@ -421,9 +406,9 @@ jobs:
cat << "EOF" >> build.sh cat << "EOF" >> build.sh
if [[ "${BUILDMAN}" != "" ]]; then if [[ "${BUILDMAN}" != "" ]]; then
ret=0; ret=0;
tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?; tools/buildman/buildman -o /tmp -P -W ${BUILDMAN} ${OVERRIDE} || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then if [[ $ret -ne 0 ]]; then
tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN}; tools/buildman/buildman -o /tmp -seP ${BUILDMAN};
exit $ret; exit $ret;
fi; fi;
fi fi

View file

@ -2,7 +2,7 @@
# Grab our configured image. The source for this is found at: # Grab our configured image. The source for this is found at:
# https://gitlab.denx.de/u-boot/gitlab-ci-runner # https://gitlab.denx.de/u-boot/gitlab-ci-runner
image: trini/u-boot-gitlab-ci-runner:bionic-20200112-21Feb2020 image: trini/u-boot-gitlab-ci-runner:bionic-20200311-10Apr2020
# We run some tests in different order, to catch some failures quicker. # We run some tests in different order, to catch some failures quicker.
stages: stages:
@ -21,50 +21,43 @@ stages:
- grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd - grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd - grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- cp /opt/grub/grubriscv64.efi ~/grub_riscv64.efi - cp /opt/grub/grubriscv64.efi ~/grub_riscv64.efi
- cp /opt/grub/grubriscv32.efi ~/grub_riscv32.efi
- cp /opt/grub/grubaa64.efi ~/grub_arm64.efi - cp /opt/grub/grubaa64.efi ~/grub_arm64.efi
- cp /opt/grub/grubarm.efi ~/grub_arm.efi - cp /opt/grub/grubarm.efi ~/grub_arm.efi
- if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv32-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv32-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
- if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv64-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv64-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
after_script: after_script:
- rm -rf /tmp/uboot-test-hooks /tmp/venv - rm -rf /tmp/uboot-test-hooks /tmp/venv
script: script:
# From buildman, exit code 129 means warnings only. If we've been asked to # If we've been asked to use clang only do one configuration.
# use clang only do one configuration. - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
- if [[ "${BUILDMAN}" != "" ]]; then - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
ret=0; --board ${TEST_PY_BD} ${OVERRIDE}
tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN};
exit $ret;
fi;
fi
# "not a_test_which_does_not_exist" is a dummy -k parameter which will
# never prevent any test from running. That way, we can always pass
# "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom
# value.
- virtualenv -p /usr/bin/python3 /tmp/venv - virtualenv -p /usr/bin/python3 /tmp/venv
- . /tmp/venv/bin/activate - . /tmp/venv/bin/activate
- pip install -r test/py/requirements.txt - pip install -r test/py/requirements.txt
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD}; # "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH}; - export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci; export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
if [[ "${TEST_PY_BD}" != "" ]]; then ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR"
--build-dir "$UBOOT_TRAVIS_BUILD_DIR";
ret=$?;
if [[ $ret -ne 0 ]]; then
exit $ret;
fi;
fi;
build all 32bit ARM platforms: build all 32bit ARM platforms:
tags: [ 'all' ] tags: [ 'all' ]
stage: world build stage: world build
script: script:
- ret=0; - ret=0;
./tools/buildman/buildman -o /tmp -P -E arm -x aarch64 || ret=$?; ./tools/buildman/buildman -o /tmp -P -E -W arm -x aarch64 || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then if [[ $ret -ne 0 ]]; then
./tools/buildman/buildman -o /tmp -sdeP; ./tools/buildman/buildman -o /tmp -seP;
exit $ret; exit $ret;
fi; fi;
@ -76,9 +69,9 @@ build all 64bit ARM platforms:
- . /tmp/venv/bin/activate - . /tmp/venv/bin/activate
- pip install pyelftools - pip install pyelftools
- ret=0; - ret=0;
./tools/buildman/buildman -o /tmp -P -E aarch64 || ret=$?; ./tools/buildman/buildman -o /tmp -P -E -W aarch64 || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then if [[ $ret -ne 0 ]]; then
./tools/buildman/buildman -o /tmp -sdeP; ./tools/buildman/buildman -o /tmp -seP;
exit $ret; exit $ret;
fi; fi;
@ -87,9 +80,9 @@ build all PowerPC platforms:
stage: world build stage: world build
script: script:
- ret=0; - ret=0;
./tools/buildman/buildman -o /tmp -P -E powerpc || ret=$?; ./tools/buildman/buildman -o /tmp -P -E -W powerpc || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then if [[ $ret -ne 0 ]]; then
./tools/buildman/buildman -o /tmp -sdeP; ./tools/buildman/buildman -o /tmp -seP;
exit $ret; exit $ret;
fi; fi;
@ -98,9 +91,9 @@ build all other platforms:
stage: world build stage: world build
script: script:
- ret=0; - ret=0;
./tools/buildman/buildman -o /tmp -P -E -x arm,powerpc || ret=$?; ./tools/buildman/buildman -o /tmp -P -E -W -x arm,powerpc || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then if [[ $ret -ne 0 ]]; then
./tools/buildman/buildman -o /tmp -sdeP; ./tools/buildman/buildman -o /tmp -seP;
exit $ret; exit $ret;
fi; fi;
@ -110,7 +103,7 @@ cppcheck:
tags: [ 'all' ] tags: [ 'all' ]
stage: testsuites stage: testsuites
script: script:
- cppcheck --force --quiet --inline-suppr . - cppcheck -j$(nproc) --force --quiet --inline-suppr .
# search for TODO within source tree # search for TODO within source tree
grep TODO/FIXME/HACK: grep TODO/FIXME/HACK:
@ -157,7 +150,7 @@ Build envtools:
script: script:
- make tools-only_config envtools -j$(nproc) - make tools-only_config envtools -j$(nproc)
Run binman, buildman, dtoc and patman testsuites: Run binman, buildman, dtoc, Kconfig and patman testsuites:
tags: [ 'all' ] tags: [ 'all' ]
stage: testsuites stage: testsuites
script: script:
@ -166,29 +159,28 @@ Run binman, buildman, dtoc and patman testsuites:
export USER=gitlab; export USER=gitlab;
virtualenv -p /usr/bin/python3 /tmp/venv; virtualenv -p /usr/bin/python3 /tmp/venv;
. /tmp/venv/bin/activate; . /tmp/venv/bin/activate;
pip install pyelftools; pip install pyelftools pytest;
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl; export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl;
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"; export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"; export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
./tools/buildman/buildman -o /tmp -P sandbox_spl; ./tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w sandbox_spl;
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test; ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
./tools/buildman/buildman -t; ./tools/buildman/buildman -t;
./tools/dtoc/dtoc -t; ./tools/dtoc/dtoc -t;
./tools/patman/patman --test ./tools/patman/patman --test;
make testconfig
# Test sandbox with test.py # Test sandbox with test.py
sandbox test.py: sandbox test.py:
tags: [ 'all' ] tags: [ 'all' ]
variables: variables:
TEST_PY_BD: "sandbox" TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
sandbox with clang test.py: sandbox with clang test.py:
tags: [ 'all' ] tags: [ 'all' ]
variables: variables:
TEST_PY_BD: "sandbox" TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
OVERRIDE: "-O clang-7" OVERRIDE: "-O clang-7"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
@ -196,8 +188,7 @@ sandbox_spl test.py:
tags: [ 'all' ] tags: [ 'all' ]
variables: variables:
TEST_PY_BD: "sandbox_spl" TEST_PY_BD: "sandbox_spl"
BUILDMAN: "^sandbox_spl$" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff"
TEST_PY_TEST_SPEC: "test_ofplatdata"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
evb-ast2500 test.py: evb-ast2500 test.py:
@ -205,14 +196,12 @@ evb-ast2500 test.py:
variables: variables:
TEST_PY_BD: "evb-ast2500" TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^evb-ast2500$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
sandbox_flattree test.py: sandbox_flattree test.py:
tags: [ 'all' ] tags: [ 'all' ]
variables: variables:
TEST_PY_BD: "sandbox_flattree" TEST_PY_BD: "sandbox_flattree"
BUILDMAN: "^sandbox_flattree$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
vexpress_ca15_tc2 test.py: vexpress_ca15_tc2 test.py:
@ -220,7 +209,6 @@ vexpress_ca15_tc2 test.py:
variables: variables:
TEST_PY_BD: "vexpress_ca15_tc2" TEST_PY_BD: "vexpress_ca15_tc2"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca15_tc2$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
vexpress_ca9x4 test.py: vexpress_ca9x4 test.py:
@ -228,7 +216,6 @@ vexpress_ca9x4 test.py:
variables: variables:
TEST_PY_BD: "vexpress_ca9x4" TEST_PY_BD: "vexpress_ca9x4"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca9x4$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
integratorcp_cm926ejs test.py: integratorcp_cm926ejs test.py:
@ -237,7 +224,6 @@ integratorcp_cm926ejs test.py:
TEST_PY_BD: "integratorcp_cm926ejs" TEST_PY_BD: "integratorcp_cm926ejs"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^integratorcp_cm926ejs$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_arm test.py: qemu_arm test.py:
@ -245,7 +231,6 @@ qemu_arm test.py:
variables: variables:
TEST_PY_BD: "qemu_arm" TEST_PY_BD: "qemu_arm"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_arm64 test.py: qemu_arm64 test.py:
@ -253,7 +238,6 @@ qemu_arm64 test.py:
variables: variables:
TEST_PY_BD: "qemu_arm64" TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm64$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_mips test.py: qemu_mips test.py:
@ -261,7 +245,6 @@ qemu_mips test.py:
variables: variables:
TEST_PY_BD: "qemu_mips" TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_mipsel test.py: qemu_mipsel test.py:
@ -269,7 +252,6 @@ qemu_mipsel test.py:
variables: variables:
TEST_PY_BD: "qemu_mipsel" TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mipsel$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_mips64 test.py: qemu_mips64 test.py:
@ -277,7 +259,6 @@ qemu_mips64 test.py:
variables: variables:
TEST_PY_BD: "qemu_mips64" TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu_mips64el test.py: qemu_mips64el test.py:
@ -285,7 +266,6 @@ qemu_mips64el test.py:
variables: variables:
TEST_PY_BD: "qemu_mips64el" TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64el$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu-ppce500 test.py: qemu-ppce500 test.py:
@ -293,7 +273,13 @@ qemu-ppce500 test.py:
variables: variables:
TEST_PY_BD: "qemu-ppce500" TEST_PY_BD: "qemu-ppce500"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-ppce500$" <<: *buildman_and_testpy_dfn
qemu-riscv32 test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-riscv32"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu-riscv64 test.py: qemu-riscv64 test.py:
@ -301,7 +287,20 @@ qemu-riscv64 test.py:
variables: variables:
TEST_PY_BD: "qemu-riscv64" TEST_PY_BD: "qemu-riscv64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-riscv64$" <<: *buildman_and_testpy_dfn
qemu-riscv32_spl test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-riscv32_spl"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu-riscv64_spl test.py:
tags: [ 'all' ]
variables:
TEST_PY_BD: "qemu-riscv64_spl"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu-x86 test.py: qemu-x86 test.py:
@ -309,7 +308,6 @@ qemu-x86 test.py:
variables: variables:
TEST_PY_BD: "qemu-x86" TEST_PY_BD: "qemu-x86"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
qemu-x86_64 test.py: qemu-x86_64 test.py:
@ -317,16 +315,14 @@ qemu-x86_64 test.py:
variables: variables:
TEST_PY_BD: "qemu-x86_64" TEST_PY_BD: "qemu-x86_64"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86_64$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
zynq_zc702 test.py: xilinx_zynq_virt test.py:
tags: [ 'all' ] tags: [ 'all' ]
variables: variables:
TEST_PY_BD: "zynq_zc702" TEST_PY_BD: "xilinx_zynq_virt"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^zynq_zc702$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
xilinx_versal_virt test.py: xilinx_versal_virt test.py:
@ -335,7 +331,6 @@ xilinx_versal_virt test.py:
TEST_PY_BD: "xilinx_versal_virt" TEST_PY_BD: "xilinx_versal_virt"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^xilinx_versal_virt$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
xtfpga test.py: xtfpga test.py:
@ -344,5 +339,4 @@ xtfpga test.py:
TEST_PY_BD: "xtfpga" TEST_PY_BD: "xtfpga"
TEST_PY_TEST_SPEC: "not sleep" TEST_PY_TEST_SPEC: "not sleep"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
BUILDMAN: "^xtfpga$"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn

View file

@ -14,6 +14,7 @@ addons:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-bionic-7 - llvm-toolchain-bionic-7
packages: packages:
- autopoint
- cppcheck - cppcheck
- sloccount - sloccount
- sparse - sparse
@ -55,10 +56,6 @@ install:
- cat ~/.buildman - cat ~/.buildman
- grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd - grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd - grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
- mkdir ~/grub2-arm
- ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )
- mkdir ~/grub2-arm64
- ( cd ~/grub2-arm64; wget -O - http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/suse/aarch64/grub2-arm64-efi-2.02~beta2-87.1.aarch64.rpm | rpm2cpio | cpio -di )
- wget http://mirrors.kernel.org/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb && sudo dpkg -i libmpfr4_3.1.4-1_amd64.deb && rm libmpfr4_3.1.4-1_amd64.deb - wget http://mirrors.kernel.org/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb && sudo dpkg -i libmpfr4_3.1.4-1_amd64.deb && rm libmpfr4_3.1.4-1_amd64.deb
env: env:
@ -100,6 +97,7 @@ before_script:
fi fi
- if [[ "${TOOLCHAIN}" == "powerpc" ]]; then ./tools/buildman/buildman --fetch-arch powerpc; fi - if [[ "${TOOLCHAIN}" == "powerpc" ]]; then ./tools/buildman/buildman --fetch-arch powerpc; fi
- if [[ "${TOOLCHAIN}" == "riscv" ]]; then - if [[ "${TOOLCHAIN}" == "riscv" ]]; then
./tools/buildman/buildman --fetch-arch riscv32 &&
./tools/buildman/buildman --fetch-arch riscv64; ./tools/buildman/buildman --fetch-arch riscv64;
fi fi
- if [[ "${QEMU_TARGET}" != "" ]]; then - if [[ "${QEMU_TARGET}" != "" ]]; then
@ -112,47 +110,144 @@ before_script:
popd; popd;
fi fi
# Build GRUB UEFI targets
- if [[ "${QEMU_TARGET}" == "arm-softmmu" ]]; then
git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
pushd /tmp/grub &&
git checkout grub-2.04 &&
./bootstrap &&
./configure --target=arm --with-platform=efi
CC=gcc
TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-objcopy
TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-strip
TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-nm
TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-ranlib &&
make -j4 &&
./grub-mkimage -O arm-efi -o ~/grub_arm.efi --prefix= -d
grub-core cat chain configfile echo efinet ext2 fat halt help linux
lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
search search_fs_file search_fs_uuid search_label serial sleep test
true &&
popd;
fi
- if [[ "${QEMU_TARGET}" == "aarch64-softmmu" ]]; then
git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
pushd /tmp/grub &&
git checkout grub-2.04 &&
./bootstrap &&
./configure --target=aarch64 --with-platform=efi
CC=gcc
TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc
TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-objcopy
TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-strip
TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-nm
TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-ranlib &&
make -j4 &&
./grub-mkimage -O arm64-efi -o ~/grub_arm64.efi --prefix= -d
grub-core cat chain configfile echo efinet ext2 fat halt help linux
lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
search search_fs_file search_fs_uuid search_label serial sleep test
true &&
popd;
fi
- if [[ "${QEMU_TARGET}" == "riscv32-softmmu" ]]; then
git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
pushd /tmp/grub &&
git checkout grub-2.04 &&
./bootstrap &&
./configure --target=riscv32 --with-platform=efi
CC=gcc
TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-gcc
TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-objcopy
TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-strip
TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-nm
TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-ranlib &&
make -j4 &&
./grub-mkimage -O riscv32-efi -o ~/grub_riscv32.efi --prefix= -d
grub-core cat chain configfile echo efinet ext2 fat halt help linux
lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
search search_fs_file search_fs_uuid search_label serial sleep test
true &&
popd;
fi
- if [[ "${QEMU_TARGET}" == "riscv64-softmmu" ]]; then
git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
pushd /tmp/grub &&
git checkout grub-2.04 &&
./bootstrap &&
./configure --target=riscv64 --with-platform=efi
CC=gcc
TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-gcc
TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-objcopy
TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-strip
TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-nm
TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-ranlib &&
make -j4 &&
./grub-mkimage -O riscv64-efi -o ~/grub_riscv64.efi --prefix= -d
grub-core cat chain configfile echo efinet ext2 fat halt help linux
lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
search search_fs_file search_fs_uuid search_label serial sleep test
true &&
popd;
fi
- if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv32-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv32-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
- if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]]; then
wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv64-bin.tar.xz | tar -C /tmp -xJ;
export OPENSBI=/tmp/opensbi-0.6-rv64-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
fi
script: script:
# Comments must be outside the command strings below, or the Travis parser # Comments must be outside the command strings below, or the Travis parser
# will get confused. # will get confused.
# #
# From buildman, exit code 129 means warnings only. If we've been asked to # If we've been asked to use clang only do one configuration.
# use clang only do one configuration. #
# Build a selection of boards if TEST_PY_BD is empty
- if [[ "${BUILDMAN}" != "" ]]; then - if [[ "${BUILDMAN}" != "" ]]; then
ret=0; tools/buildman/buildman -P -E -W ${BUILDMAN} ${OVERRIDE};
tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| ret=$?; if [[ $ret -ne 0 ]]; then
if [[ $ret -ne 0 && $ret -ne 129 ]]; then tools/buildman/buildman -seP ${BUILDMAN};
tools/buildman/buildman -sdeP ${BUILDMAN};
exit $ret; exit $ret;
fi; fi;
fi fi
# "not a_test_which_does_not_exist" is a dummy -k parameter which will # Build just the one board needed for testing, if TEST_PY_BD is non-empty
# never prevent any test from running. That way, we can always pass # Note: "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
# "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom - if [[ "${TEST_PY_BD}" != "" ]]; then
# value. export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/${TEST_PY_BD};
- export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD}; cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/; cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/;
cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/; if [[ -e ~/grub_arm.efi ]]; then
cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi; cp ~/grub_arm.efi $UBOOT_TRAVIS_BUILD_DIR/;
cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi; fi;
if [[ "${TEST_PY_BD}" != "" ]]; then if [[ -e ~/grub_arm64.efi ]]; then
cp ~/grub_arm64.efi $UBOOT_TRAVIS_BUILD_DIR/;
fi;
if [[ -e ~/grub_riscv32.efi ]]; then
cp ~/grub_riscv32.efi $UBOOT_TRAVIS_BUILD_DIR/;
fi;
if [[ -e ~/grub_riscv64.efi ]]; then
cp ~/grub_riscv64.efi $UBOOT_TRAVIS_BUILD_DIR/;
fi;
tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
--board ${TEST_PY_BD} ${OVERRIDE} || exit;
virtualenv -p /usr/bin/python3 /tmp/venv; virtualenv -p /usr/bin/python3 /tmp/venv;
. /tmp/venv/bin/activate; . /tmp/venv/bin/activate;
pip install -r test/py/requirements.txt; pip install -r test/py/requirements.txt;
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
--build-dir "$UBOOT_TRAVIS_BUILD_DIR"; --build-dir "$UBOOT_TRAVIS_BUILD_DIR" || exit;
ret=$?;
if [[ $ret -ne 0 ]]; then
exit $ret;
fi;
if [[ -n "${TEST_PY_TOOLS}" ]]; then if [[ -n "${TEST_PY_TOOLS}" ]]; then
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"; export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"; export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test && ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test &&
./tools/patman/patman --test && ./tools/patman/patman --test &&
./tools/buildman/buildman -t && ./tools/buildman/buildman -t &&
./tools/dtoc/dtoc -t; ./tools/dtoc/dtoc -t &&
make testconfig;
fi; fi;
fi fi
@ -353,7 +448,7 @@ matrix:
# static code analysis with cppcheck (we can add --enable=all later) # static code analysis with cppcheck (we can add --enable=all later)
- name: "cppcheck" - name: "cppcheck"
script: script:
- cppcheck --force --quiet --inline-suppr . - cppcheck -j$(nproc) --force --quiet --inline-suppr .
# build HTML documentation # build HTML documentation
- name: "htmldocs" - name: "htmldocs"
script: script:
@ -390,110 +485,111 @@ matrix:
- name: "test/py sandbox" - name: "test/py sandbox"
env: env:
- TEST_PY_BD="sandbox" - TEST_PY_BD="sandbox"
BUILDMAN="^sandbox$"
TOOLCHAIN="i386" TOOLCHAIN="i386"
- name: "test/py sandbox with clang" - name: "test/py sandbox with clang"
env: env:
- TEST_PY_BD="sandbox" - TEST_PY_BD="sandbox"
BUILDMAN="^sandbox$"
OVERRIDE="-O clang-7" OVERRIDE="-O clang-7"
- name: "test/py sandbox_spl" - name: "test/py sandbox_spl"
env: env:
- TEST_PY_BD="sandbox_spl" - TEST_PY_BD="sandbox_spl"
TEST_PY_TEST_SPEC="test_ofplatdata" TEST_PY_TEST_SPEC="test_ofplatdata or test_handoff"
BUILDMAN="^sandbox$"
TOOLCHAIN="i386" TOOLCHAIN="i386"
TEST_PY_TOOLS="yes" TEST_PY_TOOLS="yes"
- name: "test/py sandbox_flattree" - name: "test/py sandbox_flattree"
env: env:
- TEST_PY_BD="sandbox_flattree" - TEST_PY_BD="sandbox_flattree"
BUILDMAN="^sandbox_flattree$"
TOOLCHAIN="i386" TOOLCHAIN="i386"
- name: "test/py evb-ast2500" - name: "test/py evb-ast2500"
env: env:
- TEST_PY_BD="evb-ast2500" - TEST_PY_BD="evb-ast2500"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
BUILDMAN="^evb-ast2500$"
- name: "test/py vexpress_ca15_tc2" - name: "test/py vexpress_ca15_tc2"
env: env:
- TEST_PY_BD="vexpress_ca15_tc2" - TEST_PY_BD="vexpress_ca15_tc2"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
BUILDMAN="^vexpress_ca15_tc2$"
- name: "test/py vexpress_ca9x4" - name: "test/py vexpress_ca9x4"
env: env:
- TEST_PY_BD="vexpress_ca9x4" - TEST_PY_BD="vexpress_ca9x4"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
BUILDMAN="^vexpress_ca9x4$"
- name: "test/py integratorcp_cm926ejs" - name: "test/py integratorcp_cm926ejs"
env: env:
- TEST_PY_BD="integratorcp_cm926ejs" - TEST_PY_BD="integratorcp_cm926ejs"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
BUILDMAN="^integratorcp_cm926ejs$"
- name: "test/py qemu_arm" - name: "test/py qemu_arm"
env: env:
- TEST_PY_BD="qemu_arm" - TEST_PY_BD="qemu_arm"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
BUILDMAN="^qemu_arm$"
- name: "test/py qemu_arm64" - name: "test/py qemu_arm64"
env: env:
- TEST_PY_BD="qemu_arm64" - TEST_PY_BD="qemu_arm64"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="aarch64-softmmu" QEMU_TARGET="aarch64-softmmu"
BUILDMAN="^qemu_arm64$"
- name: "test/py qemu_mips" - name: "test/py qemu_mips"
env: env:
- TEST_PY_BD="qemu_mips" - TEST_PY_BD="qemu_mips"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="mips-softmmu" QEMU_TARGET="mips-softmmu"
BUILDMAN="^qemu_mips$"
TOOLCHAIN="mips" TOOLCHAIN="mips"
- name: "test/py qemu_mipsel" - name: "test/py qemu_mipsel"
env: env:
- TEST_PY_BD="qemu_mipsel" - TEST_PY_BD="qemu_mipsel"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="mipsel-softmmu" QEMU_TARGET="mipsel-softmmu"
BUILDMAN="^qemu_mipsel$"
TOOLCHAIN="mips" TOOLCHAIN="mips"
- name: "test/py qemu_mips64" - name: "test/py qemu_mips64"
env: env:
- TEST_PY_BD="qemu_mips64" - TEST_PY_BD="qemu_mips64"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="mips64-softmmu" QEMU_TARGET="mips64-softmmu"
BUILDMAN="^qemu_mips64$"
TOOLCHAIN="mips" TOOLCHAIN="mips"
- name: "test/py qemu_mips64el" - name: "test/py qemu_mips64el"
env: env:
- TEST_PY_BD="qemu_mips64el" - TEST_PY_BD="qemu_mips64el"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="mips64el-softmmu" QEMU_TARGET="mips64el-softmmu"
BUILDMAN="^qemu_mips64el$"
TOOLCHAIN="mips" TOOLCHAIN="mips"
- name: "test/py qemu-ppce500" - name: "test/py qemu-ppce500"
env: env:
- TEST_PY_BD="qemu-ppce500" - TEST_PY_BD="qemu-ppce500"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="ppc-softmmu" QEMU_TARGET="ppc-softmmu"
BUILDMAN="^qemu-ppce500$"
TOOLCHAIN="powerpc" TOOLCHAIN="powerpc"
- name: "test/py qemu-riscv32"
env:
- TEST_PY_BD="qemu-riscv32"
TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="riscv32-softmmu"
TOOLCHAIN="riscv"
- name: "test/py qemu-riscv64" - name: "test/py qemu-riscv64"
env: env:
- TEST_PY_BD="qemu-riscv64" - TEST_PY_BD="qemu-riscv64"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="riscv64-softmmu" QEMU_TARGET="riscv64-softmmu"
BUILDMAN="^qemu-riscv64$" TOOLCHAIN="riscv"
- name: "test/py qemu-riscv32_spl"
env:
- TEST_PY_BD="qemu-riscv32_spl"
TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="riscv32-softmmu"
TOOLCHAIN="riscv"
- name: "test/py qemu-riscv64_spl"
env:
- TEST_PY_BD="qemu-riscv64_spl"
TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="riscv64-softmmu"
TOOLCHAIN="riscv" TOOLCHAIN="riscv"
- name: "test/py qemu-x86" - name: "test/py qemu-x86"
env: env:
- TEST_PY_BD="qemu-x86" - TEST_PY_BD="qemu-x86"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="i386-softmmu" QEMU_TARGET="i386-softmmu"
BUILDMAN="^qemu-x86$"
TOOLCHAIN="i386" TOOLCHAIN="i386"
BUILD_ROM="yes" BUILD_ROM="yes"
- name: "test/py qemu-x86_64" - name: "test/py qemu-x86_64"
@ -501,30 +597,26 @@ matrix:
- TEST_PY_BD="qemu-x86_64" - TEST_PY_BD="qemu-x86_64"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="x86_64-softmmu" QEMU_TARGET="x86_64-softmmu"
BUILDMAN="^qemu-x86_64$"
TOOLCHAIN="i386" TOOLCHAIN="i386"
BUILD_ROM="yes" BUILD_ROM="yes"
- name: "test/py zynq_zc702" - name: "test/py xilinx_zynq_virt"
env: env:
- TEST_PY_BD="zynq_zc702" - TEST_PY_BD="xilinx_zynq_virt"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="arm-softmmu" QEMU_TARGET="arm-softmmu"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
BUILDMAN="^zynq_zc702$"
- name: "test/py xilinx_versal_virt" - name: "test/py xilinx_versal_virt"
env: env:
- TEST_PY_BD="xilinx_versal_virt" - TEST_PY_BD="xilinx_versal_virt"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="aarch64-softmmu" QEMU_TARGET="aarch64-softmmu"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
BUILDMAN="^xilinx_versal_virt$"
- name: "test/py xtfpga" - name: "test/py xtfpga"
env: env:
- TEST_PY_BD="xtfpga" - TEST_PY_BD="xtfpga"
TEST_PY_TEST_SPEC="not sleep" TEST_PY_TEST_SPEC="not sleep"
QEMU_TARGET="xtensa-softmmu" QEMU_TARGET="xtensa-softmmu"
TEST_PY_ID="--id qemu" TEST_PY_ID="--id qemu"
BUILDMAN="^xtfpga$"
TOOLCHAIN="xtensa-dc233c-elf" TOOLCHAIN="xtensa-dc233c-elf"
# TODO make it perfect ;-r # TODO make it perfect ;-r

10
Kconfig
View file

@ -3,11 +3,7 @@
# see the file Documentation/kbuild/kconfig-language.txt in the # see the file Documentation/kbuild/kconfig-language.txt in the
# Linux kernel source tree. # Linux kernel source tree.
# #
mainmenu "U-Boot $UBOOTVERSION Configuration" mainmenu "U-Boot $(UBOOTVERSION) Configuration"
config UBOOTVERSION
string
option env="UBOOTVERSION"
# Allow defaults in arch-specific code to override any given here # Allow defaults in arch-specific code to override any given here
source "arch/Kconfig" source "arch/Kconfig"
@ -360,6 +356,8 @@ config FIT_SIGNATURE
depends on DM depends on DM
select HASH select HASH
select RSA select RSA
select RSA_VERIFY
select IMAGE_SIGN_INFO
help help
This option enables signature verification of FIT uImages, This option enables signature verification of FIT uImages,
using a hash signed and verified using RSA. If using a hash signed and verified using RSA. If
@ -448,6 +446,8 @@ config SPL_FIT_SIGNATURE
depends on SPL_DM depends on SPL_DM
select SPL_FIT select SPL_FIT
select SPL_RSA select SPL_RSA
select SPL_RSA_VERIFY
select IMAGE_SIGN_INFO
config SPL_LOAD_FIT config SPL_LOAD_FIT
bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)" bool "Enable SPL loading U-Boot as a FIT (basic fitImage features)"

View file

@ -447,6 +447,7 @@ M: Michal Simek <michal.simek@xilinx.com>
S: Maintained S: Maintained
T: git https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze.git T: git https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze.git
F: arch/arm/mach-versal/ F: arch/arm/mach-versal/
F: drivers/watchdog/xilinx_wwdt.c
N: (?<!uni)versal N: (?<!uni)versal
ARM VERSATILE EXPRESS DRIVERS ARM VERSATILE EXPRESS DRIVERS

View file

@ -271,11 +271,17 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \ else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi) else echo sh; fi ; fi)
HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null)
HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null)
HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null)
HOSTCC = cc HOSTCC = cc
HOSTCXX = c++ HOSTCXX = c++
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \ KBUILD_HOSTCFLAGS := -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \
$(if $(CONFIG_TOOLS_DEBUG),-g) $(if $(CONFIG_TOOLS_DEBUG),-g) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
HOSTCXXFLAGS = -O2 KBUILD_HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS)
# With the move to GCC 6, we have implicitly upgraded our language # With the move to GCC 6, we have implicitly upgraded our language
# standard to GNU11 (see https://gcc.gnu.org/gcc-5/porting_to.html). # standard to GNU11 (see https://gcc.gnu.org/gcc-5/porting_to.html).
@ -284,11 +290,11 @@ HOSTCXXFLAGS = -O2
# these that our host tools are GNU11 (i.e. C11 w/ GNU extensions). # these that our host tools are GNU11 (i.e. C11 w/ GNU extensions).
CSTD_FLAG := -std=gnu11 CSTD_FLAG := -std=gnu11
ifeq ($(HOSTOS),linux) ifeq ($(HOSTOS),linux)
HOSTCFLAGS += $(CSTD_FLAG) KBUILD_HOSTCFLAGS += $(CSTD_FLAG)
endif endif
ifeq ($(HOSTOS),cygwin) ifeq ($(HOSTOS),cygwin)
HOSTCFLAGS += -ansi KBUILD_HOSTCFLAGS += -ansi
endif endif
# Mac OS X / Darwin's C preprocessor is Apple specific. It # Mac OS X / Darwin's C preprocessor is Apple specific. It
@ -315,17 +321,17 @@ os_x_after = $(shell if [ $(DARWIN_MAJOR_VERSION) -ge $(1) -a \
# Snow Leopards build environment has no longer restrictions as described above # Snow Leopards build environment has no longer restrictions as described above
HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") KBUILD_HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
# since Lion (10.7) ASLR is on by default, but we use linker generated lists # since Lion (10.7) ASLR is on by default, but we use linker generated lists
# in some host tools which is a problem then ... so disable ASLR for these # in some host tools which is a problem then ... so disable ASLR for these
# tools # tools
HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie") KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")
# macOS Mojave (10.14.X) # macOS Mojave (10.14.X)
# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple" # Undefined symbols for architecture x86_64: "_PyArg_ParseTuple"
HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "") KBUILD_HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "")
endif endif
# Decide whether to build built-in, modular, or both. # Decide whether to build built-in, modular, or both.
@ -417,6 +423,23 @@ KBUILD_CFLAGS := -Wall -Wstrict-prototypes \
-fno-builtin -ffreestanding $(CSTD_FLAG) -fno-builtin -ffreestanding $(CSTD_FLAG)
KBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing KBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing
KBUILD_AFLAGS := -D__ASSEMBLY__ KBUILD_AFLAGS := -D__ASSEMBLY__
KBUILD_LDFLAGS :=
ifeq ($(cc-name),clang)
ifneq ($(CROSS_COMPILE),)
CLANG_TARGET := --target=$(notdir $(CROSS_COMPILE:%-=%))
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD)))
CLANG_PREFIX := --prefix=$(GCC_TOOLCHAIN_DIR)
GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..)
endif
ifneq ($(GCC_TOOLCHAIN),)
CLANG_GCC_TC := --gcc-toolchain=$(GCC_TOOLCHAIN)
endif
KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC) $(CLANG_PREFIX)
KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC) $(CLANG_PREFIX)
KBUILD_CFLAGS += $(call cc-option, -no-integrated-as)
KBUILD_AFLAGS += $(call cc-option, -no-integrated-as)
endif
# Don't generate position independent code # Don't generate position independent code
KBUILD_CFLAGS += $(call cc-option,-fno-PIE) KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
@ -428,14 +451,16 @@ UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SU
export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC export CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
export CPP AR NM LDR STRIP OBJCOPY OBJDUMP export CPP AR NM LDR STRIP OBJCOPY OBJDUMP KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
export MAKE LEX YACC AWK PERL PYTHON PYTHON2 PYTHON3 export MAKE LEX YACC AWK PERL PYTHON PYTHON2 PYTHON3
export HOSTCXX HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS export HOSTCXX KBUILD_HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS
export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
export KBUILD_CFLAGS KBUILD_AFLAGS export KBUILD_CFLAGS KBUILD_AFLAGS
export CC_VERSION_TEXT := $(shell $(CC) --version | head -n 1)
# When compiling out-of-tree modules, put MODVERDIR in the module # When compiling out-of-tree modules, put MODVERDIR in the module
# tree rather than in the kernel tree. The kernel tree might # tree rather than in the kernel tree. The kernel tree might
# even be read-only. # even be read-only.
@ -483,6 +508,7 @@ endif
version_h := include/generated/version_autogenerated.h version_h := include/generated/version_autogenerated.h
timestamp_h := include/generated/timestamp_autogenerated.h timestamp_h := include/generated/timestamp_autogenerated.h
defaultenv_h := include/generated/defaultenv_autogenerated.h defaultenv_h := include/generated/defaultenv_autogenerated.h
dt_h := include/generated/dt.h
no-dot-config-targets := clean clobber mrproper distclean \ no-dot-config-targets := clean clobber mrproper distclean \
help %docs check% coccicheck \ help %docs check% coccicheck \
@ -654,6 +680,9 @@ endif
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
# disable stringop warnings in gcc 8+
KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
# change __FILE__ to the relative path from the srctree # change __FILE__ to the relative path from the srctree
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
@ -678,7 +707,19 @@ ifeq ($(cc-name),clang)
KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
KBUILD_CFLAGS += $(call cc-disable-warning, gnu) KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
# Quiet clang warning: comparison of unsigned expression < 0 is always false
KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
# source of a reference will be _MergedGlobals and not on of the whitelisted names.
# See modpost pattern 2
KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior) KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
else
# These warnings generated too much noise in a regular build.
# Use make W=1 to enable them (see scripts/Makefile.extrawarn)
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
endif endif
# turn jbsr into jsr for m68k # turn jbsr into jsr for m68k
@ -710,7 +751,6 @@ UBOOTINCLUDE := \
-include $(srctree)/include/linux/kconfig.h -include $(srctree)/include/linux/kconfig.h
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)
# FIX ME # FIX ME
cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
@ -924,6 +964,12 @@ ifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),)
LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
endif endif
# insure the checker run with the right endianness
CHECKFLAGS += $(if $(CONFIG_CPU_BIG_ENDIAN),-mbig-endian,-mlittle-endian)
# the checker needs the correct machine size
CHECKFLAGS += $(if $(CONFIG_64BIT),-m64,-m32)
# Normally we fill empty space with 0xff # Normally we fill empty space with 0xff
quiet_cmd_objcopy = OBJCOPY $@ quiet_cmd_objcopy = OBJCOPY $@
cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \ cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \
@ -1683,7 +1729,7 @@ ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink)
# Rule to link u-boot # Rule to link u-boot
# May be overridden by arch/$(ARCH)/config.mk # May be overridden by arch/$(ARCH)/config.mk
quiet_cmd_u-boot__ ?= LD $@ quiet_cmd_u-boot__ ?= LD $@
cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ cmd_u-boot__ ?= $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
-T u-boot.lds $(u-boot-init) \ -T u-boot.lds $(u-boot-init) \
--start-group $(u-boot-main) --end-group \ --start-group $(u-boot-main) --end-group \
$(PLATFORM_LIBS) -Map u-boot.map; \ $(PLATFORM_LIBS) -Map u-boot.map; \
@ -1767,7 +1813,7 @@ endif
# prepare2 creates a makefile if using a separate output directory # prepare2 creates a makefile if using a separate output directory
prepare2: prepare3 outputmakefile cfg prepare2: prepare3 outputmakefile cfg
prepare1: prepare2 $(version_h) $(timestamp_h) \ prepare1: prepare2 $(version_h) $(timestamp_h) $(dt_h) \
include/config/auto.conf include/config/auto.conf
ifeq ($(wildcard $(LDSCRIPT)),) ifeq ($(wildcard $(LDSCRIPT)),)
@echo >&2 " Could not find linker script." @echo >&2 " Could not find linker script."
@ -1833,12 +1879,23 @@ define filechk_defaultenv.h
xxd -i ; echo ", 0x00" ; ) xxd -i ; echo ", 0x00" ; )
endef endef
define filechk_dt.h
(if test -n "$${DEVICE_TREE}"; then \
echo \#define DEVICE_TREE \"$(DEVICE_TREE)\"; \
else \
echo \#define DEVICE_TREE CONFIG_DEFAULT_DEVICE_TREE; \
fi)
endef
$(version_h): include/config/uboot.release FORCE $(version_h): include/config/uboot.release FORCE
$(call filechk,version.h) $(call filechk,version.h)
$(timestamp_h): $(srctree)/Makefile FORCE $(timestamp_h): $(srctree)/Makefile FORCE
$(call filechk,timestamp.h) $(call filechk,timestamp.h)
$(dt_h): $(srctree)/Makefile FORCE
$(call filechk,dt.h)
$(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE $(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE
$(call filechk,defaultenv.h) $(call filechk,defaultenv.h)
@ -2195,6 +2252,6 @@ endif # skip-makefile
PHONY += FORCE PHONY += FORCE
FORCE: FORCE:
# Declare the contents of the .PHONY variable as phony. We keep that # Declare the contents of the PHONY variable as phony. We keep that
# information in a variable so we can use it in if_changed and friends. # information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY) .PHONY: $(PHONY)

View file

@ -9,12 +9,12 @@ CONFIG_SYS_BIG_ENDIAN = 1
endif endif
ifdef CONFIG_SYS_LITTLE_ENDIAN ifdef CONFIG_SYS_LITTLE_ENDIAN
PLATFORM_LDFLAGS += -EL KBUILD_LDFLAGS += -EL
PLATFORM_CPPFLAGS += -mlittle-endian PLATFORM_CPPFLAGS += -mlittle-endian
endif endif
ifdef CONFIG_SYS_BIG_ENDIAN ifdef CONFIG_SYS_BIG_ENDIAN
PLATFORM_LDFLAGS += -EB KBUILD_LDFLAGS += -EB
PLATFORM_CPPFLAGS += -mbig-endian PLATFORM_CPPFLAGS += -mbig-endian
endif endif

View file

@ -147,7 +147,9 @@ dtb-$(CONFIG_ARCH_MESON) += \
meson-gxl-s805x-libretech-ac.dtb \ meson-gxl-s805x-libretech-ac.dtb \
meson-gxl-s905x-libretech-cc.dtb \ meson-gxl-s905x-libretech-cc.dtb \
meson-gxl-s905x-khadas-vim.dtb \ meson-gxl-s905x-khadas-vim.dtb \
meson-gxl-s905d-libretech-pc.dtb \
meson-gxm-khadas-vim2.dtb \ meson-gxm-khadas-vim2.dtb \
meson-gxm-s912-libretech-pc.dtb \
meson-axg-s400.dtb \ meson-axg-s400.dtb \
meson-g12a-u200.dtb \ meson-g12a-u200.dtb \
meson-g12a-sei510.dtb \ meson-g12a-sei510.dtb \
@ -277,6 +279,7 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
zynqmp-zcu102-revA.dtb \ zynqmp-zcu102-revA.dtb \
zynqmp-zcu102-revB.dtb \ zynqmp-zcu102-revB.dtb \
zynqmp-zcu102-rev1.0.dtb \ zynqmp-zcu102-rev1.0.dtb \
zynqmp-zcu102-rev1.1.dtb \
zynqmp-zcu104-revA.dtb \ zynqmp-zcu104-revA.dtb \
zynqmp-zcu104-revC.dtb \ zynqmp-zcu104-revC.dtb \
zynqmp-zcu106-revA.dtb \ zynqmp-zcu106-revA.dtb \

View file

@ -53,6 +53,8 @@
bkl-pwm = <&pwmbacklight>; bkl-pwm = <&pwmbacklight>;
bkl-tps = <&tps_bl>; bkl-tps = <&tps_bl>;
u-boot,dm-pre-reloc;
panel-info { panel-info {
ac-bias = <255>; ac-bias = <255>;
ac-bias-intrpt = <0>; ac-bias-intrpt = <0>;

View file

@ -53,6 +53,8 @@
bkl-pwm = <&pwmbacklight>; bkl-pwm = <&pwmbacklight>;
bkl-tps = <&tps_bl>; bkl-tps = <&tps_bl>;
u-boot,dm-pre-reloc;
panel-info { panel-info {
ac-bias = <255>; ac-bias = <255>;
ac-bias-intrpt = <0>; ac-bias-intrpt = <0>;

View file

@ -54,6 +54,8 @@
bkl-pwm = <&pwmbacklight>; bkl-pwm = <&pwmbacklight>;
bkl-tps = <&tps_bl>; bkl-tps = <&tps_bl>;
u-boot,dm-pre-reloc;
panel-info { panel-info {
ac-bias = <255>; ac-bias = <255>;
ac-bias-intrpt = <0>; ac-bias-intrpt = <0>;

View file

@ -59,6 +59,7 @@
/*backlight = <&tps_bl>; */ /*backlight = <&tps_bl>; */
compatible = "ti,tilcdc,panel"; compatible = "ti,tilcdc,panel";
status = "okay"; status = "okay";
u-boot,dm-pre-reloc;
panel-info { panel-info {
ac-bias = <255>; ac-bias = <255>;

View file

@ -79,6 +79,8 @@
backlight = <&tps_bl>; backlight = <&tps_bl>;
u-boot,dm-pre-reloc;
panel-info { panel-info {
ac-bias = <255>; ac-bias = <255>;
ac-bias-intrpt = <0>; ac-bias-intrpt = <0>;

View file

@ -3,6 +3,12 @@
* Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/ * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
*/ */
/ {
panel {
u-boot,dm-pre-reloc;
};
};
&mmc3 { &mmc3 {
status = "disabled"; status = "disabled";

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* am335x-evmsk U-Boot Additions
*
* Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
*/
/ {
panel {
u-boot,dm-pre-reloc;
};
};

View file

@ -8,6 +8,10 @@
ocp { ocp {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
panel {
u-boot,dm-pre-reloc;
};
}; };
&l4_wkup { &l4_wkup {

View file

@ -7,6 +7,10 @@
ocp { ocp {
u-boot,dm-pre-reloc; u-boot,dm-pre-reloc;
}; };
panel {
u-boot,dm-pre-reloc;
};
}; };
&l4_wkup { &l4_wkup {

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* am335x-pxm50 U-Boot Additions
*
* Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
*/
/ {
panel {
u-boot,dm-pre-reloc;
};
};

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* am335x-rut U-Boot Additions
*
* Copyright (C) 2020 Dario Binacchi <dariobin@libero.it>
*/
/ {
panel {
u-boot,dm-pre-reloc;
};
};

View file

@ -2,7 +2,7 @@
/* /*
* dts file for Avnet Ultra96 rev1 * dts file for Avnet Ultra96 rev1
* *
* (C) Copyright 2018, Xilinx, Inc. * (C) Copyright 2018 - 2020, Xilinx, Inc.
* *
* Michal Simek <michal.simek@xilinx.com> * Michal Simek <michal.simek@xilinx.com>
*/ */

View file

@ -14,6 +14,10 @@
nand { nand {
compatible = "ti,davinci-nand"; compatible = "ti,davinci-nand";
}; };
panel {
u-boot,dm-pre-reloc;
};
}; };
&eth0 { &eth0 {

View file

@ -64,4 +64,42 @@
loczrama = <1>; loczrama = <1>;
}; };
}; };
fss: fss@47000000 {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
ospi0: spi@47040000 {
compatible = "ti,am654-ospi", "cdns,qspi-nor";
reg = <0x0 0x47040000 0x0 0x100>,
<0x5 0x00000000 0x1 0x0000000>;
interrupts = <GIC_SPI 552 IRQ_TYPE_LEVEL_HIGH>;
cdns,fifo-depth = <256>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x0>;
clocks = <&k3_clks 248 0>;
assigned-clocks = <&k3_clks 248 0>;
assigned-clock-parents = <&k3_clks 248 2>;
assigned-clock-rates = <166666666>;
power-domains = <&k3_pds 248 TI_SCI_PD_EXCLUSIVE>;
#address-cells = <1>;
#size-cells = <0>;
};
ospi1: spi@47050000 {
compatible = "ti,am654-ospi", "cdns,qspi-nor";
reg = <0x0 0x47050000 0x0 0x100>,
<0x7 0x00000000 0x1 0x00000000>;
interrupts = <GIC_SPI 553 IRQ_TYPE_LEVEL_HIGH>;
cdns,fifo-depth = <256>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x0>;
clocks = <&k3_clks 249 6>;
power-domains = <&k3_pds 249 TI_SCI_PD_EXCLUSIVE>;
#address-cells = <1>;
#size-cells = <0>;
};
};
}; };

View file

@ -30,6 +30,8 @@
i2c3 = &main_i2c1; i2c3 = &main_i2c1;
i2c4 = &main_i2c2; i2c4 = &main_i2c2;
i2c5 = &main_i2c3; i2c5 = &main_i2c3;
spi0 = &ospi0;
spi1 = &ospi1;
}; };
chosen { }; chosen { };
@ -79,7 +81,11 @@
<0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>, <0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>,
<0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>, <0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>,
<0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>, <0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>,
<0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>; <0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>,
<0x00 0x50000000 0x00 0x50000000 0x00 0x8000000>,
<0x00 0x70000000 0x00 0x70000000 0x00 0x200000>,
<0x05 0x00000000 0x05 0x00000000 0x01 0x0000000>,
<0x07 0x00000000 0x07 0x00000000 0x01 0x0000000>;
cbass_mcu: interconnect@28380000 { cbass_mcu: interconnect@28380000 {
compatible = "simple-bus"; compatible = "simple-bus";
@ -93,7 +99,10 @@
<0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>, /* WKUP */ <0x00 0x42040000 0x00 0x42040000 0x00 0x03ac2400>, /* WKUP */
<0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>, /* MMRs, remaining NAVSS */ <0x00 0x45100000 0x00 0x45100000 0x00 0x00c24000>, /* MMRs, remaining NAVSS */
<0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>, /* CPSW */ <0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>, /* CPSW */
<0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>; /* OSPI space 1 */ <0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>, /* OSPI space 1 */
<0x00 0x50000000 0x00 0x50000000 0x00 0x8000000>, /* FSS OSPI0 data region 1 */
<0x05 0x00000000 0x05 0x00000000 0x01 0x0000000>, /* FSS OSPI0 data region 3*/
<0x07 0x00000000 0x07 0x00000000 0x01 0x0000000>; /* FSS OSPI1 data region 3*/
cbass_wakeup: interconnect@42040000 { cbass_wakeup: interconnect@42040000 {
compatible = "simple-bus"; compatible = "simple-bus";

View file

@ -52,6 +52,7 @@
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
u-boot,dm-spl;
ti,sci-dev-id = <119>; ti,sci-dev-id = <119>;
@ -68,6 +69,7 @@
ti,dma-ring-reset-quirk; ti,dma-ring-reset-quirk;
ti,sci = <&dmsc>; ti,sci = <&dmsc>;
ti,sci-dev-id = <195>; ti,sci-dev-id = <195>;
u-boot,dm-spl;
}; };
mcu_udmap: udmap@285c0000 { mcu_udmap: udmap@285c0000 {
@ -90,6 +92,7 @@
<0x4>; /* RX_CHAN */ <0x4>; /* RX_CHAN */
ti,sci-rm-range-rflow = <0x5>; /* GP RFLOW */ ti,sci-rm-range-rflow = <0x5>; /* GP RFLOW */
dma-coherent; dma-coherent;
u-boot,dm-spl;
}; };
}; };
@ -314,6 +317,10 @@
AM65X_WKUP_IOPAD(0x0088, PIN_INPUT, 0) /* (L4) MCU_MDIO0_MDIO */ AM65X_WKUP_IOPAD(0x0088, PIN_INPUT, 0) /* (L4) MCU_MDIO0_MDIO */
>; >;
}; };
mcu-fss0-ospi0-pins-default {
u-boot,dm-spl;
};
}; };
&main_uart0 { &main_uart0 {
@ -374,3 +381,15 @@
&usb1 { &usb1 {
dr_mode = "peripheral"; dr_mode = "peripheral";
}; };
&fss {
u-boot,dm-spl;
};
&ospi0 {
u-boot,dm-spl;
flash@0{
u-boot,dm-spl;
};
};

View file

@ -64,6 +64,29 @@
AM65X_IOPAD(0x02c0, PIN_OUTPUT, 0) /* (AC8) USB1_DRVVBUS */ AM65X_IOPAD(0x02c0, PIN_OUTPUT, 0) /* (AC8) USB1_DRVVBUS */
>; >;
}; };
main_i2c2_pins_default: main-i2c2-pins-default {
pinctrl-single,pins = <
AM65X_IOPAD(0x0074, PIN_INPUT, 5) /* (T27) GPMC0_CSn3.I2C2_SCL */
AM65X_IOPAD(0x0070, PIN_INPUT, 5) /* (R25) GPMC0_CSn2.I2C2_SDA */
>;
};
};
&main_pmx1 {
main_i2c0_pins_default: main-i2c0-pins-default {
pinctrl-single,pins = <
AM65X_IOPAD(0x0000, PIN_INPUT, 0) /* (D20) I2C0_SCL */
AM65X_IOPAD(0x0004, PIN_INPUT, 0) /* (C21) I2C0_SDA */
>;
};
main_i2c1_pins_default: main-i2c1-pins-default {
pinctrl-single,pins = <
AM65X_IOPAD(0x0008, PIN_INPUT, 0) /* (B21) I2C1_SCL */
AM65X_IOPAD(0x000c, PIN_INPUT, 0) /* (E21) I2C1_SDA */
>;
};
}; };
&wkup_pmx0 { &wkup_pmx0 {
@ -73,6 +96,22 @@
AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT, 0) /* (AD6) WKUP_I2C0_SDA */ AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT, 0) /* (AD6) WKUP_I2C0_SDA */
>; >;
}; };
mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins_default {
pinctrl-single,pins = <
AM65X_WKUP_IOPAD(0x0000, PIN_OUTPUT, 0) /* (V1) MCU_OSPI0_CLK */
AM65X_WKUP_IOPAD(0x0008, PIN_INPUT, 0) /* (U2) MCU_OSPI0_DQS */
AM65X_WKUP_IOPAD(0x000c, PIN_INPUT, 0) /* (U4) MCU_OSPI0_D0 */
AM65X_WKUP_IOPAD(0x0010, PIN_INPUT, 0) /* (U5) MCU_OSPI0_D1 */
AM65X_WKUP_IOPAD(0x0014, PIN_INPUT, 0) /* (T2) MCU_OSPI0_D2 */
AM65X_WKUP_IOPAD(0x0018, PIN_INPUT, 0) /* (T3) MCU_OSPI0_D3 */
AM65X_WKUP_IOPAD(0x001c, PIN_INPUT, 0) /* (T4) MCU_OSPI0_D4 */
AM65X_WKUP_IOPAD(0x0020, PIN_INPUT, 0) /* (T5) MCU_OSPI0_D5 */
AM65X_WKUP_IOPAD(0x0024, PIN_INPUT, 0) /* (R2) MCU_OSPI0_D6 */
AM65X_WKUP_IOPAD(0x0028, PIN_INPUT, 0) /* (R3) MCU_OSPI0_D7 */
AM65X_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0) /* (R4) MCU_OSPI0_CSn0 */
>;
};
}; };
&sdhci0 { &sdhci0 {
@ -96,6 +135,31 @@
}; };
}; };
&main_i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c0_pins_default>;
clock-frequency = <400000>;
pca9555: gpio@21 {
compatible = "nxp,pca9555";
reg = <0x21>;
gpio-controller;
#gpio-cells = <2>;
};
};
&main_i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c1_pins_default>;
clock-frequency = <400000>;
};
&main_i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c2_pins_default>;
clock-frequency = <400000>;
};
&dwc3_1 { &dwc3_1 {
status = "okay"; status = "okay";
}; };
@ -117,3 +181,23 @@
&usb0_phy { &usb0_phy {
status = "disabled"; status = "disabled";
}; };
&ospi0 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <8>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <0>;
#address-cells = <1>;
#size-cells = <1>;
};
};

View file

@ -179,6 +179,22 @@
AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT, 0) /* (AD6) WKUP_I2C0_SDA */ AM65X_WKUP_IOPAD(0x00e4, PIN_INPUT, 0) /* (AD6) WKUP_I2C0_SDA */
>; >;
}; };
mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins_default {
pinctrl-single,pins = <
AM65X_WKUP_IOPAD(0x0000, PIN_OUTPUT, 0) /* (V1) MCU_OSPI0_CLK */
AM65X_WKUP_IOPAD(0x0008, PIN_INPUT, 0) /* (U2) MCU_OSPI0_DQS */
AM65X_WKUP_IOPAD(0x000c, PIN_INPUT, 0) /* (U4) MCU_OSPI0_D0 */
AM65X_WKUP_IOPAD(0x0010, PIN_INPUT, 0) /* (U5) MCU_OSPI0_D1 */
AM65X_WKUP_IOPAD(0x0014, PIN_INPUT, 0) /* (T2) MCU_OSPI0_D2 */
AM65X_WKUP_IOPAD(0x0018, PIN_INPUT, 0) /* (T3) MCU_OSPI0_D3 */
AM65X_WKUP_IOPAD(0x001c, PIN_INPUT, 0) /* (T4) MCU_OSPI0_D4 */
AM65X_WKUP_IOPAD(0x0020, PIN_INPUT, 0) /* (T5) MCU_OSPI0_D5 */
AM65X_WKUP_IOPAD(0x0024, PIN_INPUT, 0) /* (R2) MCU_OSPI0_D6 */
AM65X_WKUP_IOPAD(0x0028, PIN_INPUT, 0) /* (R3) MCU_OSPI0_D7 */
AM65X_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0) /* (R4) MCU_OSPI0_CSn0 */
>;
};
}; };
&main_pmx0 { &main_pmx0 {
@ -239,3 +255,26 @@
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };
&ospi0 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
reg = <0x0 0x47040000 0x0 0x100>,
<0x0 0x50000000 0x0 0x8000000>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <8>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <0>;
#address-cells = <1>;
#size-cells = <1>;
};
};

View file

@ -349,3 +349,31 @@
&exp2 { &exp2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
&mcu_fss0_ospi0_pins_default {
u-boot,dm-spl;
};
&fss {
u-boot,dm-spl;
};
&ospi0 {
u-boot,dm-spl;
flash@0 {
u-boot,dm-spl;
};
};
&ospi1 {
u-boot,dm-spl;
flash@0 {
u-boot,dm-spl;
};
};
&mcu_fss0_ospi1_pins_default {
u-boot,dm-spl;
};

View file

@ -123,6 +123,19 @@
J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */ J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */
>; >;
}; };
mcu_fss0_ospi1_pins_default: mcu-fss0-ospi1-pins-default {
pinctrl-single,pins = <
J721E_WKUP_IOPAD(0x34, PIN_OUTPUT, 0) /* (F22) MCU_OSPI1_CLK */
J721E_WKUP_IOPAD(0x50, PIN_OUTPUT, 0) /* (C22) MCU_OSPI1_CSn0 */
J721E_WKUP_IOPAD(0x40, PIN_INPUT, 0) /* (D22) MCU_OSPI1_D0 */
J721E_WKUP_IOPAD(0x44, PIN_INPUT, 0) /* (G22) MCU_OSPI1_D1 */
J721E_WKUP_IOPAD(0x48, PIN_INPUT, 0) /* (D23) MCU_OSPI1_D2 */
J721E_WKUP_IOPAD(0x4c, PIN_INPUT, 0) /* (C23) MCU_OSPI1_D3 */
J721E_WKUP_IOPAD(0x3c, PIN_INPUT, 0) /* (B23) MCU_OSPI1_DQS */
J721E_WKUP_IOPAD(0x38, PIN_INPUT, 0) /* (A23) MCU_OSPI1_LBCLKO */
>;
};
}; };
&usbss0 { &usbss0 {
@ -172,3 +185,23 @@
#gpio-cells = <2>; #gpio-cells = <2>;
}; };
}; };
&ospi1 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <4>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <2>;
#address-cells = <1>;
#size-cells = <1>;
};
};

View file

@ -143,6 +143,39 @@
assigned-clocks = <&k3_clks 102 0>; assigned-clocks = <&k3_clks 102 0>;
assigned-clock-rates = <250000000>; assigned-clock-rates = <250000000>;
}; };
ospi0: spi@47040000 {
compatible = "ti,am654-ospi";
reg = <0x0 0x47040000 0x0 0x100>,
<0x5 0x00000000 0x1 0x0000000>;
interrupts = <GIC_SPI 840 IRQ_TYPE_LEVEL_HIGH>;
cdns,fifo-depth = <256>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x0>;
clocks = <&k3_clks 103 0>;
assigned-clocks = <&k3_clks 103 0>;
assigned-clock-parents = <&k3_clks 103 2>;
assigned-clock-rates = <166666666>;
power-domains = <&k3_pds 103 TI_SCI_PD_EXCLUSIVE>;
#address-cells = <1>;
#size-cells = <0>;
};
ospi1: spi@47050000 {
compatible = "ti,am654-ospi";
reg = <0x0 0x47050000 0x0 0x100>,
<0x7 0x00000000 0x1 0x00000000>;
interrupts = <GIC_SPI 841 IRQ_TYPE_LEVEL_HIGH>;
cdns,fifo-depth = <256>;
cdns,fifo-width = <4>;
cdns,trigger-address = <0x0>;
clocks = <&k3_clks 104 0>;
assigned-clocks = <&k3_clks 104 0>;
assigned-clock-rates = <133333333>;
power-domains = <&k3_pds 104 TI_SCI_PD_EXCLUSIVE>;
#address-cells = <1>;
#size-cells = <0>;
};
}; };
mcu_i2c0: i2c@40b00000 { mcu_i2c0: i2c@40b00000 {

View file

@ -0,0 +1,34 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/
*/
/ {
chosen {
firmware-loader = &fs_loader0;
};
fs_loader0: fs_loader@0 {
u-boot,dm-pre-reloc;
compatible = "u-boot,fs-loader";
};
};
&main_r5fss0 {
u-boot,dm-spl;
};
&main_r5fss0_core0 {
u-boot,dm-spl;
};
&main_r5fss0_core1 {
u-boot,dm-spl;
};
&tps659413a {
esm: esm {
compatible = "ti,tps659413-esm";
u-boot,dm-spl;
};
};

View file

@ -13,6 +13,8 @@
aliases { aliases {
remoteproc0 = &sysctrler; remoteproc0 = &sysctrler;
remoteproc1 = &a72_0; remoteproc1 = &a72_0;
remoteproc2 = &main_r5fss0_core0;
remoteproc3 = &main_r5fss0_core1;
}; };
chosen { chosen {
@ -75,6 +77,15 @@
}; };
}; };
&cbass_main {
main_esm: esm@700000 {
compatible = "ti,j721e-esm";
reg = <0x0 0x700000 0x0 0x1000>;
ti,esm-pins = <344>, <345>;
u-boot,dm-spl;
};
};
&dmsc { &dmsc {
mboxes= <&mcu_secproxy 8>, <&mcu_secproxy 6>, <&mcu_secproxy 5>; mboxes= <&mcu_secproxy 8>, <&mcu_secproxy 6>, <&mcu_secproxy 5>;
mbox-names = "tx", "rx", "notify"; mbox-names = "tx", "rx", "notify";
@ -107,6 +118,36 @@
J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */ J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */
>; >;
}; };
mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins-default {
pinctrl-single,pins = <
J721E_WKUP_IOPAD(0x0000, PIN_OUTPUT, 0) /* MCU_OSPI0_CLK */
J721E_WKUP_IOPAD(0x0008, PIN_INPUT, 0) /* MCU_OSPI0_DQS */
J721E_WKUP_IOPAD(0x000c, PIN_INPUT, 0) /* MCU_OSPI0_D0 */
J721E_WKUP_IOPAD(0x0010, PIN_INPUT, 0) /* MCU_OSPI0_D1 */
J721E_WKUP_IOPAD(0x0014, PIN_INPUT, 0) /* MCU_OSPI0_D2 */
J721E_WKUP_IOPAD(0x0018, PIN_INPUT, 0) /* MCU_OSPI0_D3 */
J721E_WKUP_IOPAD(0x001c, PIN_INPUT, 0) /* MCU_OSPI0_D4 */
J721E_WKUP_IOPAD(0x0020, PIN_INPUT, 0) /* MCU_OSPI0_D5 */
J721E_WKUP_IOPAD(0x0024, PIN_INPUT, 0) /* MCU_OSPI0_D6 */
J721E_WKUP_IOPAD(0x0028, PIN_INPUT, 0) /* MCU_OSPI0_D7 */
J721E_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0) /* MCU_OSPI0_CSn0 */
>;
};
mcu_fss0_ospi1_pins_default: mcu-fss0-ospi1-pins-default {
u-boot,dm-spl;
pinctrl-single,pins = <
J721E_WKUP_IOPAD(0x34, PIN_OUTPUT, 0) /* (F22) MCU_OSPI1_CLK */
J721E_WKUP_IOPAD(0x50, PIN_OUTPUT, 0) /* (C22) MCU_OSPI1_CSn0 */
J721E_WKUP_IOPAD(0x40, PIN_INPUT, 0) /* (D22) MCU_OSPI1_D0 */
J721E_WKUP_IOPAD(0x44, PIN_INPUT, 0) /* (G22) MCU_OSPI1_D1 */
J721E_WKUP_IOPAD(0x48, PIN_INPUT, 0) /* (D23) MCU_OSPI1_D2 */
J721E_WKUP_IOPAD(0x4c, PIN_INPUT, 0) /* (C23) MCU_OSPI1_D3 */
J721E_WKUP_IOPAD(0x3c, PIN_INPUT, 0) /* (B23) MCU_OSPI1_DQS */
J721E_WKUP_IOPAD(0x38, PIN_INPUT, 0) /* (A23) MCU_OSPI1_LBCLKO */
>;
};
}; };
&main_pmx0 { &main_pmx0 {
@ -256,4 +297,52 @@
}; };
}; };
&ospi0 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
reg = <0x0 0x47040000 0x0 0x100>,
<0x0 0x50000000 0x0 0x8000000>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <8>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <0>;
#address-cells = <1>;
#size-cells = <1>;
};
};
&ospi1 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
u-boot,dm-spl;
reg = <0x0 0x47050000 0x0 0x100>,
<0x0 0x58000000 0x0 0x8000000>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <4>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <2>;
#address-cells = <1>;
#size-cells = <1>;
u-boot,dm-spl;
};
};
#include "k3-j721e-common-proc-board-u-boot.dtsi" #include "k3-j721e-common-proc-board-u-boot.dtsi"

View file

@ -47,6 +47,22 @@
J721E_WKUP_IOPAD(0x28, PIN_INPUT, 1) /* (G21) MCU_OSPI0_D7.MCU_HYPERBUS0_DQ7 */ J721E_WKUP_IOPAD(0x28, PIN_INPUT, 1) /* (G21) MCU_OSPI0_D7.MCU_HYPERBUS0_DQ7 */
>; >;
}; };
mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins-default {
pinctrl-single,pins = <
J721E_WKUP_IOPAD(0x0000, PIN_OUTPUT, 0) /* MCU_OSPI0_CLK */
J721E_WKUP_IOPAD(0x0008, PIN_INPUT, 0) /* MCU_OSPI0_DQS */
J721E_WKUP_IOPAD(0x000c, PIN_INPUT, 0) /* MCU_OSPI0_D0 */
J721E_WKUP_IOPAD(0x0010, PIN_INPUT, 0) /* MCU_OSPI0_D1 */
J721E_WKUP_IOPAD(0x0014, PIN_INPUT, 0) /* MCU_OSPI0_D2 */
J721E_WKUP_IOPAD(0x0018, PIN_INPUT, 0) /* MCU_OSPI0_D3 */
J721E_WKUP_IOPAD(0x001c, PIN_INPUT, 0) /* MCU_OSPI0_D4 */
J721E_WKUP_IOPAD(0x0020, PIN_INPUT, 0) /* MCU_OSPI0_D5 */
J721E_WKUP_IOPAD(0x0024, PIN_INPUT, 0) /* MCU_OSPI0_D6 */
J721E_WKUP_IOPAD(0x0028, PIN_INPUT, 0) /* MCU_OSPI0_D7 */
J721E_WKUP_IOPAD(0x002c, PIN_OUTPUT, 0) /* MCU_OSPI0_CSn0 */
>;
};
}; };
&hbmc { &hbmc {
@ -61,3 +77,23 @@
reg = <0x0 0x0 0x4000000>; reg = <0x0 0x0 0x4000000>;
}; };
}; };
&ospi0 {
pinctrl-names = "default";
pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
flash@0{
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <8>;
spi-max-frequency = <40000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <0>;
#address-cells = <1>;
#size-cells = <1>;
};
};

View file

@ -40,6 +40,8 @@
i2c7 = &main_i2c4; i2c7 = &main_i2c4;
i2c8 = &main_i2c5; i2c8 = &main_i2c5;
i2c9 = &main_i2c6; i2c9 = &main_i2c6;
spi0 = &ospi0;
spi1 = &ospi1;
}; };
chosen { }; chosen { };
@ -135,6 +137,7 @@
#size-cells = <2>; #size-cells = <2>;
ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */ ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */
<0x00 0x00600000 0x00 0x00600000 0x00 0x00031100>, /* GPIO */ <0x00 0x00600000 0x00 0x00600000 0x00 0x00031100>, /* GPIO */
<0x00 0x00700000 0x00 0x00700000 0x00 0x00001000>, /* ESM */
<0x00 0x00900000 0x00 0x00900000 0x00 0x00012000>, /* serdes */ <0x00 0x00900000 0x00 0x00900000 0x00 0x00012000>, /* serdes */
<0x00 0x00A40000 0x00 0x00A40000 0x00 0x00000800>, /* timesync router */ <0x00 0x00A40000 0x00 0x00A40000 0x00 0x00000800>, /* timesync router */
<0x00 0x01000000 0x00 0x01000000 0x00 0x0af02400>, /* Most peripherals */ <0x00 0x01000000 0x00 0x01000000 0x00 0x0af02400>, /* Most peripherals */

View file

@ -60,7 +60,7 @@
serial1 = &uart_A; serial1 = &uart_A;
}; };
linein: audio-codec@0 { linein: audio-codec-0 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
compatible = "everest,es7241"; compatible = "everest,es7241";
VDDA-supply = <&vcc_3v3>; VDDA-supply = <&vcc_3v3>;
@ -70,7 +70,7 @@
sound-name-prefix = "Linein"; sound-name-prefix = "Linein";
}; };
lineout: audio-codec@1 { lineout: audio-codec-1 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
compatible = "everest,es7154"; compatible = "everest,es7154";
VDD-supply = <&vcc_3v3>; VDD-supply = <&vcc_3v3>;
@ -79,14 +79,14 @@
sound-name-prefix = "Lineout"; sound-name-prefix = "Lineout";
}; };
spdif_dit: audio-codec@2 { spdif_dit: audio-codec-2 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
compatible = "linux,spdif-dit"; compatible = "linux,spdif-dit";
status = "okay"; status = "okay";
sound-name-prefix = "DIT"; sound-name-prefix = "DIT";
}; };
dmics: audio-codec@3 { dmics: audio-codec-3 {
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
compatible = "dmic-codec"; compatible = "dmic-codec";
num-channels = <7>; num-channels = <7>;
@ -95,6 +95,13 @@
sound-name-prefix = "MIC"; sound-name-prefix = "MIC";
}; };
spdif_dir: audio-codec-4 {
#sound-dai-cells = <0>;
compatible = "linux,spdif-dir";
status = "okay";
sound-name-prefix = "DIR";
};
emmc_pwrseq: emmc-pwrseq { emmc_pwrseq: emmc-pwrseq {
compatible = "mmc-pwrseq-emmc"; compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
@ -249,6 +256,9 @@
"TODDR_A IN 2", "TDMIN_C OUT", "TODDR_A IN 2", "TDMIN_C OUT",
"TODDR_B IN 2", "TDMIN_C OUT", "TODDR_B IN 2", "TDMIN_C OUT",
"TODDR_C IN 2", "TDMIN_C OUT", "TODDR_C IN 2", "TDMIN_C OUT",
"TODDR_A IN 3", "SPDIFIN Capture",
"TODDR_B IN 3", "SPDIFIN Capture",
"TODDR_C IN 3", "SPDIFIN Capture",
"TODDR_A IN 4", "PDM Capture", "TODDR_A IN 4", "PDM Capture",
"TODDR_B IN 4", "PDM Capture", "TODDR_B IN 4", "PDM Capture",
"TODDR_C IN 4", "PDM Capture", "TODDR_C IN 4", "PDM Capture",
@ -272,31 +282,31 @@
<393216000>; <393216000>;
status = "okay"; status = "okay";
dai-link@0 { dai-link-0 {
sound-dai = <&frddr_a>; sound-dai = <&frddr_a>;
}; };
dai-link@1 { dai-link-1 {
sound-dai = <&frddr_b>; sound-dai = <&frddr_b>;
}; };
dai-link@2 { dai-link-2 {
sound-dai = <&frddr_c>; sound-dai = <&frddr_c>;
}; };
dai-link@3 { dai-link-3 {
sound-dai = <&toddr_a>; sound-dai = <&toddr_a>;
}; };
dai-link@4 { dai-link-4 {
sound-dai = <&toddr_b>; sound-dai = <&toddr_b>;
}; };
dai-link@5 { dai-link-5 {
sound-dai = <&toddr_c>; sound-dai = <&toddr_c>;
}; };
dai-link@6 { dai-link-6 {
sound-dai = <&tdmif_c>; sound-dai = <&tdmif_c>;
dai-format = "i2s"; dai-format = "i2s";
dai-tdm-slot-tx-mask-2 = <1 1>; dai-tdm-slot-tx-mask-2 = <1 1>;
@ -317,7 +327,7 @@
}; };
dai-link@7 { dai-link-7 {
sound-dai = <&spdifout>; sound-dai = <&spdifout>;
codec { codec {
@ -325,7 +335,15 @@
}; };
}; };
dai-link@8 { dai-link-8 {
sound-dai = <&spdifin>;
codec {
sound-dai = <&spdif_dir>;
};
};
dai-link-9 {
sound-dai = <&pdm>; sound-dai = <&pdm>;
codec { codec {
@ -357,6 +375,8 @@
eth_phy0: ethernet-phy@0 { eth_phy0: ethernet-phy@0 {
/* Realtek RTL8211F (0x001cc916) */ /* Realtek RTL8211F (0x001cc916) */
reg = <0>; reg = <0>;
interrupt-parent = <&gpio_intc>;
interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
eee-broken-1000t; eee-broken-1000t;
}; };
}; };
@ -444,7 +464,8 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; sd-uhs-sdr104;
max-frequency = <200000000>;
non-removable; non-removable;
disable-wp; disable-wp;
@ -461,15 +482,14 @@
/* emmc storage */ /* emmc storage */
&sd_emmc_c { &sd_emmc_c {
status = "disabled"; status = "okay";
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-1 = <&emmc_clk_gate_pins>;
pinctrl-names = "default", "clk-gate"; pinctrl-names = "default", "clk-gate";
bus-width = <8>; bus-width = <8>;
cap-sd-highspeed;
cap-mmc-highspeed; cap-mmc-highspeed;
max-frequency = <180000000>; max-frequency = <200000000>;
non-removable; non-removable;
disable-wp; disable-wp;
mmc-ddr-1_8v; mmc-ddr-1_8v;
@ -481,6 +501,12 @@
vqmmc-supply = <&vddio_boot>; vqmmc-supply = <&vddio_boot>;
}; };
&spdifin {
pinctrl-0 = <&spdif_in_a19_pins>;
pinctrl-names = "default";
status = "okay";
};
&spdifout { &spdifout {
pinctrl-0 = <&spdif_out_a20_pins>; pinctrl-0 = <&spdif_out_a20_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
@ -543,8 +569,14 @@
&uart_A { &uart_A {
status = "okay"; status = "okay";
pinctrl-0 = <&uart_a_pins>; pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
uart-has-rtscts;
bluetooth {
compatible = "brcm,bcm43438-bt";
shutdown-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
};
}; };
&uart_AO { &uart_AO {

File diff suppressed because it is too large Load diff

View file

@ -5,51 +5,42 @@
#include <dt-bindings/phy/phy.h> #include <dt-bindings/phy/phy.h>
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/clock/axg-audio-clkc.h>
#include <dt-bindings/clock/g12a-clkc.h> #include <dt-bindings/clock/g12a-clkc.h>
#include <dt-bindings/clock/g12a-aoclkc.h> #include <dt-bindings/clock/g12a-aoclkc.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
#include <dt-bindings/reset/amlogic,meson-g12a-reset.h> #include <dt-bindings/reset/amlogic,meson-g12a-reset.h>
#include <dt-bindings/thermal/thermal.h>
/ { / {
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
tdmif_a: audio-controller-0 { chosen {
compatible = "amlogic,axg-tdm-iface"; #address-cells = <2>;
#sound-dai-cells = <0>; #size-cells = <2>;
sound-name-prefix = "TDM_A"; ranges;
clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
<&clkc_audio AUD_CLKID_MST_A_SCLK>,
<&clkc_audio AUD_CLKID_MST_A_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
tdmif_b: audio-controller-1 { simplefb_cvbs: framebuffer-cvbs {
compatible = "amlogic,axg-tdm-iface"; compatible = "amlogic,simple-framebuffer",
#sound-dai-cells = <0>; "simple-framebuffer";
sound-name-prefix = "TDM_B"; amlogic,pipeline = "vpu-cvbs";
clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>, clocks = <&clkc CLKID_HDMI>,
<&clkc_audio AUD_CLKID_MST_B_SCLK>, <&clkc CLKID_HTX_PCLK>,
<&clkc_audio AUD_CLKID_MST_B_LRCLK>; <&clkc CLKID_VPU_INTR>;
clock-names = "mclk", "sclk", "lrclk"; status = "disabled";
status = "disabled"; };
};
tdmif_c: audio-controller-2 { simplefb_hdmi: framebuffer-hdmi {
compatible = "amlogic,axg-tdm-iface"; compatible = "amlogic,simple-framebuffer",
#sound-dai-cells = <0>; "simple-framebuffer";
sound-name-prefix = "TDM_C"; amlogic,pipeline = "vpu-hdmi";
clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>, clocks = <&clkc CLKID_HDMI>,
<&clkc_audio AUD_CLKID_MST_C_SCLK>, <&clkc CLKID_HTX_PCLK>,
<&clkc_audio AUD_CLKID_MST_C_LRCLK>; <&clkc CLKID_VPU_INTR>;
clock-names = "mclk", "sclk", "lrclk"; status = "disabled";
status = "disabled"; };
}; };
efuse: efuse { efuse: efuse {
@ -58,6 +49,7 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
read-only; read-only;
secure-monitor = <&sm>;
}; };
psci { psci {
@ -95,6 +87,94 @@
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
pcie: pcie@fc000000 {
compatible = "amlogic,g12a-pcie", "snps,dw-pcie";
reg = <0x0 0xfc000000 0x0 0x400000
0x0 0xff648000 0x0 0x2000
0x0 0xfc400000 0x0 0x200000>;
reg-names = "elbi", "cfg", "config";
interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
bus-range = <0x0 0xff>;
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
ranges = <0x81000000 0 0 0x0 0xfc600000 0 0x00100000
0x82000000 0 0xfc700000 0x0 0xfc700000 0 0x1900000>;
clocks = <&clkc CLKID_PCIE_PHY
&clkc CLKID_PCIE_COMB
&clkc CLKID_PCIE_PLL>;
clock-names = "general",
"pclk",
"port";
resets = <&reset RESET_PCIE_CTRL_A>,
<&reset RESET_PCIE_APB>;
reset-names = "port",
"apb";
num-lanes = <1>;
phys = <&usb3_pcie_phy PHY_TYPE_PCIE>;
phy-names = "pcie";
status = "disabled";
};
thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
thermal-sensors = <&cpu_temp>;
trips {
cpu_passive: cpu-passive {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
cpu_hot: cpu-hot {
temperature = <95000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "hot";
};
cpu_critical: cpu-critical {
temperature = <110000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
};
ddr_thermal: ddr-thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
thermal-sensors = <&ddr_temp>;
trips {
ddr_passive: ddr-passive {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
ddr_critical: ddr-critical {
temperature = <110000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
cooling-maps {
map {
trip = <&ddr_passive>;
cooling-device = <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
};
ethmac: ethernet@ff3f0000 { ethmac: ethernet@ff3f0000 {
compatible = "amlogic,meson-axg-dwmac", compatible = "amlogic,meson-axg-dwmac",
"snps,dwmac-3.70a", "snps,dwmac-3.70a",
@ -1356,6 +1436,26 @@
}; };
}; };
cpu_temp: temperature-sensor@34800 {
compatible = "amlogic,g12a-cpu-thermal",
"amlogic,g12a-thermal";
reg = <0x0 0x34800 0x0 0x50>;
interrupts = <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc CLKID_TS>;
#thermal-sensor-cells = <0>;
amlogic,ao-secure = <&sec_AO>;
};
ddr_temp: temperature-sensor@34c00 {
compatible = "amlogic,g12a-ddr-thermal",
"amlogic,g12a-thermal";
reg = <0x0 0x34c00 0x0 0x50>;
interrupts = <GIC_SPI 36 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc CLKID_TS>;
#thermal-sensor-cells = <0>;
amlogic,ao-secure = <&sec_AO>;
};
usb2_phy0: phy@36000 { usb2_phy0: phy@36000 {
compatible = "amlogic,g12a-usb2-phy"; compatible = "amlogic,g12a-usb2-phy";
reg = <0x0 0x36000 0x0 0x2000>; reg = <0x0 0x36000 0x0 0x2000>;
@ -1457,290 +1557,6 @@
}; };
}; };
pdm: audio-controller@40000 {
compatible = "amlogic,g12a-pdm",
"amlogic,axg-pdm";
reg = <0x0 0x40000 0x0 0x34>;
#sound-dai-cells = <0>;
sound-name-prefix = "PDM";
clocks = <&clkc_audio AUD_CLKID_PDM>,
<&clkc_audio AUD_CLKID_PDM_DCLK>,
<&clkc_audio AUD_CLKID_PDM_SYSCLK>;
clock-names = "pclk", "dclk", "sysclk";
status = "disabled";
};
audio: bus@42000 {
compatible = "simple-bus";
reg = <0x0 0x42000 0x0 0x2000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
clkc_audio: clock-controller@0 {
status = "disabled";
compatible = "amlogic,g12a-audio-clkc";
reg = <0x0 0x0 0x0 0xb4>;
#clock-cells = <1>;
#reset-cells = <1>;
clocks = <&clkc CLKID_AUDIO>,
<&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>,
<&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL3>,
<&clkc CLKID_HIFI_PLL>,
<&clkc CLKID_FCLK_DIV3>,
<&clkc CLKID_FCLK_DIV4>,
<&clkc CLKID_GP0_PLL>;
clock-names = "pclk",
"mst_in0",
"mst_in1",
"mst_in2",
"mst_in3",
"mst_in4",
"mst_in5",
"mst_in6",
"mst_in7";
resets = <&reset RESET_AUDIO>;
};
toddr_a: audio-controller@100 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x100 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_A";
interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
resets = <&arb AXG_ARB_TODDR_A>;
status = "disabled";
};
toddr_b: audio-controller@140 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x140 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_B";
interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
resets = <&arb AXG_ARB_TODDR_B>;
status = "disabled";
};
toddr_c: audio-controller@180 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x180 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_C";
interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
resets = <&arb AXG_ARB_TODDR_C>;
status = "disabled";
};
frddr_a: audio-controller@1c0 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x1c0 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_A";
interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
resets = <&arb AXG_ARB_FRDDR_A>;
status = "disabled";
};
frddr_b: audio-controller@200 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x200 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_B";
interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
resets = <&arb AXG_ARB_FRDDR_B>;
status = "disabled";
};
frddr_c: audio-controller@240 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x240 0x0 0x1c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_C";
interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
resets = <&arb AXG_ARB_FRDDR_C>;
status = "disabled";
};
arb: reset-controller@280 {
status = "disabled";
compatible = "amlogic,meson-axg-audio-arb";
reg = <0x0 0x280 0x0 0x4>;
#reset-cells = <1>;
clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
};
tdmin_a: audio-controller@300 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x300 0x0 0x40>;
sound-name-prefix = "TDMIN_A";
resets = <&clkc_audio AUD_RESET_TDMIN_A>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_b: audio-controller@340 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x340 0x0 0x40>;
sound-name-prefix = "TDMIN_B";
resets = <&clkc_audio AUD_RESET_TDMIN_B>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_c: audio-controller@380 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x380 0x0 0x40>;
sound-name-prefix = "TDMIN_C";
resets = <&clkc_audio AUD_RESET_TDMIN_C>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_lb: audio-controller@3c0 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x3c0 0x0 0x40>;
sound-name-prefix = "TDMIN_LB";
resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
spdifin: audio-controller@400 {
compatible = "amlogic,g12a-spdifin",
"amlogic,axg-spdifin";
reg = <0x0 0x400 0x0 0x30>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFIN";
interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
<&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
clock-names = "pclk", "refclk";
status = "disabled";
};
spdifout: audio-controller@480 {
compatible = "amlogic,g12a-spdifout",
"amlogic,axg-spdifout";
reg = <0x0 0x480 0x0 0x50>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFOUT";
clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
<&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
clock-names = "pclk", "mclk";
status = "disabled";
};
tdmout_a: audio-controller@500 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x500 0x0 0x40>;
sound-name-prefix = "TDMOUT_A";
resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_b: audio-controller@540 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x540 0x0 0x40>;
sound-name-prefix = "TDMOUT_B";
resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_c: audio-controller@580 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x580 0x0 0x40>;
sound-name-prefix = "TDMOUT_C";
resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
spdifout_b: audio-controller@680 {
compatible = "amlogic,g12a-spdifout",
"amlogic,axg-spdifout";
reg = <0x0 0x680 0x0 0x50>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFOUT_B";
clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
<&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
clock-names = "pclk", "mclk";
status = "disabled";
};
tohdmitx: audio-controller@744 {
compatible = "amlogic,g12a-tohdmitx";
reg = <0x0 0x744 0x0 0x4>;
#sound-dai-cells = <1>;
sound-name-prefix = "TOHDMITX";
status = "disabled";
};
};
usb3_pcie_phy: phy@46000 { usb3_pcie_phy: phy@46000 {
compatible = "amlogic,g12a-usb3-pcie-phy"; compatible = "amlogic,g12a-usb3-pcie-phy";
reg = <0x0 0x46000 0x0 0x2000>; reg = <0x0 0x46000 0x0 0x2000>;
@ -2152,6 +1968,29 @@
}; };
}; };
vdec: video-decoder@ff620000 {
compatible = "amlogic,g12a-vdec";
reg = <0x0 0xff620000 0x0 0x10000>,
<0x0 0xffd0e180 0x0 0xe4>;
reg-names = "dos", "esparser";
interrupts = <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "vdec", "esparser";
amlogic,ao-sysctrl = <&rti>;
amlogic,canvas = <&canvas>;
clocks = <&clkc CLKID_PARSER>,
<&clkc CLKID_DOS>,
<&clkc CLKID_VDEC_1>,
<&clkc CLKID_VDEC_HEVC>,
<&clkc CLKID_VDEC_HEVCF>;
clock-names = "dos_parser", "dos", "vdec_1",
"vdec_hevc", "vdec_hevcf";
resets = <&reset RESET_PARSER>;
reset-names = "esparser";
};
vpu: vpu@ff900000 { vpu: vpu@ff900000 {
compatible = "amlogic,meson-g12a-vpu"; compatible = "amlogic,meson-g12a-vpu";
reg = <0x0 0xff900000 0x0 0x100000>, reg = <0x0 0xff900000 0x0 0x100000>,
@ -2388,10 +2227,10 @@
compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
reg = <0x0 0xffe40000 0x0 0x40000>; reg = <0x0 0xffe40000 0x0 0x40000>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "gpu", "mmu", "job"; interrupt-names = "job", "mmu", "gpu";
clocks = <&clkc CLKID_MALI>; clocks = <&clkc CLKID_MALI>;
resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>; resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
@ -2409,6 +2248,7 @@
assigned-clock-rates = <0>, /* Do Nothing */ assigned-clock-rates = <0>, /* Do Nothing */
<800000000>, <800000000>,
<0>; /* Do Nothing */ <0>; /* Do Nothing */
#cooling-cells = <2>;
}; };
}; };

398
arch/arm/dts/meson-g12.dtsi Normal file
View file

@ -0,0 +1,398 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 BayLibre, SAS
* Author: Jerome Brunet <jbrunet@baylibre.com>
*/
#include "meson-g12-common.dtsi"
#include <dt-bindings/clock/axg-audio-clkc.h>
#include <dt-bindings/power/meson-g12a-power.h>
#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
/ {
tdmif_a: audio-controller-0 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_A";
clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
<&clkc_audio AUD_CLKID_MST_A_SCLK>,
<&clkc_audio AUD_CLKID_MST_A_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
tdmif_b: audio-controller-1 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_B";
clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
<&clkc_audio AUD_CLKID_MST_B_SCLK>,
<&clkc_audio AUD_CLKID_MST_B_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
tdmif_c: audio-controller-2 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_C";
clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
<&clkc_audio AUD_CLKID_MST_C_SCLK>,
<&clkc_audio AUD_CLKID_MST_C_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
};
&apb {
pdm: audio-controller@40000 {
compatible = "amlogic,g12a-pdm",
"amlogic,axg-pdm";
reg = <0x0 0x40000 0x0 0x34>;
#sound-dai-cells = <0>;
sound-name-prefix = "PDM";
clocks = <&clkc_audio AUD_CLKID_PDM>,
<&clkc_audio AUD_CLKID_PDM_DCLK>,
<&clkc_audio AUD_CLKID_PDM_SYSCLK>;
clock-names = "pclk", "dclk", "sysclk";
status = "disabled";
};
audio: bus@42000 {
compatible = "simple-bus";
reg = <0x0 0x42000 0x0 0x2000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
clkc_audio: clock-controller@0 {
status = "disabled";
compatible = "amlogic,g12a-audio-clkc";
reg = <0x0 0x0 0x0 0xb4>;
#clock-cells = <1>;
#reset-cells = <1>;
clocks = <&clkc CLKID_AUDIO>,
<&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>,
<&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL3>,
<&clkc CLKID_HIFI_PLL>,
<&clkc CLKID_FCLK_DIV3>,
<&clkc CLKID_FCLK_DIV4>,
<&clkc CLKID_GP0_PLL>;
clock-names = "pclk",
"mst_in0",
"mst_in1",
"mst_in2",
"mst_in3",
"mst_in4",
"mst_in5",
"mst_in6",
"mst_in7";
resets = <&reset RESET_AUDIO>;
};
toddr_a: audio-controller@100 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x100 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_A";
interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
resets = <&arb AXG_ARB_TODDR_A>,
<&clkc_audio AUD_RESET_TODDR_A>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <512>;
status = "disabled";
};
toddr_b: audio-controller@140 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x140 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_B";
interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
resets = <&arb AXG_ARB_TODDR_B>,
<&clkc_audio AUD_RESET_TODDR_B>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
toddr_c: audio-controller@180 {
compatible = "amlogic,g12a-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x180 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_C";
interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
resets = <&arb AXG_ARB_TODDR_C>,
<&clkc_audio AUD_RESET_TODDR_C>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
frddr_a: audio-controller@1c0 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x1c0 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_A";
interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
resets = <&arb AXG_ARB_FRDDR_A>,
<&clkc_audio AUD_RESET_FRDDR_A>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <512>;
status = "disabled";
};
frddr_b: audio-controller@200 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x200 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_B";
interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
resets = <&arb AXG_ARB_FRDDR_B>,
<&clkc_audio AUD_RESET_FRDDR_B>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
frddr_c: audio-controller@240 {
compatible = "amlogic,g12a-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x240 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_C";
interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
resets = <&arb AXG_ARB_FRDDR_C>,
<&clkc_audio AUD_RESET_FRDDR_C>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
arb: reset-controller@280 {
status = "disabled";
compatible = "amlogic,meson-axg-audio-arb";
reg = <0x0 0x280 0x0 0x4>;
#reset-cells = <1>;
clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
};
tdmin_a: audio-controller@300 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x300 0x0 0x40>;
sound-name-prefix = "TDMIN_A";
resets = <&clkc_audio AUD_RESET_TDMIN_A>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_b: audio-controller@340 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x340 0x0 0x40>;
sound-name-prefix = "TDMIN_B";
resets = <&clkc_audio AUD_RESET_TDMIN_B>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_c: audio-controller@380 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x380 0x0 0x40>;
sound-name-prefix = "TDMIN_C";
resets = <&clkc_audio AUD_RESET_TDMIN_C>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_lb: audio-controller@3c0 {
compatible = "amlogic,g12a-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x3c0 0x0 0x40>;
sound-name-prefix = "TDMIN_LB";
resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
spdifin: audio-controller@400 {
compatible = "amlogic,g12a-spdifin",
"amlogic,axg-spdifin";
reg = <0x0 0x400 0x0 0x30>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFIN";
interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
<&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
clock-names = "pclk", "refclk";
resets = <&clkc_audio AUD_RESET_SPDIFIN>;
status = "disabled";
};
spdifout: audio-controller@480 {
compatible = "amlogic,g12a-spdifout",
"amlogic,axg-spdifout";
reg = <0x0 0x480 0x0 0x50>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFOUT";
clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
<&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
clock-names = "pclk", "mclk";
resets = <&clkc_audio AUD_RESET_SPDIFOUT>;
status = "disabled";
};
tdmout_a: audio-controller@500 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x500 0x0 0x40>;
sound-name-prefix = "TDMOUT_A";
resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_b: audio-controller@540 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x540 0x0 0x40>;
sound-name-prefix = "TDMOUT_B";
resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_c: audio-controller@580 {
compatible = "amlogic,g12a-tdmout";
reg = <0x0 0x580 0x0 0x40>;
sound-name-prefix = "TDMOUT_C";
resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
spdifout_b: audio-controller@680 {
compatible = "amlogic,g12a-spdifout",
"amlogic,axg-spdifout";
reg = <0x0 0x680 0x0 0x50>;
#sound-dai-cells = <0>;
sound-name-prefix = "SPDIFOUT_B";
clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
<&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
clock-names = "pclk", "mclk";
resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
status = "disabled";
};
tohdmitx: audio-controller@744 {
compatible = "amlogic,g12a-tohdmitx";
reg = <0x0 0x744 0x0 0x4>;
#sound-dai-cells = <1>;
sound-name-prefix = "TOHDMITX";
resets = <&clkc_audio AUD_RESET_TOHDMITX>;
status = "disabled";
};
};
};
&cpu_thermal {
cooling-maps {
map0 {
trip = <&cpu_passive>;
cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
map1 {
trip = <&cpu_hot>;
cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
&ethmac {
power-domains = <&pwrc PWRC_G12A_ETH_ID>;
};
&vpu {
power-domains = <&pwrc PWRC_G12A_VPU_ID>;
};
&sd_emmc_a {
amlogic,dram-access-quirk;
};
&simplefb_cvbs {
power-domains = <&pwrc PWRC_G12A_VPU_ID>;
};
&simplefb_hdmi {
power-domains = <&pwrc PWRC_G12A_VPU_ID>;
};

View file

@ -129,6 +129,25 @@
enable-active-high; enable-active-high;
}; };
vddcpu: regulator-vddcpu {
/*
* SY8120B1ABC DC/DC Regulator.
*/
compatible = "pwm-regulator";
regulator-name = "VDDCPU";
regulator-min-microvolt = <721000>;
regulator-max-microvolt = <1022000>;
vin-supply = <&dc_in>;
pwms = <&pwm_AO_cd 1 1250 0>;
pwm-dutycycle-range = <100 0>;
regulator-boot-on;
regulator-always-on;
};
vddio_ao1v8: regulator-vddio_ao1v8 { vddio_ao1v8: regulator-vddio_ao1v8 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "VDDIO_AO1V8"; regulator-name = "VDDIO_AO1V8";
@ -297,6 +316,34 @@
status = "okay"; status = "okay";
}; };
&cpu0 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu1 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu2 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu3 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cvbs_vdac_port { &cvbs_vdac_port {
cvbs_vdac_out: endpoint { cvbs_vdac_out: endpoint {
remote-endpoint = <&cvbs_connector_in>; remote-endpoint = <&cvbs_connector_in>;
@ -339,6 +386,20 @@
pinctrl-names = "default"; pinctrl-names = "default";
}; };
&ir {
status = "okay";
pinctrl-0 = <&remote_input_ao_pins>;
pinctrl-names = "default";
};
&pwm_AO_cd {
pinctrl-0 = <&pwm_ao_d_e_pins>;
pinctrl-names = "default";
clocks = <&xtal>;
clock-names = "clkin1";
status = "okay";
};
&pwm_ef { &pwm_ef {
status = "okay"; status = "okay";
pinctrl-0 = <&pwm_e_pins>; pinctrl-0 = <&pwm_e_pins>;
@ -377,6 +438,9 @@
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;

View file

@ -129,6 +129,24 @@
regulator-always-on; regulator-always-on;
}; };
vddcpu: regulator-vddcpu {
/*
* MP8756GD Regulator.
*/
compatible = "pwm-regulator";
regulator-name = "VDDCPU";
regulator-min-microvolt = <721000>;
regulator-max-microvolt = <1022000>;
vin-supply = <&main_12v>;
pwms = <&pwm_AO_cd 1 1250 0>;
pwm-dutycycle-range = <100 0>;
regulator-boot-on;
regulator-always-on;
};
}; };
&cec_AO { &cec_AO {
@ -145,6 +163,34 @@
hdmi-phandle = <&hdmi_tx>; hdmi-phandle = <&hdmi_tx>;
}; };
&cpu0 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu1 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu2 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cpu3 {
cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>;
clocks = <&clkc CLKID_CPU_CLK>;
clock-latency = <50000>;
};
&cvbs_vdac_port { &cvbs_vdac_port {
cvbs_vdac_out: endpoint { cvbs_vdac_out: endpoint {
remote-endpoint = <&cvbs_connector_in>; remote-endpoint = <&cvbs_connector_in>;
@ -197,6 +243,14 @@
pinctrl-names = "default"; pinctrl-names = "default";
}; };
&pwm_AO_cd {
pinctrl-0 = <&pwm_ao_d_e_pins>;
pinctrl-names = "default";
clocks = <&xtal>;
clock-names = "clkin1";
status = "okay";
};
/* SD card */ /* SD card */
&sd_emmc_b { &sd_emmc_b {
status = "okay"; status = "okay";

View file

@ -3,8 +3,7 @@
* Copyright (c) 2018 Amlogic, Inc. All rights reserved. * Copyright (c) 2018 Amlogic, Inc. All rights reserved.
*/ */
#include "meson-g12-common.dtsi" #include "meson-g12.dtsi"
#include <dt-bindings/power/meson-g12a-power.h>
/ { / {
compatible = "amlogic,g12a"; compatible = "amlogic,g12a";
@ -19,6 +18,7 @@
reg = <0x0 0x0>; reg = <0x0 0x0>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu1: cpu@1 { cpu1: cpu@1 {
@ -27,6 +27,7 @@
reg = <0x0 0x1>; reg = <0x0 0x1>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu2: cpu@2 { cpu2: cpu@2 {
@ -35,6 +36,7 @@
reg = <0x0 0x2>; reg = <0x0 0x2>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu3: cpu@3 { cpu3: cpu@3 {
@ -43,6 +45,7 @@
reg = <0x0 0x3>; reg = <0x0 0x3>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
l2: l2-cache0 { l2: l2-cache0 {
@ -111,14 +114,22 @@
}; };
}; };
&ethmac { &cpu_thermal {
power-domains = <&pwrc PWRC_G12A_ETH_ID>; cooling-maps {
}; map0 {
trip = <&cpu_passive>;
cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
&vpu { map1 {
power-domains = <&pwrc PWRC_G12A_VPU_ID>; trip = <&cpu_hot>;
}; cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
&sd_emmc_a { <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
amlogic,dram-access-quirk; <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
}; };

View file

@ -14,3 +14,28 @@
/ { / {
compatible = "khadas,vim3", "amlogic,a311d", "amlogic,g12b"; compatible = "khadas,vim3", "amlogic,a311d", "amlogic,g12b";
}; };
/*
* The VIM3 on-board MCU can mux the PCIe/USB3.0 shared differential
* lines using a FUSB340TMX USB 3.1 SuperSpeed Data Switch between
* an USB3.0 Type A connector and a M.2 Key M slot.
* The PHY driving these differential lines is shared between
* the USB3.0 controller and the PCIe Controller, thus only
* a single controller can use it.
* If the MCU is configured to mux the PCIe/USB3.0 differential lines
* to the M.2 Key M slot, uncomment the following block to disable
* USB3.0 from the USB Complex and enable the PCIe controller.
* The End User is not expected to uncomment the following except for
* testing purposes, but instead rely on the firmware/bootloader to
* update these nodes accordingly if PCIe mode is selected by the MCU.
*/
/*
&pcie {
status = "okay";
};
&usb {
phys = <&usb2_phy0>, <&usb2_phy1>;
phy-names = "usb2-phy0", "usb2-phy1";
};
*/

View file

@ -12,7 +12,7 @@
#include <dt-bindings/sound/meson-g12a-tohdmitx.h> #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
/ { / {
compatible = "hardkernel,odroid-n2", "amlogic,g12b"; compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b";
model = "Hardkernel ODROID-N2"; model = "Hardkernel ODROID-N2";
aliases { aliases {

View file

@ -4,8 +4,7 @@
* Author: Neil Armstrong <narmstrong@baylibre.com> * Author: Neil Armstrong <narmstrong@baylibre.com>
*/ */
#include "meson-g12-common.dtsi" #include "meson-g12.dtsi"
#include <dt-bindings/power/meson-g12a-power.h>
/ { / {
compatible = "amlogic,g12b"; compatible = "amlogic,g12b";
@ -49,7 +48,9 @@
compatible = "arm,cortex-a53"; compatible = "arm,cortex-a53";
reg = <0x0 0x0>; reg = <0x0 0x0>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <592>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu1: cpu@1 { cpu1: cpu@1 {
@ -57,7 +58,9 @@
compatible = "arm,cortex-a53"; compatible = "arm,cortex-a53";
reg = <0x0 0x1>; reg = <0x0 0x1>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <592>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu100: cpu@100 { cpu100: cpu@100 {
@ -65,7 +68,9 @@
compatible = "arm,cortex-a73"; compatible = "arm,cortex-a73";
reg = <0x0 0x100>; reg = <0x0 0x100>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu101: cpu@101 { cpu101: cpu@101 {
@ -73,7 +78,9 @@
compatible = "arm,cortex-a73"; compatible = "arm,cortex-a73";
reg = <0x0 0x101>; reg = <0x0 0x101>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu102: cpu@102 { cpu102: cpu@102 {
@ -81,7 +88,9 @@
compatible = "arm,cortex-a73"; compatible = "arm,cortex-a73";
reg = <0x0 0x102>; reg = <0x0 0x102>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
cpu103: cpu@103 { cpu103: cpu@103 {
@ -89,7 +98,9 @@
compatible = "arm,cortex-a73"; compatible = "arm,cortex-a73";
reg = <0x0 0x103>; reg = <0x0 0x103>;
enable-method = "psci"; enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>; next-level-cache = <&l2>;
#cooling-cells = <2>;
}; };
l2: l2-cache0 { l2: l2-cache0 {
@ -102,14 +113,3 @@
compatible = "amlogic,g12b-clkc"; compatible = "amlogic,g12b-clkc";
}; };
&ethmac {
power-domains = <&pwrc PWRC_G12A_ETH_ID>;
};
&vpu {
power-domains = <&pwrc PWRC_G12A_VPU_ID>;
};
&sd_emmc_a {
amlogic,dram-access-quirk;
};

View file

@ -0,0 +1,375 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2019 BayLibre SAS.
* Author: Jerome Brunet <jbrunet@baylibre.com>
*/
/* Libretech Amlogic GX PC form factor - AKA: Tartiflette */
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
adc-keys {
compatible = "adc-keys";
io-channels = <&saradc 0>;
io-channel-names = "buttons";
keyup-threshold-microvolt = <1800000>;
update-button {
label = "update";
linux,code = <KEY_VENDOR>;
press-threshold-microvolt = <1300000>;
};
};
aliases {
serial0 = &uart_AO;
ethernet0 = &ethmac;
spi0 = &spifc;
};
chosen {
stdout-path = "serial0:115200n8";
};
cvbs-connector {
compatible = "composite-video-connector";
status = "disabled";
port {
cvbs_connector_in: endpoint {
remote-endpoint = <&cvbs_vdac_out>;
};
};
};
emmc_pwrseq: emmc-pwrseq {
compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
};
hdmi-connector {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_connector_in: endpoint {
remote-endpoint = <&hdmi_tx_tmds_out>;
};
};
};
gpio-keys-polled {
compatible = "gpio-keys-polled";
poll-interval = <100>;
power-button {
label = "power";
linux,code = <KEY_POWER>;
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
};
};
memory@0 {
device_type = "memory";
reg = <0x0 0x0 0x0 0x80000000>;
};
ao_5v: regulator-ao_5v {
compatible = "regulator-fixed";
regulator-name = "AO_5V";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&dc_in>;
regulator-always-on;
};
dc_in: regulator-dc_in {
compatible = "regulator-fixed";
regulator-name = "DC_IN";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
};
leds {
compatible = "gpio-leds";
green {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK_ACTIVITY;
gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "disk-activity";
};
blue {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
panic-indicator;
};
};
vcc_card: regulator-vcc_card {
compatible = "regulator-fixed";
regulator-name = "VCC_CARD";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vddio_ao3v3>;
gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
vcc5v: regulator-vcc5v {
compatible = "regulator-fixed";
regulator-name = "VCC5V";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&ao_5v>;
gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>;
};
vddio_ao18: regulator-vddio_ao18 {
compatible = "regulator-fixed";
regulator-name = "VDDIO_AO18";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&ao_5v>;
regulator-always-on;
};
vddio_ao3v3: regulator-vddio_ao3v3 {
compatible = "regulator-fixed";
regulator-name = "VDDIO_AO3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&ao_5v>;
regulator-always-on;
};
vddio_boot: regulator-vddio_boot {
compatible = "regulator-fixed";
regulator-name = "VDDIO_BOOT";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&vddio_ao3v3>;
regulator-always-on;
};
vddio_card: regulator-vddio-card {
compatible = "regulator-gpio";
regulator-name = "VDDIO_CARD";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>;
gpios-states = <0>;
states = <3300000 0>,
<1800000 1>;
regulator-settling-time-up-us = <200>;
regulator-settling-time-down-us = <50000>;
};
};
&cec_AO {
pinctrl-0 = <&ao_cec_pins>;
pinctrl-names = "default";
hdmi-phandle = <&hdmi_tx>;
status = "okay";
};
&cvbs_vdac_port {
cvbs_vdac_out: endpoint {
remote-endpoint = <&cvbs_connector_in>;
};
};
&ethmac {
pinctrl-0 = <&eth_pins>, <&eth_phy_irq_pins>;
pinctrl-names = "default";
phy-handle = <&external_phy>;
amlogic,tx-delay-ns = <2>;
phy-mode = "rgmii";
status = "okay";
};
&external_mdio {
external_phy: ethernet-phy@0 {
reg = <0>;
max-speed = <1000>;
reset-assert-us = <10000>;
reset-deassert-us = <30000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
};
};
&pinctrl_periphs {
/*
* Make sure the reset pin of the usb HUB is driven high to take
* it out of reset.
*/
usb1_rst_pins: usb1_rst_irq {
mux {
groups = "GPIODV_3";
function = "gpio_periphs";
bias-disable;
output-high;
};
};
/* Make sure the phy irq pin is properly configured as input */
eth_phy_irq_pins: eth_phy_irq {
mux {
groups = "GPIOZ_15";
function = "gpio_periphs";
bias-disable;
output-disable;
};
};
};
&hdmi_tx {
pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
pinctrl-names = "default";
hdmi-supply = <&vcc5v>;
status = "okay";
};
&hdmi_tx_tmds_port {
hdmi_tx_tmds_out: endpoint {
remote-endpoint = <&hdmi_connector_in>;
};
};
&ir {
pinctrl-0 = <&remote_input_ao_pins>;
pinctrl-names = "default";
status = "okay";
};
&i2c_C {
pinctrl-0 = <&i2c_c_dv18_pins>;
pinctrl-names = "default";
status = "okay";
rtc: rtc@51 {
reg = <0x51>;
compatible = "nxp,pcf8563";
#clock-cells = <0>;
clock-output-names = "rtc_clkout";
};
};
&pwm_AO_ab {
pinctrl-0 = <&pwm_ao_a_3_pins>;
pinctrl-names = "default";
clocks = <&clkc CLKID_FCLK_DIV4>;
clock-names = "clkin0";
status = "okay";
};
&pwm_ab {
pinctrl-0 = <&pwm_b_pins>;
pinctrl-names = "default";
clocks = <&clkc CLKID_FCLK_DIV4>;
clock-names = "clkin0";
status = "okay";
};
&pwm_ef {
pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
pinctrl-names = "default";
clocks = <&clkc CLKID_FCLK_DIV4>;
clock-names = "clkin0";
status = "okay";
};
&saradc {
vref-supply = <&vddio_ao18>;
status = "okay";
};
/* SD card */
&sd_emmc_b {
pinctrl-0 = <&sdcard_pins>;
pinctrl-1 = <&sdcard_clk_gate_pins>;
pinctrl-names = "default", "clk-gate";
bus-width = <4>;
cap-sd-highspeed;
sd-uhs-sdr12;
sd-uhs-sdr25;
sd-uhs-sdr50;
sd-uhs-ddr50;
max-frequency = <200000000>;
disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
vmmc-supply = <&vcc_card>;
vqmmc-supply = <&vddio_card>;
status = "okay";
};
/* eMMC */
&sd_emmc_c {
pinctrl-0 = <&emmc_pins>;
pinctrl-1 = <&emmc_clk_gate_pins>;
pinctrl-names = "default", "clk-gate";
bus-width = <8>;
cap-mmc-highspeed;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
max-frequency = <200000000>;
disable-wp;
mmc-pwrseq = <&emmc_pwrseq>;
vmmc-supply = <&vddio_ao3v3>;
vqmmc-supply = <&vddio_boot>;
status = "okay";
};
&spifc {
pinctrl-0 = <&nor_pins>;
pinctrl-names = "default";
status = "okay";
gd25lq128: spi-flash@0 {
compatible = "jedec,spi-nor";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <12000000>;
};
};
&uart_AO {
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
status = "okay";
};
&usb0 {
status = "okay";
};
&usb2_phy0 {
pinctrl-0 = <&usb1_rst_pins>;
pinctrl-names = "default";
phy-supply = <&vcc5v>;
};
&usb2_phy1 {
phy-supply = <&vcc5v>;
};

View file

@ -50,13 +50,35 @@
}; };
}; };
chosen {
#address-cells = <2>;
#size-cells = <2>;
ranges;
simplefb_cvbs: framebuffer-cvbs {
compatible = "amlogic,simple-framebuffer",
"simple-framebuffer";
amlogic,pipeline = "vpu-cvbs";
power-domains = <&pwrc_vpu>;
status = "disabled";
};
simplefb_hdmi: framebuffer-hdmi {
compatible = "amlogic,simple-framebuffer",
"simple-framebuffer";
amlogic,pipeline = "vpu-hdmi";
power-domains = <&pwrc_vpu>;
status = "disabled";
};
};
cpus { cpus {
#address-cells = <0x2>; #address-cells = <0x2>;
#size-cells = <0x0>; #size-cells = <0x0>;
cpu0: cpu@0 { cpu0: cpu@0 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x0>; reg = <0x0 0x0>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -65,7 +87,7 @@
cpu1: cpu@1 { cpu1: cpu@1 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x1>; reg = <0x0 0x1>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -74,7 +96,7 @@
cpu2: cpu@2 { cpu2: cpu@2 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x2>; reg = <0x0 0x2>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -83,7 +105,7 @@
cpu3: cpu@3 { cpu3: cpu@3 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x3>; reg = <0x0 0x3>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -139,6 +161,7 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
read-only; read-only;
secure-monitor = <&sm>;
sn: sn@14 { sn: sn@14 {
reg = <0x14 0x10>; reg = <0x14 0x10>;
@ -198,7 +221,7 @@
}; };
reset: reset-controller@4404 { reset: reset-controller@4404 {
compatible = "amlogic,meson-gx-reset", "amlogic,meson-gxbb-reset"; compatible = "amlogic,meson-gxbb-reset";
reg = <0x0 0x04404 0x0 0x9c>; reg = <0x0 0x04404 0x0 0x9c>;
#reset-cells = <1>; #reset-cells = <1>;
}; };
@ -218,7 +241,7 @@
}; };
i2c_A: i2c@8500 { i2c_A: i2c@8500 {
compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c"; compatible = "amlogic,meson-gxbb-i2c";
reg = <0x0 0x08500 0x0 0x20>; reg = <0x0 0x08500 0x0 0x20>;
interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>; #address-cells = <1>;
@ -262,8 +285,13 @@
status = "disabled"; status = "disabled";
}; };
clock-measure@8758 {
compatible = "amlogic,meson-gx-clk-measure";
reg = <0x0 0x8758 0x0 0x10>;
};
i2c_B: i2c@87c0 { i2c_B: i2c@87c0 {
compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c"; compatible = "amlogic,meson-gxbb-i2c";
reg = <0x0 0x087c0 0x0 0x20>; reg = <0x0 0x087c0 0x0 0x20>;
interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>; #address-cells = <1>;
@ -272,7 +300,7 @@
}; };
i2c_C: i2c@87e0 { i2c_C: i2c@87e0 {
compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c"; compatible = "amlogic,meson-gxbb-i2c";
reg = <0x0 0x087e0 0x0 0x20>; reg = <0x0 0x087e0 0x0 0x20>;
interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>; #address-cells = <1>;
@ -290,7 +318,7 @@
}; };
spifc: spi@8c80 { spifc: spi@8c80 {
compatible = "amlogic,meson-gx-spifc", "amlogic,meson-gxbb-spifc"; compatible = "amlogic,meson-gxbb-spifc";
reg = <0x0 0x08c80 0x0 0x80>; reg = <0x0 0x08c80 0x0 0x80>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@ -298,7 +326,7 @@
}; };
watchdog@98d0 { watchdog@98d0 {
compatible = "amlogic,meson-gx-wdt", "amlogic,meson-gxbb-wdt"; compatible = "amlogic,meson-gxbb-wdt";
reg = <0x0 0x098d0 0x0 0x10>; reg = <0x0 0x098d0 0x0 0x10>;
clocks = <&xtal>; clocks = <&xtal>;
}; };
@ -364,6 +392,7 @@
compatible = "amlogic,meson-gx-ao-cec"; compatible = "amlogic,meson-gx-ao-cec";
reg = <0x0 0x00100 0x0 0x14>; reg = <0x0 0x00100 0x0 0x14>;
interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
}; };
sec_AO: ao-secure@140 { sec_AO: ao-secure@140 {
@ -387,7 +416,7 @@
}; };
i2c_AO: i2c@500 { i2c_AO: i2c@500 {
compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c"; compatible = "amlogic,meson-gxbb-i2c";
reg = <0x0 0x500 0x0 0x20>; reg = <0x0 0x500 0x0 0x20>;
interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>; #address-cells = <1>;
@ -410,7 +439,21 @@
}; };
}; };
periphs: periphs@c8834000 { vdec: video-codec@c8820000 {
compatible = "amlogic,gx-vdec";
reg = <0x0 0xc8820000 0x0 0x10000>,
<0x0 0xc110a580 0x0 0xe4>;
reg-names = "dos", "esparser";
interrupts = <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "vdec", "esparser";
amlogic,ao-sysctrl = <&sysctrl_AO>;
amlogic,canvas = <&canvas>;
};
periphs: bus@c8834000 {
compatible = "simple-bus"; compatible = "simple-bus";
reg = <0x0 0xc8834000 0x0 0x2000>; reg = <0x0 0xc8834000 0x0 0x2000>;
#address-cells = <2>; #address-cells = <2>;
@ -449,7 +492,7 @@
}; };
mailbox: mailbox@404 { mailbox: mailbox@404 {
compatible = "amlogic,meson-gx-mhu", "amlogic,meson-gxbb-mhu"; compatible = "amlogic,meson-gxbb-mhu";
reg = <0 0x404 0 0x4c>; reg = <0 0x404 0 0x4c>;
interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>, interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 209 IRQ_TYPE_EDGE_RISING>, <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>,
@ -459,11 +502,15 @@
}; };
ethmac: ethernet@c9410000 { ethmac: ethernet@c9410000 {
compatible = "amlogic,meson-gx-dwmac", "amlogic,meson-gxbb-dwmac", "snps,dwmac"; compatible = "amlogic,meson-gxbb-dwmac",
reg = <0x0 0xc9410000 0x0 0x10000 "snps,dwmac-3.70a",
0x0 0xc8834540 0x0 0x4>; "snps,dwmac";
interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>; reg = <0x0 0xc9410000 0x0 0x10000>,
<0x0 0xc8834540 0x0 0x4>;
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq"; interrupt-names = "macirq";
rx-fifo-depth = <4096>;
tx-fifo-depth = <2048>;
status = "disabled"; status = "disabled";
}; };
@ -499,12 +546,12 @@
vpu: vpu@d0100000 { vpu: vpu@d0100000 {
compatible = "amlogic,meson-gx-vpu"; compatible = "amlogic,meson-gx-vpu";
reg = <0x0 0xd0100000 0x0 0x100000>, reg = <0x0 0xd0100000 0x0 0x100000>,
<0x0 0xc883c000 0x0 0x1000>, <0x0 0xc883c000 0x0 0x1000>;
<0x0 0xc8838000 0x0 0x1000>; reg-names = "vpu", "hhi";
reg-names = "vpu", "hhi", "dmc";
interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
amlogic,canvas = <&canvas>;
/* CVBS VDAC output port */ /* CVBS VDAC output port */
cvbs_vdac_port: port@0 { cvbs_vdac_port: port@0 {

View file

@ -10,6 +10,7 @@
/ { / {
compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb"; compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb";
model = "FriendlyARM NanoPi K2";
aliases { aliases {
serial0 = &uart_AO; serial0 = &uart_AO;
@ -154,10 +155,6 @@
amlogic,tx-delay-ns = <2>; amlogic,tx-delay-ns = <2>;
snps,reset-gpio = <&gpio GPIOZ_14 0>;
snps,reset-delays-us = <0 10000 1000000>;
snps,reset-active-low;
mdio { mdio {
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
#address-cells = <1>; #address-cells = <1>;
@ -166,6 +163,11 @@
eth_phy0: ethernet-phy@0 { eth_phy0: ethernet-phy@0 {
/* Realtek RTL8211F (0x001cc916) */ /* Realtek RTL8211F (0x001cc916) */
reg = <0>; reg = <0>;
reset-assert-us = <10000>;
reset-deassert-us = <30000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>; interrupt-parent = <&gpio_intc>;
/* MAC_INTR on GPIOZ_15 */ /* MAC_INTR on GPIOZ_15 */
interrupts = <29 IRQ_TYPE_LEVEL_LOW>; interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
@ -191,7 +193,7 @@
pinctrl-names = "default"; pinctrl-names = "default";
}; };
&pinctrl_aobus { &gpio_ao {
gpio-line-names = "UART TX", "UART RX", "Power Control", "Power Key In", gpio-line-names = "UART TX", "UART RX", "Power Control", "Power Key In",
"VCCK En", "CON1 Header Pin31", "VCCK En", "CON1 Header Pin31",
"I2S Header Pin6", "IR In", "I2S Header Pin7", "I2S Header Pin6", "IR In", "I2S Header Pin7",
@ -201,7 +203,7 @@
""; "";
}; };
&pinctrl_periphs { &gpio {
gpio-line-names = /* Bank GPIOZ */ gpio-line-names = /* Bank GPIOZ */
"Eth MDIO", "Eth MDC", "Eth RGMII RX Clk", "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
"Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2", "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
@ -273,11 +275,14 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <200000000>; max-frequency = <50000000>;
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddio_ao3v3>; vmmc-supply = <&vddio_ao3v3>;
@ -301,12 +306,11 @@
sd-uhs-sdr12; sd-uhs-sdr12;
sd-uhs-sdr25; sd-uhs-sdr25;
sd-uhs-sdr50; sd-uhs-sdr50;
sd-uhs-sdr104; sd-uhs-ddr50;
max-frequency = <200000000>; max-frequency = <100000000>;
disable-wp; disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
cd-inverted;
vmmc-supply = <&vddio_ao3v3>; vmmc-supply = <&vddio_ao3v3>;
vqmmc-supply = <&vddio_tf>; vqmmc-supply = <&vddio_tf>;

View file

@ -36,8 +36,15 @@
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>; regulator-max-microvolt = <5000000>;
/*
* signal name from schematics: PWREN
*/
gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
enable-active-high; enable-active-high;
/*
* signal name from schematics: USB_POWER
*/
vin-supply = <&p5v0>;
}; };
leds { leds {
@ -50,18 +57,38 @@
}; };
}; };
p5v0: regulator-p5v0 {
compatible = "regulator-fixed";
regulator-name = "P5V0";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
};
hdmi_p5v0: regulator-hdmi_p5v0 {
compatible = "regulator-fixed";
regulator-name = "HDMI_P5V0";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
/* AP2331SA-7 */
vin-supply = <&p5v0>;
};
tflash_vdd: regulator-tflash_vdd { tflash_vdd: regulator-tflash_vdd {
/*
* signal name from schematics: TFLASH_VDD_EN
*/
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "TFLASH_VDD"; regulator-name = "TFLASH_VDD";
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
/*
* signal name from schematics: TFLASH_VDD_EN
*/
gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>; gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
enable-active-high; enable-active-high;
/* U16 RT9179GB */
vin-supply = <&vddio_ao3v3>;
}; };
tf_io: gpio-regulator-tf_io { tf_io: gpio-regulator-tf_io {
@ -77,8 +104,10 @@
gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
gpios-states = <0>; gpios-states = <0>;
states = <3300000 0 states = <3300000 0>,
1800000 1>; <1800000 1>;
/* U12/U13 RT9179GB */
vin-supply = <&vddio_ao3v3>;
}; };
vcc1v8: regulator-vcc1v8 { vcc1v8: regulator-vcc1v8 {
@ -86,6 +115,9 @@
regulator-name = "VCC1V8"; regulator-name = "VCC1V8";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-always-on;
/* U18 RT9179GB */
vin-supply = <&vddio_ao3v3>;
}; };
vcc3v3: regulator-vcc3v3 { vcc3v3: regulator-vcc3v3 {
@ -95,6 +127,36 @@
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
}; };
vddio_ao1v8: regulator-vddio-ao1v8 {
compatible = "regulator-fixed";
regulator-name = "VDDIO_AO1V8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
/* U17 RT9179GB */
vin-supply = <&p5v0>;
};
vddio_ao3v3: regulator-vddio-ao3v3 {
compatible = "regulator-fixed";
regulator-name = "VDDIO_AO3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
/* U11 MP2161GJ-C499 */
vin-supply = <&p5v0>;
};
ddr3_1v5: regulator-ddr3_1v5 {
compatible = "regulator-fixed";
regulator-name = "DDR3_1V5";
regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
regulator-always-on;
/* U15 MP2161GJ-C499 */
vin-supply = <&p5v0>;
};
emmc_pwrseq: emmc-pwrseq { emmc_pwrseq: emmc-pwrseq {
compatible = "mmc-pwrseq-emmc"; compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
@ -126,10 +188,6 @@
phy-handle = <&eth_phy0>; phy-handle = <&eth_phy0>;
phy-mode = "rgmii"; phy-mode = "rgmii";
snps,reset-gpio = <&gpio GPIOZ_14 0>;
snps,reset-delays-us = <0 10000 1000000>;
snps,reset-active-low;
amlogic,tx-delay-ns = <2>; amlogic,tx-delay-ns = <2>;
mdio { mdio {
@ -140,10 +198,14 @@
eth_phy0: ethernet-phy@0 { eth_phy0: ethernet-phy@0 {
/* Realtek RTL8211F (0x001cc916) */ /* Realtek RTL8211F (0x001cc916) */
reg = <0>; reg = <0>;
reset-assert-us = <10000>;
reset-deassert-us = <30000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>; interrupt-parent = <&gpio_intc>;
/* MAC_INTR on GPIOZ_15 */ /* MAC_INTR on GPIOZ_15 */
interrupts = <29 IRQ_TYPE_LEVEL_LOW>; interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
eee-broken-1000t;
}; };
}; };
}; };
@ -167,6 +229,7 @@
status = "okay"; status = "okay";
pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
hdmi-supply = <&hdmi_p5v0>;
}; };
&hdmi_tx_tmds_port { &hdmi_tx_tmds_port {
@ -187,7 +250,7 @@
pinctrl-names = "default"; pinctrl-names = "default";
}; };
&pinctrl_aobus { &gpio_ao {
gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En", gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En",
"USB HUB nRESET", "USB OTG Power En", "USB HUB nRESET", "USB OTG Power En",
"J7 Header Pin2", "IR In", "J7 Header Pin4", "J7 Header Pin2", "IR In", "J7 Header Pin4",
@ -197,7 +260,7 @@
""; "";
}; };
&pinctrl_periphs { &gpio {
gpio-line-names = /* Bank GPIOZ */ gpio-line-names = /* Bank GPIOZ */
"Eth MDIO", "Eth MDC", "Eth RGMII RX Clk", "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
"Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2", "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
@ -256,11 +319,14 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
sd-uhs-sdr12;
sd-uhs-sdr25;
sd-uhs-sdr50;
sd-uhs-ddr50;
max-frequency = <100000000>; max-frequency = <100000000>;
disable-wp; disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
cd-inverted;
vmmc-supply = <&tflash_vdd>; vmmc-supply = <&tflash_vdd>;
vqmmc-supply = <&tf_io>; vqmmc-supply = <&tf_io>;
@ -274,7 +340,7 @@
pinctrl-names = "default", "clk-gate"; pinctrl-names = "default", "clk-gate";
bus-width = <8>; bus-width = <8>;
max-frequency = <100000000>; max-frequency = <200000000>;
non-removable; non-removable;
disable-wp; disable-wp;
cap-mmc-highspeed; cap-mmc-highspeed;
@ -293,7 +359,7 @@
}; };
&usb0_phy { &usb0_phy {
status = "okay"; status = "disabled";
phy-supply = <&usb_otg_pwr>; phy-supply = <&usb_otg_pwr>;
}; };
@ -303,7 +369,7 @@
}; };
&usb0 { &usb0 {
status = "okay"; status = "disabled";
}; };
&usb1 { &usb1 {

View file

@ -68,10 +68,6 @@
amlogic,tx-delay-ns = <2>; amlogic,tx-delay-ns = <2>;
snps,reset-gpio = <&gpio GPIOZ_14 0>;
snps,reset-delays-us = <0 10000 1000000>;
snps,reset-active-low;
mdio { mdio {
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
#address-cells = <1>; #address-cells = <1>;
@ -80,6 +76,11 @@
eth_phy0: ethernet-phy@3 { eth_phy0: ethernet-phy@3 {
/* Micrel KSZ9031 (0x00221620) */ /* Micrel KSZ9031 (0x00221620) */
reg = <3>; reg = <3>;
reset-assert-us = <10000>;
reset-deassert-us = <30000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>; interrupt-parent = <&gpio_intc>;
/* MAC_INTR on GPIOZ_15 */ /* MAC_INTR on GPIOZ_15 */
interrupts = <29 IRQ_TYPE_LEVEL_LOW>; interrupts = <29 IRQ_TYPE_LEVEL_LOW>;

View file

@ -21,6 +21,6 @@
phy-mode = "rmii"; phy-mode = "rmii";
snps,reset-gpio = <&gpio GPIOZ_14 0>; snps,reset-gpio = <&gpio GPIOZ_14 0>;
snps,reset-delays-us = <0 10000 1000000>; snps,reset-delays-us = <0>, <10000>, <1000000>;
snps,reset-active-low; snps,reset-active-low;
}; };

View file

@ -46,8 +46,8 @@
gpios-states = <1>; gpios-states = <1>;
/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ /* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
states = <1800000 0 states = <1800000 0>,
3300000 1>; <3300000 1>;
regulator-settling-time-up-us = <10000>; regulator-settling-time-up-us = <10000>;
regulator-settling-time-down-us = <150000>; regulator-settling-time-down-us = <150000>;
@ -165,11 +165,14 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; max-frequency = <50000000>;
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;

View file

@ -81,6 +81,7 @@
mux { mux {
groups = "uart_tx_ao_a", "uart_rx_ao_a"; groups = "uart_tx_ao_a", "uart_rx_ao_a";
function = "uart_ao"; function = "uart_ao";
bias-disable;
}; };
}; };
@ -89,6 +90,7 @@
groups = "uart_cts_ao_a", groups = "uart_cts_ao_a",
"uart_rts_ao_a"; "uart_rts_ao_a";
function = "uart_ao"; function = "uart_ao";
bias-disable;
}; };
}; };
@ -96,6 +98,7 @@
mux { mux {
groups = "uart_tx_ao_b", "uart_rx_ao_b"; groups = "uart_tx_ao_b", "uart_rx_ao_b";
function = "uart_ao_b"; function = "uart_ao_b";
bias-disable;
}; };
}; };
@ -104,6 +107,7 @@
groups = "uart_cts_ao_b", groups = "uart_cts_ao_b",
"uart_rts_ao_b"; "uart_rts_ao_b";
function = "uart_ao_b"; function = "uart_ao_b";
bias-disable;
}; };
}; };
@ -111,6 +115,7 @@
mux { mux {
groups = "remote_input_ao"; groups = "remote_input_ao";
function = "remote_input_ao"; function = "remote_input_ao";
bias-disable;
}; };
}; };
@ -119,6 +124,7 @@
groups = "i2c_sck_ao", groups = "i2c_sck_ao",
"i2c_sda_ao"; "i2c_sda_ao";
function = "i2c_ao"; function = "i2c_ao";
bias-disable;
}; };
}; };
@ -126,6 +132,7 @@
mux { mux {
groups = "pwm_ao_a_3"; groups = "pwm_ao_a_3";
function = "pwm_ao_a_3"; function = "pwm_ao_a_3";
bias-disable;
}; };
}; };
@ -133,6 +140,7 @@
mux { mux {
groups = "pwm_ao_a_6"; groups = "pwm_ao_a_6";
function = "pwm_ao_a_6"; function = "pwm_ao_a_6";
bias-disable;
}; };
}; };
@ -140,6 +148,7 @@
mux { mux {
groups = "pwm_ao_a_12"; groups = "pwm_ao_a_12";
function = "pwm_ao_a_12"; function = "pwm_ao_a_12";
bias-disable;
}; };
}; };
@ -147,6 +156,7 @@
mux { mux {
groups = "pwm_ao_b"; groups = "pwm_ao_b";
function = "pwm_ao_b"; function = "pwm_ao_b";
bias-disable;
}; };
}; };
@ -154,6 +164,7 @@
mux { mux {
groups = "i2s_am_clk"; groups = "i2s_am_clk";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -161,6 +172,7 @@
mux { mux {
groups = "i2s_out_ao_clk"; groups = "i2s_out_ao_clk";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -168,6 +180,7 @@
mux { mux {
groups = "i2s_out_lr_clk"; groups = "i2s_out_lr_clk";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -175,6 +188,7 @@
mux { mux {
groups = "i2s_out_ch01_ao"; groups = "i2s_out_ch01_ao";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -182,6 +196,7 @@
mux { mux {
groups = "i2s_out_ch23_ao"; groups = "i2s_out_ch23_ao";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -189,6 +204,7 @@
mux { mux {
groups = "i2s_out_ch45_ao"; groups = "i2s_out_ch45_ao";
function = "i2s_out_ao"; function = "i2s_out_ao";
bias-disable;
}; };
}; };
@ -203,6 +219,7 @@
mux { mux {
groups = "spdif_out_ao_13"; groups = "spdif_out_ao_13";
function = "spdif_out_ao"; function = "spdif_out_ao";
bias-disable;
}; };
}; };
@ -210,6 +227,7 @@
mux { mux {
groups = "ao_cec"; groups = "ao_cec";
function = "cec_ao"; function = "cec_ao";
bias-disable;
}; };
}; };
@ -217,6 +235,7 @@
mux { mux {
groups = "ee_cec"; groups = "ee_cec";
function = "cec_ao"; function = "cec_ao";
bias-disable;
}; };
}; };
}; };
@ -280,6 +299,12 @@
&clkc_AO { &clkc_AO {
compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc"; compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc";
clocks = <&xtal>, <&clkc CLKID_CLK81>;
clock-names = "xtal", "mpeg-clk";
};
&efuse {
clocks = <&clkc CLKID_EFUSE>;
}; };
&ethmac { &ethmac {
@ -311,6 +336,8 @@
clkc: clock-controller { clkc: clock-controller {
compatible = "amlogic,gxbb-clkc"; compatible = "amlogic,gxbb-clkc";
#clock-cells = <1>; #clock-cells = <1>;
clocks = <&xtal>;
clock-names = "xtal";
}; };
}; };
@ -354,11 +381,17 @@
}; };
emmc_pins: emmc { emmc_pins: emmc {
mux { mux-0 {
groups = "emmc_nand_d07", groups = "emmc_nand_d07",
"emmc_cmd", "emmc_cmd";
"emmc_clk";
function = "emmc"; function = "emmc";
bias-pull-up;
};
mux-1 {
groups = "emmc_clk";
function = "emmc";
bias-disable;
}; };
}; };
@ -366,6 +399,7 @@
mux { mux {
groups = "emmc_ds"; groups = "emmc_ds";
function = "emmc"; function = "emmc";
bias-pull-down;
}; };
}; };
@ -373,9 +407,6 @@
mux { mux {
groups = "BOOT_8"; groups = "BOOT_8";
function = "gpio_periphs"; function = "gpio_periphs";
};
cfg-pull-down {
pins = "BOOT_8";
bias-pull-down; bias-pull-down;
}; };
}; };
@ -387,6 +418,7 @@
"nor_c", "nor_c",
"nor_cs"; "nor_cs";
function = "nor"; function = "nor";
bias-disable;
}; };
}; };
@ -396,6 +428,7 @@
"spi_mosi", "spi_mosi",
"spi_sclk"; "spi_sclk";
function = "spi"; function = "spi";
bias-disable;
}; };
}; };
@ -403,18 +436,25 @@
mux { mux {
groups = "spi_ss0"; groups = "spi_ss0";
function = "spi"; function = "spi";
bias-disable;
}; };
}; };
sdcard_pins: sdcard { sdcard_pins: sdcard {
mux { mux-0 {
groups = "sdcard_d0", groups = "sdcard_d0",
"sdcard_d1", "sdcard_d1",
"sdcard_d2", "sdcard_d2",
"sdcard_d3", "sdcard_d3",
"sdcard_cmd", "sdcard_cmd";
"sdcard_clk";
function = "sdcard"; function = "sdcard";
bias-pull-up;
};
mux-1 {
groups = "sdcard_clk";
function = "sdcard";
bias-disable;
}; };
}; };
@ -422,22 +462,25 @@
mux { mux {
groups = "CARD_2"; groups = "CARD_2";
function = "gpio_periphs"; function = "gpio_periphs";
};
cfg-pull-down {
pins = "CARD_2";
bias-pull-down; bias-pull-down;
}; };
}; };
sdio_pins: sdio { sdio_pins: sdio {
mux { mux-0 {
groups = "sdio_d0", groups = "sdio_d0",
"sdio_d1", "sdio_d1",
"sdio_d2", "sdio_d2",
"sdio_d3", "sdio_d3",
"sdio_cmd", "sdio_cmd";
"sdio_clk";
function = "sdio"; function = "sdio";
bias-pull-up;
};
mux-1 {
groups = "sdio_clk";
function = "sdio";
bias-disable;
}; };
}; };
@ -445,9 +488,6 @@
mux { mux {
groups = "GPIOX_4"; groups = "GPIOX_4";
function = "gpio_periphs"; function = "gpio_periphs";
};
cfg-pull-down {
pins = "GPIOX_4";
bias-pull-down; bias-pull-down;
}; };
}; };
@ -456,6 +496,7 @@
mux { mux {
groups = "sdio_irq"; groups = "sdio_irq";
function = "sdio"; function = "sdio";
bias-disable;
}; };
}; };
@ -464,6 +505,7 @@
groups = "uart_tx_a", groups = "uart_tx_a",
"uart_rx_a"; "uart_rx_a";
function = "uart_a"; function = "uart_a";
bias-disable;
}; };
}; };
@ -472,6 +514,7 @@
groups = "uart_cts_a", groups = "uart_cts_a",
"uart_rts_a"; "uart_rts_a";
function = "uart_a"; function = "uart_a";
bias-disable;
}; };
}; };
@ -480,6 +523,7 @@
groups = "uart_tx_b", groups = "uart_tx_b",
"uart_rx_b"; "uart_rx_b";
function = "uart_b"; function = "uart_b";
bias-disable;
}; };
}; };
@ -488,6 +532,7 @@
groups = "uart_cts_b", groups = "uart_cts_b",
"uart_rts_b"; "uart_rts_b";
function = "uart_b"; function = "uart_b";
bias-disable;
}; };
}; };
@ -496,6 +541,7 @@
groups = "uart_tx_c", groups = "uart_tx_c",
"uart_rx_c"; "uart_rx_c";
function = "uart_c"; function = "uart_c";
bias-disable;
}; };
}; };
@ -504,6 +550,7 @@
groups = "uart_cts_c", groups = "uart_cts_c",
"uart_rts_c"; "uart_rts_c";
function = "uart_c"; function = "uart_c";
bias-disable;
}; };
}; };
@ -512,6 +559,7 @@
groups = "i2c_sck_a", groups = "i2c_sck_a",
"i2c_sda_a"; "i2c_sda_a";
function = "i2c_a"; function = "i2c_a";
bias-disable;
}; };
}; };
@ -520,6 +568,7 @@
groups = "i2c_sck_b", groups = "i2c_sck_b",
"i2c_sda_b"; "i2c_sda_b";
function = "i2c_b"; function = "i2c_b";
bias-disable;
}; };
}; };
@ -528,6 +577,7 @@
groups = "i2c_sck_c", groups = "i2c_sck_c",
"i2c_sda_c"; "i2c_sda_c";
function = "i2c_c"; function = "i2c_c";
bias-disable;
}; };
}; };
@ -548,6 +598,7 @@
"eth_txd2", "eth_txd2",
"eth_txd3"; "eth_txd3";
function = "eth"; function = "eth";
bias-disable;
}; };
}; };
@ -563,6 +614,7 @@
"eth_txd0", "eth_txd0",
"eth_txd1"; "eth_txd1";
function = "eth"; function = "eth";
bias-disable;
}; };
}; };
@ -570,6 +622,7 @@
mux { mux {
groups = "pwm_a_x"; groups = "pwm_a_x";
function = "pwm_a_x"; function = "pwm_a_x";
bias-disable;
}; };
}; };
@ -577,6 +630,7 @@
mux { mux {
groups = "pwm_a_y"; groups = "pwm_a_y";
function = "pwm_a_y"; function = "pwm_a_y";
bias-disable;
}; };
}; };
@ -584,6 +638,7 @@
mux { mux {
groups = "pwm_b"; groups = "pwm_b";
function = "pwm_b"; function = "pwm_b";
bias-disable;
}; };
}; };
@ -591,6 +646,7 @@
mux { mux {
groups = "pwm_d"; groups = "pwm_d";
function = "pwm_d"; function = "pwm_d";
bias-disable;
}; };
}; };
@ -598,6 +654,7 @@
mux { mux {
groups = "pwm_e"; groups = "pwm_e";
function = "pwm_e"; function = "pwm_e";
bias-disable;
}; };
}; };
@ -605,6 +662,7 @@
mux { mux {
groups = "pwm_f_x"; groups = "pwm_f_x";
function = "pwm_f_x"; function = "pwm_f_x";
bias-disable;
}; };
}; };
@ -612,6 +670,7 @@
mux { mux {
groups = "pwm_f_y"; groups = "pwm_f_y";
function = "pwm_f_y"; function = "pwm_f_y";
bias-disable;
}; };
}; };
@ -619,6 +678,7 @@
mux { mux {
groups = "hdmi_hpd"; groups = "hdmi_hpd";
function = "hdmi_hpd"; function = "hdmi_hpd";
bias-disable;
}; };
}; };
@ -626,6 +686,7 @@
mux { mux {
groups = "hdmi_sda", "hdmi_scl"; groups = "hdmi_sda", "hdmi_scl";
function = "hdmi_i2c"; function = "hdmi_i2c";
bias-disable;
}; };
}; };
@ -633,6 +694,7 @@
mux { mux {
groups = "i2sout_ch23_y"; groups = "i2sout_ch23_y";
function = "i2s_out"; function = "i2s_out";
bias-disable;
}; };
}; };
@ -640,6 +702,7 @@
mux { mux {
groups = "i2sout_ch45_y"; groups = "i2sout_ch45_y";
function = "i2s_out"; function = "i2s_out";
bias-disable;
}; };
}; };
@ -647,6 +710,7 @@
mux { mux {
groups = "i2sout_ch67_y"; groups = "i2sout_ch67_y";
function = "i2s_out"; function = "i2s_out";
bias-disable;
}; };
}; };
@ -654,6 +718,7 @@
mux { mux {
groups = "spdif_out_y"; groups = "spdif_out_y";
function = "spdif_out"; function = "spdif_out";
bias-disable;
}; };
}; };
}; };
@ -734,6 +799,12 @@
resets = <&reset RESET_SD_EMMC_C>; resets = <&reset RESET_SD_EMMC_C>;
}; };
&simplefb_hdmi {
clocks = <&clkc CLKID_HDMI_PCLK>,
<&clkc CLKID_CLK81>,
<&clkc CLKID_GCLK_VENCI_INT0>;
};
&spicc { &spicc {
clocks = <&clkc CLKID_SPICC>; clocks = <&clkc CLKID_SPICC>;
clock-names = "core"; clock-names = "core";
@ -774,3 +845,14 @@
compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu"; compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu";
power-domains = <&pwrc_vpu>; power-domains = <&pwrc_vpu>;
}; };
&vdec {
compatible = "amlogic,gxbb-vdec", "amlogic,gx-vdec";
clocks = <&clkc CLKID_DOS_PARSER>,
<&clkc CLKID_DOS>,
<&clkc CLKID_VDEC_1>,
<&clkc CLKID_VDEC_HEVC>;
clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
resets = <&reset RESET_PARSER>;
reset-names = "esparser";
};

View file

@ -14,7 +14,7 @@
/ { / {
compatible = "libretech,aml-s805x-ac", "amlogic,s805x", compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
"amlogic,meson-gxl"; "amlogic,meson-gxl";
model = "Libre Computer Board AML-S805X-AC"; model = "Libre Computer AML-S805X-AC";
aliases { aliases {
serial0 = &uart_AO; serial0 = &uart_AO;

View file

@ -0,0 +1,7 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
#include "meson-gx-u-boot.dtsi"

View file

@ -0,0 +1,16 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2019 BayLibre SAS. All rights reserved.
* Author: Jerome Brunet <jbrunet@baylibre.com>
*/
/dts-v1/;
#include "meson-gxl-s905d.dtsi"
#include "meson-gx-libretech-pc.dtsi"
/ {
compatible = "libretech,aml-s905d-pc", "amlogic,s905d",
"amlogic,meson-gxl";
model = "Libre Computer AML-S905D-PC";
};

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2016 Endless Computers, Inc.
* Author: Carlo Caione <carlo@endlessm.com>
*/
#include "meson-gxl.dtsi"
#include "meson-gxl-mali.dtsi"
/ {
compatible = "amlogic,s905d", "amlogic,meson-gxl";
};

View file

@ -33,11 +33,9 @@
gpio-keys-polled { gpio-keys-polled {
compatible = "gpio-keys-polled"; compatible = "gpio-keys-polled";
#address-cells = <1>;
#size-cells = <0>;
poll-interval = <100>; poll-interval = <100>;
button@0 { power-button {
label = "power"; label = "power";
linux,code = <KEY_POWER>; linux,code = <KEY_POWER>;
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
@ -110,10 +108,10 @@
}; };
&ir { &ir {
linux,rc-map-name = "rc-geekbox"; linux,rc-map-name = "rc-khadas";
}; };
&pinctrl_aobus { &gpio_ao {
gpio-line-names = "UART TX", gpio-line-names = "UART TX",
"UART RX", "UART RX",
"Power Key In", "Power Key In",
@ -128,7 +126,7 @@
""; "";
}; };
&pinctrl_periphs { &gpio {
gpio-line-names = /* Bank GPIOZ */ gpio-line-names = /* Bank GPIOZ */
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
@ -188,6 +186,16 @@
}; };
}; };
&uart_A {
bluetooth {
compatible = "brcm,bcm43438-bt";
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
max-speed = <2000000>;
clocks = <&wifi32k>;
clock-names = "lpo";
};
};
/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */ /* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
&uart_AO { &uart_AO {
status = "okay"; status = "okay";

View file

@ -12,8 +12,9 @@
#include "meson-gxl-s905x.dtsi" #include "meson-gxl-s905x.dtsi"
/ { / {
compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl"; compatible = "libretech,aml-s905x-cc", "amlogic,s905x",
model = "Libre Computer Board AML-S905X-CC"; "amlogic,meson-gxl";
model = "Libre Computer AML-S905X-CC";
aliases { aliases {
serial0 = &uart_AO; serial0 = &uart_AO;
@ -115,11 +116,13 @@
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
}; };
/* This is provided by LDOs on the eMMC daugther card */
vddio_boot: regulator-vddio_boot { vddio_boot: regulator-vddio_boot {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "VDDIO_BOOT"; regulator-name = "VDDIO_BOOT";
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <1800000>;
vin-supply = <&vcc_3v3>;
}; };
}; };
@ -164,7 +167,7 @@
}; };
}; };
&pinctrl_aobus { &gpio_ao {
gpio-line-names = "UART TX", gpio-line-names = "UART TX",
"UART RX", "UART RX",
"Blue LED", "Blue LED",
@ -179,7 +182,7 @@
"7J1 Header Pin15"; "7J1 Header Pin15";
}; };
&pinctrl_periphs { &gpio {
gpio-line-names = /* Bank GPIOZ */ gpio-line-names = /* Bank GPIOZ */
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "",
@ -235,11 +238,10 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; max-frequency = <50000000>;
disable-wp; disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
cd-inverted;
vmmc-supply = <&vcc_3v3>; vmmc-supply = <&vcc_3v3>;
vqmmc-supply = <&vcc_card>; vqmmc-supply = <&vcc_card>;
@ -254,9 +256,9 @@
bus-width = <8>; bus-width = <8>;
cap-mmc-highspeed; cap-mmc-highspeed;
mmc-ddr-3_3v; mmc-ddr-1_8v;
max-frequency = <50000000>; mmc-hs200-1_8v;
non-removable; max-frequency = <200000000>;
disable-wp; disable-wp;
mmc-pwrseq = <&emmc_pwrseq>; mmc-pwrseq = <&emmc_pwrseq>;

View file

@ -114,11 +114,14 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; max-frequency = <50000000>;
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;
@ -134,11 +137,10 @@
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; max-frequency = <50000000>;
disable-wp; disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
cd-inverted;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;
vqmmc-supply = <&vddio_boot>; vqmmc-supply = <&vddio_boot>;

View file

@ -36,6 +36,16 @@
phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>; phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>;
}; };
}; };
crypto: crypto@c883e000 {
compatible = "amlogic,gxl-crypto";
reg = <0x0 0xc883e000 0x0 0x36>;
interrupts = <GIC_SPI 188 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc CLKID_BLKMV>;
clock-names = "blkmv";
status = "okay";
};
}; };
}; };
@ -80,9 +90,6 @@
}; };
&ethmac { &ethmac {
reg = <0x0 0xc9410000 0x0 0x10000
0x0 0xc8834540 0x0 0x4>;
clocks = <&clkc CLKID_ETH>, clocks = <&clkc CLKID_ETH>,
<&clkc CLKID_FCLK_DIV2>, <&clkc CLKID_FCLK_DIV2>,
<&clkc CLKID_MPLL2>; <&clkc CLKID_MPLL2>;
@ -326,10 +333,15 @@
}; };
emmc_pins: emmc { emmc_pins: emmc {
mux { mux-0 {
groups = "emmc_nand_d07", groups = "emmc_nand_d07",
"emmc_cmd", "emmc_cmd";
"emmc_clk"; function = "emmc";
bias-pull-up;
};
mux-1 {
groups = "emmc_clk";
function = "emmc"; function = "emmc";
bias-disable; bias-disable;
}; };
@ -339,7 +351,7 @@
mux { mux {
groups = "emmc_ds"; groups = "emmc_ds";
function = "emmc"; function = "emmc";
bias-disable; bias-pull-down;
}; };
}; };
@ -381,13 +393,18 @@
}; };
sdcard_pins: sdcard { sdcard_pins: sdcard {
mux { mux-0 {
groups = "sdcard_d0", groups = "sdcard_d0",
"sdcard_d1", "sdcard_d1",
"sdcard_d2", "sdcard_d2",
"sdcard_d3", "sdcard_d3",
"sdcard_cmd", "sdcard_cmd";
"sdcard_clk"; function = "sdcard";
bias-pull-up;
};
mux-1 {
groups = "sdcard_clk";
function = "sdcard"; function = "sdcard";
bias-disable; bias-disable;
}; };
@ -402,13 +419,18 @@
}; };
sdio_pins: sdio { sdio_pins: sdio {
mux { mux-0 {
groups = "sdio_d0", groups = "sdio_d0",
"sdio_d1", "sdio_d1",
"sdio_d2", "sdio_d2",
"sdio_d3", "sdio_d3",
"sdio_cmd", "sdio_cmd";
"sdio_clk"; function = "sdio";
bias-pull-up;
};
mux-1 {
groups = "sdio_clk";
function = "sdio"; function = "sdio";
bias-disable; bias-disable;
}; };
@ -511,6 +533,15 @@
}; };
}; };
i2c_c_dv18_pins: i2c_c_dv18 {
mux {
groups = "i2c_sck_c_dv19",
"i2c_sda_c_dv18";
function = "i2c_c";
bias-disable;
};
};
eth_pins: eth_c { eth_pins: eth_c {
mux { mux {
groups = "eth_mdio", groups = "eth_mdio",
@ -697,7 +728,7 @@
#size-cells = <0>; #size-cells = <0>;
internal_phy: ethernet-phy@8 { internal_phy: ethernet-phy@8 {
compatible = "ethernet-phy-id0181.4400", "ethernet-phy-ieee802.3-c22"; compatible = "ethernet-phy-id0181.4400";
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
reg = <8>; reg = <8>;
max-speed = <100>; max-speed = <100>;
@ -787,6 +818,12 @@
resets = <&reset RESET_SD_EMMC_C>; resets = <&reset RESET_SD_EMMC_C>;
}; };
&simplefb_hdmi {
clocks = <&clkc CLKID_HDMI_PCLK>,
<&clkc CLKID_CLK81>,
<&clkc CLKID_GCLK_VENCI_INT0>;
};
&spicc { &spicc {
clocks = <&clkc CLKID_SPICC>; clocks = <&clkc CLKID_SPICC>;
clock-names = "core"; clock-names = "core";
@ -827,3 +864,14 @@
compatible = "amlogic,meson-gxl-vpu", "amlogic,meson-gx-vpu"; compatible = "amlogic,meson-gxl-vpu", "amlogic,meson-gx-vpu";
power-domains = <&pwrc_vpu>; power-domains = <&pwrc_vpu>;
}; };
&vdec {
compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec";
clocks = <&clkc CLKID_DOS_PARSER>,
<&clkc CLKID_DOS>,
<&clkc CLKID_VDEC_1>,
<&clkc CLKID_VDEC_HEVC>;
clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
resets = <&reset RESET_PARSER>;
reset-names = "esparser";
};

View file

@ -18,7 +18,6 @@
aliases { aliases {
serial0 = &uart_AO; serial0 = &uart_AO;
serial1 = &uart_A;
serial2 = &uart_AO_B; serial2 = &uart_AO_B;
}; };
@ -63,11 +62,9 @@
gpio-keys-polled { gpio-keys-polled {
compatible = "gpio-keys-polled"; compatible = "gpio-keys-polled";
#address-cells = <1>;
#size-cells = <0>;
poll-interval = <100>; poll-interval = <100>;
button@0 { power-button {
label = "power"; label = "power";
linux,code = <KEY_POWER>; linux,code = <KEY_POWER>;
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
@ -132,19 +129,15 @@
map1 { map1 {
trip = <&cpu_alert1>; trip = <&cpu_alert1>;
cooling-device = <&gpio_fan 2 THERMAL_NO_LIMIT>; cooling-device = <&gpio_fan 2 THERMAL_NO_LIMIT>,
}; <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
map2 { <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
trip = <&cpu_alert1>; <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
cooling-device = <&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; <&cpu5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
}; <&cpu6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
map3 {
trip = <&cpu_alert1>;
cooling-device =
<&cpu4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
}; };
}; };
}; };
@ -246,11 +239,6 @@
amlogic,tx-delay-ns = <2>; amlogic,tx-delay-ns = <2>;
/* External PHY reset is shared with internal PHY Led signals */
snps,reset-gpio = <&gpio GPIOZ_14 0>;
snps,reset-delays-us = <0 10000 1000000>;
snps,reset-active-low;
/* External PHY is in RGMII */ /* External PHY is in RGMII */
phy-mode = "rgmii"; phy-mode = "rgmii";
@ -261,6 +249,11 @@
external_phy: ethernet-phy@0 { external_phy: ethernet-phy@0 {
/* Realtek RTL8211F (0x001cc916) */ /* Realtek RTL8211F (0x001cc916) */
reg = <0>; reg = <0>;
reset-assert-us = <10000>;
reset-deassert-us = <30000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>; interrupt-parent = <&gpio_intc>;
/* MAC_INTR on GPIOZ_15 */ /* MAC_INTR on GPIOZ_15 */
interrupts = <25 IRQ_TYPE_LEVEL_LOW>; interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
@ -306,7 +299,7 @@
status = "okay"; status = "okay";
pinctrl-0 = <&remote_input_ao_pins>; pinctrl-0 = <&remote_input_ao_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
linux,rc-map-name = "rc-geekbox"; linux,rc-map-name = "rc-khadas";
}; };
&pwm_AO_ab { &pwm_AO_ab {
@ -328,16 +321,20 @@
&sd_emmc_a { &sd_emmc_a {
status = "okay"; status = "okay";
pinctrl-0 = <&sdio_pins>; pinctrl-0 = <&sdio_pins>;
pinctrl-names = "default"; pinctrl-1 = <&sdio_clk_gate_pins>;
pinctrl-names = "default", "clk-gate";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
bus-width = <4>; bus-width = <4>;
max-frequency = <100000000>; max-frequency = <50000000>;
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;
@ -353,15 +350,15 @@
&sd_emmc_b { &sd_emmc_b {
status = "okay"; status = "okay";
pinctrl-0 = <&sdcard_pins>; pinctrl-0 = <&sdcard_pins>;
pinctrl-names = "default"; pinctrl-1 = <&sdcard_clk_gate_pins>;
pinctrl-names = "default", "clk-gate";
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
max-frequency = <100000000>; max-frequency = <50000000>;
disable-wp; disable-wp;
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
cd-inverted;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;
vqmmc-supply = <&vddio_boot>; vqmmc-supply = <&vddio_boot>;
@ -371,17 +368,16 @@
&sd_emmc_c { &sd_emmc_c {
status = "okay"; status = "okay";
pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
pinctrl-names = "default"; pinctrl-1 = <&emmc_clk_gate_pins>;
pinctrl-names = "default", "clk-gate";
bus-width = <8>; bus-width = <8>;
cap-sd-highspeed;
cap-mmc-highspeed; cap-mmc-highspeed;
max-frequency = <200000000>; max-frequency = <200000000>;
non-removable; non-removable;
disable-wp; disable-wp;
mmc-ddr-1_8v; mmc-ddr-1_8v;
mmc-hs200-1_8v; mmc-hs200-1_8v;
mmc-hs400-1_8v;
mmc-pwrseq = <&emmc_pwrseq>; mmc-pwrseq = <&emmc_pwrseq>;
vmmc-supply = <&vcc_3v3>; vmmc-supply = <&vcc_3v3>;
@ -409,8 +405,17 @@
/* This one is connected to the Bluetooth module */ /* This one is connected to the Bluetooth module */
&uart_A { &uart_A {
status = "okay"; status = "okay";
pinctrl-0 = <&uart_a_pins>; pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
uart-has-rtscts;
bluetooth {
compatible = "brcm,bcm43438-bt";
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
max-speed = <2000000>;
clocks = <&wifi32k>;
clock-names = "lpo";
};
}; };
/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */ /* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */

View file

@ -0,0 +1,7 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
#include "meson-gx-u-boot.dtsi"

View file

@ -0,0 +1,62 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2019 BayLibre SAS. All rights reserved.
* Author: Jerome Brunet <jbrunet@baylibre.com>
*/
/dts-v1/;
#include "meson-gxm.dtsi"
#include "meson-gx-libretech-pc.dtsi"
/ {
compatible = "libretech,aml-s912-pc", "amlogic,s912",
"amlogic,meson-gxm";
model = "Libre Computer AML-S912-PC";
typec2_vbus: regulator-typec2_vbus {
compatible = "regulator-fixed";
regulator-name = "TYPEC2_VBUS";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&vcc5v>;
gpio = <&gpio GPIODV_1 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
};
&pinctrl_periphs {
/*
* Make sure the irq pin of the TYPE C controller is not driven
* by the SoC.
*/
fusb302_irq_pins: fusb302_irq {
mux {
groups = "GPIODV_0";
function = "gpio_periphs";
bias-pull-up;
output-disable;
};
};
};
&i2c_C {
fusb302@22 {
compatible = "fcs,fusb302";
reg = <0x22>;
pinctrl-0 = <&fusb302_irq_pins>;
pinctrl-names = "default";
interrupt-parent = <&gpio_intc>;
interrupts = <59 IRQ_TYPE_LEVEL_LOW>;
vbus-supply = <&typec2_vbus>;
status = "okay";
};
};
&usb2_phy2 {
phy-supply = <&typec2_vbus>;
};

View file

@ -44,7 +44,7 @@
cpu4: cpu@100 { cpu4: cpu@100 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x100>; reg = <0x0 0x100>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -53,7 +53,7 @@
cpu5: cpu@101 { cpu5: cpu@101 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x101>; reg = <0x0 0x101>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -62,7 +62,7 @@
cpu6: cpu@102 { cpu6: cpu@102 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x102>; reg = <0x0 0x102>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -71,7 +71,7 @@
cpu7: cpu@103 { cpu7: cpu@103 {
device_type = "cpu"; device_type = "cpu";
compatible = "arm,cortex-a53", "arm,armv8"; compatible = "arm,cortex-a53";
reg = <0x0 0x103>; reg = <0x0 0x103>;
enable-method = "psci"; enable-method = "psci";
next-level-cache = <&l2>; next-level-cache = <&l2>;
@ -91,6 +91,33 @@
reset-names = "phy"; reset-names = "phy";
status = "okay"; status = "okay";
}; };
mali: gpu@c0000 {
compatible = "amlogic,meson-gxm-mali", "arm,mali-t820";
reg = <0x0 0xc0000 0x0 0x40000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "job", "mmu", "gpu";
clocks = <&clkc CLKID_MALI>;
resets = <&reset RESET_MALI_CAPB3>, <&reset RESET_MALI>;
/*
* Mali clocking is provided by two identical clock paths
* MALI_0 and MALI_1 muxed to a single clock by a glitch
* free mux to safely change frequency while running.
*/
assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
<&clkc CLKID_MALI_0>,
<&clkc CLKID_MALI>; /* Glitch free mux */
assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
<0>, /* Do Nothing */
<&clkc CLKID_MALI_0>;
assigned-clock-rates = <0>, /* Do Nothing */
<666666666>,
<0>; /* Do Nothing */
};
}; };
&clkc_AO { &clkc_AO {
@ -117,3 +144,7 @@
&dwc3 { &dwc3 {
phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>, <&usb2_phy2>; phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>, <&usb2_phy2>;
}; };
&vdec {
compatible = "amlogic,gxm-vdec", "amlogic,gx-vdec";
};

View file

@ -246,6 +246,10 @@
linux,rc-map-name = "rc-khadas"; linux,rc-map-name = "rc-khadas";
}; };
&pcie {
reset-gpios = <&gpio GPIOA_8 GPIO_ACTIVE_LOW>;
};
&pwm_ef { &pwm_ef {
status = "okay"; status = "okay";
pinctrl-0 = <&pwm_e_pins>; pinctrl-0 = <&pwm_e_pins>;
@ -274,6 +278,9 @@
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vsys_3v3>; vmmc-supply = <&vsys_3v3>;

View file

@ -9,6 +9,7 @@
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h> #include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h> #include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
/ { / {
compatible = "seirobotics,sei610", "amlogic,sm1"; compatible = "seirobotics,sei610", "amlogic,sm1";
@ -19,6 +20,22 @@
ethernet0 = &ethmac; ethernet0 = &ethmac;
}; };
mono_dac: audio-codec-0 {
compatible = "maxim,max98357a";
#sound-dai-cells = <0>;
sound-name-prefix = "U16";
sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
};
dmics: audio-codec-1 {
#sound-dai-cells = <0>;
compatible = "dmic-codec";
num-channels = <2>;
wakeup-delay-ms = <50>;
status = "okay";
sound-name-prefix = "MIC";
};
chosen { chosen {
stdout-path = "serial0:115200n8"; stdout-path = "serial0:115200n8";
}; };
@ -29,25 +46,47 @@
}; };
gpio-keys { gpio-keys {
compatible = "gpio-keys-polled"; compatible = "gpio-keys";
poll-interval = <100>;
key1 { key1 {
label = "A"; label = "A";
linux,code = <BTN_0>; linux,code = <BTN_0>;
gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>; gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <34 IRQ_TYPE_EDGE_BOTH>;
}; };
key2 { key2 {
label = "B"; label = "B";
linux,code = <BTN_1>; linux,code = <BTN_1>;
gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <35 IRQ_TYPE_EDGE_BOTH>;
}; };
key3 { key3 {
label = "C"; label = "C";
linux,code = <BTN_2>; linux,code = <BTN_2>;
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <2 IRQ_TYPE_EDGE_BOTH>;
};
mic_mute {
label = "MicMute";
linux,code = <SW_MUTE_DEVICE>;
linux,input-type = <EV_SW>;
gpios = <&gpio_ao GPIOE_2 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <99 IRQ_TYPE_EDGE_BOTH>;
};
power_key {
label = "PowerKey";
linux,code = <KEY_POWER>;
gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
}; };
}; };
@ -179,6 +218,120 @@
clock-names = "ext_clock"; clock-names = "ext_clock";
}; };
sound {
compatible = "amlogic,axg-sound-card";
model = "SM1-SEI610";
audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
<&tdmin_a>, <&tdmin_b>;
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
"TDMOUT_A IN 1", "FRDDR_B OUT 0",
"TDMOUT_A IN 2", "FRDDR_C OUT 0",
"TDM_A Playback", "TDMOUT_A OUT",
"TDMOUT_B IN 0", "FRDDR_A OUT 1",
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
"TDMOUT_B IN 2", "FRDDR_C OUT 1",
"TDM_B Playback", "TDMOUT_B OUT",
"TODDR_A IN 4", "PDM Capture",
"TODDR_B IN 4", "PDM Capture",
"TODDR_C IN 4", "PDM Capture",
"TDMIN_A IN 0", "TDM_A Capture",
"TDMIN_A IN 3", "TDM_A Loopback",
"TDMIN_B IN 0", "TDM_A Capture",
"TDMIN_B IN 3", "TDM_A Loopback",
"TDMIN_A IN 1", "TDM_B Capture",
"TDMIN_A IN 4", "TDM_B Loopback",
"TDMIN_B IN 1", "TDM_B Capture",
"TDMIN_B IN 4", "TDM_B Loopback",
"TODDR_A IN 0", "TDMIN_A OUT",
"TODDR_B IN 0", "TDMIN_A OUT",
"TODDR_C IN 0", "TDMIN_A OUT",
"TODDR_A IN 1", "TDMIN_B OUT",
"TODDR_B IN 1", "TDMIN_B OUT",
"TODDR_C IN 1", "TDMIN_B OUT";
assigned-clocks = <&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>;
assigned-clock-parents = <0>, <0>, <0>;
assigned-clock-rates = <294912000>,
<270950400>,
<393216000>;
status = "okay";
dai-link-0 {
sound-dai = <&frddr_a>;
};
dai-link-1 {
sound-dai = <&frddr_b>;
};
dai-link-2 {
sound-dai = <&frddr_c>;
};
dai-link-3 {
sound-dai = <&toddr_a>;
};
dai-link-4 {
sound-dai = <&toddr_b>;
};
dai-link-5 {
sound-dai = <&toddr_c>;
};
/* internal speaker interface */
dai-link-6 {
sound-dai = <&tdmif_a>;
dai-format = "i2s";
dai-tdm-slot-tx-mask-0 = <1 1>;
mclk-fs = <256>;
codec-0 {
sound-dai = <&mono_dac>;
};
codec-1 {
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
};
};
/* 8ch hdmi interface */
dai-link-7 {
sound-dai = <&tdmif_b>;
dai-format = "i2s";
dai-tdm-slot-tx-mask-0 = <1 1>;
dai-tdm-slot-tx-mask-1 = <1 1>;
dai-tdm-slot-tx-mask-2 = <1 1>;
dai-tdm-slot-tx-mask-3 = <1 1>;
mclk-fs = <256>;
codec {
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
};
};
/* internal digital mics */
dai-link-8 {
sound-dai = <&pdm>;
codec {
sound-dai = <&dmics>;
};
};
/* hdmi glue */
dai-link-9 {
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
codec {
sound-dai = <&hdmi_tx>;
};
};
};
wifi32k: wifi32k { wifi32k: wifi32k {
compatible = "pwm-clock"; compatible = "pwm-clock";
#clock-cells = <0>; #clock-cells = <0>;
@ -187,6 +340,10 @@
}; };
}; };
&arb {
status = "okay";
};
&cec_AO { &cec_AO {
pinctrl-0 = <&cec_ao_a_h_pins>; pinctrl-0 = <&cec_ao_a_h_pins>;
pinctrl-names = "default"; pinctrl-names = "default";
@ -201,6 +358,10 @@
hdmi-phandle = <&hdmi_tx>; hdmi-phandle = <&hdmi_tx>;
}; };
&clkc_audio {
status = "okay";
};
&cpu0 { &cpu0 {
cpu-supply = <&vddcpu>; cpu-supply = <&vddcpu>;
operating-points-v2 = <&cpu_opp_table>; operating-points-v2 = <&cpu_opp_table>;
@ -235,6 +396,18 @@
phy-mode = "rmii"; phy-mode = "rmii";
}; };
&frddr_a {
status = "okay";
};
&frddr_b {
status = "okay";
};
&frddr_c {
status = "okay";
};
&hdmi_tx { &hdmi_tx {
status = "okay"; status = "okay";
pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
@ -259,6 +432,12 @@
pinctrl-names = "default"; pinctrl-names = "default";
}; };
&pdm {
pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>;
pinctrl-names = "default";
status = "okay";
};
&pwm_AO_ab { &pwm_AO_ab {
status = "okay"; status = "okay";
pinctrl-0 = <&pwm_ao_a_pins>; pinctrl-0 = <&pwm_ao_a_pins>;
@ -305,6 +484,9 @@
non-removable; non-removable;
disable-wp; disable-wp;
/* WiFi firmware requires power to be kept while in suspend */
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>; mmc-pwrseq = <&sdio_pwrseq>;
vmmc-supply = <&vddao_3v3>; vmmc-supply = <&vddao_3v3>;
@ -353,6 +535,54 @@
vqmmc-supply = <&emmc_1v8>; vqmmc-supply = <&emmc_1v8>;
}; };
&tdmif_a {
pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
pinctrl-names = "default";
status = "okay";
assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
<&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
<&clkc_audio AUD_CLKID_MST_A_LRCLK>;
assigned-clock-rates = <0>, <0>;
};
&tdmif_b {
status = "okay";
};
&tdmin_a {
status = "okay";
};
&tdmin_b {
status = "okay";
};
&tdmout_a {
status = "okay";
};
&tdmout_b {
status = "okay";
};
&toddr_a {
status = "okay";
};
&toddr_b {
status = "okay";
};
&toddr_c {
status = "okay";
};
&tohdmitx {
status = "okay";
};
&uart_A { &uart_A {
status = "okay"; status = "okay";
pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
@ -361,6 +591,8 @@
bluetooth { bluetooth {
compatible = "brcm,bcm43438-bt"; compatible = "brcm,bcm43438-bt";
interrupt-parent = <&gpio_intc>;
interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
max-speed = <2000000>; max-speed = <2000000>;
clocks = <&wifi32k>; clocks = <&wifi32k>;

View file

@ -5,11 +5,47 @@
*/ */
#include "meson-g12-common.dtsi" #include "meson-g12-common.dtsi"
#include <dt-bindings/clock/axg-audio-clkc.h>
#include <dt-bindings/power/meson-sm1-power.h> #include <dt-bindings/power/meson-sm1-power.h>
#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
/ { / {
compatible = "amlogic,sm1"; compatible = "amlogic,sm1";
tdmif_a: audio-controller-0 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_A";
clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
<&clkc_audio AUD_CLKID_MST_A_SCLK>,
<&clkc_audio AUD_CLKID_MST_A_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
tdmif_b: audio-controller-1 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_B";
clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
<&clkc_audio AUD_CLKID_MST_B_SCLK>,
<&clkc_audio AUD_CLKID_MST_B_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
tdmif_c: audio-controller-2 {
compatible = "amlogic,axg-tdm-iface";
#sound-dai-cells = <0>;
sound-name-prefix = "TDM_C";
clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
<&clkc_audio AUD_CLKID_MST_C_SCLK>,
<&clkc_audio AUD_CLKID_MST_C_LRCLK>;
clock-names = "mclk", "sclk", "lrclk";
status = "disabled";
};
cpus { cpus {
#address-cells = <0x2>; #address-cells = <0x2>;
#size-cells = <0x0>; #size-cells = <0x0>;
@ -117,6 +153,305 @@
}; };
}; };
&apb {
audio: bus@60000 {
compatible = "simple-bus";
reg = <0x0 0x60000 0x0 0x1000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0x60000 0x0 0x1000>;
clkc_audio: clock-controller@0 {
status = "disabled";
compatible = "amlogic,sm1-audio-clkc";
reg = <0x0 0x0 0x0 0xb4>;
#clock-cells = <1>;
#reset-cells = <1>;
clocks = <&clkc CLKID_AUDIO>,
<&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>,
<&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL3>,
<&clkc CLKID_HIFI_PLL>,
<&clkc CLKID_FCLK_DIV3>,
<&clkc CLKID_FCLK_DIV4>,
<&clkc CLKID_FCLK_DIV5>;
clock-names = "pclk",
"mst_in0",
"mst_in1",
"mst_in2",
"mst_in3",
"mst_in4",
"mst_in5",
"mst_in6",
"mst_in7";
resets = <&reset RESET_AUDIO>;
};
toddr_a: audio-controller@100 {
compatible = "amlogic,sm1-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x100 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_A";
interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
resets = <&arb AXG_ARB_TODDR_A>,
<&clkc_audio AUD_RESET_TODDR_A>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <8192>;
status = "disabled";
};
toddr_b: audio-controller@140 {
compatible = "amlogic,sm1-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x140 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_B";
interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
resets = <&arb AXG_ARB_TODDR_B>,
<&clkc_audio AUD_RESET_TODDR_B>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
toddr_c: audio-controller@180 {
compatible = "amlogic,sm1-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x180 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_C";
interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
resets = <&arb AXG_ARB_TODDR_C>,
<&clkc_audio AUD_RESET_TODDR_C>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
frddr_a: audio-controller@1c0 {
compatible = "amlogic,sm1-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x1c0 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_A";
interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
resets = <&arb AXG_ARB_FRDDR_A>,
<&clkc_audio AUD_RESET_FRDDR_A>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <512>;
status = "disabled";
};
frddr_b: audio-controller@200 {
compatible = "amlogic,sm1-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x200 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_B";
interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
resets = <&arb AXG_ARB_FRDDR_B>,
<&clkc_audio AUD_RESET_FRDDR_B>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
frddr_c: audio-controller@240 {
compatible = "amlogic,sm1-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x240 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_C";
interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
resets = <&arb AXG_ARB_FRDDR_C>,
<&clkc_audio AUD_RESET_FRDDR_C>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
arb: reset-controller@280 {
status = "disabled";
compatible = "amlogic,meson-sm1-audio-arb";
reg = <0x0 0x280 0x0 0x4>;
#reset-cells = <1>;
clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
};
tdmin_a: audio-controller@300 {
compatible = "amlogic,sm1-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x300 0x0 0x40>;
sound-name-prefix = "TDMIN_A";
resets = <&clkc_audio AUD_RESET_TDMIN_A>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_b: audio-controller@340 {
compatible = "amlogic,sm1-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x340 0x0 0x40>;
sound-name-prefix = "TDMIN_B";
resets = <&clkc_audio AUD_RESET_TDMIN_B>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_c: audio-controller@380 {
compatible = "amlogic,sm1-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x380 0x0 0x40>;
sound-name-prefix = "TDMIN_C";
resets = <&clkc_audio AUD_RESET_TDMIN_C>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmin_lb: audio-controller@3c0 {
compatible = "amlogic,sm1-tdmin",
"amlogic,axg-tdmin";
reg = <0x0 0x3c0 0x0 0x40>;
sound-name-prefix = "TDMIN_LB";
resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
<&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_a: audio-controller@500 {
compatible = "amlogic,sm1-tdmout";
reg = <0x0 0x500 0x0 0x40>;
sound-name-prefix = "TDMOUT_A";
resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_b: audio-controller@540 {
compatible = "amlogic,sm1-tdmout";
reg = <0x0 0x540 0x0 0x40>;
sound-name-prefix = "TDMOUT_B";
resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tdmout_c: audio-controller@580 {
compatible = "amlogic,sm1-tdmout";
reg = <0x0 0x580 0x0 0x40>;
sound-name-prefix = "TDMOUT_C";
resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
<&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
clock-names = "pclk", "sclk", "sclk_sel",
"lrclk", "lrclk_sel";
status = "disabled";
};
tohdmitx: audio-controller@744 {
compatible = "amlogic,sm1-tohdmitx",
"amlogic,g12a-tohdmitx";
reg = <0x0 0x744 0x0 0x4>;
#sound-dai-cells = <1>;
sound-name-prefix = "TOHDMITX";
resets = <&clkc_audio AUD_RESET_TOHDMITX>;
status = "disabled";
};
toddr_d: audio-controller@840 {
compatible = "amlogic,sm1-toddr",
"amlogic,axg-toddr";
reg = <0x0 0x840 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "TODDR_D";
interrupts = <GIC_SPI 49 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_TODDR_D>;
resets = <&arb AXG_ARB_TODDR_D>,
<&clkc_audio AUD_RESET_TODDR_D>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
frddr_d: audio-controller@880 {
compatible = "amlogic,sm1-frddr",
"amlogic,axg-frddr";
reg = <0x0 0x880 0x0 0x2c>;
#sound-dai-cells = <0>;
sound-name-prefix = "FRDDR_D";
interrupts = <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
clocks = <&clkc_audio AUD_CLKID_FRDDR_D>;
resets = <&arb AXG_ARB_FRDDR_D>,
<&clkc_audio AUD_RESET_FRDDR_D>;
reset-names = "arb", "rst";
amlogic,fifo-depth = <256>;
status = "disabled";
};
};
pdm: audio-controller@61000 {
compatible = "amlogic,sm1-pdm",
"amlogic,axg-pdm";
reg = <0x0 0x61000 0x0 0x34>;
#sound-dai-cells = <0>;
sound-name-prefix = "PDM";
clocks = <&clkc_audio AUD_CLKID_PDM>,
<&clkc_audio AUD_CLKID_PDM_DCLK>,
<&clkc_audio AUD_CLKID_PDM_SYSCLK>;
clock-names = "pclk", "dclk", "sysclk";
status = "disabled";
};
};
&cecb_AO { &cecb_AO {
compatible = "amlogic,meson-sm1-ao-cec"; compatible = "amlogic,meson-sm1-ao-cec";
}; };
@ -134,10 +469,31 @@
power-domains = <&pwrc PWRC_SM1_ETH_ID>; power-domains = <&pwrc PWRC_SM1_ETH_ID>;
}; };
&gpio_intc {
compatible = "amlogic,meson-sm1-gpio-intc",
"amlogic,meson-gpio-intc";
};
&pcie {
power-domains = <&pwrc PWRC_SM1_PCIE_ID>;
};
&pwrc { &pwrc {
compatible = "amlogic,meson-sm1-pwrc"; compatible = "amlogic,meson-sm1-pwrc";
}; };
&simplefb_cvbs {
power-domains = <&pwrc PWRC_SM1_VPU_ID>;
};
&simplefb_hdmi {
power-domains = <&pwrc PWRC_SM1_VPU_ID>;
};
&vdec {
compatible = "amlogic,sm1-vdec";
};
&vpu { &vpu {
power-domains = <&pwrc PWRC_SM1_VPU_ID>; power-domains = <&pwrc PWRC_SM1_VPU_ID>;
}; };

View file

@ -133,6 +133,7 @@
DDR_MR3 DDR_MR3
>; >;
#ifdef DDR_PHY_CAL_SKIP
st,phy-cal = < st,phy-cal = <
DDR_DX0DLLCR DDR_DX0DLLCR
DDR_DX0DQTR DDR_DX0DQTR
@ -148,6 +149,8 @@
DDR_DX3DQSTR DDR_DX3DQSTR
>; >;
#endif
status = "okay"; status = "okay";
}; };
}; };

File diff suppressed because it is too large Load diff

View file

@ -20,12 +20,6 @@
device_type = "cpu"; device_type = "cpu";
reg = <0>; reg = <0>;
}; };
cpu1: cpu@1 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <1>;
};
}; };
psci { psci {
@ -155,6 +149,11 @@
reg = <1>; reg = <1>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
timers3: timer@40001000 { timers3: timer@40001000 {
@ -184,6 +183,11 @@
reg = <2>; reg = <2>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
timers4: timer@40002000 { timers4: timer@40002000 {
@ -211,6 +215,11 @@
reg = <3>; reg = <3>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
timers5: timer@40003000 { timers5: timer@40003000 {
@ -240,6 +249,11 @@
reg = <4>; reg = <4>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
timers6: timer@40004000 { timers6: timer@40004000 {
@ -596,6 +610,11 @@
reg = <0>; reg = <0>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
timers8: timer@44001000 { timers8: timer@44001000 {
@ -627,6 +646,11 @@
reg = <7>; reg = <7>;
status = "disabled"; status = "disabled";
}; };
counter {
compatible = "st,stm32-timer-counter";
status = "disabled";
};
}; };
usart6: serial@44003000 { usart6: serial@44003000 {
@ -930,33 +954,7 @@
}; };
}; };
m_can1: can@4400e000 { dma1: dma-controller@48000000 {
compatible = "bosch,m_can";
reg = <0x4400e000 0x400>, <0x44011000 0x1400>;
reg-names = "m_can", "message_ram";
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
status = "disabled";
};
m_can2: can@4400f000 {
compatible = "bosch,m_can";
reg = <0x4400f000 0x400>, <0x44011000 0x2800>;
reg-names = "m_can", "message_ram";
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>;
status = "disabled";
};
dma1: dma@48000000 {
compatible = "st,stm32-dma"; compatible = "st,stm32-dma";
reg = <0x48000000 0x400>; reg = <0x48000000 0x400>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
@ -973,7 +971,7 @@
dma-requests = <8>; dma-requests = <8>;
}; };
dma2: dma@48001000 { dma2: dma-controller@48001000 {
compatible = "st,stm32-dma"; compatible = "st,stm32-dma";
reg = <0x48001000 0x400>; reg = <0x48001000 0x400>;
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
@ -1041,8 +1039,8 @@
compatible = "arm,pl18x", "arm,primecell"; compatible = "arm,pl18x", "arm,primecell";
arm,primecell-periphid = <0x10153180>; arm,primecell-periphid = <0x10153180>;
reg = <0x48004000 0x400>; reg = <0x48004000 0x400>;
reg-names = "sdmmc"; interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
interrupts = <GIC_SPI 137 IRQ_TYPE_NONE>; interrupt-names = "cmd_irq";
clocks = <&rcc SDMMC3_K>; clocks = <&rcc SDMMC3_K>;
clock-names = "apb_pclk"; clock-names = "apb_pclk";
resets = <&rcc SDMMC3_R>; resets = <&rcc SDMMC3_R>;
@ -1273,15 +1271,6 @@
status = "disabled"; status = "disabled";
}; };
cryp1: cryp@54001000 {
compatible = "st,stm32mp1-cryp";
reg = <0x54001000 0x400>;
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&rcc CRYP1>;
resets = <&rcc CRYP1_R>;
status = "disabled";
};
hash1: hash@54002000 { hash1: hash@54002000 {
compatible = "st,stm32f756-hash"; compatible = "st,stm32f756-hash";
reg = <0x54002000 0x400>; reg = <0x54002000 0x400>;
@ -1302,7 +1291,7 @@
status = "disabled"; status = "disabled";
}; };
mdma1: dma@58000000 { mdma1: dma-controller@58000000 {
compatible = "st,stm32h7-mdma"; compatible = "st,stm32h7-mdma";
reg = <0x58000000 0x1000>; reg = <0x58000000 0x1000>;
interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
@ -1349,20 +1338,22 @@
arm,primecell-periphid = <0x10153180>; arm,primecell-periphid = <0x10153180>;
reg = <0x58005000 0x1000>; reg = <0x58005000 0x1000>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "cmd_irq"; interrupt-names = "cmd_irq";
clocks = <&rcc SDMMC1_K>; clocks = <&rcc SDMMC1_K>;
clock-names = "apb_pclk"; clock-names = "apb_pclk";
resets = <&rcc SDMMC1_R>; resets = <&rcc SDMMC1_R>;
cap-sd-highspeed; cap-sd-highspeed;
cap-mmc-highspeed; cap-mmc-highspeed;
max-frequency = <120000000>; max-frequency = <120000000>;
status = "disabled";
}; };
sdmmc2: sdmmc@58007000 { sdmmc2: sdmmc@58007000 {
compatible = "arm,pl18x", "arm,primecell"; compatible = "arm,pl18x", "arm,primecell";
arm,primecell-periphid = <0x10153180>; arm,primecell-periphid = <0x10153180>;
reg = <0x58007000 0x1000>; reg = <0x58007000 0x1000>;
interrupts = <GIC_SPI 124 IRQ_TYPE_NONE>; interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "cmd_irq";
clocks = <&rcc SDMMC2_K>; clocks = <&rcc SDMMC2_K>;
clock-names = "apb_pclk"; clock-names = "apb_pclk";
resets = <&rcc SDMMC2_R>; resets = <&rcc SDMMC2_R>;
@ -1406,6 +1397,7 @@
st,syscon = <&syscfg 0x4>; st,syscon = <&syscfg 0x4>;
snps,mixed-burst; snps,mixed-burst;
snps,pbl = <2>; snps,pbl = <2>;
snps,en-tx-lpi-clockgating;
snps,axi-config = <&stmmac_axi_config_0>; snps,axi-config = <&stmmac_axi_config_0>;
snps,tso; snps,tso;
status = "disabled"; status = "disabled";
@ -1430,26 +1422,6 @@
status = "disabled"; status = "disabled";
}; };
gpu: gpu@59000000 {
compatible = "vivante,gc";
reg = <0x59000000 0x800>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&rcc GPU>, <&rcc GPU_K>;
clock-names = "bus" ,"core";
resets = <&rcc GPU_R>;
status = "disabled";
};
dsi: dsi@5a000000 {
compatible = "st,stm32-dsi";
reg = <0x5a000000 0x800>;
clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
clock-names = "pclk", "ref", "px_clk";
resets = <&rcc DSI_R>;
reset-names = "apb";
status = "disabled";
};
ltdc: display-controller@5a001000 { ltdc: display-controller@5a001000 {
compatible = "st,stm32-ltdc"; compatible = "st,stm32-ltdc";
reg = <0x5a001000 0x400>; reg = <0x5a001000 0x400>;
@ -1535,7 +1507,7 @@
status = "disabled"; status = "disabled";
}; };
bsec: nvmem@5c005000 { bsec: efuse@5c005000 {
compatible = "st,stm32mp15-bsec"; compatible = "st,stm32mp15-bsec";
reg = <0x5c005000 0x400>; reg = <0x5c005000 0x400>;
#address-cells = <1>; #address-cells = <1>;
@ -1560,12 +1532,172 @@
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
}; };
/*
* Break node order to solve dependency probe issue between
* pinctrl and exti.
*/
pinctrl: pin-controller@50002000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stm32mp157-pinctrl";
ranges = <0 0x50002000 0xa400>;
interrupt-parent = <&exti>;
st,syscfg = <&exti 0x60 0xff>;
hwlocks = <&hwspinlock 0>;
pins-are-numbered;
gpioa: gpio@50002000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x0 0x400>;
clocks = <&rcc GPIOA>;
st,bank-name = "GPIOA";
status = "disabled";
};
gpiob: gpio@50003000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x400>;
clocks = <&rcc GPIOB>;
st,bank-name = "GPIOB";
status = "disabled";
};
gpioc: gpio@50004000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x400>;
clocks = <&rcc GPIOC>;
st,bank-name = "GPIOC";
status = "disabled";
};
gpiod: gpio@50005000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x3000 0x400>;
clocks = <&rcc GPIOD>;
st,bank-name = "GPIOD";
status = "disabled";
};
gpioe: gpio@50006000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4000 0x400>;
clocks = <&rcc GPIOE>;
st,bank-name = "GPIOE";
status = "disabled";
};
gpiof: gpio@50007000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x5000 0x400>;
clocks = <&rcc GPIOF>;
st,bank-name = "GPIOF";
status = "disabled";
};
gpiog: gpio@50008000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x6000 0x400>;
clocks = <&rcc GPIOG>;
st,bank-name = "GPIOG";
status = "disabled";
};
gpioh: gpio@50009000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x7000 0x400>;
clocks = <&rcc GPIOH>;
st,bank-name = "GPIOH";
status = "disabled";
};
gpioi: gpio@5000a000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x8000 0x400>;
clocks = <&rcc GPIOI>;
st,bank-name = "GPIOI";
status = "disabled";
};
gpioj: gpio@5000b000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x9000 0x400>;
clocks = <&rcc GPIOJ>;
st,bank-name = "GPIOJ";
status = "disabled";
};
gpiok: gpio@5000c000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0xa000 0x400>;
clocks = <&rcc GPIOK>;
st,bank-name = "GPIOK";
status = "disabled";
};
};
pinctrl_z: pin-controller-z@54004000 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stm32mp157-z-pinctrl";
ranges = <0 0x54004000 0x400>;
pins-are-numbered;
interrupt-parent = <&exti>;
st,syscfg = <&exti 0x60 0xff>;
hwlocks = <&hwspinlock 0>;
gpioz: gpio@54004000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x400>;
clocks = <&rcc GPIOZ>;
st,bank-name = "GPIOZ";
st,bank-ioport = <11>;
status = "disabled";
};
};
}; };
mlahb { mlahb: ahb {
compatible = "simple-bus"; compatible = "st,mlahb", "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges;
dma-ranges = <0x00000000 0x38000000 0x10000>, dma-ranges = <0x00000000 0x38000000 0x10000>,
<0x10000000 0x10000000 0x60000>, <0x10000000 0x10000000 0x60000>,
<0x30000000 0x30000000 0x60000>; <0x30000000 0x30000000 0x60000>;

View file

@ -0,0 +1,45 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
#include "stm32mp151.dtsi"
/ {
cpus {
cpu1: cpu@1 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <1>;
};
};
soc {
m_can1: can@4400e000 {
compatible = "bosch,m_can";
reg = <0x4400e000 0x400>, <0x44011000 0x1400>;
reg-names = "m_can", "message_ram";
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
status = "disabled";
};
m_can2: can@4400f000 {
compatible = "bosch,m_can";
reg = <0x4400f000 0x400>, <0x44011000 0x2800>;
reg-names = "m_can", "message_ram";
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>;
status = "disabled";
};
};
};

View file

@ -0,0 +1,31 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
#include "stm32mp153.dtsi"
/ {
soc {
gpu: gpu@59000000 {
compatible = "vivante,gc";
reg = <0x59000000 0x800>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&rcc GPU>, <&rcc GPU_K>;
clock-names = "bus" ,"core";
resets = <&rcc GPU_R>;
status = "disabled";
};
dsi: dsi@5a000000 {
compatible = "st,stm32-dsi";
reg = <0x5a000000 0x800>;
clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
clock-names = "pclk", "ref", "px_clk";
resets = <&rcc DSI_R>;
reset-names = "apb";
status = "disabled";
};
};
};

View file

@ -7,7 +7,7 @@
*/ */
#include <dt-bindings/clock/stm32mp1-clksrc.h> #include <dt-bindings/clock/stm32mp1-clksrc.h>
#include "stm32mp157-u-boot.dtsi" #include "stm32mp15-u-boot.dtsi"
#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
/ { / {
@ -145,7 +145,10 @@
&sdmmc1_b4_pins_a { &sdmmc1_b4_pins_a {
u-boot,dm-spl; u-boot,dm-spl;
pins { pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };
@ -199,7 +202,3 @@
u-boot,force-b-session-valid; u-boot,force-b-session-valid;
hnp-srp-disable; hnp-srp-disable;
}; };
&v3v3 {
regulator-always-on;
};

View file

@ -6,8 +6,10 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157c.dtsi" #include "stm32mp157.dtsi"
#include "stm32mp157xac-pinctrl.dtsi" #include "stm32mp15-pinctrl.dtsi"
#include "stm32mp157-pinctrl.dtsi"
#include "stm32mp15xxac-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/st,stpmic1.h> #include <dt-bindings/mfd/st,stpmic1.h>

View file

@ -4,7 +4,7 @@
*/ */
#include <dt-bindings/clock/stm32mp1-clksrc.h> #include <dt-bindings/clock/stm32mp1-clksrc.h>
#include "stm32mp157-u-boot.dtsi" #include "stm32mp15-u-boot.dtsi"
#include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi"
/ { / {
@ -164,7 +164,10 @@
&sdmmc1_b4_pins_a { &sdmmc1_b4_pins_a {
u-boot,dm-spl; u-boot,dm-spl;
pins { pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };

View file

@ -6,10 +6,10 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157c.dtsi" #include "stm32mp157.dtsi"
#include "stm32mp157xac-pinctrl.dtsi" #include "stm32mp15-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h> #include "stm32mp15xxac-pinctrl.dtsi"
#include <dt-bindings/mfd/st,stpmic1.h> #include "stm32mp15xx-dkx.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157A-DK1 Discovery Board"; model = "STMicroelectronics STM32MP157A-DK1 Discovery Board";
@ -23,537 +23,4 @@
chosen { chosen {
stdout-path = "serial0:115200n8"; stdout-path = "serial0:115200n8";
}; };
memory@c0000000 {
device_type = "memory";
reg = <0xc0000000 0x20000000>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
mcuram2: mcuram2@10000000 {
compatible = "shared-dma-pool";
reg = <0x10000000 0x40000>;
no-map;
};
vdev0vring0: vdev0vring0@10040000 {
compatible = "shared-dma-pool";
reg = <0x10040000 0x1000>;
no-map;
};
vdev0vring1: vdev0vring1@10041000 {
compatible = "shared-dma-pool";
reg = <0x10041000 0x1000>;
no-map;
};
vdev0buffer: vdev0buffer@10042000 {
compatible = "shared-dma-pool";
reg = <0x10042000 0x4000>;
no-map;
};
mcuram: mcuram@30000000 {
compatible = "shared-dma-pool";
reg = <0x30000000 0x40000>;
no-map;
};
retram: retram@38000000 {
compatible = "shared-dma-pool";
reg = <0x38000000 0x10000>;
no-map;
};
gpu_reserved: gpu@d4000000 {
reg = <0xd4000000 0x4000000>;
no-map;
};
};
led {
compatible = "gpio-leds";
blue {
label = "heartbeat";
gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
};
sound {
compatible = "audio-graph-card";
label = "STM32MP1-DK";
routing =
"Playback" , "MCLK",
"Capture" , "MCLK",
"MICL" , "Mic Bias";
dais = <&sai2a_port &sai2b_port &i2s2_port>;
status = "okay";
};
};
&adc {
pinctrl-names = "default";
pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
vdd-supply = <&vdd>;
vdda-supply = <&vdd>;
vref-supply = <&vrefbuf>;
status = "disabled";
adc1: adc@0 {
/*
* Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
* Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
* 5 * (56 + 47kOhms) * 5pF => 2.5us.
* Use arbitrary margin here (e.g. 5us).
*/
st,min-sample-time-nsecs = <5000>;
/* AIN connector, USB Type-C CC1 & CC2 */
st,adc-channels = <0 1 6 13 18 19>;
status = "okay";
};
adc2: adc@100 {
/* AIN connector, USB Type-C CC1 & CC2 */
st,adc-channels = <0 1 2 6 18 19>;
st,min-sample-time-nsecs = <5000>;
status = "okay";
};
};
&cec {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cec_pins_b>;
pinctrl-1 = <&cec_pins_sleep_b>;
status = "okay";
};
&ethernet0 {
status = "okay";
pinctrl-0 = <&ethernet0_rgmii_pins_a>;
pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;
pinctrl-names = "default", "sleep";
phy-mode = "rgmii-id";
max-speed = <1000>;
phy-handle = <&phy0>;
mdio0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
phy0: ethernet-phy@0 {
reg = <0>;
};
};
};
&gpu {
contiguous-area = <&gpu_reserved>;
status = "okay";
};
&i2c1 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c1_pins_a>;
pinctrl-1 = <&i2c1_pins_sleep_a>;
i2c-scl-rising-time-ns = <100>;
i2c-scl-falling-time-ns = <7>;
status = "okay";
/delete-property/dmas;
/delete-property/dma-names;
hdmi-transmitter@39 {
compatible = "sil,sii9022";
reg = <0x39>;
iovcc-supply = <&v3v3_hdmi>;
cvcc12-supply = <&v1v2_hdmi>;
reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpiog>;
#sound-dai-cells = <0>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
sii9022_in: endpoint {
remote-endpoint = <&ltdc_ep0_out>;
};
};
port@3 {
reg = <3>;
sii9022_tx_endpoint: endpoint {
remote-endpoint = <&i2s2_endpoint>;
};
};
};
};
cs42l51: cs42l51@4a {
compatible = "cirrus,cs42l51";
reg = <0x4a>;
#sound-dai-cells = <0>;
VL-supply = <&v3v3>;
VD-supply = <&v1v8_audio>;
VA-supply = <&v1v8_audio>;
VAHP-supply = <&v1v8_audio>;
reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
clocks = <&sai2a>;
clock-names = "MCLK";
status = "okay";
cs42l51_port: port {
#address-cells = <1>;
#size-cells = <0>;
cs42l51_tx_endpoint: endpoint@0 {
reg = <0>;
remote-endpoint = <&sai2a_endpoint>;
frame-master;
bitclock-master;
};
cs42l51_rx_endpoint: endpoint@1 {
reg = <1>;
remote-endpoint = <&sai2b_endpoint>;
frame-master;
bitclock-master;
};
};
};
};
&i2c4 {
pinctrl-names = "default";
pinctrl-0 = <&i2c4_pins_a>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
status = "okay";
/* spare dmas for other usage */
/delete-property/dmas;
/delete-property/dma-names;
typec: stusb1600@28 {
compatible = "st,stusb1600";
reg = <0x28>;
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpioi>;
pinctrl-names = "default";
pinctrl-0 = <&stusb1600_pins_a>;
status = "okay";
typec_con: connector {
compatible = "usb-c-connector";
label = "USB-C";
power-role = "sink";
power-opmode = "default";
};
};
pmic: stpmic@33 {
compatible = "st,stpmic1";
reg = <0x33>;
interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
interrupt-controller;
#interrupt-cells = <2>;
status = "okay";
regulators {
compatible = "st,stpmic1-regulators";
ldo1-supply = <&v3v3>;
ldo3-supply = <&vdd_ddr>;
ldo6-supply = <&v3v3>;
pwr_sw1-supply = <&bst_out>;
pwr_sw2-supply = <&bst_out>;
vddcore: buck1 {
regulator-name = "vddcore";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
vdd_ddr: buck2 {
regulator-name = "vdd_ddr";
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
vdd: buck3 {
regulator-name = "vdd";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
st,mask-reset;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
v3v3: buck4 {
regulator-name = "v3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
regulator-over-current-protection;
regulator-initial-mode = <0>;
};
v1v8_audio: ldo1 {
regulator-name = "v1v8_audio";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO1 0>;
};
v3v3_hdmi: ldo2 {
regulator-name = "v3v3_hdmi";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO2 0>;
};
vtt_ddr: ldo3 {
regulator-name = "vtt_ddr";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <750000>;
regulator-always-on;
regulator-over-current-protection;
};
vdd_usb: ldo4 {
regulator-name = "vdd_usb";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
interrupts = <IT_CURLIM_LDO4 0>;
};
vdda: ldo5 {
regulator-name = "vdda";
regulator-min-microvolt = <2900000>;
regulator-max-microvolt = <2900000>;
interrupts = <IT_CURLIM_LDO5 0>;
regulator-boot-on;
};
v1v2_hdmi: ldo6 {
regulator-name = "v1v2_hdmi";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO6 0>;
};
vref_ddr: vref_ddr {
regulator-name = "vref_ddr";
regulator-always-on;
regulator-over-current-protection;
};
bst_out: boost {
regulator-name = "bst_out";
interrupts = <IT_OCP_BOOST 0>;
};
vbus_otg: pwr_sw1 {
regulator-name = "vbus_otg";
interrupts = <IT_OCP_OTG 0>;
};
vbus_sw: pwr_sw2 {
regulator-name = "vbus_sw";
interrupts = <IT_OCP_SWOUT 0>;
regulator-active-discharge = <1>;
};
};
onkey {
compatible = "st,stpmic1-onkey";
interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
interrupt-names = "onkey-falling", "onkey-rising";
power-off-time-sec = <10>;
status = "okay";
};
watchdog {
compatible = "st,stpmic1-wdt";
status = "disabled";
};
};
};
&i2s2 {
clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
clock-names = "pclk", "i2sclk", "x8k", "x11k";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2s2_pins_a>;
pinctrl-1 = <&i2s2_pins_sleep_a>;
status = "okay";
i2s2_port: port {
i2s2_endpoint: endpoint {
remote-endpoint = <&sii9022_tx_endpoint>;
format = "i2s";
mclk-fs = <256>;
};
};
};
&ipcc {
status = "okay";
};
&iwdg2 {
timeout-sec = <32>;
status = "okay";
};
&ltdc {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ltdc_pins_a>;
pinctrl-1 = <&ltdc_pins_sleep_a>;
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
ltdc_ep0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&sii9022_in>;
};
};
};
&m4_rproc {
memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
<&vdev0vring1>, <&vdev0buffer>;
mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
mbox-names = "vq0", "vq1", "shutdown";
interrupt-parent = <&exti>;
interrupts = <68 1>;
status = "okay";
};
&pwr_regulators {
vdd-supply = <&vdd>;
vdd_3v3_usbfs-supply = <&vdd_usb>;
};
&rng1 {
status = "okay";
};
&rtc {
status = "okay";
};
&sai2 {
clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
clock-names = "pclk", "x8k", "x11k";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;
pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;
status = "okay";
sai2a: audio-controller@4400b004 {
#clock-cells = <0>;
dma-names = "tx";
clocks = <&rcc SAI2_K>;
clock-names = "sai_ck";
status = "okay";
sai2a_port: port {
sai2a_endpoint: endpoint {
remote-endpoint = <&cs42l51_tx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
};
};
};
sai2b: audio-controller@4400b024 {
dma-names = "rx";
st,sync = <&sai2a 2>;
clocks = <&rcc SAI2_K>, <&sai2a>;
clock-names = "sai_ck", "MCLK";
status = "okay";
sai2b_port: port {
sai2b_endpoint: endpoint {
remote-endpoint = <&cs42l51_rx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
};
};
};
};
&sdmmc1 {
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc1_b4_pins_a>;
pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
broken-cd;
st,neg-edge;
bus-width = <4>;
vmmc-supply = <&v3v3>;
status = "okay";
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins_a>;
status = "okay";
};
&usbh_ehci {
phys = <&usbphyc_port0>;
phy-names = "usb";
status = "okay";
};
&usbotg_hs {
dr_mode = "peripheral";
phys = <&usbphyc_port1 0>;
phy-names = "usb2-phy";
status = "okay";
};
&usbphyc {
status = "okay";
};
&usbphyc_port0 {
phy-supply = <&vdd_usb>;
};
&usbphyc_port1 {
phy-supply = <&vdd_usb>;
};
&vrefbuf {
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
vdda-supply = <&vdd>;
status = "okay";
}; };

View file

@ -4,9 +4,3 @@
*/ */
#include "stm32mp157a-dk1-u-boot.dtsi" #include "stm32mp157a-dk1-u-boot.dtsi"
&i2c1 {
hdmi-transmitter@39 {
reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
};
};

View file

@ -6,11 +6,24 @@
/dts-v1/; /dts-v1/;
#include "stm32mp157a-dk1.dts" #include "stm32mp157.dtsi"
#include "stm32mp15xc.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxac-pinctrl.dtsi"
#include "stm32mp15xx-dkx.dtsi"
/ { / {
model = "STMicroelectronics STM32MP157C-DK2 Discovery Board"; model = "STMicroelectronics STM32MP157C-DK2 Discovery Board";
compatible = "st,stm32mp157c-dk2", "st,stm32mp157"; compatible = "st,stm32mp157c-dk2", "st,stm32mp157";
aliases {
ethernet0 = &ethernet0;
serial0 = &uart4;
};
chosen {
stdout-path = "serial0:115200n8";
};
}; };
&dsi { &dsi {

View file

@ -4,7 +4,7 @@
*/ */
#include <dt-bindings/clock/stm32mp1-clksrc.h> #include <dt-bindings/clock/stm32mp1-clksrc.h>
#include "stm32mp157-u-boot.dtsi" #include "stm32mp15-u-boot.dtsi"
#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
/ { / {
@ -161,7 +161,10 @@
&sdmmc1_b4_pins_a { &sdmmc1_b4_pins_a {
u-boot,dm-spl; u-boot,dm-spl;
pins { pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };

View file

@ -5,8 +5,10 @@
*/ */
/dts-v1/; /dts-v1/;
#include "stm32mp157c.dtsi" #include "stm32mp157.dtsi"
#include "stm32mp157xaa-pinctrl.dtsi" #include "stm32mp15xc.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxaa-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/st,stpmic1.h> #include <dt-bindings/mfd/st,stpmic1.h>
@ -89,6 +91,22 @@
}; };
}; };
&adc {
/* ANA0, ANA1 are dedicated pins and don't need pinctrl: only in6. */
pinctrl-0 = <&adc1_in6_pins_a>;
pinctrl-names = "default";
vdd-supply = <&vdd>;
vdda-supply = <&vdda>;
vref-supply = <&vdda>;
status = "disabled";
adc1: adc@0 {
st,adc-channels = <0 1 6>;
/* 16.5 ck_cycles sampling time */
st,min-sample-time-nsecs = <400>;
status = "okay";
};
};
&dac { &dac {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>; pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>;

View file

@ -182,8 +182,6 @@
ov5640: camera@3c { ov5640: camera@3c {
compatible = "ovti,ov5640"; compatible = "ovti,ov5640";
pinctrl-names = "default";
pinctrl-0 = <&ov5640_pins>;
reg = <0x3c>; reg = <0x3c>;
clocks = <&clk_ext_camera>; clocks = <&clk_ext_camera>;
clock-names = "xclk"; clock-names = "xclk";
@ -224,12 +222,6 @@
pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
bias-pull-down; bias-pull-down;
}; };
ov5640_pins: camera {
pins = "agpio2", "agpio3"; /* stmfx pins 18 & 19 */
drive-push-pull;
output-low;
};
}; };
}; };
}; };
@ -291,6 +283,18 @@
}; };
}; };
&sdmmc3 {
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc3_b4_pins_a>;
pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
broken-cd;
st,neg-edge;
bus-width = <4>;
vmmc-supply = <&v3v3>;
status = "disabled";
};
&spi1 { &spi1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&spi1_pins_a>; pinctrl-0 = <&spi1_pins_a>;
@ -304,7 +308,8 @@
status = "disabled"; status = "disabled";
pwm { pwm {
pinctrl-0 = <&pwm2_pins_a>; pinctrl-0 = <&pwm2_pins_a>;
pinctrl-names = "default"; pinctrl-1 = <&pwm2_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay"; status = "okay";
}; };
timer@1 { timer@1 {
@ -318,7 +323,8 @@
status = "disabled"; status = "disabled";
pwm { pwm {
pinctrl-0 = <&pwm8_pins_a>; pinctrl-0 = <&pwm8_pins_a>;
pinctrl-names = "default"; pinctrl-1 = <&pwm8_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay"; status = "okay";
}; };
timer@7 { timer@7 {
@ -332,7 +338,8 @@
status = "disabled"; status = "disabled";
pwm { pwm {
pinctrl-0 = <&pwm12_pins_a>; pinctrl-0 = <&pwm12_pins_a>;
pinctrl-names = "default"; pinctrl-1 = <&pwm12_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay"; status = "okay";
}; };
timer@11 { timer@11 {
@ -348,6 +355,7 @@
&usbotg_hs { &usbotg_hs {
dr_mode = "peripheral"; dr_mode = "peripheral";
phys = <&usbphyc_port1 0>; phys = <&usbphyc_port1 0>;
phy-names = "usb2-phy";
status = "okay"; status = "okay";
}; };

View file

@ -1,90 +0,0 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com>
*/
#include "stm32mp157-pinctrl.dtsi"
/ {
soc {
pinctrl: pin-controller@50002000 {
st,package = <STM32MP_PKG_AA>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 80 16>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 96 16>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 112 16>;
};
gpioi: gpio@5000a000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 128 16>;
};
gpioj: gpio@5000b000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 144 16>;
};
gpiok: gpio@5000c000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl 0 160 8>;
};
};
pinctrl_z: pin-controller-z@54004000 {
st,package = <STM32MP_PKG_AA>;
gpioz: gpio@54004000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl_z 0 400 8>;
};
};
};
};

View file

@ -1,62 +0,0 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com>
*/
#include "stm32mp157-pinctrl.dtsi"
/ {
soc {
pinctrl: pin-controller@50002000 {
st,package = <STM32MP_PKG_AB>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <6>;
gpio-ranges = <&pinctrl 6 86 6>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <10>;
gpio-ranges = <&pinctrl 6 102 10>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <2>;
gpio-ranges = <&pinctrl 0 112 2>;
};
};
};
};

View file

@ -1,78 +0,0 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com>
*/
#include "stm32mp157-pinctrl.dtsi"
/ {
soc {
pinctrl: pin-controller@50002000 {
st,package = <STM32MP_PKG_AC>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 80 16>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 96 16>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 112 16>;
};
gpioi: gpio@5000a000 {
status = "okay";
ngpios = <12>;
gpio-ranges = <&pinctrl 0 128 12>;
};
};
pinctrl_z: pin-controller-z@54004000 {
st,package = <STM32MP_PKG_AC>;
gpioz: gpio@54004000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl_z 0 400 8>;
};
};
};
};

View file

@ -1,62 +0,0 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com>
*/
#include "stm32mp157-pinctrl.dtsi"
/ {
soc {
pinctrl: pin-controller@50002000 {
st,package = <STM32MP_PKG_AD>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <6>;
gpio-ranges = <&pinctrl 6 86 6>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <10>;
gpio-ranges = <&pinctrl 6 102 10>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <2>;
gpio-ranges = <&pinctrl 0 112 2>;
};
};
};
};

View file

@ -0,0 +1,18 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
/ {
soc {
cryp1: cryp@54001000 {
compatible = "st,stm32mp1-cryp";
reg = <0x54001000 0x400>;
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&rcc CRYP1>;
resets = <&rcc CRYP1_R>;
status = "disabled";
};
};
};

View file

@ -4,7 +4,7 @@
*/ */
#include <dt-bindings/clock/stm32mp1-clksrc.h> #include <dt-bindings/clock/stm32mp1-clksrc.h>
#include "stm32mp157-u-boot.dtsi" #include "stm32mp15-u-boot.dtsi"
#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"
/ { / {
@ -196,7 +196,10 @@
&sdmmc1_b4_pins_a { &sdmmc1_b4_pins_a {
u-boot,dm-spl; u-boot,dm-spl;
pins { pins1 {
u-boot,dm-spl;
};
pins2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };

View file

@ -4,8 +4,10 @@
*/ */
/dts-v1/; /dts-v1/;
#include "stm32mp157c.dtsi" #include "stm32mp157.dtsi"
#include "stm32mp157xaa-pinctrl.dtsi" #include "stm32mp15xc.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxaa-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/st,stpmic1.h> #include <dt-bindings/mfd/st,stpmic1.h>

View file

@ -0,0 +1,639 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/st,stpmic1.h>
/ {
memory@c0000000 {
device_type = "memory";
reg = <0xc0000000 0x20000000>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
mcuram2: mcuram2@10000000 {
compatible = "shared-dma-pool";
reg = <0x10000000 0x40000>;
no-map;
};
vdev0vring0: vdev0vring0@10040000 {
compatible = "shared-dma-pool";
reg = <0x10040000 0x1000>;
no-map;
};
vdev0vring1: vdev0vring1@10041000 {
compatible = "shared-dma-pool";
reg = <0x10041000 0x1000>;
no-map;
};
vdev0buffer: vdev0buffer@10042000 {
compatible = "shared-dma-pool";
reg = <0x10042000 0x4000>;
no-map;
};
mcuram: mcuram@30000000 {
compatible = "shared-dma-pool";
reg = <0x30000000 0x40000>;
no-map;
};
retram: retram@38000000 {
compatible = "shared-dma-pool";
reg = <0x38000000 0x10000>;
no-map;
};
gpu_reserved: gpu@d4000000 {
reg = <0xd4000000 0x4000000>;
no-map;
};
};
led {
compatible = "gpio-leds";
blue {
label = "heartbeat";
gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
};
sound {
compatible = "audio-graph-card";
label = "STM32MP1-DK";
routing =
"Playback" , "MCLK",
"Capture" , "MCLK",
"MICL" , "Mic Bias";
dais = <&sai2a_port &sai2b_port &i2s2_port>;
status = "okay";
};
};
&adc {
pinctrl-names = "default";
pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
vdd-supply = <&vdd>;
vdda-supply = <&vdd>;
vref-supply = <&vrefbuf>;
status = "disabled";
adc1: adc@0 {
/*
* Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
* Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
* 5 * (56 + 47kOhms) * 5pF => 2.5us.
* Use arbitrary margin here (e.g. 5us).
*/
st,min-sample-time-nsecs = <5000>;
/* AIN connector, USB Type-C CC1 & CC2 */
st,adc-channels = <0 1 6 13 18 19>;
status = "okay";
};
adc2: adc@100 {
/* AIN connector, USB Type-C CC1 & CC2 */
st,adc-channels = <0 1 2 6 18 19>;
st,min-sample-time-nsecs = <5000>;
status = "okay";
};
};
&cec {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cec_pins_b>;
pinctrl-1 = <&cec_pins_sleep_b>;
status = "okay";
};
&ethernet0 {
status = "okay";
pinctrl-0 = <&ethernet0_rgmii_pins_a>;
pinctrl-1 = <&ethernet0_rgmii_pins_sleep_a>;
pinctrl-names = "default", "sleep";
phy-mode = "rgmii-id";
max-speed = <1000>;
phy-handle = <&phy0>;
mdio0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
phy0: ethernet-phy@0 {
reg = <0>;
};
};
};
&gpu {
contiguous-area = <&gpu_reserved>;
status = "okay";
};
&i2c1 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c1_pins_a>;
pinctrl-1 = <&i2c1_pins_sleep_a>;
i2c-scl-rising-time-ns = <100>;
i2c-scl-falling-time-ns = <7>;
status = "okay";
/delete-property/dmas;
/delete-property/dma-names;
hdmi-transmitter@39 {
compatible = "sil,sii9022";
reg = <0x39>;
iovcc-supply = <&v3v3_hdmi>;
cvcc12-supply = <&v1v2_hdmi>;
reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpiog>;
#sound-dai-cells = <0>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
sii9022_in: endpoint {
remote-endpoint = <&ltdc_ep0_out>;
};
};
port@3 {
reg = <3>;
sii9022_tx_endpoint: endpoint {
remote-endpoint = <&i2s2_endpoint>;
};
};
};
};
cs42l51: cs42l51@4a {
compatible = "cirrus,cs42l51";
reg = <0x4a>;
#sound-dai-cells = <0>;
VL-supply = <&v3v3>;
VD-supply = <&v1v8_audio>;
VA-supply = <&v1v8_audio>;
VAHP-supply = <&v1v8_audio>;
reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
clocks = <&sai2a>;
clock-names = "MCLK";
status = "okay";
cs42l51_port: port {
#address-cells = <1>;
#size-cells = <0>;
cs42l51_tx_endpoint: endpoint@0 {
reg = <0>;
remote-endpoint = <&sai2a_endpoint>;
frame-master;
bitclock-master;
};
cs42l51_rx_endpoint: endpoint@1 {
reg = <1>;
remote-endpoint = <&sai2b_endpoint>;
frame-master;
bitclock-master;
};
};
};
};
&i2c4 {
pinctrl-names = "default";
pinctrl-0 = <&i2c4_pins_a>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
status = "okay";
/* spare dmas for other usage */
/delete-property/dmas;
/delete-property/dma-names;
typec: stusb1600@28 {
compatible = "st,stusb1600";
reg = <0x28>;
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpioi>;
pinctrl-names = "default";
pinctrl-0 = <&stusb1600_pins_a>;
status = "okay";
typec_con: connector {
compatible = "usb-c-connector";
label = "USB-C";
power-role = "sink";
power-opmode = "default";
};
};
pmic: stpmic@33 {
compatible = "st,stpmic1";
reg = <0x33>;
interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
interrupt-controller;
#interrupt-cells = <2>;
status = "okay";
regulators {
compatible = "st,stpmic1-regulators";
ldo1-supply = <&v3v3>;
ldo3-supply = <&vdd_ddr>;
ldo6-supply = <&v3v3>;
pwr_sw1-supply = <&bst_out>;
pwr_sw2-supply = <&bst_out>;
vddcore: buck1 {
regulator-name = "vddcore";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
vdd_ddr: buck2 {
regulator-name = "vdd_ddr";
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
vdd: buck3 {
regulator-name = "vdd";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
st,mask-reset;
regulator-initial-mode = <0>;
regulator-over-current-protection;
};
v3v3: buck4 {
regulator-name = "v3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
regulator-over-current-protection;
regulator-initial-mode = <0>;
};
v1v8_audio: ldo1 {
regulator-name = "v1v8_audio";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO1 0>;
};
v3v3_hdmi: ldo2 {
regulator-name = "v3v3_hdmi";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO2 0>;
};
vtt_ddr: ldo3 {
regulator-name = "vtt_ddr";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <750000>;
regulator-always-on;
regulator-over-current-protection;
};
vdd_usb: ldo4 {
regulator-name = "vdd_usb";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
interrupts = <IT_CURLIM_LDO4 0>;
};
vdda: ldo5 {
regulator-name = "vdda";
regulator-min-microvolt = <2900000>;
regulator-max-microvolt = <2900000>;
interrupts = <IT_CURLIM_LDO5 0>;
regulator-boot-on;
};
v1v2_hdmi: ldo6 {
regulator-name = "v1v2_hdmi";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
interrupts = <IT_CURLIM_LDO6 0>;
};
vref_ddr: vref_ddr {
regulator-name = "vref_ddr";
regulator-always-on;
regulator-over-current-protection;
};
bst_out: boost {
regulator-name = "bst_out";
interrupts = <IT_OCP_BOOST 0>;
};
vbus_otg: pwr_sw1 {
regulator-name = "vbus_otg";
interrupts = <IT_OCP_OTG 0>;
};
vbus_sw: pwr_sw2 {
regulator-name = "vbus_sw";
interrupts = <IT_OCP_SWOUT 0>;
regulator-active-discharge = <1>;
};
};
onkey {
compatible = "st,stpmic1-onkey";
interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
interrupt-names = "onkey-falling", "onkey-rising";
power-off-time-sec = <10>;
status = "okay";
};
watchdog {
compatible = "st,stpmic1-wdt";
status = "disabled";
};
};
};
&i2s2 {
clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
clock-names = "pclk", "i2sclk", "x8k", "x11k";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2s2_pins_a>;
pinctrl-1 = <&i2s2_pins_sleep_a>;
status = "okay";
i2s2_port: port {
i2s2_endpoint: endpoint {
remote-endpoint = <&sii9022_tx_endpoint>;
format = "i2s";
mclk-fs = <256>;
};
};
};
&ipcc {
status = "okay";
};
&iwdg2 {
timeout-sec = <32>;
status = "okay";
};
&ltdc {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ltdc_pins_a>;
pinctrl-1 = <&ltdc_pins_sleep_a>;
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
ltdc_ep0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&sii9022_in>;
};
};
};
&m4_rproc {
memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
<&vdev0vring1>, <&vdev0buffer>;
mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
mbox-names = "vq0", "vq1", "shutdown";
interrupt-parent = <&exti>;
interrupts = <68 1>;
status = "okay";
};
&pwr_regulators {
vdd-supply = <&vdd>;
vdd_3v3_usbfs-supply = <&vdd_usb>;
};
&rng1 {
status = "okay";
};
&rtc {
status = "okay";
};
&sai2 {
clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
clock-names = "pclk", "x8k", "x11k";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>;
pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>;
status = "okay";
sai2a: audio-controller@4400b004 {
#clock-cells = <0>;
dma-names = "tx";
clocks = <&rcc SAI2_K>;
clock-names = "sai_ck";
status = "okay";
sai2a_port: port {
sai2a_endpoint: endpoint {
remote-endpoint = <&cs42l51_tx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
};
};
};
sai2b: audio-controller@4400b024 {
dma-names = "rx";
st,sync = <&sai2a 2>;
clocks = <&rcc SAI2_K>, <&sai2a>;
clock-names = "sai_ck", "MCLK";
status = "okay";
sai2b_port: port {
sai2b_endpoint: endpoint {
remote-endpoint = <&cs42l51_rx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
};
};
};
};
&sdmmc1 {
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc1_b4_pins_a>;
pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
broken-cd;
st,neg-edge;
bus-width = <4>;
vmmc-supply = <&v3v3>;
status = "okay";
};
&sdmmc3 {
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc3_b4_pins_a>;
pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
broken-cd;
st,neg-edge;
bus-width = <4>;
vmmc-supply = <&v3v3>;
status = "disabled";
};
&timers1 {
/* spare dmas for other usage */
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
pwm {
pinctrl-0 = <&pwm1_pins_a>;
pinctrl-1 = <&pwm1_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay";
};
timer@0 {
status = "okay";
};
};
&timers3 {
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
pwm {
pinctrl-0 = <&pwm3_pins_a>;
pinctrl-1 = <&pwm3_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay";
};
timer@2 {
status = "okay";
};
};
&timers4 {
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
pwm {
pinctrl-0 = <&pwm4_pins_a &pwm4_pins_b>;
pinctrl-1 = <&pwm4_sleep_pins_a &pwm4_sleep_pins_b>;
pinctrl-names = "default", "sleep";
status = "okay";
};
timer@3 {
status = "okay";
};
};
&timers5 {
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
pwm {
pinctrl-0 = <&pwm5_pins_a>;
pinctrl-1 = <&pwm5_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay";
};
timer@4 {
status = "okay";
};
};
&timers6 {
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
timer@5 {
status = "okay";
};
};
&timers12 {
/delete-property/dmas;
/delete-property/dma-names;
status = "disabled";
pwm {
pinctrl-0 = <&pwm12_pins_a>;
pinctrl-1 = <&pwm12_sleep_pins_a>;
pinctrl-names = "default", "sleep";
status = "okay";
};
timer@11 {
status = "okay";
};
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins_a>;
status = "okay";
};
&usbh_ehci {
phys = <&usbphyc_port0>;
status = "okay";
};
&usbotg_hs {
dr_mode = "peripheral";
phys = <&usbphyc_port1 0>;
phy-names = "usb2-phy";
status = "okay";
};
&usbphyc {
status = "okay";
};
&usbphyc_port0 {
phy-supply = <&vdd_usb>;
};
&usbphyc_port1 {
phy-supply = <&vdd_usb>;
};
&vrefbuf {
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
vdda-supply = <&vdd>;
status = "okay";
};

View file

@ -0,0 +1,85 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
&pinctrl {
st,package = <STM32MP_PKG_AA>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 80 16>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 96 16>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 112 16>;
};
gpioi: gpio@5000a000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 128 16>;
};
gpioj: gpio@5000b000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 144 16>;
};
gpiok: gpio@5000c000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl 0 160 8>;
};
};
&pinctrl_z {
st,package = <STM32MP_PKG_AA>;
gpioz: gpio@54004000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl_z 0 400 8>;
};
};

View file

@ -0,0 +1,57 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
&pinctrl {
st,package = <STM32MP_PKG_AB>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <6>;
gpio-ranges = <&pinctrl 6 86 6>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <10>;
gpio-ranges = <&pinctrl 6 102 10>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <2>;
gpio-ranges = <&pinctrl 0 112 2>;
};
};

View file

@ -0,0 +1,73 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
&pinctrl {
st,package = <STM32MP_PKG_AC>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 80 16>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 96 16>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 112 16>;
};
gpioi: gpio@5000a000 {
status = "okay";
ngpios = <12>;
gpio-ranges = <&pinctrl 0 128 12>;
};
};
&pinctrl_z {
st,package = <STM32MP_PKG_AC>;
gpioz: gpio@54004000 {
status = "okay";
ngpios = <8>;
gpio-ranges = <&pinctrl_z 0 400 8>;
};
};

View file

@ -0,0 +1,57 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) STMicroelectronics 2019 - All Rights Reserved
* Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
*/
&pinctrl {
st,package = <STM32MP_PKG_AD>;
gpioa: gpio@50002000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 0 16>;
};
gpiob: gpio@50003000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 16 16>;
};
gpioc: gpio@50004000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 32 16>;
};
gpiod: gpio@50005000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 48 16>;
};
gpioe: gpio@50006000 {
status = "okay";
ngpios = <16>;
gpio-ranges = <&pinctrl 0 64 16>;
};
gpiof: gpio@50007000 {
status = "okay";
ngpios = <6>;
gpio-ranges = <&pinctrl 6 86 6>;
};
gpiog: gpio@50008000 {
status = "okay";
ngpios = <10>;
gpio-ranges = <&pinctrl 6 102 10>;
};
gpioh: gpio@50009000 {
status = "okay";
ngpios = <2>;
gpio-ranges = <&pinctrl 0 112 2>;
};
};

View file

@ -5,7 +5,6 @@
* Copyright (C) 2018 Xilinx, Inc. * Copyright (C) 2018 Xilinx, Inc.
*/ */
/dts-v1/; /dts-v1/;
#include "zynq-7000.dtsi"
/ { / {
#address-cells = <1>; #address-cells = <1>;
@ -33,27 +32,21 @@
}; };
amba: amba { amba: amba {
u-boot,dm-pre-reloc;
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
interrupt-parent = <&intc>;
ranges; ranges;
intc: interrupt-controller@f8f01000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
interrupt-controller;
reg = <0xF8F01000 0x1000>,
<0xF8F00100 0x100>;
};
slcr: slcr@f8000000 { slcr: slcr@f8000000 {
u-boot,dm-pre-reloc;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
compatible = "xlnx,zynq-slcr", "syscon", "simple-bus"; compatible = "xlnx,zynq-slcr", "syscon", "simple-bus";
reg = <0xF8000000 0x1000>; reg = <0xF8000000 0x1000>;
ranges; ranges;
clkc: clkc@100 { clkc: clkc@100 {
u-boot,dm-pre-reloc;
#clock-cells = <1>; #clock-cells = <1>;
compatible = "xlnx,ps7-clkc"; compatible = "xlnx,ps7-clkc";
clock-output-names = "armpll", "ddrpll", clock-output-names = "armpll", "ddrpll",
@ -78,6 +71,20 @@
reg = <0x100 0x100>; reg = <0x100 0x100>;
}; };
}; };
/*
* This is partially hack because it is normally subnode of smcc
* but for mini U-Boot there is no reason to enable SMCC driver
* which does almost nothing in NOR flash configuration that's
* why place cfi-flash directly here.
*/
flash@e2000000 {
u-boot,dm-pre-reloc;
compatible = "cfi-flash";
reg = <0xe2000000 0x2000000>;
#address-cells = <1>;
#size-cells = <1>;
};
}; };
}; };

View file

@ -67,23 +67,23 @@
spi-max-frequency = <50000000>; spi-max-frequency = <50000000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
partition@qspi-fsbl-uboot { partition@0 {
label = "qspi-fsbl-uboot"; label = "qspi-fsbl-uboot";
reg = <0x0 0x100000>; reg = <0x0 0x100000>;
}; };
partition@qspi-linux { partition@100000 {
label = "qspi-linux"; label = "qspi-linux";
reg = <0x100000 0x500000>; reg = <0x100000 0x500000>;
}; };
partition@qspi-device-tree { partition@600000 {
label = "qspi-device-tree"; label = "qspi-device-tree";
reg = <0x600000 0x20000>; reg = <0x600000 0x20000>;
}; };
partition@qspi-rootfs { partition@620000 {
label = "qspi-rootfs"; label = "qspi-rootfs";
reg = <0x620000 0x5E0000>; reg = <0x620000 0x5E0000>;
}; };
partition@qspi-bitstream { partition@c00000 {
label = "qspi-bitstream"; label = "qspi-bitstream";
reg = <0xC00000 0x400000>; reg = <0xC00000 0x400000>;
}; };

View file

@ -44,23 +44,23 @@
spi-max-frequency = <100000000>; spi-max-frequency = <100000000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
partition@qspi-u-boot-spl { partition@0 {
label = "qspi-u-boot-spl"; label = "qspi-u-boot-spl";
reg = <0x00000 0x10000>; reg = <0x00000 0x10000>;
}; };
partition@qspi-u-boot-img { partition@10000 {
label = "qspi-u-boot-img"; label = "qspi-u-boot-img";
reg = <0x10000 0x60000>; reg = <0x10000 0x60000>;
}; };
partition@qspi-device-tree { partition@70000 {
label = "qspi-device-tree"; label = "qspi-device-tree";
reg = <0x70000 0x10000>; reg = <0x70000 0x10000>;
}; };
partition@qspi-linux { partition@80000 {
label = "qspi-linux"; label = "qspi-linux";
reg = <0x80000 0x400000>; reg = <0x80000 0x400000>;
}; };
partition@qspi-rootfs { partition@480000 {
label = "qspi-rootfs"; label = "qspi-rootfs";
reg = <0x480000 0x1b80000>; reg = <0x480000 0x1b80000>;
}; };

View file

@ -181,17 +181,17 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <7>; reg = <7>;
hwmon@52 { hwmon@34 {
compatible = "ti,ucd9248"; compatible = "ti,ucd9248";
reg = <52>; reg = <0x34>;
}; };
hwmon@53 { hwmon@35 {
compatible = "ti,ucd9248"; compatible = "ti,ucd9248";
reg = <53>; reg = <0x35>;
}; };
hwmon@54 { hwmon@36 {
compatible = "ti,ucd9248"; compatible = "ti,ucd9248";
reg = <54>; reg = <0x36>;
}; };
}; };
}; };

View file

@ -72,7 +72,7 @@
status = "okay"; status = "okay";
num-cs = <4>; num-cs = <4>;
is-decoded-cs = <0>; is-decoded-cs = <0>;
flash@0 { flash@1 {
compatible = "sst25wf080", "jedec,spi-nor"; compatible = "sst25wf080", "jedec,spi-nor";
reg = <1>; reg = <1>;
spi-max-frequency = <1000000>; spi-max-frequency = <1000000>;

View file

@ -1 +0,0 @@
zynq-zc770-xm011.dts

View file

@ -0,0 +1,11 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Xilinx ZC770 XM011 board DTS with NAND x16
*
* Copyright (C) 2013-2018 Xilinx, Inc.
*/
#include "zynq-zc770-xm011.dts"
/ {
model = "Xilinx ZC770 XM011 board (NAND x16)";
};

Some files were not shown because too many files have changed in this diff Show more