# 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: canopennode
      revision: 53d3415c14d60f8f4bfca54bfbc5d5a667d7e724
      path: modules/lib/canopennode
    - name: chre
      revision: fe0ab36e0fa7453a4c9b97bedac89709f45cf965
      path: modules/lib/chre
    - name: cmsis
      revision: 093de61c2a7d12dc9253daf8692f61f793a9254a
      path: modules/hal/cmsis
      groups:
        - hal
    - name: edtt
      revision: 000fb87261beaf33f80a8868e73857bd62edc668
      path: tools/edtt
      groups:
        - tools
    - name: fatfs
      revision: 38f303ad09fdd687ee066a938f65ad708dd5989d
      path: modules/fs/fatfs
      groups:
        - fs
    - name: hal_altera
      revision: 0d225ddd314379b32355a00fb669eacf911e750d
      path: modules/hal/altera
      groups:
        - hal
    - name: hal_atmel
      revision: d45adfb6897aba323cac29cdda8070ce4f23f014
      path: modules/hal/atmel
      groups:
        - hal
    - name: hal_espressif
      revision: 8c7ee781ea4c4a010740f5231709ce7b21ad96d6
      path: modules/hal/espressif
      west-commands: west/west-commands.yml
      groups:
        - hal
    - name: hal_ethos_u
      revision: 90ada2ea5681b2a2722a10d2898eac34c2510791
      path: modules/hal/ethos_u
      groups:
        - hal
    - name: hal_gigadevice
      revision: dd0e0322474462b58059e6fedaf1d67d2a0864d0
      path: modules/hal/gigadevice
      groups:
        - hal
    - name: hal_infineon
      revision: 5b0c7700a7be049e02835dfa0950d378aac39e67
      path: modules/hal/infineon
      groups:
        - hal
    - name: hal_microchip
      revision: 5d079f1683a00b801373bbbbf5d181d4e33b30d5
      path: modules/hal/microchip
      groups:
        - hal
    - name: hal_nordic
      revision: fe0be3c3546e136a67264084c0e3edfd7354645a
      path: modules/hal/nordic
      groups:
        - hal
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
      groups:
        - hal
    - name: hal_nxp
      revision: 138742f66576f2e2235a072425e71b8d1360c0d3
      path: modules/hal/nxp
      groups:
        - hal
    - name: hal_openisa
      revision: 40d049f69c50b58ea20473bee14cf93f518bf262
      path: modules/hal/openisa
      groups:
        - hal
    - name: hal_quicklogic
      revision: b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0
      path: modules/hal/quicklogic
      repo-path: hal_quicklogic
      groups:
        - hal
    - name: hal_renesas
      path: modules/hal/renesas
      revision: 468d3f2146d18c7f86a4640fc641cc1d20a4a100
      groups:
        - hal
    - name: hal_rpi_pico
      path: modules/hal/rpi_pico
      revision: a094c060e0c2d43c7f9d8f5c06cc0665117e0c18
      groups:
        - hal
    - name: hal_silabs
      revision: 1ec8dd99aa4ac3e8632d2aa28a7438049bb27102
      path: modules/hal/silabs
      groups:
        - hal
    - name: hal_st
      revision: cccbc24c14decfd3f93959f7b14514536af973c7
      path: modules/hal/st
      groups:
        - hal
    - name: hal_stm32
      revision: 642e199c59828137dc6b1c7044a289d4269886d1
      path: modules/hal/stm32
      groups:
        - hal
    - name: hal_telink
      revision: 38573af589173259801ae6c2b34b7d4c9e626746
      path: modules/hal/telink
      groups:
        - hal
    - name: hal_ti
      revision: 5e7d5cd584047699c9fd279923120cb25ba3dda7
      path: modules/hal/ti
      groups:
        - hal
    - name: hal_wurthelektronik
      revision: 24ca9873c3d608fad1fea0431836bc8f144c132e
      path: modules/hal/wurthelektronik
      groups:
        - hal
    - name: hal_xtensa
      revision: 63f655362423aa49507da7977a2d37142e8debeb
      path: modules/hal/xtensa
      groups:
        - hal
    - name: libmetal
      revision: 2f586b4f1276fb075ee145421bdf6cbe5403aa41
      path: modules/hal/libmetal
      groups:
        - hal
    - name: liblc3
      revision: 448f3de31f49a838988a162ef1e23a89ddf2d2ed
      path: modules/lib/liblc3
    - name: littlefs
      path: modules/fs/littlefs
      groups:
        - fs
      revision: ca583fd297ceb48bced3c2548600dc615d67af24
    - name: loramac-node
      revision: ce57712f3e426bbbb13acaec97b45369f716f43a
      path: modules/lib/loramac-node
    - name: lvgl
      revision: 5ab83099854719ed326b6ecb9b09b07b1eee4818
      path: modules/lib/gui/lvgl
    - name: lz4
      revision: 8e303c264fc21c2116dc612658003a22e933124d
      path: modules/lib/lz4
    - name: mbedtls
      revision: 7fed49c9b9f983ad6416986661ef637459723bcb
      path: modules/crypto/mbedtls
      groups:
        - crypto
    - name: mcuboot
      revision: cfec947e0f8be686d02c73104a3b1ad0b5dcf1e6
      path: bootloader/mcuboot
    - name: mipi-sys-t
      path: modules/debug/mipi-sys-t
      groups:
        - debug
      revision: 0d521d8055f3b2b4842f728b0365d3f0ece9c37f
    - name: nanopb
      revision: dc4deed54fd4c7e1935e3b6387eedf21bb45dc38
      path: modules/lib/nanopb
    - name: net-tools
      revision: e0828aa9629b533644dc96ff6d1295c939bd713c
      path: tools/net-tools
      groups:
        - tools
    - name: nrf_hw_models
      revision: 65bc5305d432c08e24a3f343006d1e7deaff4908
      path: modules/bsim_hw_models/nrf_hw_models
    - name: open-amp
      revision: 8d53544871e1f300c478224faca6be8384ab0d04
      path: modules/lib/open-amp
    - name: openthread
      revision: 3e138d3f5d549894b79cdc8567ed1f9215281344
      path: modules/lib/openthread
    - name: picolibc
      path: modules/lib/picolibc
      revision: 04ada5951cbaf8e7b17f8226ce31cb6837c28ba7
    - name: segger
      revision: d4e568a920b4bd087886170a5624c167b2d0665e
      path: modules/debug/segger
      groups:
        - debug
    - name: sof
      revision: 6f5f7258ad2738df78e600568d38fc261e2a118d
      path: modules/audio/sof
    - name: tflite-micro
      revision: 9156d050927012da87079064db59d07f03b8baf6
      path: modules/lib/tflite-micro
      repo-path: tflite-micro
    - name: tinycbor
      revision: 9e1f34bc08123aaad7666d3652aaa839e8178b3b
      path: modules/lib/tinycbor
    - name: tinycrypt
      revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
      path: modules/crypto/tinycrypt
      groups:
        - crypto
    - name: TraceRecorderSource
      revision: d92607521335eaaaedb01b241cdd26fda48a5ca6
      path: modules/debug/TraceRecorder
      groups:
        - debug
    - name: trusted-firmware-m
      revision: 887798f6e67203e6a77059a86edf41bb136a3c0b
      path: modules/tee/tf-m/trusted-firmware-m
      groups:
        - tee
    - name: trusted-firmware-a
      revision: 28f5e137837f1c1a7a7b2af2dd8bb778c0a27532
      path: modules/tee/tf-a/trusted-firmware-a
      groups:
        - tee
    - name: tf-m-tests
      revision: bcb53bccccdc05c713aade707e7a8ddad35c210f
      path: modules/tee/tf-m/tf-m-tests
      groups:
        - tee
    - name: psa-arch-tests
      revision: f4fc2442b8e29e2a03d9899e46e5a3ea3df8c2c9
      path: modules/tee/tf-m/psa-arch-tests
      groups:
        - tee
    - name: uoscore-uedhoc
      revision: e8920192b66db4f909eb9cd3f155d5245c1ae825
      path: modules/lib/uoscore-uedhoc
    - name: zcbor
      revision: 0.6.0
      path: modules/lib/zcbor
    - name: zscilib
      path: modules/lib/zscilib
      revision: ca070ddabdaf67175a2da901d0bd62e8899371c5

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