Skip to content

Changes to bluetooth mesh for k_work API #33782

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 28, 2021

Conversation

pabigot
Copy link
Collaborator

@pabigot pabigot commented Mar 29, 2021

This PR supports #33104 in updating the use of k_work delayable timers in the Bluetooth mesh implementation. The API has been updated, and appears to work on one sample with limited testing.

It is in draft format, and all commits tagged DNM, because this needs significant review and rework from domain experts to address the following concerns. More details are in comments in the code, and in the individual commit messages. At least one unrelated probable bug has been highlighted (in cfg_srv). Overall:

On the whole this code does not appear to be correct in the presence of preemptive threads or SMP systems. The use of atomic flags without an enclosing lock for operations that are not read-modify-write is not robust in those contexts.

There were many uses of k_delayed_work_cancel(), none of which took into account the possibility that cancellation can fail, and several of which would likely cause faults if the work item continued to be after the post-cancellation state updates were made.

It is generally not clear whether schedule or reschedule operations are appropriate.

My preferred path forward is for a mesh maintainer to take these commits and rework them as necessary.

(NB: This is currently based on and incorporates #33614 to support the sample.)

/* This looks really wrong: the variable says the value is in
* ms, but the assigned value is ms / 100.
*/
timeout_ms = k_delayed_work_remaining_get(&frnd->timer) / 100;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the Mesh spec "The PollTimeout timer value in units of 100 milliseconds", i.e. the variable name is wrong here but the code does the right thing.

@pabigot pabigot marked this pull request as ready for review April 6, 2021 14:20
@pabigot pabigot requested review from nashif and Vudentz as code owners April 6, 2021 14:20
@pabigot pabigot force-pushed the nordic/20210329a branch from b2595d3 to ebd9e4a Compare April 6, 2021 14:20
@pabigot pabigot marked this pull request as draft April 6, 2021 14:21
@pabigot pabigot added the DNM This PR should not be merged (Do Not Merge) label Apr 6, 2021
@pabigot
Copy link
Collaborator Author

pabigot commented Apr 6, 2021

Mistakenly taken out of draft, as this is not intended to be merged as-is. It's intended to be adapted by the maintainers of bluetooth who should verify and address the documented concerns.

@trond-snekvik trond-snekvik self-assigned this Apr 8, 2021
trond-snekvik added a commit to trond-snekvik/zephyr that referenced this pull request Apr 15, 2021
Changes lpn_timeout_get behavior in the config server to report the
configured LPN timeout, instead of the currently remaining timeout time.
According to the Bluetooth Mesh Profile specification, section 4.2.21,
the PollTimeout list is a list of the PollTimeout timer values, and
according to table 4.32 in this section, values 1-9 are prohibited.
Although this is not explicitly stated, this indicates that the
PollTimeout value is the configured poll timeout time - not the time
remaining until the timeout value expires. This patch changes the
implementation to reflect this.

Split out from zephyrproject-rtos#33782.

Signed-off-by: Trond Einar Snekvik <[email protected]>
trond-snekvik added a commit to trond-snekvik/zephyr that referenced this pull request Apr 15, 2021
Periodic publication would previously build and send the first
publication inside the bt_mesh_model_pub() function, before cancelling
and rescheduling the next publication. The timer handler would only
handle retransmissions, and would abandon the rest of the publication
event if one of the packets failed to send.

This design has three issues:
- If the initial timer cancel fails, the publication would interfer with
  the periodic publication management, which might skip an event or
  send too many packets.
- If any of the messages fail to publish, the full publication event
  would be abandoned. This is not predictable or expected from the API.
- bt_mesh_model_pub() required 384 bytes of stack to build the message,
  which has to be factored into all calling threads.

This patch moves all transmission into the publication timer by
replacing k_work_cancel with a single k_work_reschedule(K_NO_WAIT). It
also changes the error recovery behavior to attempt to finish the full
publication event even if some of the transmissions fail.

Split out from zephyrproject-rtos#33782.

Signed-off-by: Trond Einar Snekvik <[email protected]>
trond-snekvik added a commit to trond-snekvik/zephyr that referenced this pull request Apr 15, 2021
Moves the beacon_enabled check in the beacon work handler to check the
beacon flag before sending anything, in case a cancel call fails.

Split out from zephyrproject-rtos#33782.

Signed-off-by: Trond Einar Snekvik <[email protected]>
trond-snekvik and others added 7 commits April 22, 2021 13:14
Friend structure allocaction logic is implemented over and over
throughout the friend module. Move it into a static utility function for
readability.

Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API in friend, net and main.

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API in Mesh's extended advertising handler.

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API. Consolidates reliable sending logic for the first
transmission and the retransmit into one. Adds check for link active in
protocol timeout.

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API. Adds a link check to the protocol timeout to
ensure the link is still active.

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API. Adds check for a pending buffer in the SAR
timeout handler.

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
Switch to the new API. Adds early exits for the ack and retransmit
timers, and replaces a remaining_time() + submit() call with schedule().

Signed-off-by: Peter Bigot <[email protected]>
Signed-off-by: Trond Einar Snekvik <[email protected]>
@carlescufi carlescufi changed the title draft changes to bluetooth mesh for k_work API Changes to bluetooth mesh for k_work API Apr 22, 2021
@trond-snekvik trond-snekvik requested a review from jhedberg April 28, 2021 08:46
@jhedberg jhedberg merged commit 4e6cb11 into zephyrproject-rtos:master Apr 28, 2021
Copy link
Collaborator

@WilliamGFish WilliamGFish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes to link close procedures have stopped mesh provisioning functionality to function corrected.

continue;
}

BT_DBG("%u bytes: %s", buf->len, bt_hex(buf->data, buf->len));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should not be here will cause failed message should be part of the function below

bt_mesh_adv_send(buf, &buf_sent_cb, NULL);
}
}
send_reliable();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be removed.

} else {
bt_mesh_adv_send(buf, &buf_sent_cb, NULL);
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be reinstated due to not closing link completely. Most notably when using the mesh provisioning functionality.
The first node works correctly then the prov_link flag remains "LINK_ACTIVE"

@pabigot
Copy link
Collaborator Author

pabigot commented May 14, 2021

@WilliamGFish Note that this PR has already been merged; if your comments are still relevant you need to an open an issue for them.

@WilliamGFish
Copy link
Collaborator

@WilliamGFish Note that this PR has already been merged; if your comments are still relevant you need to an open an issue for them.

Shall do when I get a chance...

@trond-snekvik
Copy link
Collaborator

@WilliamGFish I'm able to reproduce these issues, and will submit a patch tomorrow, along with a test that covers it. Thanks for reporting.

trond-snekvik added a commit to trond-snekvik/zephyr that referenced this pull request May 18, 2021
The send_reliable function was reused in multiple places as part of the
k_delayed_work changes for Bluetooth Mesh in zephyrproject-rtos#33782. This function
contains a line that resets the start timer, causing prov_retransmit to
continously move the goal post for when to give up sending.

Extract this line out of the send_reliable function, and put it along
with the other link.tx initialization in bearer_ctl_send and
prov_send_adv.

Signed-off-by: Trond Einar Snekvik <[email protected]>
jhedberg pushed a commit that referenced this pull request May 19, 2021
The send_reliable function was reused in multiple places as part of the
k_delayed_work changes for Bluetooth Mesh in #33782. This function
contains a line that resets the start timer, causing prov_retransmit to
continously move the goal post for when to give up sending.

Extract this line out of the send_reliable function, and put it along
with the other link.tx initialization in bearer_ctl_send and
prov_send_adv.

Signed-off-by: Trond Einar Snekvik <[email protected]>
ioannisg pushed a commit to ioannisg/zephyr that referenced this pull request Jun 7, 2021
...retransmit

The send_reliable function was reused in multiple places as part of the
k_delayed_work changes for Bluetooth Mesh in zephyrproject-rtos#33782. This function
contains a line that resets the start timer, causing prov_retransmit to
continously move the goal post for when to give up sending.

Extract this line out of the send_reliable function, and put it along
with the other link.tx initialization in bearer_ctl_send and
prov_send_adv.

(cherry picked from commit 85ad497)
Signed-off-by: Trond Einar Snekvik <[email protected]>
jori-nordic pushed a commit to jori-nordic/zephyr that referenced this pull request Jun 15, 2021
...retransmit

The send_reliable function was reused in multiple places as part of the
k_delayed_work changes for Bluetooth Mesh in zephyrproject-rtos#33782. This function
contains a line that resets the start timer, causing prov_retransmit to
continously move the goal post for when to give up sending.

Extract this line out of the send_reliable function, and put it along
with the other link.tx initialization in bearer_ctl_send and
prov_send_adv.

(cherry picked from commit 85ad497)
Signed-off-by: Trond Einar Snekvik <[email protected]>
(cherry picked from commit 861adbe)
trond-snekvik added a commit to trond-snekvik/zephyr that referenced this pull request Jul 13, 2021
Adds a BabbleSim test for provisioning multiple devices in a row. This
scenario had a regression in zephyrproject-rtos#33782, which is fixed in zephyrproject-rtos#35405.

Signed-off-by: Trond Einar Snekvik <[email protected]>
jhedberg pushed a commit that referenced this pull request Jul 13, 2021
Adds a BabbleSim test for provisioning multiple devices in a row. This
scenario had a regression in #33782, which is fixed in #35405.

Signed-off-by: Trond Einar Snekvik <[email protected]>
DineshDK03 added a commit to DineshDK03/zephyr that referenced this pull request Sep 3, 2021
Signed-off-by: Dinesh Kumar K <[email protected]>

drivers: display: test to clear display

Signed-off-by: Dinesh Kumar K <[email protected]>

drivers: display: EK79652 display clear alone working

Signed-off-by: Dinesh Kumar K <[email protected]>

common: Add headers to support C++ style includes

When compiling existing libraries that are difficult to change, these
headers simplify the library's integration. This specifically was the
agreed upon fix for trying to compile Android's CHRE as a subsystem.
Making changes to the Android repo to use the C style includes would be
very difficult and would likely take a very long time.

Signed-off-by: Yuval Peress <[email protected]>

tests: net: coap: Convert unit tests to ztest API

Convert CoAP unit tests to ztest API.

Additionally, replace dynamic memory allocation with a static one, to
prevent memory leaks with ztest.

Signed-off-by: Robert Lubos <[email protected]>

Bluetooth: host: Move bt_data_parse to hci_core.c

Move the function from scan.c to hci_core.c.
When in scan.c, the function is only available if
CONFIG_BT_OBSERVER was enabled. Since the function
can be used in other scenarioes where we need to parse
LTV data, it has been moved to a more generic place.

hci_core.c might not be the ideal place, but it is
where most other common bluetooth functions
are located.

Signed-off-by: Emil Gydesen <[email protected]>

Bluetooth: Iso: Do not remove iso data path on disconnect

We previously removed the iso data path when the iso channel
disconnected. Since the iso data path is unique for a given
iso channel (by handle), it does not make sense to remove
it for a disconnected channel, as the channel is, in
a sense, not existing anymore.

This update is to better comply with the bluetooth
core spec, and to avoid getting errors from the
controller on disconnect.

Rather than removing the implementation of being able
to remove the data path, the function was made non-static
and moved to the internal header file, in case we ever
want to use it. This should not affect compile size.

Signed-off-by: Emil Gydesen <[email protected]>

ARC: MWDT: don't use compact C library

-Hcl option instructs linker to use MetaWare C Compactlib.
According to MWDT documentation "Compactlib is not thread-safe"

So, let's use MetaWare C library instead which is thread-safe.

Signed-off-by: Evgeniy Paltsev <[email protected]>

dts/arm: STM32: Adding DMA support for stm32l5 in dtsi

This commit adds dma1, dma2, dmamux support in dtsi for stm32l5
series. This commit also fixes a compilation warning due to the
usage of upper case in "reg = <0x4000F400 0x400>".

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: stm32l562e_dk: Updating the documentation

This commit updates the documentation on DMA for stm32l562e_dk
platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: nucleo_l552ze_q: Updating the documentation

This commit updates the documentation on DMA for nucleo_l552ze_q
platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: stm32l562e_dk: Enabling usart3

This commit enables usart3 channel on stm32l562e_dk platform.
This would also be used to test usart in dma mode with
tests/drivers/uart/uart_async_api.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: nucleo_l552ze_q: Enabling usart3

This commit enables usart3 channel on nucleo_l552ze_q platform.
This would also be used to test usart in dma mode with
tests/drivers/uart/uart_async_api.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: nucleo_l552ze_q: Enabling spi1

This commit enables spi1 in dtsi and updates the
documentation for nucleo_l552ze_q platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

drivers/dma: STM32: Initialising DMA_InitStruct with 0 for stm32l5xx

In stm32l5xx soc, the LL_DMA_InitTypeDef has 2 more fields
(DoubleBufferMode and TargetMemInDoubleBufferMode) that must be
initialised with 0 else the configuration is wrong and gives
wrong values to the LL_DMA_Init function. Due to this the test
tests/drivers/dma/loop_transfer too would fail.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: stm32l562e_dk: Configures DMA for chan_blen_transfer test

This commit configures the required DMA parameters to run
tests/drivers/dma/chan_blen_transfer test on stm32l562e_dk platform.
This has been tested and is working as expected.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: stm32l562e_dk: Configures DMA to run loop_transfer test.

This commit configures the required DMA parameters to run
tests/drivers/dma/loop_transfer test on stm32l562e_dk platform.
This has been tested and is working as expected.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: nucleo_l552ze_q: Configures DMA for chan_blen_transfer test

This commit configures the DMA to run
tests/drivers/dma/chan_blen_transfer test on nucleo_l552ze_q platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: nucleo_l552ze_q: Configures DMA to run loop_transfer test

This commit configures DMA to run tests/drivers/dma/loop_transfer
test on nucleo_l552ze_q platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: nucleo_l552ze_q: Configuration for spi_loopback test

This commit configures spi, dma & dmamux to run spi_loopback test
on nucleo_l552ze_q platform. The tx & rx pin of spi1 should be
shorted before running spi_loopback.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: stm32l562e_dk: uart_async_api test

This commit configures usart3 to use dma in uart_async_api test
on stm32l562e_dk platform. Short pin2(PC10) & pin 3 (PC11) of usart3
in CN4 connector on stm32l562e_dk platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

tests/drivers: nucleo_l552ze_q: uart_async_api test

This commit configures usart3 to use dma in uart_async_api test
on nucleo_l552ze_q platform.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards: arm: bl5340_dvk: Rename NS target

This commit update the NS board variant from `bl5340_dvk_cpuappns`
to `bl5340_dvk_cpuapp_ns` to maintain consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

boards: arm: mps2_an521: Rename NS target

This commit update the NS board variant from `mps2_an521_nonsecure`
to `mps2_an521_ns` to maintain consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

boards: arm: v2m_musca_b1: Rename NS target

This commit update the NS board variant from
`v2m_musca_b1_nonsecure` to `v2m_musca_b1_ns` to maintain
consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

boards: arm: v2m_musca_s1: Rename NS target

This commit update the NS board variant from
`v2m_musca_s1_nonsecure` to `v2m_musca_s1_ns` to maintain
consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

boards: arm: nrf5340dk_nrf5340: Rename NS target

This commit updates the NS board variant from
`nrf5340dk_nrf5340_cpuappns` to `nrf5340dk_nrf5340_cpuapp_ns`
to maintain consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

boards: arm: nrf9160dk_nrf9160: Rename NS target

This commit updates the NS board variant from
`nrf9160dk_nrf9160ns` to `nrf9160dk_nrf9160_ns`
to maintain consistency across zephyr.

Signed-off-by: Kevin Townsend <[email protected]>

Bluetooth: controller: Fix PKT_AC_US macro

Advertising channel packets do not have MIC, there's no need to have
extra parameter which always has to be set to 0 anyway.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Add helper to allocate new pdu_adv

This adds helper to always allocate advertising PDU either from memory
pool or pdu_free queue and does not reuse existing PDU in adv_pdu.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Optimize lll_adv_pdu_and_extra_data_alloc

This function is the same as lll_adv_pdu_alloc except it also allocates
extra data at the end - it can just use lll_adv_pdu_alloc call to avoid
extensive c&p.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Add support for linked adv PDUs

This adds support to allow advertising PDUs to be linked which is
required to send advertising trains, i.e. AUX_CHAIN_IND.

PDUs are linked with a simple single-linked list, the pointer to next
PDU is stored at the very end of PDU buffer. This prevents it from
being overwritten if PDU is modified and allows for build time offset
calculation.

There are few helpers added to make handling easier, e.g.:
- get next linked PDU
- get last linked PDU
- link one PDU to another
- link PDU at the end
- release all linked PDUs (except for 1st)

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Enable back-to-back chaining for periodic adv

This enables chaining ota for periodic advertising. AUX_CHAIN_IND PDUs
will be sent automatically if AuxPtr is detected in preceding PDU.
AuxPtr offset is always set to achieve minimal required frame spacing,
i.e. 300us (T_mafs). AuxPtr in all PDUs in advertising train are
updated on enqueue since PDU spacing is already known at that time so
we do not need to waste time in LLL.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Add helper to initialize adv PDU from scratch

This adds adv_sync_pdu_init helper which initializes pdu_adv buffer
with contents of AUX_SYNC_IND/AUX_CHAIN_IND PDU. Extended header flags
can be specified to reserve required space for corresponding fields if
necessary.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Add initial support to update AD in chain

This adds some initial support to update AD in chain. We still only
support placing AD in 1st PDU, but this will properly copy any linked
PDUs that may be added due to e.g. CTEInfo present.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Add helper to update CTEInfo

This adds simple helper to update CTEInfo. It assumes proper periodic
adv PDU as input to simplify code.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

Bluetooth: controller: Remove adv_sync_hdr_set_clear

adv_sync_hdr_set_clear was just wrapped by ull_adv_sync_pdu_set_clear
so we can merge both into single function.

Signed-off-by: Andrzej Kaczmarek <[email protected]>

flash_page_layout: refactor flash_page_get_info

refactor flash_page_get_info to simplify and to avoid using mixing the
usage of an off_t (offs) and an uint32_t (page_index).

Signed-off-by: Laczen JMS <[email protected]>

Bluetooth: Controller: Warn when building experimental features

Add CMake warning message when building experimental
features like Advertising Extensions.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: controller: Add/Remove ACAD on create/terminate BIG

Added implementation to add/remove ACAD field in the common
extended header format of the periodic advertising PDU on
create/terminate BIG.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: controller: Use set/clear to add/remove ACAD

Use the set/clear function to modify the common extended
header format in the PDU to add/remove ACAD.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: controller: Refactor sync_info population

Based on review comments, refactor out sync_info population
to be performed by the caller of the function that prepares
the extended advertising PDU.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

tests: Bluetooth: bsim: ISO test with ACAD in periodic advertising

Updated ISO test to demonstrate ACAD field in periodic
advertising PDUs. Here, test changing the periodic
advertising data.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

tests: Bluetooth: bsim: name adv_handle for advertising handle

Use the name adv_handle instead of index to store advertising
handle.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Minor fix debug message with channel map mask

Minor fix to channel map mask used in debug message to print
sync info fields.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Use macros for SCA and Channel Map access

Use macros to access SCA and Channel Map fields in the Sync
Info structure in advertising PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

boards: mxrt685: Update to documentation

Move the I2S_DATAIN pin description so it is grouped with
I2S pins

Signed-off-by: Mahesh Mahadevan <[email protected]>

dts: bindings: jedec,jesd216: remove deprecated 'has-be32k' prop

This property has been marked as deprecated in 2.5.0 and was not
actually used for even longer time.

Signed-off-by: Marcin Niestroj <[email protected]>

drivers: pwm: nrf_sw: drop deprecated 'timer-instance' DT prop

This property has been marked as deprecated in 2.5.0 and was replaced by
'generator' property.

Signed-off-by: Marcin Niestroj <[email protected]>

Bluetooth: Controller: Fix Periodic Sync setup with invalid channels

Fix Periodic Synchronization setup when handling invalid
number of channel count in Periodic Advertising's Sync Info
structure.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

soc: npcx: Add soc log register

NPCX power.c use LOG_MODULE_DECLARE(soc), but NPCX chip doesn't
register soc log module. This CL register soc log in soc.c to fix NPCX
build error for power management & log system.

Signed-off-by: Wealian Liao <[email protected]>

driver: clock: npcx: add a option to generate LFCLK via XTSOC

This commit adds a new Kconfig option CLOCK_CONTROL_NPCX_EXTERNAL_SRC.
With this option enabled, the internal 32.768 KHz clock (LFCLK) is
generated by the on-chip Crystal Oscillator (XTOSC). Otherwise, the
LFCLK is generated by the Low-Frequency Clock Generator (LFCG).

Signed-off-by: Jun Lin <[email protected]>

doc, cpp: Update CXX support to show exception support

Updates CXX support documentation to reflect exception support
added in fixes for #32448 and #35772.

Signed-off-by: Lauren Murphy <[email protected]>

drivers: pinmux: stm32: fix name clashes with G4 series

There is a name clash when using G4 series LL TIM driver depending on
the inclusion order of the LL TIM and pinmux headers. If the LL headers
are included after pinmux is included, AF1 and AF2 definitions used by
pinmux clash with the AF1 and AF2 TIMx register names.

In order to solve this problem with minimum impact, the following has
been done:

1. Prefix the AFx and ANALOG definitions with STM32
2. In order to avoid changing all *-pinctrl.dtsi files, the STM32_PINMUX
   macro contatenates STM32_ with the provided mode.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

driver: flexcan:  flexcan support for the rt1170

add the flexcan3 support for the rt1170

Signed-off-by: Crist Xu <[email protected]>

boards: fixing typo from MX24R64 to MX25R64

Comments in .dts files with MX25R64 and QSPI contained a typo

Signed-off-by: Akash Patel <[email protected]>

ci: reduce disk usage for daily build

Avoid some cases of running out of disk space in the daily build.  Add
setting -M option to remove artifacts as we build.

Signed-off-by: Kumar Gala <[email protected]>

kernel: native_posix: Don't run global C++ constructors

On the native_posix board global object constructors
are run by the underlying OS runtime init prior to
Zephyr kernel init. Thus Zephyr should not run global
object constructors a second time. Doing so breaks
application behavior that relies on global
constructors doing work that must be done only once.
See bug #36858 for more information.

Signed-off-by: David Palchak <[email protected]>

drivers: edac: Fix PCIe Kconfig dependency

It's not possible to build the IBECC driver without PCIe support.

Signed-off-by: Johan Hedberg <[email protected]>

cmake: extended zephyr_library_amend description with an extra example

Add some more example to the description of zephyr_library_amend().
This should help users to get input of the extra possibilities that this
function provides.

See: #35770

Signed-off-by: Torsten Rasmussen <[email protected]>
Signed-off-by: Andrzej Głąbek <[email protected]>

net: ip: Fix assertion failure when tcp_send_data()

When tcp_send_data() is called to resend data, but there is no data
to resend, zero length packet is allocated and NULL net_buf is passed
to net_buf_frag_insert() in which assertion fails.

Fixes #36578

Signed-off-by: Chih Hung Yu <[email protected]>

net: lib: sockets: Fix assertion failure when zsock_close()

When zsock_close() is called, socket is freed before the mutex for the
socket is unlocked. If the freed socket is given to another thread
immediately, the mutex for the socket will be initialized by the new
socket owner, while the mutex is still locked by the thread calling
zosck_close().

Fixes #36568

Signed-off-by: Chih Hung Yu <[email protected]>

Bluetooth: Mesh: Tests of BLE Mesh beacon flags management

Tests check transmission, receiving beacons in situations
of IV update (with test mode on) and key refresh procedures.

Signed-off-by: Aleksandr Khromykh <[email protected]>

subsys/mgmt/mcumgr: Add SMP Zephyr specific storage erase command

The commit adds support for Zephyr basic mgmt group to mcumgr.
The first command added to the group is storage erase command.

Authored-by: Sigvart Hovland <[email protected]>
Signed-off-by: Dominik Ermel <[email protected]>

Bluetooth: SDP: judge the buf->len before sys_get_be16

There may be less than 2 bytes in buf before calling sys_get_be16.

Signed-off-by: Mark Wang <[email protected]>

tests: test_build: Exclude some NS platforms from debug builds

The nrf9160dk_nrf9160_ns and nrf5340dk_nrf5340_cpuapp_ns don't have
enough space for debug builds as configured so excluded them from
this specific test.

Signed-off-by: Kumar Gala <[email protected]>

boards: arm64: fvp_baser_aemv8r: select CACHE_MANAGEMENT

fvp_baser_aemv8r supports CACHE_MANAGEMENT too and CACHE_MANAGEMENT
should also be selected.

Signed-off-by: Huifeng Zhang <[email protected]>

boards: arm64: fvp_baser_aemv8r: modifing dts for enabling SMP

Add psci and more cpu nodes into fvp_baser_aemv8r.dts. The purpose
of it is perparing to support SMP.

Signed-off-by: Huifeng Zhang <[email protected]>

soc: arm64: arm: fvp_aemv8r: Init VMPIDR_EL2 in el2 plat init.

Add strong definition z_arm64_el2_plat_init() and it is controlled
by CONFIG_SOC_FVP_AEMV8R_EL2_INIT.

VMPIDR_EL2 must be set manually on EL2. The purpose of VMPIDR_EL2 is
that holds the value of the Virtualization Multiprocessor ID and This
is the value returned by EL1 reads of MPIDR_EL1

Signed-off-by: Huifeng Zhang <[email protected]>

arch: arm64: Unify the initialization of MMU and MPU

Because MMU and MPU should not be enabled together and they provide
the same functionalities.

Signed-off-by: Huifeng Zhang <[email protected]>

driver: pm_cpu_ops: change PM_CPU_OPS_PSCI's dependency

Armv8-A and Armv8-R both support PSCI. So PM_CPU_OPS_PSCI's
dependency should be "ARM64" rather than "ARMV8-A".

Signed-off-by: Huifeng Zhang <[email protected]>

soc: arm64: arm: fvp_base_r: define a strong pm_cpu_on() function

With this patch, zephyr can enable SMP directly. Otherwise
zephyr needs TB-R to provide psci function.

Signed-off-by: Huifeng Zhang <[email protected]>

boards: arm64: fvp_baser_aemv8_r: change FVP startup parameters

Eliminate GICv3 warning messages printed by FVP_BaseR_AEMv8R.
And "cluster0.NUM_CORES" depends on CONFIG_MP_NUM_CPUS now.

Signed-off-by: Huifeng Zhang <[email protected]>

boards: arm64: add fvp_baser_aemv8r_smp

Support SMP for fvp_baser_aemv8r.

Signed-off-by: Huifeng Zhang <[email protected]>

arch: arm64: select SCHED_IPI_SUPPORTED for Armv8_R

Armv8_R supports IPI

Signed-off-by: Huifeng Zhang <[email protected]>

soc: boards: arm: Refactor i.MX RT600 zephyr,flash usage

Refactors the i.MX RT600 SoC series to be more consistent with the i.MX
RT10xx SoC series by choosing a child node (external flash device) of
the FlexSPI bus for zephyr,flash.

Signed-off-by: Maureen Helm <[email protected]>

boards: arm: Add mcuboot flash partitions to mimxrt685_evk

Adds flash partitions and chosen nodes to the mimxrt685_evk device tree
to support mcuboot on the external octal SPI flash. This flash is rated
for 100K minimum program-erase cycles per sector, therefore this
partition configuration supports approximately 100K / (24576/8128) =
33073 upgrades.

Tested with samples/subsys/mgmt/mcumgr/smp_svr. The image swap takes
about a minute and a half to complete.

Signed-off-by: Maureen Helm <[email protected]>

soc: boards: Disable i.MX RT6xx boot header in chainloaded applications

The bootloader itself contains the i.MX RT6xx boot header, so we don't
need to duplicate it when building chainloaded applications.

Signed-off-by: Maureen Helm <[email protected]>

boards: imxrt685: Update pinmux setting to remove the const keyword

This would save some space by using a local variable

Signed-off-by: Mahesh Mahadevan <[email protected]>

pm: device: remove runtime PM callback

The callback used by the device runtime PM can be easily replaced by a
simple state set after calling the state set/get calls. Broadcast logic
is simplified too, leading to the same previous behavior.

Since this is the only place where this callback was used, it can now be
removed from all devices and so pm_control callback signature
simplified.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

pm: remove redundant callback usage

the device PM callback is not used anymore by the device PM subsystem,
so remove it from all drivers/tests using it.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

pm: remove callback from control function

The callback is not used anymore, so just delete it from the pm_control
callback signature.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

dts: stm32wl: add definitions for further stm32wl  socs.

This commit adds dt support for stm32wle4, and stm32wle5 single core,
as well as stm32wl54 dual core socs.

Signed-off-by: Thomas Stranger <[email protected]>

soc/arm: add support for additonal stm32wl socs

This commit adds support for stm32wle4xx, stm32wle5xx single core socs,
as well as stm32wl54 dual core soc.

Signed-off-by: Thomas Stranger <[email protected]>

drivers/clock_control: stm32wl set cpu2 prescaler only for STM32WL5X

To support single core stm32wlex series, cpu2 prescaler is set
only on dual core soc variants.

Signed-off-by: Thomas Stranger <[email protected]>

dts: arm: introduce seeed lora-e5 module

This commit adds the dts definitons for the seeed lora-e5 module.
Additionally I add myself as codeowner for the new dts/arm/seeed
directory.

This module packages a stm32wle5jc Sub-GHz Wireless Soc,
together with a 32MHz TCXO, a 32.768KHz crystal oscillator, and
power and RF circuitry.

With the introduction of lora support definitions for the radio
will be added in a future commit.

Signed-off-by: Thomas Stranger <[email protected]>

boards: add seeed studio LoRa-E5 Dev board

This commit adds support for the seeed studio LoRa-E5 Dev board,
which is powered by a module based on stm32wle5jc soc.

Signed-off-by: Thomas Stranger <[email protected]>

drivers: entropy: add support for stm32wl and stm32g0

This commit adds entropy support for stm32wl and stm32g0.

Pll is used as clock source and has to be enabled,
other clock sources are not supported at the moment.

Signed-off-by: Thomas Stranger <[email protected]>

dts: stm32g0: add definitions for socs with rng (and aes) support.

This commit adds support for stm32g0 socs with integrated rng and hw aes
acceleratior, which are stm32g041, stm32g061, stm32g081, and stm32g0c1.

It also adds the definitions for the rng peripheral
and sets it as chosen zephyr,entropy source.

Signed-off-by: Thomas Stranger <[email protected]>

soc/arm: add support for stm32g0 socs with (hw aes and) rng support

This commit introduces g041, g061, g081, and g0c1 socs in kconfig.

Signed-off-by: Thomas Stranger <[email protected]>

dts: stm32wl: add definitions for rng peripheral

This commit adds the dt node for rng to the stm32wl series
and sets it as chosen zephyr,entropy source.

Signed-off-by: Thomas Stranger <[email protected]>

boards: nucleo_wl55jc enable rng

This commit enables entropy support for nucleo_wl55jc.
Additionally it sets the PLL Q divider to 2, which was not set in
the board dts before.

Signed-off-by: Thomas Stranger <[email protected]>

logging: log_backend_net: Add support for logging v2

Added support for logging v2 backend API in net backend.

Signed-off-by: Krzysztof Chruscinski <[email protected]>

subsys/cpp: update tag for C++2a to C++20

C++20 was tagged and released in December of 2020.  It is no longer
forth coming.

Signed-off-by: Dan Kalowsky <[email protected]>

subsys/cpp: add support for C++2b

Add the ability to enable support for C++2B (aka 23) to the build
system.

Signed-off-by: Dan Kalowsky <[email protected]>

drivers: uart: Add "Interrupt driven" to R-Car

This commit add the support of "Interrupt driven UART"
to the R-Car UART driver and enable it in the related
Kconfig.

The driver is supporting nearly all the methods that are
described in the "Interrupt driven UART" part of the
uart_driver_api.

This new version of the driver has been tested on
H3ULCB board by running "uart_basic_api" test suite.

Signed-off-by: Aymeric Aillet <[email protected]>

boards: rcar_h3ulcb: Enable Interrupt driven UART

This commit enables "Interrupt driven UART" for
the renesas R-Car H3ULCB board.

Signed-off-by: Aymeric Aillet <[email protected]>

driver: gpio: add initial support for synopsys creg gpio

Add single-register MMIO GPIO driver for complex cases where
only several fields in register belong to GPIO lines and each GPIO
line owns a field with different length and on/off value.

Such CREG GPIOs are used in Synopsys em_starterkit and HSDK boards.

Signed-off-by: Watson Zeng <[email protected]>

boards: arc: hsdk: add creg_gpio driver support

Add creg_gpio driver support for hsdk board.

Signed-off-by: Watson Zeng <[email protected]>

boards: arc: em_starterkit: add creg_gpio driver support

Add creg_gpio driver support for em_starterkit board.

Signed-off-by: Watson Zeng <[email protected]>

west: update west.yml to get updated hal_stm32 modules

This commit changes the entry referencing the hal_stm32 module
into west.yml. This brings the fixes to build issues when stm32
asserts are enabled.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards: acrn_ehl_crb: Add PCIe to defconfig

A lot of basic functionality depends on PCIe, so enable it in the
defconfig.

Signed-off-by: Johan Hedberg <[email protected]>

boards: acrn_ehl_crb: Add ibecc DTS node

We need an ibecc DTS node so that the EDAC driver can be used.

Signed-off-by: Johan Hedberg <[email protected]>

soc: it8xxx2: introduce SOC_IT8XXX2_PLL_FLASH_48M option

Enable SOC_IT8XXX2_PLL_FLASH_48M at default to reduce latency of
fetching code from flash.

Signed-off-by: Dino Li <[email protected]>

logging: Shell commands available when shell acts as log backend

Some commands shell not be present when shell is not acting as
a log backend. Use of them lead to crash in that case.

Signed-off-by: Krzysztof Chruscinski <[email protected]>

tests: add min_ram to test applications

add min_ram to some test applications
as we found below platforms have size issues
TWR_KE18F and FRDM_KL25Z

Signed-off-by: Hake Huang <[email protected]>

docs: Added documentation for native posix mode

Added documentation for native posix mode.

Signed-off-by: Lingao Meng <[email protected]>

iii

Signed-off-by: Lingao Meng <[email protected]>

Bluetooth: Mesh: Align capitalization for BT mesh

Align the capitalization of the term "Bluetooth Mesh" to Bluetooth mesh"
in the documentation. This is done to to match the new updated naming
convention done in Bluetooth SIG. In the upcoming spec versions, it its
used "Bluetooth mesh" with the lower case convention.

Signed-off-by: Ingar Kulbrandstad <[email protected]>

doc: extensions: doxyrunner: process Doxygen output

This change will process Doxygen output and will map it to the Sphinx
logger. Things like errors and warnings will be mapped to actual Sphinx
logger error and warnings. In practice this means that when Doxygen
throws a warning and Sphinx is run in "-W" (warning as error) mode, the
build will fail. It also has some other advantages such as the
possibility of filtering issues using the warnings_filter extension.

It is also expected that CI errors not being displayed issue is fixed
with this change.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: extensions: doxyrunner: handle quiet mode

QUIET flag is now overriden according to the `doxyrunner_silent`
configuration value.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

Bluetooth: Mesh: Test provisioning multiple devices

Adds a BabbleSim test for provisioning multiple devices in a row. This
scenario had a regression in #33782, which is fixed in #35405.

Signed-off-by: Trond Einar Snekvik <[email protected]>

Doc: Getting Started: Image fix for PDF generation

The `pdftex` utility that is used for PDF documentation generation does
not support GIF images.

This fix replaces the animated `ReelBoard-Blinky.gif` with an animated
PNG (APNG) image `ReelBoard-Blinky.png`.

Note that APNGs are backwards  compatible with "normal" PNGs. Modern
web browsers will display APNGs in the same way as animated GIFs, while
any application that can read PNG files can read APNG files
successfully.

Signed-off-by: Chris Pearson <[email protected]>

arch: give the choice "Cache type" a name

Give the choice a name so that the soc/board developers can change the
default selection in their Kconfig.*.

For example:
choice CACHE_TYPE
	default HAS_EXTERNAL_CACHE
endchoice

There was a similar issue had beed discussed:
https://github.com/zephyrproject-rtos/zephyr/issues/6948

Signed-off-by: Dylan Hung <[email protected]>
Change-Id: I07c3e78a5243b30912f8e44fa3181fa163016318

cpp: Restore C++2A Kconfig

Restore the legacy C++2a Kconfig for compilers that
do not support C++20.

Signed-off-by: Alexander Wachter <[email protected]>

drivers: usb: device: Rename usb_dc_sam to usb_dc_sam_usbhs

The SoC driver name is 'USB High-Speed Interface (USBHS)'. This rename
from usb_dc_sam to usb_dc_sam_usbhs allowing add others SoC drivers
like 'USB Device Port (UDP)' that is found at SAM4S/E variations.

Signed-off-by: Gerson Fernando Budke <[email protected]>

drivers: ethernet: stm32: add support for disabling auto-negotiation

drivers: support disabling auto-negotiation for stm32 eth drivers

Signed-off-by: Rup Gajurel <[email protected]>

ITE: drivers/i2c: create pinmux phandle to the I2C driver node

Create the pinmux phandle to the I2C driver node in the
devicetree. When the pinmux_pin_set function in
i2c_it8xxx2_init can refer to the setting of this phandle.
It is more flexible to use.

Signed-off-by: Tim Lin <[email protected]>

ITE: driver/i2c: add I2C recovery function

Use GPIO output high and low to simulate I2C start and stop
conditions to restore i2c to normal.

Signed-off-by: Tim Lin <[email protected]>

tests: net: socket: select: Relax timing requirements

The test ocassionally fails on the mps2_an385 platform in the CI, due
to strict timing requirements of the test.

Relax the timeouts and acceptable fuzz time a bit, to prevent the
failures in the future.

Signed-off-by: Robert Lubos <[email protected]>

Bluetooth: samples: Add ISO connected benchmark sample

Add a sample that measures packet loss in a connected
ISO setup.

Signed-off-by: Emil Gydesen <[email protected]>

tests: kernel: device: Exclude beaglev_starlight_jh7100

We excluded the beaglev_starlight_jh7100 from this test but only did
the kernel.device.pm test.  We should have excluded the platform
from both tests.

The beaglev_starlight_jh7100 uses a full 64-bit devicetree map
which uses #{address/size}-cells = 2.  The device test expects
that #{address/size}-cells = 1 so exclude beaglev_starlight_jh7100
from the test.

Signed-off-by: Kumar Gala <[email protected]>

doc: cmake: remove west check

west is currently optional, however, when not found its docs will not be
available and the zephyr_module CMake utility will not be able to find
modules (unless ZEPHYR_MODULES is used). Other Python dependencies, i.e.
the ones listed in the requirements file, are not checked, so do the
same for west.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: improve dependencies section

Group dependencies all together. Some have been simplified, e.g. Sphinx
and others improved, e.g. LaTeX.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: group options

Group options all together and make them part of cache.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: remove unused variables

Remove some unused variables.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: refactor html targets

Refactor HTML targets. The 'html' target is kept as is, 'sphinx-html'
equivalent is now 'html-nodeps'.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: cleanup doxygen section

Cleanup doxygen section and simplify target.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: refactor pdf build

Refactor the pdf build targets. The Sphinx latex build is now invoked by
the 'latex' target. The 'pdf' target can be used to build the resulting
LaTeX files.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: move environment, paths and functions

Move environment, paths and functions before they are used. Helps on
readability.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: remove unused version include

version.cmake is not being used.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: remove RST_OUT redundant variable

DOCS_SRC_DIR is used instead.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: refactor kconfig

Refactor the Kconfig target. Mostly formatting in this case. The Kconfig
script is also added as a dependency of the CMake configuration step, so
that if it is changed, the Kconfig generation step will be re-run.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: refactor devicetree

Simplify the devicetree generation. Most of the extra options are not
used, so they have been removed to make things easier to maintain.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: add support for clean target

Indicate which files have to be cleaned for each target. This feature is
only supported for CMake >= 3.15 and is ignored on older CMake versions.
Build will still succeed, but the `clean` target will not clean the
additional build files.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: move pristine to a separate section

Move 'pristine' target to 'others' section.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: make: adjust Makefile

Adjust Makefile according to latest CMake changes.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: update build instructions

Update build instructions according to latest changed.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: add target comments

Add target comments to make build process more user friendly.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

logging: log_backend_xtensa_sim: Add support for logging v2

Added support for logging v2 backend API in xtensa_sim.

Signed-off-by: Krzysztof Chruscinski <[email protected]>

logging: log_backend_spinel: Add support for logging v2

Added support for logging v2 backend API in spinel backend.

Signed-off-by: Krzysztof Chruscinski <[email protected]>

drivers: serial: add a dummy driver for vnd,serial

This commit adds a serial dummy driver compatible to vnd,serial.
This is needed that devices can access the uart device in tests
like tests/drivers/build_all/... .

Add myself as codeowner to avoid complicance check failure.

Signed-off-by: Thomas Stranger <[email protected]>

tests: drivers: build_all: sensor: enable serial driver

Enable serial driver such that sensors commuicating via uart
can be added to this test(using the vnd,serial driver).

Signed-off-by: Thomas Stranger <[email protected]>

modules: hal_nxp: replace Kconfig option USB with USB_DEVICE_DRIVER

Replace Kconfig option USB with USB_DEVICE_DRIVER.

Signed-off-by: Johann Fischer <[email protected]>

samples: jesd216: Exclude hifive1 board from sample

By default the hifive1 board doesn't enable the SPI controller that
the flash is on.  As such this test will not build on that platform
due to lack of a missing SPI bus controller device.

Signed-off-by: Kumar Gala <[email protected]>

net: openthread: handle NONE level logs

`OT_LOG_LEVEL_NONE` has some uses within OpenThread but it is not
hanled in the Zephyr's platform implementation. This commit makes
use of those logs as `LOG_LEVEL_ERR` level.

Signed-off-by: Eduardo Montoya <[email protected]>

soc: boards: Enable Segger RTT/SystemView on mimxrt1170_evk_cm7

Adds a devicetree chosen node to the mimxrt1170_evk_cm7 board to link
Segger RTT and SystemView sections in DTCM by default. Enables the AHB
clock while the CM7 is sleeping to allow debug access to the TCM.

Note that automatic RTT control block detection may not search the DTCM
address region, therefore you may need to manually set the RTT control
block address or search range in the Segger host tools (SystemView or
RTT Viewer). For example,

$ JLinkRTTViewer -ra 0x20000000

Tested with:
  - samples/subsys/shell/shell_module/
  - samples/subsys/tracing/

Signed-off-by: Maureen Helm <[email protected]>

drivers: usb_dc_mcux_ehci: fix style

Fix style, two lines are indented too far.

Signed-off-by: Johann Fischer <[email protected]>

drivers: usb_dc_mcux_ehci: use K_NO_WAIT in k_heap_alloc()

This is called in ISR context and timeout must be set
to K_NO_WAIT.

Reported-by: Pieter De Gendt <[email protected]>
Signed-off-by: Johann Fischer <[email protected]>

drivers: display: ili9xxx: use gpio_dt_spec

Use the recently introduced struct gpio_dt_spec to store GPIO
information and operate with them.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

drivers: display: ili9xxx: use spi_dt_spec

Use the recently introduced struct spi_dt_spec to store SPI information
and operate with it.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

drivers: display: ili9xxx: remove unnecessary casts

The config/data casts are not strictly necessary. Furthermore, config
was being casted to non-const.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

dts: arm: nxp: kinetis: ke1xf: add cpu nodelabel

Add nodelabel for cpu0 to allow referencing it in the board devicetree.

Signed-off-by: Henrik Brix Andersen <[email protected]>

soc: arm: nxp: kinetis: ke1xf: determine hw clock cycles/sec from dts

Determine the default CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC from devicetree
when using the Arm SysTick hardware timer.

When the NXP KE1xF SoC series is using the Arm SysTick as hardware
timer, the cycles/second will always be equal to the CPU core clock
frequency.

Signed-off-by: Henrik Brix Andersen <[email protected]>

boards: arm: twr_ke18f: do not enable Arm SysTick driver by default

Do not enable the Arm SysTick driver by default. Instead, rely on the
default Kconfig settings for the Arm SysTick driver.

Signed-off-by: Henrik Brix Andersen <[email protected]>

soc: arm: nxp: kinetis: ke1xf: keep the sirc running in low-power mode

Keep the Slow Internal Reference Clock (SIRC) running in low-power
mode.

This allows peripherals that needs to remain operative in low-power
mode to use the SIRC as clock source.

Signed-off-by: Henrik Brix Andersen <[email protected]>

drivers: timer: add NXP LPTMR timer driver

Add NXP Kinetis Low Power Timer (LPTMR) OS timer driver shim. Since the
LPTMR does not support asynchronous changes to the timer period, only
non-tickless mode is supported.

Signed-off-by: Henrik Brix Andersen <[email protected]>

soc: arm: nxp: kinetis: ke1xf: enable lptmr as timer

Enable the NXP Kinetis Low Power Timer (LPTMR) OS timer driver when
power management is enabled as the Arm SysTick timer cannot wake up the
KE1xF from deep sleep.

Signed-off-by: Henrik Brix Andersen <[email protected]>

soc: arm: nxp: kinetis: ke1xf: add support for power management

Add power management support (runtime-idle and suspend-to-idle)
support for the NXP Kinetis KE1xf SoC series.

Signed-off-by: Henrik Brix Andersen <[email protected]>

dts: arm: nxp: ke1xf: add supported cpu power states

Add supported CPU power states for idle, stop, partial stop 1, and
partial stop 2.

Signed-off-by: Henrik Brix Andersen <[email protected]>

boards: arm: twr_ke18f: enable cpu power-states

Enable CPU idle and stop power-states on the NXP TWR-KE18F development
board.

Signed-off-by: Henrik Brix Andersen <[email protected]>

tests: pm: power_mgmt_soc: enable testing on twr_ke18f

Enable the SoC power management test suite on the NXP TWR-KE18F
development board.

Signed-off-by: Henrik Brix Andersen <[email protected]>

devicetree: Add _VARGS variants to _FOREACH_ marcos

`_FOREACH_` macros do not allow the caller to pass additional arguments
to the `fn`. A series of `_VARGS` variants have been added that allow
the caller to pass arbitrary number of arguments to the `fn`:

```
DT_FOREACH_CHILD_VARGS
DT_FOREACH_CHILD_STATUS_OKAY_VARGS
DT_FOREACH_PROP_ELEM_VARGS
DT_INST_FOREACH_CHILD_VARGS
DT_INST_FOREACH_STATUS_OKAY_VARGS
DT_INST_FOREACH_PROP_ELEM_VARGS
```

Signed-off-by: Arvin Farahmand <[email protected]>

dtlib: add force DT kwarg

Modeled after dtc's --force option, the idea is this will try harder
and harder over time to produce an object despite malformed input.

Signed-off-by: Martí Bolívar <[email protected]>

dtlib: allow dangling aliases with DT(..., force=True)

As a first step towards being more forgiving on invalid inputs, allow
string-valued aliases properties that do not point to valid nodes when
the user requests permissiveness.

Signed-off-by: Martí Bolívar <[email protected]>

tests: lib: mpsc_pbuf: Add test case for max packet allocation

Add test for validating max packet allocation.

Signed-off-by: Krzysztof Chruscinski <[email protected]>

dts: bindings: i2c: add Renesas R-Car I2C

Third generation R-Car series products have up to
seven I2C bus interfaces conformant with the
Philips Semiconductors (now NXP Semiconductors) I2C bus
(Inter-IC bus) specification.

Signed-off-by: Aymeric Aillet <[email protected]>

drivers: i2c: add Renesas R-Car driver

This patch add support for I2C on the Renesas R-Car.

This I2C hardware block can be found on various Renesas R-Car
SoC series.

It allows to perfom read and write on I2C buses in an
interrupt based way on R-Car Gen3 H3ULCB board.

Signed-off-by: Aymeric Aillet <[email protected]>

dts: arm: rcar_gen3_cr7: Add I2C support to DTS

Add I2C bus initial support to Renesas R-Car SoC series.
Both I2C2 & I2C4 buses are supported on R-Car H3 board.

Signed-off-by: Aymeric Aillet <[email protected]>

boards: arm: rcar_h3ulcb: Enable I2C

Enable I2C driver for Renesas R-Car H3 boards.

Signed-off-by: Aymeric Aillet <[email protected]>

drivers: modem: RSSI measurement for PPP link

This PR addresses radio signal stength measurement during
and before PPP session. The PR provides provides facility
of readout for both +CSQ and +CESQ versions depending
upon the modems. This PR follows the idea of rssi readout
of PR#35496. Additionally, reliable Cell info update
is also ensured.

Signed-off-by: Tahir Akram <[email protected]>

module: mbedtls: add shell module

Add mbedTLS specific shell module, which allows (for now) to show heap
allocation statistics.

Signed-off-by: Marcin Niestroj <[email protected]>

drivers/clock_control: stm32: Fixes around LSE clock

Fix macro used in g4 file to enable LSE clock.
Then, to avoid no-op configurations, generate an error
when MSI Hardware auto calibration is selected but LSE
clock is not enabled.

Signed-off-by: Erwan Gouriou <[email protected]>

soc: arm: stm32l0: set voltage scaling to range1

Default Voltage scaling range selection (range2)
doesn't allow to configure Max frequency
switch to range1 to match any frequency

Signed-off-by: Alexandre Bourdiol <[email protected]>

soc: arm: stm32l1: set voltage scaling to range1

Default Voltage scaling range selection (range2)
doesn't allow to configure Max frequency
switch to range1 to match any frequency

Signed-off-by: Alexandre Bourdiol <[email protected]>

Bluetooth: Mesh: Add return value for opcode callback

```
3.7.3.4 Message error procedure
When receiving a message that is not understood by an element, it shall
ignore the message.
Note: A message can be falsely identified as a valid message, passing
the NetMIC and TransMIC authentication using a known network key and
application key even though that message was sent using different keys.
The decryption of that message using the wrong keys would result in a
message that is not understood by the element. The probability of such a
situation occurring is small but not insignificant.
A message that is not understood includes messages that have one or more
of the following conditions:
• The application opcode is unknown by the receiving element.
• The access message size for the application opcode is incorrect.
• The application parameters contain values that are currently
Prohibited.
Note: An element that sends an acknowledged message that is not
understood by a peer node will not receive any response message.
```

Signed-off-by: Michał Narajowski <[email protected]>

Bluetooth: Mesh: Add msg length check for Cfg and Health models

According to spec we should ignore messages with incorrect msg size.
This patch adds a check to every opcode handler.

Signed-off-by: Michał Narajowski <[email protected]>

samples: Update Mesh opcode handlers

Add return values to opcode handlers and update message length
definitions.

Signed-off-by: Michał Narajowski <[email protected]>

doc: release-notes-2.7: Return value for opcode callback

Add release notes for Stable API Change in Mesh.

Signed-off-by: Michał Narajowski <[email protected]>

Bluetooth: controller: df: Fixes truncated transmission of CTE

There was an issue with wrong length of CTE send in connectionless
mode, with periodic advertising PDUs. Radio peripheral was not
configured to send CTE with correct length while PDU had CTEInfo
field informing receiver that CTE is attached to the PDU.

Source of the problem was in ll_df_set_cl_cte_tx_enable function.

Order of parameters in ull_adv_sync_pdu_alloc was wrong.
ULL_ADV_PDU_HDR_FIELD_CTE_INFO was speficed as hdr_rem_fields.
Because of that extra_data, memory used to provide CTE configuration
to LLL, was not allocated. PDU content is prepared in ULL, so CTEInfo
field included correct information, while Radio was never configured
by LLL to send CTE.

ull_adv_sync_extra_data_set_clear received a pointer to hdr_data,
instead of a direct pointer to df_cfg structure. When extra_data
was allocated correclty, wrong CTE configuration was provided
copied there and LLL received invalid CTE length. It was different
than the length in PDUs CTEInfo field.

Signed-off-by: Piotr Pryga <[email protected]>

drivers: spi: Use timeout for transfer completion

Instead of waiting forever for the SPI transfer to complete, let's use
a timeout value and bail out if elapsed. The timeout value logic is,

xfer_len/frequency + tolerance

Tolerance value can be modified using a Kconfig symbol,
CONFIG_SPI_COMPLETION_TIMEOUT_TOLERANCE. It defaults to 200ms.

Fixes: #33192

Signed-off-by: Manivannan Sadhasivam <[email protected]>

drivers: sensor: shtcx: add driver supporting shtc1 and shtc3

Add driver for sensirion consumer humidity sensor line.
Supports shtc1 and shtc3, but only shtc3 is tested.

Signed-off-by: Thomas Stranger <[email protected]>

drivers: sensor: sht3xd: use sys functions for crc and byteorder

replace custom crc8 with sys/crc8
use sys_put/sys_get helpers for byteorder specific operations

Signed-off-by: Thomas Stranger <[email protected]>

tests: drivers: enable shtc3 build

Enable shtc3 sensor for build_all test

Signed-off-by: Thomas Stranger <[email protected]>

dts/arm: stm32: Adding rng (Random Number Generator)

This commit adds rng in stm32f2 dtsi.

Signed-off-by: Krishna Mohan Dani <[email protected]>

boards/arm: nucleo_f207zg: Enabling true rng (Random Number Generator)

This commit enables true rng for nucleo_f207zg platform. This has been
tested with tests/drivers/entropy/api and is working as expected.

Signed-off-by: Krishna Mohan Dani <[email protected]>

drivers: flash: mcux flexspi nor: Fix write on arbitrary offset

If a write offset isn't a multiple of the nor page size, and the
length is too large to fit within a single page, it could wrap around
in that page.

Tested on i.MX RT1064 internal flash using NVS settings

Signed-off-by: Pieter De Gendt <[email protected]>

net: pkt: introduce net_pkt_remove_tail()

Introduce a helper function for being able to remove any arbitrary
length from tail of packet. This is handy in cases when removing
unneeded data, like CRC once it was verified.

Signed-off-by: Marcin Niestroj <[email protected]>

drivers: net: ppp: fix removing CRC16 from packet

CRC16 was removed by simply decreasing length of the last fragment by 2.
This worked as long as last fragment was longer than 1 byte. If not,
then last fragment was corrupted (its length ended up being 65535),
leading to undefined behavior.

Fix CRC16 removal by utilizing recently introduced
net_pkt_remove_tail(), that properly handles multiple fragments.

Reported-by: Jim Paris <[email protected]>
Signed-off-by: Marcin Niestroj <[email protected]>

doc: extensions: doxyrunner: fix HTML output handling

The extension was not evaluating the GENERATE_HTML option correctly. The
get_doxygen_option returns a `List[str]`, not a `str`.

This effectively means that the Zephyr apidoc has not been updated for a
while as the extension was not moving the output to the final
destination folder.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: use Sphinx generated make files for PDF build

Sphinx automatically generates a Makefile/make.bat that allows to build
the LaTeX output. This converts the CMake `pdf` target into a shim to
this Makefile, making the solution more future-proof if Sphinx decides
to change something.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

doc: cmake: allow to override LATEXMKOPTS

This is useful if the user wants to set specific latexmk options, e.g.
-quiet for CI.

Signed-off-by: Gerard Marull-Paretas <[email protected]>

drivers: ieee802154: cc13xx_cc26xx: add subghz power saving

When stopping the interface, also abort the RX routine and enable RF
power saving. Will re-start RX on iface start.

Also fixed a bug with `cmd_fs` crashing at RF wakeup because `rf_mode`
was allocated on stack.

Signed-off-by: Stancu Florin <[email protected]>

doc: cleanup for PDF

Cleanup docs for PDFs hiding text that is relevant only for online docs.

Signed-off-by: Anas Nashif <[email protected]>

doc: move kconfig to indices and table

Right now the kconfig index is randomly placed in the guides. This is a
table similar to other indeces we have and should be considered as part
of an appendix rather than place it in the middle of the documentation.

Signed-off-by: Anas Nashif <[email protected]>

doc: print tilte of Kconfig on top

Add the symbol name on top and in the page title. This will enhance
search results and adds a missing page header that is needed.

Signed-off-by: Anas Nashif <[email protected]>

doc: start include README after 'getting started'

Otherwise we end up with a self-reference to the same page we are in.

Signed-off-by: Anas Nashif <[email protected]>

doc: CI badge should point to main instead of master

Point to the new branch to get the correct status.

Signed-off-by: Anas Nashif <[email protected]>

doc: create an index for PDF files

Most of the content in the default index is HTML only, so create an
index just for PDF and keep it clean.

Signed-off-by: Anas Nashif <[email protected]>

doc: add a comment about copyright notices

Add a link to best practices about copyright notices and when to and
when not to change them or add them.

Fixes #6777

Signed-off-by: Anas Nashif <[email protected]>

Bluetooth: Add identifiers for Bluetooth 5.3

The Bluetooth 5.3 specification was recently released, and
has a new version identifier (12) assigned to it in the
Bluetooth Assigned Numbers.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

lpspi: the lpspi driver for rt1170

enable the  lpspi1 for the rt1170 evk board

Signed-off-by: Crist Xu <[email protected]>

net: openthread: add Kconfig options for periodic parent search

The openthread has enhanced features for periodic parent search,
this commit adds kconfig options to enable and configure these.

Signed-off-by: Pieter De Gendt <[email protected]>

device: add DEVICE_DT_GET_ONE macro

Add DEVICE_DT_GET_ONE() macro. This macro is similar to
DEVICE_DT_GET_ANY() but instead of returning NULL if no enabled,
compatible device instance is found, it throws a compilation error.

This is useful for compile-time checks in samples.

Signed-off-by: Henrik Brix Andersen <[email protected]>

samples: shields: lmp90100_evb: convert to using DEVICE_DT_GET_ONE()

Convert from using device_get_binding() to DEVICE_DT_GET_ONE().

Signed-off-by: Henrik Brix Andersen <[email protected]>

tests: drivers: build_all: add fake serial device for modem tests

Serial device is needed for building drivers that use DEVICE_DT_GET().
None of the currently used modem drivers use that right now, but this is
about to change.

Signed-off-by: Marcin Niestroj <[email protected]>

drivers: modem: operate on device pointers instead of names

So far modem API used UART device names / labels. Change API to operate
on device pointers instead, so that we stop using device_get_binding()
in modem core and in some DT compatible modem drivers.

Signed-off-by: Marcin Niestroj <[email protected]>

drivers/sensor: lis2mdl: Fix errors when CONFIG_PM_DEVICE=y

Fix a couple of issues related to Power Management:

    1. A build error because 'dev' was used even if not declared
       in the caller routine scope
    2. The lis2mdl power management init specific routine was
       not declared in in the device instance definition

Signed-off-by: Armando Visconti <[email protected]>

dts: gpio: it8xxx2: Remove unused property

Property of port-is-output is not used anymore, so let's remove it.

Signed-off-by: Dino Li <[email protected]>

drivers: gpio: it8xxx2: add support for GPIO_VOLTAGE_ flags

Support GPIO_VOLTAGE_1P8, GPIO_VOLTAGE_3P3 flags on IT8xxx2 chips.

Signed-off-by: Dino Li <[email protected]>

arch/Kconfig: Remove stray tab from USERSPACE help

Commit removes stray tab from help.

Signed-off-by: Dominik Ermel <[email protected]>

Revert "tests: drivers: build_all: add fake serial device for modem tests"

This reverts commit 9e58a1e475473fcea1c3b0d05ac9c738141c821a.

This change is in conflict with commit 94f7ed356f0c ("drivers: serial:
add a dummy driver for vnd,serial"). As a result two equal serial
devices are defines, resulting in link error.

Signed-off-by: Marcin Niestroj <[email protected]>

dts: Introduce DT_STRING_TOKEN and DT_STRING_UPPER_TOKEN

To be able to get a tokenize DT string without the quotes. Deprecate
also DT_ENUM_TOKEN and DT_ENUM_UPPER_TOKEN.

Signed-off-by: Carlo Caione <[email protected]>

reserved-memory: Introduce support for reserved-memory node

Introduce a set of header files to be able to define and declare
sections and regions in the linker script. Introduce also DT helpers to
retrieve data back.

Signed-off-by: Carlo Caione <[email protected]>

samples: reserved_memory: Introduce sample application

Introduce sample application to test reserved-memory helpers.

Signed-off-by: Carlo Caione <[email protected]>

drivers: gpio: add new driver for STMPE1600 gpio expander

The STMPE1600 is an I2C based GPIO expander. This initial patch
only supports reading from/writing to the pins on the STMPE1600,
and there is currently no support for interrupts.

Signed-off-by: Titouan Christophe <[email protected]>

drivers: i2c: fix timing and stop bit

Current impĺementation fails due to missing stop bit
when reading data. This fixes it and refactor the implementation
by adding k_busy_wait when waiting I2C bus completion.

Also, this implementation is based on esp-idf v3.0.
It will be refactored based on latest esp-idf v4.3 using proper
low level calls.

Signed-off-by: Sylvio Alves <[email protected]>

Fixes #34015

west.yml: hal_stm32: stm32cube/common_ll: Update vs last Cube update

Update hal_stm32 module to integrate latest version
of the stm32cube/common_ll headers.

Signed-off-by: Erwan Gouriou <[email protected]>

dts: bindings: sx12xx: add ST stm32wl-subghz-radio node

Add a dts node for st,stm32wl-subghz-radio. The device is integrated in
STM32WL series SoCs, and based on the sx1262, but it does not use any
gpio as all the necessary signals are internally connected to various
SoC units.

To account for that, make the redundant gpio optional in the template
files, but mark them as required in the sx1261 and sx1262 definitions,
to match with what's used in the driver.

Signed-off-by: Fabio Baltieri <[email protected]>

drivers: spi_ll_stm32: add SUBGHZSPI support

This adds support for controlling the SUBGHZSPI NSS line in STM32WL
devices. This is a special dedicated SPI port only connected to the
radio device internally, chip select happens through a bit in the PWR
module. Adding a special dt-property to identify the port, it all gets
built out on non-WL devices.

Deduplicate the existing dts bindings in the process, and add the new
one for the special spi with the new property.

Signed-off-by: Fabio Baltieri <[email protected]>

drivers: sx126x: refactor few functions for stm32wl support

Move few functions around in preparation of adding the STM32WL variant
of the driver.

Signed-off-by: Fabio Baltieri <[email protected]>

drivers: sx126x_standalone: convert to gpio_dt_spec APIs

Convert the standalone part of the sx126x driver to the new gpio_dt_spec
APIs. This allows moving the specific GPIOs in that part of the driver
and out of struct sx126x_data.

Signed-off-by: Fabio Baltieri <[email protected]>

drivers: sx126x: add support for the stm32wl chip

Add support for the STM32WL integrated radio, based on the sx1262. The
STM32WL implementation does not use any GPIO, and the signals are routed
to other units of the SoC and accessed with the ST HAL.

Signed-off-by: Fabio Baltieri <[email protected]>

dts: stm32wl: define a subghz-spi radio node

Add a device node for the subghz radio in stm32wl.dtsi. The radio is
present in all chips of the series, so having the node there with the
common properties simplifies the board dts files.

Signed-off-by: Fabio Baltieri <[email protected]>

boards: nucleo_wl55jc: add lora support

Enable the subghz radio for the lora samples in nucleo_wl55jc.

Signed-off-by: Fabio Baltieri <[email protected]>

boards: lora_e5_dev_board: add lora support

Define the subghz radio node in the module dtsi file, with the internal
RF switch connection and TCXO setting, and point at it from the
corresponding dev board file.

Signed-off-by: Fabio Baltieri <[email protected]>

samples: lora, class_a: allow building on nucleo_wl55jc

Add nucleo_wl55jc to platform_allow for lora send/receive and class_a
samples. The board has a variation of the sx1262 driver, this should
allow to build test that code path.

Fix the existing config as well to specify the platforms on a single
line, as currently only the last entry is considered.

Signed-off-by: Fabio Baltieri <[email protected]>

Bluetooth: Controller: nRF5: Use conservative Tx-Rx turnaround timing

Use a conservative turnaround time of 150us covering slower
nRF51 and faster nRF52 CPU that influence the turnaround
timing.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: controller: Extended/Periodic Advertising time reservations

Add Extended and Periodic Advertising radio event time
reservations.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Refactor out advertising time calculations

Refactor out advertising time calculations so that it can be
reused when PDU length is updated as part of advertising
data and scan response data updates.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Legacy advertising time reservation

Implementation to update legacy advertising time
reservations when advertising and scan response data are
updated.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Refactor out Extended Advertising time calc

Refactor out Extended Advertising time calculations so that
it can be reused when PDU length is updated as part of
advertising data and scan response data updates.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Update DID when scan response data removed

Update DID value when scan response data is remove, length
set to 0.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Export primary adv channel event time calc

Export the function calculating the primary channel
advertising event time reservation, so that Extended
Advertising implementation can reuse it.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Extended advertising time reservation

Implementation to update Extended Advertising time
reservations when advertising and scan response data are
updated.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Refactor out Periodic Advertising time calc

Refactor out Periodic Advertising time calculations so that
it can be reused when PDU length is updated as part of
advertising data updates.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Disallow Periodic Adv Enable if already enabled

Add check for already enabled and started Periodic
Advertising when HCI LE Set Periodic Advertising Parameters
command is called.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Periodic advertising time reservation

Implementation to update Periodic Advertising time
reservations when advertising data and/or CTE length is
updated.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Fix Extended and Periodic Coded PHY time

Fix Extended and Periodic Coded PHY time reservation. The
define earlier used does not have calculations for Coded
PHY.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Use BT_HCI_ERR_SUCCESS return and other changes

Apply suggestions from code review, and change to using
BT_HCI_ERR_SUCCESS instead of returning 0.

Co-authored-by: Piotr Pryga <[email protected]>
Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

Bluetooth: Controller: Refactor Periodic Advertising time update

Refactor Periodic Advertising time update function to use
caller supplied Periodic Advertising PDU to calculate the
time reservations.

Signed-off-by: Vinayak Kariappa Chettimada <[email protected]>

MAINTAINER: remove jocelyn-li from collaborat…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants