# The west manifest file for upstream Zephyr.
#
# The per-installation west configuration file, .west/config, sets the
# path to the project containing this file in the [manifest] section's
# "path" variable.
#
# You are free to create your own manifest files and put them in any
# repository you want, to create your own custom Zephyr installations.
# For example, you could create a manifest file in your own out of
# tree application directory, which would pull this zephyr repository
# in as an ordinary project.
#
# You can pass your manifest repositories to west init when creating a
# new Zephyr installation. See the west documentation for more
# information.

manifest:
  defaults:
    remote: upstream

  remotes:
    - name: upstream
      url-base: https://github.com/zephyrproject-rtos

  #
  # Please add items below based on alphabetical order
  projects:
    - name: cmsis
      revision: 542b2296e6d515b265e25c6b7208e8fea3014f90
      path: modules/hal/cmsis
    - name: hal_atmel
      revision: 9f0a699a2f0253dc9688211ef696daa7b8fadb75
      path: modules/hal/atmel
    - name: hal_altera
      revision: 23c1c1dd7a0c1cc9a399509d1819375847c95b97
      path: modules/hal/altera
    - name: canopennode
      path: modules/lib/canopennode
      revision: 468d350028a975b96563e58344de48281a0ab371
    - name: ci-tools
      revision: da9a2df574094f52d87a03f6393928bdc7dce17c
      path: tools/ci-tools
    - name: civetweb
      revision: 99129c5efc907ea613c4b73ccff07581feb58a7a
      path: modules/lib/civetweb
    - name: esp-idf
      revision: 6835bfc741bf15e98fb7971293913f770df6081f
      path: modules/hal/esp-idf
    - name: fatfs
      revision: 13697783bf653dfdf17c57129ce8e181634e5970
      path: modules/fs/fatfs
    - name: hal_cypress
      revision: a12d92816a53a521d79cefcf5c38b9dc8a4fed6e
      path: modules/hal/cypress
    - name: hal_infineon
      revision: f1fa8241f8786198ba41155413243de36ed878a5
      path: modules/hal/infineon
    - name: hal_nordic
      revision: 615c762a6d2e411d631cc6bd18fb45f892a5cbc3
      path: modules/hal/nordic
    - name: hal_openisa
      revision: 40d049f69c50b58ea20473bee14cf93f518bf262
      path: modules/hal/openisa
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
    - name: hal_microchip
      revision: a1ec761014740a08699720298dd37ad4da360840
      path: modules/hal/microchip
    - name: hal_silabs
      revision: 69c3e1e6e167767cb75aa2b468df4ade05988cdb
      path: modules/hal/silabs
    - name: hal_st
      revision: 5b3ec3e182d4310e8943cc34c6c70ae57d9711da
      path: modules/hal/st
    - name: hal_stm32
      revision: cea57f86d3ade46c0b99dab32b2ac63435ed0693
      path: modules/hal/stm32
    - name: hal_ti
      revision: 405dfc8faba13e01c1cb9e29e70b31b50f71d117
      path: modules/hal/ti
    - name: libmetal
      revision: 0b23894a041bd00a0d3a2288bb34751bbbef790d
      path: modules/hal/libmetal
    - name: hal_quicklogic
      repo-path: hal_quicklogic
      revision: 7deb3aab1cc430a7650143f9833cfc8ddad76eb5
      path: modules/hal/quicklogic
    - name: lvgl
      revision: 928b61c7c8ef5f770f10e6fd36d4fea0cf375b5e
      path: modules/lib/gui/lvgl
    - name: mbedtls
      revision: aef137b1af8aa7a0f43345c82459254b8832262e
      path: modules/crypto/mbedtls
    - name: mcuboot
      revision: a5d79cf8ccb2c71e68ef32a71d6a2716e831d12e
      path: bootloader/mcuboot
    - name: mcumgr
      revision: 5051f9d900bbb194a23d4ce80f3c6dc6d6780cc2
      path: modules/lib/mcumgr
    - name: net-tools
      revision: 1c4fdba512b268033a4cf926bddd323866c3261a
      path: tools/net-tools
    - name: hal_nxp
      revision: 68bbdbdec1153355b14386d8f095058a496f66f4
      path: modules/hal/nxp
    - name: open-amp
      revision: 724f7e2a4519d7e1d40ef330042682dea950c991
      path: modules/lib/open-amp
    - name: loramac-node
      revision: 3f545d76a2e6d1db83a470ccdb5bebd1f484e137
      path: modules/lib/loramac-node
    - name: openthread
      revision: 7854c687bf23ce509a65d118cbea0c7011a89a1e
      path: modules/lib/openthread
    - name: segger
      revision: 874d9e9696b00c09f9eeefe839028dc25fe44983
      path: modules/debug/segger
    - name: tinycbor
      path: modules/lib/tinycbor
      revision: 40daca97b478989884bffb5226e9ab73ca54b8c4
    - name: tinycrypt
      path: modules/crypto/tinycrypt
      revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
    - name: littlefs
      path: modules/fs/littlefs
      revision: 9e4498d1c73009acd84bb36036ee5e2869112a6c
    - name: mipi-sys-t
      path: modules/debug/mipi-sys-t
      revision: 957d46bc3ce0d5f628f0d525196bb4db207672ee
    - name: nrf_hw_models
      path: modules/bsim_hw_models/nrf_hw_models
      revision: f86079a7333968f0ba71fe1266e241295a4e9943
    - name: hal_xtensa
      revision: e7a57d0c252f9c5f3cab9d5ceadda8753cacee5b
      path: modules/hal/xtensa
    - name: edtt
      path: tools/edtt
      revision: c39888ff74acf421eeff9a7514fa9b172c3373f7
    - name: trusted-firmware-m
      path: modules/tee/tfm
      revision: 143df675557305b61f7930a50459a53a8d2bb097

  self:
    path: zephyr
    west-commands: scripts/west-commands.yml
