# 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: ef76d3456db07e4959df555047d6962279528c8d
      path: modules/lib/chre
    - name: cmsis
      revision: 093de61c2a7d12dc9253daf8692f61f793a9254a
      path: modules/hal/cmsis
      groups:
        - hal
    - name: edtt
      revision: 1ea61a390d2bfcf3b2ecdba8f8b0b98dfdffbd11
      path: tools/edtt
      groups:
        - tools
    - name: fatfs
      revision: a30531af3a95a9a3ea7d771ea8a578ebfed45514
      path: modules/fs/fatfs
      groups:
        - fs
    - name: fff
      revision: 6ce5ba26486e93d5b7696a3e23f0585932c14b16
      path: modules/lib/fff
      groups:
        - ci
    - name: hal_altera
      revision: 0d225ddd314379b32355a00fb669eacf911e750d
      path: modules/hal/altera
      groups:
        - hal
    - name: hal_atmel
      revision: 1d237f2e2f262751975b6da6e03af569b2b49b2b
      path: modules/hal/atmel
      groups:
        - hal
    - name: hal_espressif
      revision: a85cf740929b7537e0bb07572b6c4f3456b04420
      path: modules/hal/espressif
      west-commands: west/west-commands.yml
      groups:
        - hal
    - name: hal_gigadevice
      revision: b0b6e0a76b77f5eee45473dae04a992ad4fcfa45
      path: modules/hal/gigadevice
      groups:
        - hal
    - name: hal_infineon
      revision: 4af06965f57ba1e7d170e6a97d24c33785543a8c
      path: modules/hal/infineon
      groups:
        - hal
    - name: hal_microchip
      revision: 5d079f1683a00b801373bbbbf5d181d4e33b30d5
      path: modules/hal/microchip
      groups:
        - hal
    - name: hal_nordic
      revision: 249199ec5a5c31d170659921048764e96d05cc0e
      path: modules/hal/nordic
      groups:
        - hal
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
      groups:
        - hal
    - name: hal_nxp
      revision: 3516aa5f722eb70b969b3bc57bcf9389ad901057
      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: 191f5ba46fda49523cdaaef27583d1c875ba2c36
      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: 5b1610c3cf46589d50e2634ba240b7b38bc59c53
      path: modules/hal/stm32
      groups:
        - hal
    - name: hal_telink
      revision: 38573af589173259801ae6c2b34b7d4c9e626746
      path: modules/hal/telink
      submodules: true
      groups:
        - hal
    - name: hal_ti
      revision: 29af528900d03af02a17b4b7f4fc93f19a81da2a
      path: modules/hal/ti
      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: 652f2c5646e79b881e6f3099686ad3b7af9e216c
    - name: loramac-node
      revision: 0257b50905695192d095667b1c3abb80346db1a1
      path: modules/lib/loramac-node
    - name: lvgl
      revision: d7951c24b4a5a71241b70582e463ca0330fbb871
      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: 21e56a1bd033af263e808940779a1adaf4d5465e
      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: 93406267eca506003bcb86a86927777a32e729d9
      path: modules/bsim_hw_models/nrf_hw_models
    - name: open-amp
      revision: 8d53544871e1f300c478224faca6be8384ab0d04
      path: modules/lib/open-amp
    - name: openthread
      revision: b21e99b4b3d823f71c902b9174ff62b964c124f0
      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: fed466c264ad078c66f7bff9218ba1d3fa0eb201
      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: 9893bf1cf649a2c4ee2e27293f887994f3d0da5b
      path: modules/debug/TraceRecorder
      groups:
        - debug
    - name: trusted-firmware-m
      revision: 4c984817d861512edaeca27b83308e9b9915a98a
      path: modules/tee/tf-m/trusted-firmware-m
      groups:
        - tee
    - name: tf-m-tests
      revision: c99a86b295c4887520da9d8402566d7f225c974e
      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: a0d6981f14d4001d6f0d608d1a427f9bc6bb6d02
      path: modules/lib/zcbor
    - name: zscilib
      path: modules/lib/zscilib
      revision: a54986aa98db4082ac56b582843bb5b5435208a6

  group-filter:
    - -ci

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