Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • develop-v2020.01-ktn
  • feature/integrate-support-qspi-nand-512
  • v2024.01-ktn
  • feature/no-env-for-serial-boot-wip
  • feature/v2024.01-ktn/mx93-dev-hearbeat
  • feature/defconfig-mx6ul
  • feature/kontron-mx8mp-smarc
  • develop-v2023.04-ktn-imx
  • develop-v2022.10-ktn-imx
  • develop-v2020.10-stm32mp-ktn
  • feature/sto/misc
  • develop-v2022.07-ktn-imx
  • feature/v2020.10-stm32mp-ktn
  • feature/v2020.01-ktn/swupdate
  • v2020.01-ktn
  • feature_swupdate
  • v2021.07-ktn
  • v2020.10-stm32mp
  • caam_hab_mx8m
  • master
  • DENX-2005-10-29-2350
  • LABEL_2002_11_05_0120
  • LABEL_2002_11_05_1735
  • LABEL_2002_11_10_2310
  • LABEL_2002_11_11_2211
  • LABEL_2002_11_18_0115
  • LABEL_2002_11_22_0015
  • LABEL_2002_12_03_2230
  • LABEL_2002_12_07_0120
  • LABEL_2002_12_21_0040
  • LABEL_2002_12_28_1700
  • LABEL_2003_01_11_1050
  • LABEL_2003_01_14_0055
  • LABEL_2003_02_28_0150
  • LABEL_2003_03_06_0050
  • LABEL_2003_03_06_0200
  • LABEL_2003_03_06_1440
  • LABEL_2003_03_06_2255
  • LABEL_2003_03_14_2150
  • LABEL_2003_03_25_1830
  • LABEL_2003_03_26_1300
  • LABEL_2003_03_27_1900
  • LABEL_2003_04_05_0300
  • LABEL_2003_04_15_1900
  • LABEL_2003_05_03_1700
  • LABEL_2003_05_12_2355
  • LABEL_2003_05_20_1630
  • LABEL_2003_05_20_2250
  • LABEL_2003_05_22_2230
  • LABEL_2003_05_23_0055
  • LABEL_2003_05_23_1450
  • LABEL_2003_05_30_1450
  • LABEL_2003_05_31_2115
  • LABEL_2003_06_04_0200
  • LABEL_2003_06_05_2140
  • LABEL_2003_06_16_0055
  • LABEL_2003_06_22_1530
  • LABEL_2003_06_26_2220
  • LABEL_2003_06_27_2340
  • LABEL_2003_06_28_0050-stable
  • LABEL_2003_06_28_0130-stable
  • LABEL_2003_06_28_1800-stable
  • LABEL_2003_06_29_0145
  • LABEL_2003_09_06_0055
  • LABEL_2003_09_12_0110
  • LABEL_2003_09_12_1745
  • LABEL_2003_09_13_2100
  • LABEL_2003_09_16_2310
  • LABEL_2003_09_18_2045
  • LABEL_2003_10_01_1830
  • LABEL_2003_10_06_2355
  • LABEL_2003_10_09_1515
  • LABEL_2003_10_09_2320
  • LABEL_2003_10_10_1200
  • LABEL_2003_10_14_2140
  • LABEL_2003_10_16_0200
  • LABEL_2003_10_20_0025
  • LABEL_2003_11_26_MKR
  • LABEL_2003_12_06_1550
  • LABEL_2004_01_21_2110
  • LABEL_2004_01_29_1030
  • LABEL_2004_02_11_2240
  • LABEL_2004_02_20_2310
  • LABEL_2004_02_24_0305
  • LABEL_2004_03_12_0130
  • LABEL_2004_03_14_2340
  • LABEL_2004_03_16_2330
  • LABEL_2004_03_25_1630
  • LABEL_2004_04_18_2135
  • LABEL_2004_04_23_2240
  • LABEL_2004_05_19_2335
  • LABEL_2004_05_29_1850
  • LABEL_2004_06_24_1800
  • LABEL_2004_07_01_1200
  • LABEL_2004_08_28_2355
  • LABEL_2004_08_29_0045
  • LABEL_2004_09_09_0000
  • LABEL_2004_10_12_0110
  • LABEL_2004_10_20_0020
  • LABEL_2004_11_17_2222
  • LABEL_2004_11_25_0035
  • LABEL_2004_12_18_2335
  • LABEL_2004_12_19_1100
  • LABEL_2004_12_19_2240
  • LABEL_2004_12_20_1220
  • LABEL_2005_01_31_2245
  • LABEL_2005_02_07_2045
  • LABEL_2005_02_08_1615
  • LABEL_2005_02_28_0050
  • LABEL_2005_03_06_0225
  • LABEL_2005_03_15_0125
  • LABEL_2005_04_05_1830
  • LABEL_2005_04_05_2345
  • LABEL_2005_04_14_0115
  • LABEL_2005_05_05_1920
  • LABEL_2005_05_09_1245
  • LABEL_2005_05_13_0050
  • LABEL_2005_07_04_0202
  • LABEL_2005_08_12_0050
  • LABEL_2005_09_15_2320
120 results

Target

Select target project
  • KED Software Projects / Miscellaneous / KED U-Boot Fork
  • Florian Mayer / u-boot
2 results
Select Git revision
  • v2020.01-ktn
  • caam_hab_mx8m
  • pmic_pca9450
  • feature_swupdate
  • wip_swupdate_env
  • master
  • DENX-2005-10-29-2350
  • LABEL_2002_11_05_0120
  • LABEL_2002_11_05_1735
  • LABEL_2002_11_10_2310
  • LABEL_2002_11_11_2211
  • LABEL_2002_11_18_0115
  • LABEL_2002_11_22_0015
  • LABEL_2002_12_03_2230
  • LABEL_2002_12_07_0120
  • LABEL_2002_12_21_0040
  • LABEL_2002_12_28_1700
  • LABEL_2003_01_11_1050
  • LABEL_2003_01_14_0055
  • LABEL_2003_02_28_0150
  • LABEL_2003_03_06_0050
  • LABEL_2003_03_06_0200
  • LABEL_2003_03_06_1440
  • LABEL_2003_03_06_2255
  • LABEL_2003_03_14_2150
  • LABEL_2003_03_25_1830
  • LABEL_2003_03_26_1300
  • LABEL_2003_03_27_1900
  • LABEL_2003_04_05_0300
  • LABEL_2003_04_15_1900
  • LABEL_2003_05_03_1700
  • LABEL_2003_05_12_2355
  • LABEL_2003_05_20_1630
  • LABEL_2003_05_20_2250
  • LABEL_2003_05_22_2230
  • LABEL_2003_05_23_0055
  • LABEL_2003_05_23_1450
  • LABEL_2003_05_30_1450
  • LABEL_2003_05_31_2115
  • LABEL_2003_06_04_0200
  • LABEL_2003_06_05_2140
  • LABEL_2003_06_16_0055
  • LABEL_2003_06_22_1530
  • LABEL_2003_06_26_2220
  • LABEL_2003_06_27_2340
  • LABEL_2003_06_28_0050-stable
  • LABEL_2003_06_28_0130-stable
  • LABEL_2003_06_28_1800-stable
  • LABEL_2003_06_29_0145
  • LABEL_2003_09_06_0055
  • LABEL_2003_09_12_0110
  • LABEL_2003_09_12_1745
  • LABEL_2003_09_13_2100
  • LABEL_2003_09_16_2310
  • LABEL_2003_09_18_2045
  • LABEL_2003_10_01_1830
  • LABEL_2003_10_06_2355
  • LABEL_2003_10_09_1515
  • LABEL_2003_10_09_2320
  • LABEL_2003_10_10_1200
  • LABEL_2003_10_14_2140
  • LABEL_2003_10_16_0200
  • LABEL_2003_10_20_0025
  • LABEL_2003_11_26_MKR
  • LABEL_2003_12_06_1550
  • LABEL_2004_01_21_2110
  • LABEL_2004_01_29_1030
  • LABEL_2004_02_11_2240
  • LABEL_2004_02_20_2310
  • LABEL_2004_02_24_0305
  • LABEL_2004_03_12_0130
  • LABEL_2004_03_14_2340
  • LABEL_2004_03_16_2330
  • LABEL_2004_03_25_1630
  • LABEL_2004_04_18_2135
  • LABEL_2004_04_23_2240
  • LABEL_2004_05_19_2335
  • LABEL_2004_05_29_1850
  • LABEL_2004_06_24_1800
  • LABEL_2004_07_01_1200
  • LABEL_2004_08_28_2355
  • LABEL_2004_08_29_0045
  • LABEL_2004_09_09_0000
  • LABEL_2004_10_12_0110
  • LABEL_2004_10_20_0020
  • LABEL_2004_11_17_2222
  • LABEL_2004_11_25_0035
  • LABEL_2004_12_18_2335
  • LABEL_2004_12_19_1100
  • LABEL_2004_12_19_2240
  • LABEL_2004_12_20_1220
  • LABEL_2005_01_31_2245
  • LABEL_2005_02_07_2045
  • LABEL_2005_02_08_1615
  • LABEL_2005_02_28_0050
  • LABEL_2005_03_06_0225
  • LABEL_2005_03_15_0125
  • LABEL_2005_04_05_1830
  • LABEL_2005_04_05_2345
  • LABEL_2005_04_14_0115
  • LABEL_2005_05_05_1920
  • LABEL_2005_05_09_1245
  • LABEL_2005_05_13_0050
  • LABEL_2005_07_04_0202
  • LABEL_2005_08_12_0050
  • LABEL_2005_09_15_2320
106 results
Show changes

Commits on Source 48126

48,026 additional commits have been omitted to prevent performance issues.
1000 files
+ 96837
35023
Compare changes
  • Side-by-side
  • Inline

Files

.azure-pipelines.yml

0 → 100644
+523 −0
Original line number Diff line number Diff line
variables:
  windows_vm: windows-2019
  ubuntu_vm: ubuntu-22.04
  macos_vm: macOS-12
  ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023
  # Add '-u 0' options for Azure pipelines, otherwise we get "permission
  # denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
  # since our $(ci_runner_image) user is not root.
  container_option: -u 0
  work_dir: /u

stages:
- stage: testsuites
  jobs:
  - job: tools_only_windows
    displayName: 'Ensure host tools build for Windows'
    pool:
      vmImage: $(windows_vm)
    steps:
      - powershell: |
          (New-Object Net.WebClient).DownloadFile("https://github.com/msys2/msys2-installer/releases/download/2021-06-04/msys2-base-x86_64-20210604.sfx.exe", "sfx.exe")
        displayName: 'Install MSYS2'
      - script: |
          sfx.exe -y -o%CD:~0,2%\
          %CD:~0,2%\msys64\usr\bin\bash -lc " "
          %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syuu"
          %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syuu"
        displayName: 'Update MSYS2'
      - script: |
          %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm --needed -Sy make gcc bison flex diffutils openssl-devel libgnutls-devel libutil-linux-devel"
        displayName: 'Install Toolchain'
      - script: |
          echo make tools-only_defconfig tools-only > build-tools.sh
          %CD:~0,2%\msys64\usr\bin\bash -lc "bash build-tools.sh"
        displayName: 'Build Host Tools'
        env:
          # Tell MSYS2 we need a POSIX emulation layer
          MSYSTEM: MSYS
          # Tell MSYS2 not to ‘cd’ our startup directory to HOME
          CHERE_INVOKING: yes

  - job: tools_only_macOS
    displayName: 'Ensure host tools build for macOS X'
    pool:
      vmImage: $(macos_vm)
    steps:
      - script: brew install make ossp-uuid
        displayName: Brew install dependencies
      - script: |
          gmake tools-only_config tools-only \
            HOSTCFLAGS="-I/usr/local/opt/openssl@1.1/include" \
            HOSTLDFLAGS="-L/usr/local/opt/openssl@1.1/lib" \
            -j$(sysctl -n hw.logicalcpu)
        displayName: 'Perform tools-only build'

  - job: check_for_new_CONFIG_symbols_outside_Kconfig
    displayName: 'Check for new CONFIG symbols outside Kconfig'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      # If grep succeeds and finds a match the test fails as we should
      # have no matches.
      - script: git grep -E '^#[[:blank:]]*(define|undef)[[:blank:]]*CONFIG_'
                  :^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
                  :^include/linux/kconfig.h :^tools/ && exit 1 || exit 0

  - job: docs
    displayName: 'Build documentation'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      - script: |
          virtualenv -p /usr/bin/python3 /tmp/venvhtml
          . /tmp/venvhtml/bin/activate
          pip install -r doc/sphinx/requirements.txt
          make htmldocs KDOC_WERROR=1
          make infodocs

  - job: maintainers
    displayName: 'Ensure all configs have MAINTAINERS entries'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      - script: |
          ./tools/buildman/buildman --maintainer-check

  - job: tools_only
    displayName: 'Ensure host tools and env tools build'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      - script: |
          make tools-only_config tools-only -j$(nproc)
          make mrproper
          make tools-only_config envtools -j$(nproc)

  - job: utils
    displayName: 'Run binman, buildman, dtoc, Kconfig and patman testsuites'
    pool:
      vmImage: $(ubuntu_vm)
    steps:
      - script: |
          cat << "EOF" > build.sh
          cd $(work_dir)
          git config --global user.name "Azure Pipelines"
          git config --global user.email bmeng.cn@gmail.com
          git config --global --add safe.directory $(work_dir)
          export USER=azure
          virtualenv -p /usr/bin/python3 /tmp/venv
          . /tmp/venv/bin/activate
          pip install -r test/py/requirements.txt
          pip install -r tools/buildman/requirements.txt
          export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only
          export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
          export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}
          ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board tools-only
          set -ex
          ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test
          ./tools/buildman/buildman -t
          ./tools/dtoc/dtoc -t
          ./tools/patman/patman test
          make O=${UBOOT_TRAVIS_BUILD_DIR} testconfig
          EOF
          cat build.sh
          # We cannot use "container" like other jobs above, as buildman
          # seems to hang forever with pre-configured "container" environment
          docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh

  - job: pylint
    displayName: Check for any pylint regressions
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      - script: |
          git config --global --add safe.directory $(work_dir)
          export USER=azure
          pip install -r test/py/requirements.txt
          pip install -r tools/buildman/requirements.txt
          pip install asteval pylint==2.12.2 pyopenssl
          export PATH=${PATH}:~/.local/bin
          echo "[MASTER]" >> .pylintrc
          echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
          export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only
          ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board tools-only
          set -ex
          pylint --version
          export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
          make pylint_err

  - job: check_for_pre_schema_tags
    displayName: 'Check for pre-schema driver model tags'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      # If grep succeeds and finds a match the test fails as we should
      # have no matches.
      - script: git grep u-boot,dm- -- '*.dts*' && exit 1 || exit 0

  - job: check_packing_of_python_tools
    displayName: 'Check we can package the Python tools'
    pool:
      vmImage: $(ubuntu_vm)
    container:
      image: $(ci_runner_image)
      options: $(container_option)
    steps:
      - script: make pip

  - job: create_test_py_wrapper_script
    displayName: 'Create and stage a wrapper for test.py runs'
    pool:
      vmImage: $(ubuntu_vm)
    steps:
      - checkout: none
      - script: |
          cat << EOF > test.sh
          #!/bin/bash
          set -ex
          # the below corresponds to .gitlab-ci.yml "before_script"
          cd \${WORK_DIR}
          git config --global --add safe.directory \${WORK_DIR}
          git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks
          ln -s travis-ci /tmp/uboot-test-hooks/bin/\`hostname\`
          ln -s travis-ci /tmp/uboot-test-hooks/py/\`hostname\`
          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
          if [[ "\${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
              wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
              export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
          fi
          if [[ "\${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "\${TEST_PY_BD}" == "sifive_unleashed" ]]; then
              wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
              export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
          fi
          # the below corresponds to .gitlab-ci.yml "script"
          cd \${WORK_DIR}
          export UBOOT_TRAVIS_BUILD_DIR=/tmp/\${TEST_PY_BD}
          if [ -n "\${BUILD_ENV}" ]; then
              export \${BUILD_ENV};
          fi
          pip install -r tools/buildman/requirements.txt
          tools/buildman/buildman -o \${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board \${TEST_PY_BD} \${OVERRIDE}
          cp ~/grub_x86.efi \${UBOOT_TRAVIS_BUILD_DIR}/
          cp ~/grub_x64.efi \${UBOOT_TRAVIS_BUILD_DIR}/
          cp /opt/grub/grubriscv64.efi \${UBOOT_TRAVIS_BUILD_DIR}/grub_riscv64.efi
          cp /opt/grub/grubaa64.efi \${UBOOT_TRAVIS_BUILD_DIR}/grub_arm64.efi
          cp /opt/grub/grubarm.efi \${UBOOT_TRAVIS_BUILD_DIR}/grub_arm.efi
          # create sdcard / spi-nor images for sifive unleashed using genimage
          if [[ "\${TEST_PY_BD}" == "sifive_unleashed" ]]; then
              mkdir -p root;
              cp \${UBOOT_TRAVIS_BUILD_DIR}/spl/u-boot-spl.bin .;
              cp \${UBOOT_TRAVIS_BUILD_DIR}/u-boot.itb .;
              rm -rf tmp;
              genimage --inputpath . --config board/sifive/unleashed/genimage_sdcard.cfg;
              cp images/sdcard.img \${UBOOT_TRAVIS_BUILD_DIR}/;
              rm -rf tmp;
              genimage --inputpath . --config board/sifive/unleashed/genimage_spi-nor.cfg;
              cp images/spi-nor.img \${UBOOT_TRAVIS_BUILD_DIR}/;
          fi
          if [[ "\${TEST_PY_BD}" == "coreboot" ]]; then
              wget -O - "https://drive.google.com/uc?id=1uJ2VkUQ8czWFZmhJQ90Tp8V_zrJ6BrBH&export=download" |xz -dc >\${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
              wget -O - "https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >cbfstool;
              chmod a+x cbfstool;
              ./cbfstool \${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f \${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000;
          fi
          virtualenv -p /usr/bin/python3 /tmp/venv
          . /tmp/venv/bin/activate
          pip install -r test/py/requirements.txt
          pip install pytest-azurepipelines
          export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:\${PATH}
          export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci
          # "\${var:+"-k \$var"}" expands to "" if \$var is empty, "-k \$var" if not
          ./test/py/test.py -ra -o cache_dir="\$UBOOT_TRAVIS_BUILD_DIR"/.pytest_cache --bd \${TEST_PY_BD} \${TEST_PY_ID} \${TEST_PY_TEST_SPEC:+"-k \${TEST_PY_TEST_SPEC}"} --build-dir "\$UBOOT_TRAVIS_BUILD_DIR" --report-dir "\$UBOOT_TRAVIS_BUILD_DIR"
          # the below corresponds to .gitlab-ci.yml "after_script"
          rm -rf /tmp/uboot-test-hooks /tmp/venv
          EOF
      - task: CopyFiles@2
        displayName: 'Copy test.sh for later usage'
        inputs:
          contents: 'test.sh'
          targetFolder: '$(Build.ArtifactStagingDirectory)'
      - publish: '$(Build.ArtifactStagingDirectory)/test.sh'
        displayName: 'Publish test.sh'
        artifact: testsh

- stage: test_py_sandbox
  jobs:
  - job: test_py_sandbox
    displayName: 'test.py for sandbox'
    pool:
      vmImage: $(ubuntu_vm)
    strategy:
      matrix:
        sandbox:
          TEST_PY_BD: "sandbox"
        sandbox_asan:
          TEST_PY_BD: "sandbox"
          OVERRIDE: "-a ASAN"
          TEST_PY_TEST_SPEC: "version"
        sandbox_clang:
          TEST_PY_BD: "sandbox"
          OVERRIDE: "-O clang-16"
        sandbox_clang_asan:
          TEST_PY_BD: "sandbox"
          OVERRIDE: "-O clang-16 -a ASAN"
          TEST_PY_TEST_SPEC: "version"
        sandbox64:
          TEST_PY_BD: "sandbox64"
        sandbox64_clang:
          TEST_PY_BD: "sandbox64"
          OVERRIDE: "-O clang-16"
        sandbox_nolto:
          TEST_PY_BD: "sandbox"
          BUILD_ENV: "NO_LTO=1"
        sandbox_spl:
          TEST_PY_BD: "sandbox_spl"
          TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
        sandbox_vpl:
          TEST_PY_BD: "sandbox_vpl"
          TEST_PY_TEST_SPEC: "vpl or test_spl"
        sandbox_noinst:
          TEST_PY_BD: "sandbox_noinst"
          TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
        sandbox_noinst_load_fit_full:
          TEST_PY_BD: "sandbox_noinst"
          TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
          OVERRIDE: "-a CONFIG_SPL_LOAD_FIT_FULL=y"
        sandbox_flattree:
          TEST_PY_BD: "sandbox_flattree"
        sandbox_trace:
          TEST_PY_BD: "sandbox"
          BUILD_ENV: "FTRACE=1 NO_LTO=1"
          TEST_PY_TEST_SPEC: "trace"
          OVERRIDE: "-a CONFIG_TRACE=y -a CONFIG_TRACE_EARLY=y -a CONFIG_TRACE_EARLY_SIZE=0x01000000 -a CONFIG_TRACE_BUFFER_SIZE=0x02000000"
    steps:
      - download: current
        artifact: testsh
      - script: |
          # make current directory writeable to uboot user inside the container
          # as sandbox testing need create files like spi flash images, etc.
          # (TODO: clean up this in the future)
          chmod 777 .
          chmod 755 $(Pipeline.Workspace)/testsh/test.sh
          # Filesystem tests need extra docker args to run
          set --
          # mount -o loop needs the loop devices
          if modprobe loop; then
              for d in $(find /dev -maxdepth 1 -name 'loop*'); do
                  set -- "$@" --device $d:$d
              done
          fi
          # Needed for mount syscall (for guestmount as well)
          set -- "$@" --cap-add SYS_ADMIN
          # Default apparmor profile denies mounts
          set -- "$@" --security-opt apparmor=unconfined
          # Some tests using libguestfs-tools need the fuse device to run
          docker run "$@" --device /dev/fuse:/dev/fuse \
                         -v $PWD:$(work_dir) \
                         -v $(Pipeline.Workspace):$(Pipeline.Workspace) \
                         -e WORK_DIR="${WORK_DIR}" \
                         -e TEST_PY_BD="${TEST_PY_BD}" \
                         -e TEST_PY_ID="${TEST_PY_ID}" \
                         -e TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}" \
                         -e OVERRIDE="${OVERRIDE}" \
                         -e BUILD_ENV="${BUILD_ENV}" $(ci_runner_image) \
                         $(Pipeline.Workspace)/testsh/test.sh

- stage: test_py_qemu
  jobs:
  - job: test_py_qemu
    displayName: 'test.py for QEMU platforms'
    pool:
      vmImage: $(ubuntu_vm)
    strategy:
      matrix:
        coreboot:
          TEST_PY_BD: "coreboot"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep"
        evb_ast2500:
          TEST_PY_BD: "evb-ast2500"
          TEST_PY_ID: "--id qemu"
        evb_ast2600:
          TEST_PY_BD: "evb-ast2600"
          TEST_PY_ID: "--id qemu"
        vexpress_ca9x4:
          TEST_PY_BD: "vexpress_ca9x4"
          TEST_PY_ID: "--id qemu"
        integratorcp_cm926ejs:
          TEST_PY_BD: "integratorcp_cm926ejs"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_arm:
          TEST_PY_BD: "qemu_arm"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_arm64:
          TEST_PY_BD: "qemu_arm64"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_m68k:
          TEST_PY_BD: "M5208EVBE"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep and not efi"
          OVERRIDE: "-a CONFIG_M68K_QEMU=y -a ~CONFIG_MCFTMR"
        qemu_malta:
          TEST_PY_BD: "malta"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep and not efi"
        qemu_maltael:
          TEST_PY_BD: "maltael"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep and not efi"
        qemu_malta64:
          TEST_PY_BD: "malta64"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep and not efi"
        qemu_malta64el:
          TEST_PY_BD: "malta64el"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep and not efi"
        qemu_ppce500:
          TEST_PY_BD: "qemu-ppce500"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_riscv32:
          TEST_PY_BD: "qemu-riscv32"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_riscv64:
          TEST_PY_BD: "qemu-riscv64"
          TEST_PY_TEST_SPEC: "not sleep"
        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:
          TEST_PY_BD: "qemu-x86"
          TEST_PY_TEST_SPEC: "not sleep"
        qemu_x86_64:
          TEST_PY_BD: "qemu-x86_64"
          TEST_PY_TEST_SPEC: "not sleep"
        r2dplus_i82557c:
          TEST_PY_BD: "r2dplus"
          TEST_PY_ID: "--id i82557c_qemu"
        r2dplus_pcnet:
          TEST_PY_BD: "r2dplus"
          TEST_PY_ID: "--id pcnet_qemu"
        r2dplus_rtl8139:
          TEST_PY_BD: "r2dplus"
          TEST_PY_ID: "--id rtl8139_qemu"
        r2dplus_tulip:
          TEST_PY_BD: "r2dplus"
          TEST_PY_ID: "--id tulip_qemu"
        sifive_unleashed_sdcard:
          TEST_PY_BD: "sifive_unleashed"
          TEST_PY_ID: "--id sdcard_qemu"
        sifive_unleashed_spi-nor:
          TEST_PY_BD: "sifive_unleashed"
          TEST_PY_ID: "--id spi-nor_qemu"
        xilinx_zynq_virt:
          TEST_PY_BD: "xilinx_zynq_virt"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep"
        xilinx_versal_virt:
          TEST_PY_BD: "xilinx_versal_virt"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep"
        xtfpga:
          TEST_PY_BD: "xtfpga"
          TEST_PY_ID: "--id qemu"
          TEST_PY_TEST_SPEC: "not sleep"
    steps:
      - download: current
        artifact: testsh
      - script: |
          # make current directory writeable to uboot user inside the container
          # as sandbox testing need create files like spi flash images, etc.
          # (TODO: clean up this in the future)
          chmod 777 .
          chmod 755 $(Pipeline.Workspace)/testsh/test.sh
          # Some tests using libguestfs-tools need the fuse device to run
          docker run "$@" --device /dev/fuse:/dev/fuse \
                         -v $PWD:$(work_dir) \
                         -v $(Pipeline.Workspace):$(Pipeline.Workspace) \
                         -e WORK_DIR="${WORK_DIR}" \
                         -e TEST_PY_BD="${TEST_PY_BD}" \
                         -e TEST_PY_ID="${TEST_PY_ID}" \
                         -e TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}" \
                         -e OVERRIDE="${OVERRIDE}" \
                         -e BUILD_ENV="${BUILD_ENV}" $(ci_runner_image) \
                         $(Pipeline.Workspace)/testsh/test.sh
        retryCountOnTaskFailure: 2 # QEMU may be too slow, etc.

- stage: world_build
  jobs:
  - job: build_the_world
    timeoutInMinutes: 0 # Use the maximum allowed
    displayName: 'Build the World'
    pool:
      vmImage: $(ubuntu_vm)
    strategy:
      # Use almost the same target division in .travis.yml, only merged
      # 3 small build jobs (arc/microblaze/xtensa) into one.
      matrix:
        am33xx_at91_kirkwood_mvebu_omap:
          BUILDMAN: "am33xx at91_kirkwood mvebu omap -x siemens"
        amlogic_bcm_boundary_engicam_siemens_technexion_oradex:
          BUILDMAN: "amlogic bcm boundary engicam siemens technexion toradex -x mips"
        arm_nxp_minus_imx:
          BUILDMAN: "freescale -x powerpc,m68k,imx,mx"
        imx:
          BUILDMAN: "mx imx -x boundary,engicam,technexion,toradex"
        rk:
          BUILDMAN: "rk"
        sunxi:
          BUILDMAN: "sunxi"
        powerpc:
          BUILDMAN: "powerpc"
        arm_catch_all:
          BUILDMAN: "arm -x aarch64,am33xx,at91,bcm,ls1,kirkwood,mvebu,omap,rk,siemens,mx,sunxi,technexion,toradex"
        aarch64_catch_all:
          BUILDMAN: "aarch64 -x amlogic,bcm,engicam,imx,ls1,ls2,lx216,mvebu,rk,siemens,sunxi,toradex"
        everything_but_arm_and_powerpc:
          BUILDMAN: "-x arm,powerpc"
    steps:
      - script: |
          cat << EOF > build.sh
          set -ex
          cd ${WORK_DIR}
          # make environment variables available as tests are running inside a container
          export BUILDMAN="${BUILDMAN}"
          git config --global --add safe.directory ${WORK_DIR}
          pip install -r tools/buildman/requirements.txt
          EOF
          cat << "EOF" >> build.sh
          if [[ "${BUILDMAN}" != "" ]]; then
              ret=0;
              tools/buildman/buildman -o /tmp -PEWM ${BUILDMAN} ${OVERRIDE} || ret=$?;
              if [[ $ret -ne 0 ]]; then
                  tools/buildman/buildman -o /tmp -seP ${BUILDMAN};
                  exit $ret;
              fi;
          fi
          EOF
          cat build.sh
          docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh
+10 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
# Temporary for false positive in checkpatch
--ignore COMPLEX_MACRO

# For CONFIG_SYS_I2C_NOPROBES
# For CFG_SYS_I2C_NOPROBES
--ignore MULTISTATEMENT_MACRO_USE_DO_WHILE

# For simple_strtoul
@@ -25,3 +25,12 @@
# Ignore "WARNING: Prefer ether_addr_copy() over memcpy() if the Ethernet
# addresses are __aligned(2)".
--ignore PREFER_ETHER_ADDR_COPY

# ENOSYS is a conventionally used error, even though U-Boot lacks system calls.
--ignore ENOSYS

# A bit shorter of a description is OK with us.
--min-conf-desc-length=2

# Extra checks for U-Boot
--u-boot

.get_maintainer.conf

0 → 100644
+1 −0
Original line number Diff line number Diff line
--find-maintainer-files --git --maintainer-path=.

.get_maintainer.ignore

0 → 100644
+1 −0
Original line number Diff line number Diff line
"Pali Rohár" <pali@kernel.org>

.gitattributes

0 → 100644
+8 −0
Original line number Diff line number Diff line
# Declare files that always have LF line endings on checkout
* text eol=lf
# Denote all files that are truly binary and should not be modified
*.bin binary
*.bmp binary
*.ttf binary
*.gz binary
*.png binary
+6 −0
Original line number Diff line number Diff line
Please do not submit a Pull Request via github.  Our project makes use of
mailing lists for patch submission and review.  For more details please
see https://u-boot.readthedocs.io/en/latest/develop/sending_patches.html

The only exception to this is in order to trigger a CI loop on Azure prior
to posting of patches.
+48 −16
Original line number Diff line number Diff line
@@ -3,49 +3,63 @@
# subdirectories here. Add them in the ".gitignore" file
# in that subdirectory instead.
#
# Normal rules
# Normal rules (sorted alphabetically)
#
.*
*.o
*.o.*
!.checkpatch.conf
*.a
*.s
*.su
*.mod.c
*.asn1.[ch]
*.bin
*.cfgout
*.cover
*.dtb
*.dtbo
*.dtb.S
*.elf
*.exe
*.gcda
*.gcno
*.i
*.img
*.lex.c
*.lst
*.mod.c
*.mbx
*.o
*.o.*
*.order
*.elf
*.swp
*.bin
*.patch
*.cfgtmp

# host programs on Cygwin
*.exe
*.s
*.su
*.swp
*.tab.[ch]

# Build tree
/build-*
/build*

#
# Top-level generic files
#
fit-dtb.blob*
/MLO*
/SPL*
/System.map
/u-boot*
/boards.cfg
/mkimage-in-simple-bin*
/simple-bin*
/u-boot*
/*.log

#
# git files that we don't want to ignore even it they are dot-files
#
!.gitignore
!.mailmap
!.get_maintainer.*

#
# Generated files
#
/LOG
/spl/
/tpl/
/defconfig
@@ -53,6 +67,8 @@
#
# Generated include files
#
/include/autoconf.mk*
/include/config.h
/include/config/
/include/generated/

@@ -84,3 +100,19 @@ GTAGS
*.orig
*~
\#*#

# Python cache
__pycache__

# Python code coverage output (python3-coverage html)
/htmlcov/

# pylint files
/pylint.cur
/pylint.out/

# qconfig database
/qconfig.db

# Clang's compilation database file
/compile_commands.json

.gitlab-ci.yml

0 → 100644
+500 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0+

variables:
  DEFAULT_TAG: ""
  MIRROR_DOCKER: docker.io

default:
  tags:
    - ${DEFAULT_TAG}

# Grab our configured image.  The source for this is found
# in the u-boot tree at tools/docker/Dockerfile
image: ${MIRROR_DOCKER}/trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023

# We run some tests in different order, to catch some failures quicker.
stages:
  - testsuites
  - test.py
  - world build

.buildman_and_testpy_template: &buildman_and_testpy_dfn
  stage: test.py
  retry: 2 # QEMU may be too slow, etc.
  rules:
    - when: always
  before_script:
    # Clone uboot-test-hooks
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    - git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks
    - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
    - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
    - 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
    - if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
        wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
        export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
      fi
    - if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
        wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
        export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
      fi

  after_script:
    - cp -v /tmp/${TEST_PY_BD}/*.{html,css} .
    - rm -rf /tmp/uboot-test-hooks /tmp/venv
  script:
    # If we've been asked to use clang only do one configuration.
    - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
    - echo BUILD_ENV ${BUILD_ENV}
    - if [ -n "${BUILD_ENV}" ]; then
        export ${BUILD_ENV};
      fi
    - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
        --board ${TEST_PY_BD} ${OVERRIDE}
    - cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/
    - cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/
    - cp /opt/grub/grubriscv64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_riscv64.efi
    - cp /opt/grub/grubaa64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi
    - cp /opt/grub/grubarm.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi
    # create sdcard / spi-nor images for sifive unleashed using genimage
    - if [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
        mkdir -p root;
        cp ${UBOOT_TRAVIS_BUILD_DIR}/spl/u-boot-spl.bin .;
        cp ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.itb .;
        rm -rf tmp;
        genimage --inputpath . --config board/sifive/unleashed/genimage_sdcard.cfg;
        cp images/sdcard.img ${UBOOT_TRAVIS_BUILD_DIR}/;
        rm -rf tmp;
        genimage --inputpath . --config board/sifive/unleashed/genimage_spi-nor.cfg;
        cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/;
      fi
    - if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
        wget -O -
          "https://drive.google.com/uc?id=1uJ2VkUQ8czWFZmhJQ90Tp8V_zrJ6BrBH&export=download" |
          xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
        wget -O -
          "https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >
          cbfstool;
        chmod a+x cbfstool;
        ./cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000;
      fi
    - virtualenv -p /usr/bin/python3 /tmp/venv
    - . /tmp/venv/bin/activate
    - pip install -r test/py/requirements.txt
    # "${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 PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
      ./test/py/test.py -ra --bd ${TEST_PY_BD} ${TEST_PY_ID}
        ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
        --build-dir "$UBOOT_TRAVIS_BUILD_DIR"
  artifacts:
    when: always
    paths:
      - "*.html"
      - "*.css"
    expire_in: 1 week

.world_build:
  stage: world build
  rules:
    - when: always

build all 32bit ARM platforms:
  extends: .world_build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      pip install -r tools/buildman/requirements.txt;
      ./tools/buildman/buildman -o /tmp -PEWM arm -x aarch64 || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all 64bit ARM platforms:
  extends: .world_build
  script:
    - virtualenv -p /usr/bin/python3 /tmp/venv
    - . /tmp/venv/bin/activate
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      pip install -r tools/buildman/requirements.txt;
      ./tools/buildman/buildman -o /tmp -PEWM aarch64 || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all PowerPC platforms:
  extends: .world_build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -P -E -W powerpc || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

build all other platforms:
  extends: .world_build
  script:
    - ret=0;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      ./tools/buildman/buildman -o /tmp -PEWM -x arm,powerpc || ret=$?;
      if [[ $ret -ne 0 ]]; then
        ./tools/buildman/buildman -o /tmp -seP;
        exit $ret;
      fi;

.testsuites:
  stage: testsuites
  rules:
    - when: always

check for new CONFIG symbols outside Kconfig:
  extends: .testsuites
  script:
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    # If grep succeeds and finds a match the test fails as we should
    # have no matches.
    - git grep -E '^#[[:blank:]]*(define|undef)[[:blank:]]*CONFIG_'
        :^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
        :^include/linux/kconfig.h :^tools/ && exit 1 || exit 0

# build documentation
docs:
  extends: .testsuites
  script:
    - virtualenv -p /usr/bin/python3 /tmp/venvhtml
    - . /tmp/venvhtml/bin/activate
    - pip install -r doc/sphinx/requirements.txt
    - make htmldocs KDOC_WERROR=1
    - make infodocs

# ensure all configs have MAINTAINERS entries
Check for configs without MAINTAINERS entry:
  extends: .testsuites
  script:
    - ./tools/buildman/buildman --maintainer-check

# Ensure host tools build
Build tools-only and envtools:
  extends: .testsuites
  script:
    - make tools-only_config tools-only -j$(nproc);
      make mrproper;
      make tools-only_config envtools -j$(nproc)

Run binman, buildman, dtoc, Kconfig and patman testsuites:
  extends: .testsuites
  script:
    - git config --global user.name "GitLab CI Runner";
      git config --global user.email trini@konsulko.com;
      git config --global --add safe.directory "${CI_PROJECT_DIR}";
      export USER=gitlab;
      virtualenv -p /usr/bin/python3 /tmp/venv;
      . /tmp/venv/bin/activate;
      pip install -r test/py/requirements.txt;
      pip install -r tools/buildman/requirements.txt;
      export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only;
      export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
      export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
      set +e;
      ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
        --board tools-only;
      set -e;
      ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
      ./tools/buildman/buildman -t;
      ./tools/dtoc/dtoc -t;
      ./tools/patman/patman test;
      make testconfig

# Check for any pylint regressions
Run pylint:
  extends: .testsuites
  script:
    - git config --global --add safe.directory "${CI_PROJECT_DIR}"
    - pip install -r test/py/requirements.txt
    - pip install -r tools/buildman/requirements.txt
    - pip install asteval pylint==2.12.2 pyopenssl
    - export PATH=${PATH}:~/.local/bin
    - echo "[MASTER]" >> .pylintrc
    - echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
    - export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only
    - set +e
    - ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
        --board tools-only
    - set -e
    - pylint --version
    - export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
    - make pylint_err

# Check for pre-schema driver model tags
Check for pre-schema tags:
  extends: .testsuites
  script:
    - git config --global --add safe.directory "${CI_PROJECT_DIR}";
    # If grep succeeds and finds a match the test fails as we should
    # have no matches.
    - git grep u-boot,dm- -- '*.dts*' && exit 1 || exit 0

# Check we can package the Python tools
Check packing of Python tools:
  extends: .testsuites
  script:
    - make pip

# Test sandbox with test.py
sandbox test.py:
  variables:
    TEST_PY_BD: "sandbox"
  <<: *buildman_and_testpy_dfn

sandbox with clang test.py:
  variables:
    TEST_PY_BD: "sandbox"
    OVERRIDE: "-O clang-16"
  <<: *buildman_and_testpy_dfn

sandbox without LTO test.py:
  variables:
    TEST_PY_BD: "sandbox"
    BUILD_ENV: "NO_LTO=1"
  <<: *buildman_and_testpy_dfn

sandbox64 test.py:
  variables:
    TEST_PY_BD: "sandbox64"
  <<: *buildman_and_testpy_dfn

sandbox64 with clang test.py:
  variables:
    TEST_PY_BD: "sandbox64"
    OVERRIDE: "-O clang-16"
  <<: *buildman_and_testpy_dfn

sandbox64 without LTO test.py:
  variables:
    TEST_PY_BD: "sandbox64"
    BUILD_ENV: "NO_LTO=1"
  <<: *buildman_and_testpy_dfn

sandbox_spl test.py:
  variables:
    TEST_PY_BD: "sandbox_spl"
    TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
  <<: *buildman_and_testpy_dfn

sandbox_noinst_test.py:
  variables:
    TEST_PY_BD: "sandbox_noinst"
    TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
  <<: *buildman_and_testpy_dfn

sandbox_noinst with LOAD_FIT_FULL test.py:
  variables:
    TEST_PY_BD: "sandbox_noinst"
    TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
    OVERRIDE: "-a CONFIG_SPL_LOAD_FIT_FULL=y"
  <<: *buildman_and_testpy_dfn

sandbox_vpl test.py:
  variables:
    TEST_PY_BD: "sandbox_vpl"
    TEST_PY_TEST_SPEC: "vpl or test_spl"
  <<: *buildman_and_testpy_dfn

# Enable tracing and disable LTO, to ensure functions are not elided
sandbox trace_test.py:
  variables:
    TEST_PY_BD: "sandbox"
    BUILD_ENV: "FTRACE=1 NO_LTO=1"
    TEST_PY_TEST_SPEC: "trace"
    OVERRIDE: "-a CONFIG_TRACE=y -a CONFIG_TRACE_EARLY=y -a CONFIG_TRACE_EARLY_SIZE=0x01000000 -a CONFIG_TRACE_BUFFER_SIZE=0x02000000"
  <<: *buildman_and_testpy_dfn

evb-ast2500 test.py:
  variables:
    TEST_PY_BD: "evb-ast2500"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

evb-ast2600 test.py:
  variables:
    TEST_PY_BD: "evb-ast2600"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

sandbox_flattree test.py:
  variables:
    TEST_PY_BD: "sandbox_flattree"
  <<: *buildman_and_testpy_dfn

vexpress_ca9x4 test.py:
  variables:
    TEST_PY_BD: "vexpress_ca9x4"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

integratorcp_cm926ejs test.py:
  variables:
    TEST_PY_BD: "integratorcp_cm926ejs"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_arm test.py:
  variables:
    TEST_PY_BD: "qemu_arm"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu_arm64 test.py:
  variables:
    TEST_PY_BD: "qemu_arm64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu_m68k test.py:
  variables:
    TEST_PY_BD: "M5208EVBE"
    TEST_PY_ID: "--id qemu"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    OVERRIDE: "-a CONFIG_M68K_QEMU=y -a ~CONFIG_MCFTMR"
  <<: *buildman_and_testpy_dfn

qemu_malta test.py:
  variables:
    TEST_PY_BD: "malta"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_maltael test.py:
  variables:
    TEST_PY_BD: "maltael"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_malta64 test.py:
  variables:
    TEST_PY_BD: "malta64"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu_malta64el test.py:
  variables:
    TEST_PY_BD: "malta64el"
    TEST_PY_TEST_SPEC: "not sleep and not efi"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

qemu-ppce500 test.py:
  variables:
    TEST_PY_BD: "qemu-ppce500"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv32 test.py:
  variables:
    TEST_PY_BD: "qemu-riscv32"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv64 test.py:
  variables:
    TEST_PY_BD: "qemu-riscv64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv32_spl test.py:
  variables:
    TEST_PY_BD: "qemu-riscv32_spl"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-riscv64_spl test.py:
  variables:
    TEST_PY_BD: "qemu-riscv64_spl"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-x86 test.py:
  variables:
    TEST_PY_BD: "qemu-x86"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

qemu-x86_64 test.py:
  variables:
    TEST_PY_BD: "qemu-x86_64"
    TEST_PY_TEST_SPEC: "not sleep"
  <<: *buildman_and_testpy_dfn

r2dplus_i82557c test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id i82557c_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_pcnet test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id pcnet_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_rtl8139 test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id rtl8139_qemu"
  <<: *buildman_and_testpy_dfn

r2dplus_tulip test.py:
  variables:
    TEST_PY_BD: "r2dplus"
    TEST_PY_ID: "--id tulip_qemu"
  <<: *buildman_and_testpy_dfn

sifive_unleashed_sdcard test.py:
  variables:
    TEST_PY_BD: "sifive_unleashed"
    TEST_PY_ID: "--id sdcard_qemu"
  <<: *buildman_and_testpy_dfn

sifive_unleashed_spi-nor test.py:
  variables:
    TEST_PY_BD: "sifive_unleashed"
    TEST_PY_ID: "--id spi-nor_qemu"
  <<: *buildman_and_testpy_dfn

xilinx_zynq_virt test.py:
  variables:
    TEST_PY_BD: "xilinx_zynq_virt"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

xilinx_versal_virt test.py:
  variables:
    TEST_PY_BD: "xilinx_versal_virt"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

xtfpga test.py:
  variables:
    TEST_PY_BD: "xtfpga"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn

coreboot test.py:
  variables:
    TEST_PY_BD: "coreboot"
    TEST_PY_TEST_SPEC: "not sleep"
    TEST_PY_ID: "--id qemu"
  <<: *buildman_and_testpy_dfn
+103 −5
Original line number Diff line number Diff line
@@ -4,32 +4,130 @@
# and/or not always written the same way, making contributions from the
# same person appearing not to be so or badly displayed.
#
# This file is also used by scripts/get_maintainer.pl.
#
# This file can be modified by hand or updated by the following command:
#  scripts/mailmapper > tmp; mv tmp .mailmap
#
# Entries in this file take one of the following forms:
# Proper Name <commit@email.xx>
# <proper@email.xx> <commit@email.xx>
# Proper Name <proper@email.xx> <commit@email.xx>
# Proper Name <proper@email.xx> Commit Name <commit@email.xx>

Alexander Graf <agraf@csgraf.de> <agraf@suse.de>
Allen Martin <amartin@nvidia.com>
Amanda Baze <amanda.baze@amd.com> <nicole.baze@xilinx.com>
Amit Kumar Mahapatra <amit.kumar-mahapatra@amd.com> <amit.kumar-mahapatra@xilinx.com>
Andreas Bießmann <andreas.devel@googlemail.com>
Andreas Bießmann <andreas@biessmann.org>
Aneesh V <aneesh@ti.com>
Anup Patel <anup@brainfault.org> <anup.patel@wdc.com>
Anurag Kumar Vulisha <AnuragKumar.Vulisha@amd.com> <anurag.kumar.vulisha@xilinx.com>
Appana Durga Kedareswara rao <appana.durga.kedareswara.rao@amd.com> <appana.durga.rao@xilinx.com>
Ashok Reddy Soma <ashok.reddy.soma@amd.com> <ashok.reddy.soma@xilinx.com>
Atish Patra <atishp@atishpatra.org> <atish.patra@wdc.com>
Bharat Kumar Gogada <bharat.kumar.gogada@amd.com> <bharat.kumar.gogada@xilinx.com>
Bharat Kumar Gogada <bharat.kumar.gogada@amd.com> <bharatku@xilinx.com>
Bhargava Sreekantappa Gayathri <bhargava.sreekantappa-gayathri@amd.com> <bhargava.sreekantappa-gayathri@xilinx.com>
Bin Meng <bmeng.cn@gmail.com> <bin.meng@windriver.com>
Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@bootlin.com>
Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@free-electrons.com>
Christian Kohn <chris.kohn@amd.com> <christian.kohn@xilinx.com>
Dirk Behme <dirk.behme@googlemail.com>
Durga Challa <durga.challa@amd.com> <vnsl.durga.challa@xilinx.com>
Eugen Hristev <eugen.hristev@collabora.com> <eugen.hristev@microchip.com>
Fabio Estevam <fabio.estevam@nxp.com>
Harini Katakam <harini.katakam@amd.com> <harini.katakam@xilinx.com>
Harsha <harsha.harsha@amd.com> <harsha.harsha@xilinx.com>
Heinrich Schuchardt <xypron.glpk@gmx.de> <heinrich.schuchardt@canonical.com>
Heinrich Schuchardt <xypron.glpk@gmx.de> xypron.glpk@gmx.de <xypron.glpk@gmx.de>
Ibai Erkiaga <ibai.erkiaga-elorza@amd.com> <ibai.erkiaga-elorza@xilinx.com>
Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@linaro.org>
Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@toradex.com>
Izhar Ameer Shaikh <izhar.ameer.shaikh@amd.com> <izhar.ameer.shaikh@xilinx.com>
Jagan Teki <402jagan@gmail.com>
Jagan Teki <jaganna@gmail.com>
Jagan Teki <jaganna@xilinx.com>
Jagan Teki <jagannadh.teki@gmail.com>
Jagan Teki <jagannadha.sutradharudu-teki@xilinx.com>
Jay Buddhabhatti <jay.buddhabhatti@amd.com> <jay.buddhabhatti@xilinx.com>
Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net>
John Linn <john.linn@amd.com> <john.linn@xilinx.com>
Jyotheeswar Reddy Mutthareddyvari <jyotheeswar.reddy.mutthareddyvari@amd.com> <jyothee@xilinx.com>
Jyotheeswar Reddy Mutthareddyvari <jyotheeswar.reddy.mutthareddyvari@amd.com> <jyotheeswar.reddy.mutthareddyvari@xilinx.com>
Kalyani Akula <kalyani.akula@amd.com> <kalyani.akula@xilinx.com>
Love Kumar <love.kumar@amd.com> <love.kumar@xilinx.com>
Lukasz Majewski <lukma@denx.de>
Marek Behún <kabel@kernel.org> <marek.behun@nic.cz>
Marek Behún <kabel@kernel.org> Marek Behun <marek.behun@nic.cz>
Marek Vasut <marex@denx.de> <marek.vasut+renesas@gmail.com>
Marek Vasut <marex@denx.de> <marek.vasut@gmail.com>
Marek Vasut <marex@denx.de> <marex at denx.de>
Markus Klotzbuecher <mk@denx.de>
Masahiro Yamada <masahiroy@kernel.org> <yamada.masahiro@socionext.com>
Masahiro Yamada <masahiroy@kernel.org> <yamada.m@jp.panasonic.com>
Michal Simek <michal.simek@amd.com> <Monstr@seznam.cz>
Michal Simek <michal.simek@amd.com> <michal.simek@xilinx.com>
Michal Simek <michal.simek@amd.com> <monstr@monstr.eu>
Michal Simek <michal.simek@amd.com> <root@monstr.eu>
Mirza <Taimoor_Mirza@mentor.com>
Mounika Grace Akula <mounika.akula@amd.com> <mounika.grace.akula@xilinx.com>
Mubin Usman Sayyed <mubin.sayyed@amd.com> <mubin.usman.sayyed@xilinx.com>
Nathalie Chan King Choy <nathalie.chan-king-choy@amd.com> <nathalie.chan-king-choy@xilinx.com>
Nathalie Chan King Choy <nathalie.chan-king-choy@amd.com> <nathalie@xilinx.com>
Nava kishore Manne <nava.kishore.manne@amd.com> <nava.manne@xilinx.com>
Neal Frager <neal.frager@amd.com> <neal.frager@xilinx.com>
Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com>
Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.de>
This contributor prefers not to receive mails <noreply@example.com> <pali@kernel.org>
This contributor prefers not to receive mails <noreply@example.com> <pali.rohar@gmail.com>
Patrice Chotard <patrice.chotard@foss.st.com> <patrice.chotard@st.com>
Patrick Delaunay <patrick.delaunay@foss.st.com> <patrick.delaunay@st.com>
Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
Piyush Mehta <piyush.mehta@amd.com> <piyush.mehta@xilinx.com>
Prabhakar Kushwaha <prabhakar@freescale.com>
Punnaiah Choudary Kalluri <punnaiah.choudary.kalluri@amd.com> <punnaiah.choudary.kalluri@xilinx.com>
Radhey Shyam Pandey <radhey.shyam.pandey@amd.com> <radhey.shyam.pandey@xilinx.com>
Rajeshwari Shinde <rajeshwari.s@samsung.com>
Ricardo Ribalda <ricardo.ribalda@uam.es>
Ricardo Ribalda <ricardo.ribalda@gmail.com>
Raju Kumar Pothuraju <rajukumar.pothuraju@amd.com> <raju.kumar-pothuraju@xilinx.com>
Ravi Patel <ravi.patel@amd.com> <ravi.patel@xilinx.com>
Ricardo Ribalda <ricardo@ribalda.com> <ricardo.ribalda@gmail.com>
Ricardo Ribalda <ricardo@ribalda.com> <ricardo.ribalda@uam.es>
Rohit Visavalia <rohit.visavalia@amd.com> <rohit.visavalia@xilinx.com>
Ruchika Gupta <ruchika.gupta@nxp.com> <ruchika.gupta@freescale.com>
Saeed Nowshadi <saeed.nowshadi@amd.com> <saeed.nowshadi@xilinx.com>
Sai Krishna Potthuri <sai.krishna.potthuri@amd.com> <lakshmi.sai.krishna.potthuri@xilinx.com>
Sai Pavan Boddu <sai.pavan.boddu@amd.com> <sai.pavan.boddu@xilinx.com>
Sandeep Gundlupet Raju <sandeep.gundlupet-raju@amd.com> <sandeep.gundlupet-raju@xilinx.com>
Sandeep Paulraj <s-paulraj@ti.com>
Sandeep Reddy Ghanapuram <sandeep.reddy-ghanapuram@amd.com> <sandeep.reddy-ghanapuram@xilinx.com>
Shaohui Xie <Shaohui.Xie@freescale.com>
Stefan Roese <stroese>
Shravya Kumbham <shravya.kumbham@amd.com> <shravya.kumbham@xilinx.com>
Shubhrajyoti Datta <shubhrajyoti.datta@amd.com> <shubhrajyoti.datta@xilinx.com>
Siva Durga Prasad Paladugu <siva.durga.prasad.paladugu@amd.com> <siva.durga.paladugu@xilinx.com>
Siva Durga Prasad Paladugu <siva.durga.prasad.paladugu@amd.com> <sivadur@xilinx.com>
Srinivas Goud <srinivas.goud@amd.com> <srinivas.goud@xilinx.com>
Srinivas Neeli <srinivas.neeli@amd.com> <srinivas.neeli@xilinx.com>
Stefan Roese <sr@denx.de> <stroese>
Stefano Babic <sbabic@denx.de>
Stefano Stabellini <stefano.stabellini@amd.com> <stefano.stabellini@xilinx.com>
Tom Rini <trini@konsulko.com> <trini@ti.com>
Tomas Thoresen <tomas.thoresen@amd.com> <tomast@xilinx.com>
TsiChung Liew <Tsi-Chung.Liew@freescale.com>
Wolfgang Denk <wdenk>
York Sun <yorksun@freescale.com>
Varalaxmi Bingi <varalaxmi.bingi@amd.com> <varalaxmi.bingi@xilinx.com>
Venkatesh Yadav Abbarapu <venkatesh.abbarapu@amd.com> <venkatesh.abbarapu@xilinx.com>
Vikhyat Goyal <vikhyat.goyal@amd.com> <vikhyat.goyal@xilinx.com>
Vishal Patel <vishal.patel@amd.com> <vishal.patel@xilinx.com>
Wolfgang Denk <wd@denx.de> <wd@atlas.denx.de>
Wolfgang Denk <wd@denx.de> <wd@castor.denx.de>
Wolfgang Denk <wd@denx.de> <wd@fifi.denx.de>
Wolfgang Denk <wd@denx.de> <wd@nyx.(none)>
Wolfgang Denk <wd@denx.de> <wd@nyx.denx.de>
Wolfgang Denk <wd@denx.de> <wd@pollux.(none)>
Wolfgang Denk <wd@denx.de> <wd@pollux.denx.de>
Wolfgang Denk <wd@denx.de> <wd@xpert.denx.de>
Wolfgang Denk <wd@denx.de> <wdenk>
York Sun <york.sun@nxp.com>
York Sun <yorksun@freescale.com>
Łukasz Majewski <l.majewski@samsung.com>

.readthedocs.yml

0 → 100644
+24 −0
Original line number Diff line number Diff line
# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

build:
  os: "ubuntu-20.04"
  apt_packages:
    - python3-six
  tools:
    python: "3.9"

# Build documentation in the docs/ directory with Sphinx
sphinx:
  configuration: doc/conf.py

# Optionally build your docs in additional formats such as PDF and ePub
formats: []

python:
  install:
    - requirements: doc/sphinx/requirements.txt

.travis.yml

deleted100644 → 0
+0 −321
Original line number Diff line number Diff line
# Copyright Roger Meier <r.meier@siemens.com>
# SPDX-License-Identifier:	GPL-2.0+

# build U-Boot on Travis CI - https://travis-ci.org/

sudo: required
dist: trusty

language: c

addons:
  apt:
    packages:
    - cppcheck
    - sloccount
    - sparse
    - bc
    - build-essential
    - libsdl1.2-dev
    - python
    - python-virtualenv
    - swig
    - libpython-dev
    - gcc-powerpc-linux-gnu
    - gcc-arm-linux-gnueabihf
    - gcc-aarch64-linux-gnu
    - iasl
    - grub-efi-ia32-bin
    - rpm2cpio
    - wget
    - device-tree-compiler

install:
 # install latest device tree compiler
 #- git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc
 #- make -j4 -C /tmp/dtc
 # Clone uboot-test-hooks
 - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
 - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
 - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
 # prepare buildman environment
 - echo -e "[toolchain]\nroot = /usr" > ~/.buildman
 - echo -e "\n[toolchain-alias]\nblackfin = bfin\nsh = sh4\nopenrisc = or32" >> ~/.buildman
 - cat ~/.buildman
 - virtualenv /tmp/venv
 - . /tmp/venv/bin/activate
 - pip install pytest
 - grub-mkimage -o ~/grub_x86.efi -O i386-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 )

env:
  global:
    - PATH=/tmp/dtc:/tmp/qemu-install/bin:/tmp/uboot-test-hooks/bin:$PATH
    - PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci
    - BUILD_DIR=build
    - HOSTCC="cc"
    - HOSTCXX="c++"

before_script:
  # install toolchains based on TOOLCHAIN} variable
  - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi
  - if [[ "${TOOLCHAIN}" == *bfin* ]]; then ./tools/buildman/buildman --fetch-arch bfin ; fi
  - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi
  - if [[ "${TOOLCHAIN}" == *microblaze* ]]; then ./tools/buildman/buildman --fetch-arch microblaze ; fi
  - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi
  - if [[ "${TOOLCHAIN}" == *or32* ]]; then ./tools/buildman/buildman --fetch-arch or32 ; fi
  - if [[ "${TOOLCHAIN}" == *sh4* ]]; then ./tools/buildman/buildman --fetch-arch sh4 ; fi
  - if [[ "${TOOLCHAIN}" == *x86_64* ]]; then
      ./tools/buildman/buildman --fetch-arch x86_64;
      echo -e "\n[toolchain-prefix]\nx86 = ${HOME}/.buildman-toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-" >> ~/.buildman;
    fi
  - if [[ "${TOOLCHAIN}" == *xtensa* ]]; then ./tools/buildman/buildman --fetch-arch xtensa ; fi
  - if [[ "${QEMU_TARGET}" != "" ]]; then
       git clone git://git.qemu.org/qemu.git /tmp/qemu;
       pushd /tmp/qemu;
       git submodule update --init dtc &&
       git checkout v2.8.0-rc3 &&
       ./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
       make -j4 all install;
       popd;
    fi

script:
 # Comments must be outside the command strings below, or the Travis parser
 # will get confused.
 #
 # Exit code 129 means warnings only.
 - if [[ "${BUILDMAN}" != "" ]]; then
     set +e;
     tools/buildman/buildman -P ${BUILDMAN};
     ret=$?;
     if [[ $ret -ne 0 && $ret -ne 129 ]]; then
       tools/buildman/buildman -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.
 - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
   cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
   cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi;
   if [[ "${TEST_PY_BD}" != "" ]]; then
     ./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";
   fi

matrix:
  include:
  # we need to build by vendor due to 50min time limit for builds
  # each env setting here is a dedicated build
    - env:
        - BUILDMAN="arm11"
    - env:
        - BUILDMAN="arm7"
    - env:
        - BUILDMAN="arm920t"
    - env:
        - JOB="arm926ejs"
          BUILDMAN="arm926ejs -x mx,siemens,atmel"
    - env:
        - BUILDMAN="arm946es"
    - env:
        - BUILDMAN="atmel -x avr32"
    - env:
        - BUILDMAN="avr32"
          TOOLCHAIN="avr32"
    - env:
        - BUILDMAN="denx"
    - env:
        - JOB="Freescale ARM32"
          BUILDMAN="freescale -x powerpc,m68k,aarch64"
    - env:
        - JOB="Freescale AArch64"
          BUILDMAN="freescale -x powerpc,m68k,armv7,arm9,arm11"
    - env:
        - JOB="i.MX (non-Freescale)"
          BUILDMAN="mx -x freescale"
    - env:
        - BUILDMAN="samsung"
    - env:
        - BUILDMAN="sun4i"
    - env:
        - BUILDMAN="sun5i"
    - env:
        - BUILDMAN="sun6i"
    - env:
        - BUILDMAN="sun7i"
    - env:
        - BUILDMAN="sun8i"
    - env:
        - BUILDMAN="sun9i"
    - env:
        - BUILDMAN="sun50i"
    - env:
        - JOB="Catch-all ARM"
          BUILDMAN="arm -x arm11,arm7,arm9,aarch64,atmel,denx,freescale,kirkwood,mvebu,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap3,omap4,omap5,pxa,rockchip"
    - env:
        - BUILDMAN="sandbox x86"
          TOOLCHAIN="x86_64"
    - env:
        - BUILDMAN="kirkwood"
    - env:
        - BUILDMAN="mvebu"
    - env:
        - BUILDMAN="pxa"
    - env:
        - BUILDMAN="m68k"
          TOOLCHAIN="m68k"
    - env:
        - BUILDMAN="microblaze"
          TOOLCHAIN="microblaze"
    - env:
        - BUILDMAN="mips"
          TOOLCHAIN="mips"
    - env:
        - BUILDMAN="mpc512x"
    - env:
        - BUILDMAN="mpc5xx"
    - env:
        - BUILDMAN="mpc5xxx"
    - env:
        - BUILDMAN="mpc8260"
    - env:
        - BUILDMAN="mpc83xx"
    - env:
        - BUILDMAN="mpc85xx -x freescale"
    - env:
        - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*"
    - env:
        - BUILDMAN="t208xrdb t4qds t102*"
    - env:
        - BUILDMAN="p1_p2_rdb_pc"
    - env:
        - BUILDMAN="p1010rdb"
    - env:
        - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*"
    - env:
        - BUILDMAN="mpc86xx"
    - env:
        - BUILDMAN="mpc8xx"
    - env:
        - BUILDMAN="siemens"
    - env:
        - BUILDMAN="tegra"
    - env:
        - JOB="am33xx"
          BUILDMAN="am33xx -x siemens"
    - env:
        - BUILDMAN="omap3"
    - env:
        - BUILDMAN="omap4"
    - env:
        - BUILDMAN="omap5"
    - env:
        - BUILDMAN="uniphier"
    - env:
        - BUILDMAN="aarch64 -x tegra,freescale,mvebu,uniphier,sunxi,samsung,rockchip"
          TOOLCHAIN="aarch64"
    - env:
        - BUILDMAN="rockchip"
    - env:
        - BUILDMAN="sh4"
          TOOLCHAIN="sh4"
    - env:
        - BUILDMAN="xtensa"
          TOOLCHAIN="xtensa"

    # QA jobs for code analytics
    # static code analysis with cppcheck (we can add --enable=all later)
    - env:
        - JOB="cppcheck"
      script:
        - cppcheck --force --quiet --inline-suppr .
    # search for TODO within source tree
    - env:
        - JOB="grep TODO"
      script:
        - grep -r TODO .
    # search for FIXME within source tree
    - env:
        - JOB="grep FIXME HACK"
      script:
        - grep -r FIXME .
    # search for HACK within source tree and ignore HACKKIT board
      script:
        - grep -r HACK . | grep -v HACKKIT
    # some statistics about the code base
    - env:
        - JOB="sloccount"
      script:
        - sloccount .

    # test/py
    - env:
        - TEST_PY_BD="sandbox"
          BUILDMAN="^sandbox$"
          TOOLCHAIN="x86_64"
    - env:
        - TEST_PY_BD="vexpress_ca15_tc2"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^vexpress_ca15_tc2$"
    - env:
        - TEST_PY_BD="vexpress_ca9x4"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^vexpress_ca9x4$"
    - env:
        - TEST_PY_BD="integratorcp_cm926ejs"
          TEST_PY_TEST_SPEC="not sleep"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^integratorcp_cm926ejs$"
    - env:
        - TEST_PY_BD="qemu_mips"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips-softmmu"
          BUILDMAN="^qemu_mips$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mipsel"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mipsel-softmmu"
          BUILDMAN="^qemu_mipsel$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mips64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64-softmmu"
          BUILDMAN="^qemu_mips64$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mips64el"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64el-softmmu"
          BUILDMAN="^qemu_mips64el$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu-ppce500"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="ppc-softmmu"
          BUILDMAN="^qemu-ppce500$"
    - env:
        - TEST_PY_BD="qemu-x86"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="i386-softmmu"
          BUILDMAN="^qemu-x86$"
          TOOLCHAIN="x86_64"
          BUILD_ROM="yes"
    - env:
        - TEST_PY_BD="zynq_zc702"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="arm-softmmu"
          TEST_PY_ID="--id qemu"
          BUILDMAN="^zynq_zc702$"

# TODO make it perfect ;-r
+6 −43
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
#
# Kbuild for top-level directory of U-Boot
# This file takes care of the following:
# 1) Generate generic-asm-offsets.h
# 2) Generate asm-offsets.h

# Default sed regexp - multiline due to syntax constraints
define sed-y
	"s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; \
	/^->/{s:->#\(.*\):/* \1 */:; \
	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
	s:->::; p;}"
endef

# Use filechk to avoid rebuilds when a header changes, but the resulting file
# does not
define filechk_offsets
	(set -e; \
	 echo "#ifndef $2"; \
	 echo "#define $2"; \
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
	 echo " * This file was generated by Kbuild"; \
	 echo " */"; \
	 echo ""; \
	 sed -ne $(sed-y); \
	 echo ""; \
	 echo "#endif" )
endef

#####
# 1) Generate generic-asm-offsets.h
# Generate generic-asm-offsets.h

generic-offsets-file := include/generated/generic-asm-offsets.h

always  := $(generic-offsets-file)
targets := lib/asm-offsets.s

# We use internal kbuild rules to avoid the "is up to date" message from make
lib/asm-offsets.s: lib/asm-offsets.c FORCE
	$(Q)mkdir -p $(dir $@)
	$(call if_changed_dep,cc_s_c)
CFLAGS_REMOVE_asm-offsets.o := $(LTO_CFLAGS)

$(obj)/$(generic-offsets-file): lib/asm-offsets.s FORCE
$(obj)/$(generic-offsets-file): $(obj)/lib/asm-offsets.s FORCE
	$(call filechk,offsets,__GENERIC_ASM_OFFSETS_H__)

#####
# 2) Generate asm-offsets.h
#
# Generate asm-offsets.h

ifneq ($(wildcard $(srctree)/arch/$(ARCH)/lib/asm-offsets.c),)
offsets-file := include/generated/asm-offsets.h
@@ -59,10 +27,5 @@ targets += arch/$(ARCH)/lib/asm-offsets.s

CFLAGS_asm-offsets.o := -DDO_DEPS_ONLY

# We use internal kbuild rules to avoid the "is up to date" message from make
arch/$(ARCH)/lib/asm-offsets.s: arch/$(ARCH)/lib/asm-offsets.c FORCE
	$(Q)mkdir -p $(dir $@)
	$(call if_changed_dep,cc_s_c)

$(obj)/$(offsets-file): arch/$(ARCH)/lib/asm-offsets.s FORCE
$(obj)/$(offsets-file): $(obj)/arch/$(ARCH)/lib/asm-offsets.s FORCE
	$(call filechk,offsets,__ASM_OFFSETS_H__)
+602 −190

File changed.

Preview size limit exceeded, changes collapsed.

+8 −4
Original line number Diff line number Diff line
@@ -7,9 +7,13 @@ use U-Boot services by means of the jump table provided by U-Boot
exactly for this purpose - this is merely considered normal use of
U-Boot, and does *not* fall under the heading of "derived work".

  The header files "include/image.h" and "arch/*/include/asm/u-boot.h"
define interfaces to U-Boot.  Including these (unmodified) header
files in another file is considered normal use of U-Boot, and does
*not* fall under the heading of "derived work".
The following files define interfaces to U-Boot:
  * include/image.h
  * include/export.h
  * arch/*/include/asm/u-boot.h
  * examples/standalone/stubs.c

Including these (unmodified) files in another file is considered normal
use of U-Boot, and does *not* fall under the heading of "derived work".
-- Wolfgang Denk
+94 −10
Original line number Diff line number Diff line
SPDX-License-Identifier: GPL-2.0

  U-Boot is Free Software.  It is copyrighted by Wolfgang Denk and
many others who contributed code (see the actual source code and the
git commit messages for details).  You can redistribute U-Boot and/or
@@ -31,32 +33,113 @@ information, ...) which makes automatic processing a nightmare.

To make this easier, such license headers in the source files will be
replaced with a single line reference to Unique License Identifiers
as defined by the Linux Foundation's SPDX project [1].  For example,
in a source file the full "GPL v2.0 or later" header text will be
replaced by a single line:

	SPDX-License-Identifier:	GPL-2.0+

Ideally, the license terms of all files in the source tree should be
defined by such License Identifiers; in no case a file can contain
more than one such License Identifier list.
as defined by the Linux Foundation's SPDX project [1].

If a "SPDX-License-Identifier:" line references more than one Unique
License Identifier, then this means that the respective file can be
used under the terms of either of these licenses, i. e. with

	SPDX-License-Identifier:	GPL-2.0+	BSD-3-Clause
	SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause

you can choose between GPL-2.0+ and BSD-3-Clause licensing.

We use the SPDX Unique License Identifiers here; these are available
at [2].

License identifier syntax
-------------------------

1. Placement:

   The SPDX license identifier in U-Boot files shall be added at the first
   possible line in a file which can contain a comment.  For the majority
   or files this is the first line, except for scripts which require the
   '#!PATH_TO_INTERPRETER' in the first line.  For those scripts the SPDX
   identifier goes into the second line.

|

2. Style:

   The SPDX license identifier is added in form of a comment.  The comment
   style depends on the file type::

      C source:	// SPDX-License-Identifier: <SPDX License Expression>
      C header:	/* SPDX-License-Identifier: <SPDX License Expression> */
      ASM:	/* SPDX-License-Identifier: <SPDX License Expression> */
      scripts:	# SPDX-License-Identifier: <SPDX License Expression>
      .rst:	.. SPDX-License-Identifier: <SPDX License Expression>
      .dts{i}:	// SPDX-License-Identifier: <SPDX License Expression>

   If a specific tool cannot handle the standard comment style, then the
   appropriate comment mechanism which the tool accepts shall be used. This
   is the reason for having the "/\* \*/" style comment in C header
   files. There was build breakage observed with generated .lds files where
   'ld' failed to parse the C++ comment. This has been fixed by now, but
   there are still older assembler tools which cannot handle C++ style
   comments.

|

3. Syntax:

   A <SPDX License Expression> is either an SPDX short form license
   identifier found on the SPDX License List, or the combination of two
   SPDX short form license identifiers separated by "WITH" when a license
   exception applies. When multiple licenses apply, an expression consists
   of keywords "AND", "OR" separating sub-expressions and surrounded by
   "(", ")" .

   License identifiers for licenses like [L]GPL with the 'or later' option
   are constructed by using a "+" for indicating the 'or later' option.::

      // SPDX-License-Identifier: GPL-2.0+
      // SPDX-License-Identifier: LGPL-2.1+

   WITH should be used when there is a modifier to a license needed.
   For example, the linux kernel UAPI files use the expression::

      // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
      // SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note

   Other examples using WITH exceptions found in the linux kernel are::

      // SPDX-License-Identifier: GPL-2.0 WITH mif-exception
      // SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0

   Exceptions can only be used with particular License identifiers. The
   valid License identifiers are listed in the tags of the exception text
   file.

   OR should be used if the file is dual licensed and only one license is
   to be selected.  For example, some dtsi files are available under dual
   licenses::

      // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause

   Examples from U-Boot for license expressions in dual licensed files::

      // SPDX-License-Identifier: GPL-2.0 OR MIT
      // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause

   AND should be used if the file has multiple licenses whose terms all
   apply to use the file. For example, if code is inherited from another
   project and permission has been given to put it in U-Boot, but the
   original license terms need to remain in effect::

      // SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) AND MIT

   Another other example where both sets of license terms need to be
   adhered to is::

      // SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+

[1] http://spdx.org/
[2] http://spdx.org/licenses/

Full name					SPDX Identifier	OSI Approved	File name		URI
=======================================================================================================================================
bzip2 and libbzip2 License v1.0.6		bzip2-1.0.6			bzip2-1.0.6.txt		https://spdx.org/licenses/bzip2-1.0.6.html
GNU General Public License v2.0 only		GPL-2.0		Y		gpl-2.0.txt		http://www.gnu.org/licenses/gpl-2.0.txt
GNU General Public License v2.0 or later	GPL-2.0+	Y		gpl-2.0.txt		http://www.gnu.org/licenses/gpl-2.0.txt
GNU Library General Public License v2 or later	LGPL-2.0+	Y		lgpl-2.0.txt		http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt
@@ -67,5 +150,6 @@ BSD 3-clause "New" or "Revised" License BSD-3-Clause Y bsd-3-clause.txt http:/
IBM PIBS (PowerPC Initialization and		IBM-pibs			ibm-pibs.txt
	Boot Software) license
ISC License					ISC		Y		isc.txt			https://spdx.org/licenses/ISC
MIT License					MIT		Y		mit.txt			https://spdx.org/licenses/MIT.html
SIL OPEN FONT LICENSE (OFL-1.1)			OFL-1.1		Y		OFL.txt			https://spdx.org/licenses/OFL-1.1.html
X11 License					X11				x11.txt			https://spdx.org/licenses/X11.html
+30 −0
Original line number Diff line number Diff line
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

2. The origin of this software must not be misrepresented; you must 
   not claim that you wrote the original software.  If you use this 
   software in a product, an acknowledgment in the product 
   documentation would be appreciated but is not required.

3. Altered source versions must be plainly marked as such, and must
   not be misrepresented as being the original software.

4. The name of the author may not be used to endorse or promote 
   products derived from this software without specific prior written 
   permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+1 −1

File changed.

Contains only whitespace changes.

Licenses/mit.txt

0 → 100644
+20 −0
Original line number Diff line number Diff line
MIT License
Copyright (c) 2020 EPAM Systems Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+26 −0
Original line number Diff line number Diff line
Copyright (c) 2014, Renesas Electronics Corporation
All rights reserved.

Redistribution and use in binary form, without modification, are permitted
provided that the following conditions are met:

1. Redistribution in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
2. The name of Renesas Electronics Corporation may not be used to endorse or
   promote products derived from this software without specific prior written
   permission.
3. Reverse engineering, decompilation, or disassembly of this software is
   not permitted.

THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS ELECTRONICS CORPORATION DISCLAIMS
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL RENESAS ELECTRONICS
CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
+1383 −169

File changed.

Preview size limit exceeded, changes collapsed.

+1154 −307

File changed.

Preview size limit exceeded, changes collapsed.

+197 −3777

File changed.

Preview size limit exceeded, changes collapsed.

+36 −3
Original line number Diff line number Diff line
menu "API"

config API
	bool "Enable U-Boot API"
	default n
	depends on CC_IS_GCC
	help
	  This option enables the U-Boot API. See api/README for more information.

menu "API"
	depends on API

config SYS_MMC_MAX_DEVICE
	int  "Maximum number of MMC devices exposed via the API"
	default 1

config EXAMPLES
	bool "Compile API examples"
	depends on !SANDBOX
	default y if ARCH_QEMU
	help
	  U-Boot provides an API for standalone applications. Examples are
	  provided in directory examples/.

config STANDALONE_LOAD_ADDR
	depends on EXAMPLES
	hex "Address in memory to link standalone applications to"
	default 0xffffffff80200000 if MIPS && 64BIT
	default 0x8c000000 if SH
	default 0x82000000 if ARC
	default 0x80f00000 if MICROBLAZE
	default 0x80300000 if ARCH_OMAP2PLUS || FSL_LSCH2 || FSL_LSCH3
	default 0x80200000 if MIPS && 32BIT
	default 0x0c100000 if ARM
	default 0x02000000 if NIOS2
	default 0x00040000 if PPC || X86
	default 0x00020000 if M68K
	default 0x0 if RISCV
	default SYS_LOAD_ADDR
	help
	  This option defines a board specific value for the address where
	  standalone program gets loaded, thus overwriting the architecture
	  dependent default settings.

endmenu
+1 −3
Original line number Diff line number Diff line
#
# (C) Copyright 2007 Semihalf
#
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2007 Semihalf

obj-y += api.o api_display.o api_net.o api_storage.o
obj-$(CONFIG_ARM) += api_platform-arm.o
+54 −33
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+
/*
 * (C) Copyright 2007 Semihalf
 *
 * Written by: Rafal Jaworowski <raj@semihalf.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <config.h>
#include <command.h>
#include <common.h>
#include <env.h>
#include <malloc.h>
#include <environment.h>
#include <env_internal.h>
#include <linux/delay.h>
#include <linux/types.h>
#include <api_public.h>
#include <u-boot/crc.h>

#include "api_private.h"

@@ -55,7 +57,7 @@ static int API_getc(va_list ap)
	if ((c = (int *)va_arg(ap, uintptr_t)) == NULL)
		return API_EINVAL;

	*c = getc();
	*c = getchar();
	return 0;
}

@@ -295,27 +297,31 @@ static int API_dev_close(va_list ap)


/*
 * Notice: this is for sending network packets only, as U-Boot does not
 * support writing to storage at the moment (12.2007)
 *
 * pseudo signature:
 *
 * int API_dev_write(
 *	struct device_info *di,
 *	void *buf,
 *	int *len
 *	int *len,
 *	unsigned long *start
 * )
 *
 * buf:	ptr to buffer from where to get the data to send
 *
 * len: length of packet to be sent (in bytes)
 * len: ptr to length to be read
 *      - network: len of packet to be sent (in bytes)
 *      - storage: # of blocks to write (can vary in size depending on define)
 *
 * start: ptr to start block (only used for storage devices, ignored for
 *        network)
 */
static int API_dev_write(va_list ap)
{
	struct device_info *di;
	void *buf;
	int *len;
	lbasize_t *len_stor, act_len_stor;
	lbastart_t *start;
	int *len_net;
	int err = 0;

	/* 1. arg is ptr to the device_info struct */
@@ -333,23 +339,36 @@ static int API_dev_write(va_list ap)
	if (buf == NULL)
		return API_EINVAL;

	/* 3. arg is length of buffer */
	len = (int *)va_arg(ap, uintptr_t);
	if (len == NULL)
	if (di->type & DEV_TYP_STOR) {
		/* 3. arg - ptr to var with # of blocks to write */
		len_stor = (lbasize_t *)va_arg(ap, uintptr_t);
		if (!len_stor)
			return API_EINVAL;
	if (*len <= 0)
		if (*len_stor <= 0)
			return API_EINVAL;

	if (di->type & DEV_TYP_STOR)
		/*
		 * write to storage is currently not supported by U-Boot:
		 * no storage device implements block_write() method
		 */
		return API_ENODEV;
		/* 4. arg - ptr to var with start block */
		start = (lbastart_t *)va_arg(ap, uintptr_t);

	else if (di->type & DEV_TYP_NET)
		err = dev_write_net(di->cookie, buf, *len);
	else
		act_len_stor = dev_write_stor(di->cookie, buf, *len_stor, *start);
		if (act_len_stor != *len_stor) {
			debugf("write @ %llu: done %llu out of %llu blocks",
				   (uint64_t)blk, (uint64_t)act_len_stor,
				   (uint64_t)len_stor);
			return API_EIO;
		}

	} else if (di->type & DEV_TYP_NET) {
		/* 3. arg points to the var with length of packet to write */
		len_net = (int *)va_arg(ap, uintptr_t);
		if (!len_net)
			return API_EINVAL;
		if (*len_net <= 0)
			return API_EINVAL;

		err = dev_write_net(di->cookie, buf, *len_net);

	} else
		err = API_ENODEV;

	return err;
@@ -458,7 +477,7 @@ static int API_env_get(va_list ap)
	if ((value = (char **)va_arg(ap, uintptr_t)) == NULL)
		return API_EINVAL;

	*value = getenv(name);
	*value = env_get(name);

	return 0;
}
@@ -481,7 +500,7 @@ static int API_env_set(va_list ap)
	if ((value = (char *)va_arg(ap, uintptr_t)) == NULL)
		return API_EINVAL;

	setenv(name, value);
	env_set(name, value);

	return 0;
}
@@ -497,7 +516,7 @@ static int API_env_enum(va_list ap)
{
	int i, buflen;
	char *last, **next, *s;
	ENTRY *match, search;
	struct env_entry *match, search;
	static char *var;

	last = (char *)va_arg(ap, unsigned long);
@@ -514,7 +533,7 @@ static int API_env_enum(va_list ap)
		if (s != NULL)
			*s = 0;
		search.key = var;
		i = hsearch_r(search, FIND, &match, &env_htab, 0);
		i = hsearch_r(search, ENV_FIND, &match, &env_htab, 0);
		if (i == 0) {
			i = API_EINVAL;
			goto done;
@@ -623,9 +642,9 @@ int syscall(int call, int *retval, ...)
	return 1;
}

void api_init(void)
int api_init(void)
{
	struct api_signature *sig = NULL;
	struct api_signature *sig;

	/* TODO put this into linker set one day... */
	calls_table[API_RSVD] = NULL;
@@ -660,10 +679,10 @@ void api_init(void)
	sig = malloc(sizeof(struct api_signature));
	if (sig == NULL) {
		printf("API: could not allocate memory for the signature!\n");
		return;
		return -ENOMEM;
	}

	setenv_hex("api_address", (unsigned long)sig);
	env_set_hex("api_address", (unsigned long)sig);
	debugf("API sig @ 0x%lX\n", (unsigned long)sig);
	memcpy(sig->magic, API_SIG_MAGIC, 8);
	sig->version = API_SIG_VERSION;
@@ -672,6 +691,8 @@ void api_init(void)
	sig->checksum = crc32(0, (unsigned char *)sig,
			      sizeof(struct api_signature));
	debugf("syscall entry: 0x%lX\n", (unsigned long)sig->syscall);

	return 0;
}

void platform_set_mr(struct sys_info *si, unsigned long start, unsigned long size,
+2 −23
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (c) 2011 The Chromium OS Authors.
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <common.h>
#include <api_public.h>
#include <lcd.h>
#include <video_font.h> /* Get font width and height */

/* lcd.h needs BMP_LOGO_HEIGHT to calculate CONSOLE_ROWS */
#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
#include <bmp_logo.h>
#endif
#include <log.h>

/* TODO(clchiou): add support of video device */

@@ -25,14 +19,6 @@ int display_get_info(int type, struct display_info *di)
		debug("%s: unsupport display device type: %d\n",
				__FILE__, type);
		return API_ENODEV;
#ifdef CONFIG_LCD
	case DISPLAY_TYPE_LCD:
		di->pixel_width  = panel_info.vl_col;
		di->pixel_height = panel_info.vl_row;
		di->screen_rows = lcd_get_screen_rows();
		di->screen_cols = lcd_get_screen_columns();
		break;
#endif
	}

	di->type = type;
@@ -43,16 +29,9 @@ int display_draw_bitmap(ulong bitmap, int x, int y)
{
	if (!bitmap)
		return API_EINVAL;
#ifdef CONFIG_LCD
	return lcd_display_bitmap(bitmap, x, y);
#else
	return API_ENODEV;
#endif
}

void display_clear(void)
{
#ifdef CONFIG_LCD
	lcd_clear();
#endif
}
+1 −4
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+
/*
 * (C) Copyright 2007 Semihalf
 *
 * Written by: Rafal Jaworowski <raj@semihalf.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <config.h>
@@ -12,8 +11,6 @@
#include <linux/types.h>
#include <api_public.h>

DECLARE_GLOBAL_DATA_PTR;

#define DEBUG
#undef DEBUG