Commit graph

45470 commits

Author SHA1 Message Date
Vinayak Kariappa Chettimada
d0f7961283 tests: Bluetooth: init: Asserts disabled build
Disable assert checks, to build a smaller firmware and also
to uncover any unused variables and arguments.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2020-10-29 14:31:38 +02:00
Joakim Andersson
5e999a3081 Bluetooth: ATT: Handle encrypt change event unrelated to current req
Fix issue where the encrypt change has an error code, but the
encrypt change request was unrelated to the current ATT request.

This lead to the current ATT transaction being interpreted as finished
an the ATT client would proceed with the next ATT request, which would
fail since the ATT client is now violating the ATT single transaction
rule.

Updated similar if statement checking for the opposite to improve
readability.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2020-10-29 14:28:40 +02:00
Lingao Meng
627ee1125b Bluetooth: Mesh: Remove bt_mesh_net_start
Move `bt_mesh_net_start` functionality to `bt_mesh_start`.

Signed-off-by: Lingao Meng <mengabc1086@gmail.com>
2020-10-29 14:17:09 +02:00
Trond Einar Snekvik
af5bd00d1c Bluetooth: Mesh: Move labels to transport
Moves the virtual address labels to the transport layer, disconnecting
them from the configuration server.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2020-10-29 14:14:43 +02:00
YanBiao Hao
c9be68532c Bluetooth: Mesh: Add Config Client API
The api is used to reset a node (other than a Provisioner) and
remove it from the network

Signed-off-by: YanBiao Hao <haoyanbiao@xiaomi.com>
2020-10-29 14:13:36 +02:00
Trond Einar Snekvik
bf58c4e3a8 Bluetooth: Mesh: light_vnd sample: Remove button text
Removes text from the readme of the onoff_level_lighting_vnd_app
claiming buttons control the LEDs before provisioning, as it's not
accurate.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
2020-10-29 14:12:05 +02:00
Lingao Meng
1e9bd13c99 Bluetooth: Mesh: Fixes Relay to frnd_cred message
If low power node publish with unicast address other
than friend address, the friend node should relayed
this message to all network interface.

When Proxy feature enabled, message from gatt bearer should
relay to adv bearer even relay feature disabled.

Fixes: #29544

Signed-off-by: Lingao Meng <mengabc1086@gmail.com>
2020-10-29 14:07:58 +02:00
Andy Ross
35ca8c97ce boards/qemu_cortex_r5: Adjust clock rates
This qemu device is REALLY slow in icount mode.  When I run it outside
of icount and watch the simulator advance the clock device in real
time, it looks to me like it expects the counter to be running at ~125
MHz.  But it's set to a 12 MHz clock rate in its config, and trying to
use a 1000 Hz tick rate.

At those settings (and with the shift=3 argument to icount), I'm
measuring about 10k cycles to handle a minimal timer interrupt.  But
if you do the math, that comes to 12k cycles per tick.  The interrupt
takes as long as a tick!  That would never work, except for the fact
that the timer driver on this device cheats and doesn't try to align
to ticks (basically ignoring all the lost time).  And even that breaks
on the scheduler_api test (which does both tick and cycle math and
tries to compare them) when it's fixed to properly align itself.

One solution might be to set the clock rate to what qemu appears to
believe is the correct 125 MHz value.  And that causes the test to
complete, but all tests now take ~10 minutes of real time because the
simulator is so slow!

So just make up some clock rates, it's a simulated platform after all.
I chose 5 MHz cycle time and 100 Hz tick rate, which on my device is
about half of "real" speed and very acceptable.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-10-29 07:39:39 -04:00
Andy Ross
0875740a34 tests/kernel/schedule_api: Fix slop in timeslice test
This test is a little subtle: it wants to spawn three threads to run
and be switched out by a timeslice interrupt.  And it wants to consume
half a time slice itself before it starts running.  And, because
timeslicing runs out of the same tick framework in the timer driver,
it needs to align to the start of a tick before the process starts.
And further: it does its own time math not in ticks but in timer
cycles, so it's quite sensitive to slop.

But it's "synchronize to tick boundary" code was actually
synchronizing to a CYCLE boundary, which is just wrong.  And it was
doing this in the wrong order.  It was resetting the timeslice first
and then synchronizing to a tick by spinning, which means that the
test was always going to begin as much as a tick late.  Do the tick
synchronization (via a sleep) first.

Finally, the manager thread that was spawning the new threads lives at
the same priority as the highest priority child threads, which means
it can potentitially wake up on the semaphores that they are giving in
the middle of the test and consume CPU unexpectedly.  Make sure it's
sleeping for the duration.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-10-29 07:39:39 -04:00
Anas Nashif
b7d30545e0 manifest: mipi-sys-t: move platform.h
This new revision removes platform.h and uses one from the zephyr tree.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2020-10-29 07:23:40 -04:00
Anas Nashif
8873ade781 logging: mipi-sys-t: move platform.h to main tree
Move the platform.h from the module to the zephyr tree. This file is
zephyr sepcific and belongs in the zephyr tree.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2020-10-29 07:23:40 -04:00
Erwan Gouriou
007677e676 boards: stm32: Move SDMMC pin configuration to device tree
Update boards supporting SDMMC to use dts based pinctrl config.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-29 09:21:27 +01:00
Erwan Gouriou
4c9925bcd3 dts/bindings/mmc: stm32: Add pinctrl-0 support
Update binding to support pinctrl-0 property.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-29 09:21:27 +01:00
Erwan Gouriou
b9a4e9b3b7 subsys/disk: stm32 sdmmc: Add support for device tree pinctrl
Add required code to support pinctrl setup base don device tree.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-29 09:21:27 +01:00
Andrew Boie
f4a4583e13 tests: sys_sem: add k_thread_join() calls
There is a race condition between the child threads
exiting, and the child threads getting re-used in the
next scenario. This reproduces more often on SMP systems.

Close the race by joining on the child threads before
exiting any test scenario.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2020-10-28 10:29:49 -07:00
Andrew Boie
edc5e31d6b x86_64: fix RBX clobber in nested IRQ case
In the code path for nested interrupts, we are not saving
RBX, yet the assembly code is using it as a storage location
for the ISR.

Use RAX. It is backed up in both the nested and non-nested
cases, and the ASM code is not currently using it at that
point.

Fixes: #29594

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2020-10-28 10:29:32 -07:00
Watson Zeng
3332e15920 arc: defconfig: remove SYSTEM_CLOCK_SLOPPY_IDLE option
As discuss in PR #28805, sloppy idle function still has some bug and
barely used, so we can remove it safely.

Signed-off-by: Watson Zeng <zhiwei@synopsys.com>
2020-10-28 12:21:10 -05:00
Ehud Naim
c58c8b1257 net: buf: change avail_count variable to atomic type
using CONFIG_NET_BUF_POOL_USAGE monitor avail_count,
this variable should be protect.
Protecting it by using atomic variable

Signed-off-by: Ehud Naim <ehudn@marvell.com>
2020-10-28 18:45:11 +02:00
Maureen Helm
2edfb89db8 boards: arm: Use DT_SIZE macros for nxp external memories
Refactors nxp i.mx, kinetis, and lpc board-level device trees to use
DT_SIZE_K and DT_SIZE_M macros to define external memory sizes. This is
self documenting and easier to read.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2020-10-28 11:13:07 -05:00
Maureen Helm
25ddc4e0f5 dts: arm: Use DT_SIZE macros for nxp internal memories
Refactors nxp i.mx, kinetis, and lpc soc-level device trees to use
DT_SIZE_K and DT_SIZE_M macros to define internal memory sizes. This is
self documenting and easier to read.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2020-10-28 11:13:07 -05:00
Maureen Helm
2ea71a9f80 soc: arm: Enable mcux flexcan driver on i.mx rt socs
Enables the mcux flexcan driver on i.mx rt socs by default when
CONFIG_CAN=y.

This fixes a runtime failure in tests/subsys/canbus/isotp/conformance on
the mimxrt1064_evk board:

Assertion failed at WEST_TOPDIR/zephyr/tests/subsys/canbus/isotp/conformance/src/main.c:883: test_main: (can_dev is NULL)
    CAN device not not found

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2020-10-28 11:10:27 -05:00
Maximilian Bachmann
00f9bc6582 include: mem_domain use C linkage
add extern C when C++ is used to treat the code as C

Signed-off-by: Maximilian Bachmann <m.bachmann@acontis.com>
2020-10-28 17:05:43 +01:00
Guillaume Lager
de1b7e48d1 eeprom: at2x: Add support for at24cXX
Those devices can use several I2C address in order to address more
than 256 Bytes using 8bit addressing. Also several physical component
can be used as a contiguous memory.

Signed-off-by: Guillaume Lager <guillaume.lager@gmail.com>
2020-10-28 17:03:47 +01:00
Emil Obalski
33fdaac74d drivers: usb: Start Nordic driver workqueue at USB init.
This patch makes the initialization of workqueue earlier
for Nordic driver. Without this change Nordic devices
will fail tests/subsys/usb/device test as it is resetting
USB and by that will try to start already started workqueue
thread. This may lead to Zephyr fatal error.

Signed-off-by: Emil Obalski <emil.obalski@nordicsemi.no>
2020-10-28 17:02:22 +01:00
Paul Sokolovsky
565228516c libc: minimal: Implement abort().
abort() is an important runtime function, oftentimes used to signal
abnormal execution conditions in generic applications. Worse, they
may be used under such circumstances in e.g. compiler support
libraries, in which case lack of implementation of this function
will lead to link error.

Fixes: #29541

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2020-10-28 17:02:16 +01:00
iva kik
687f799b7f kernel/queue: fix queue append/get race
k_queue_append and k_queue_alloc_append are in a race
    condition.

    Scenario:
    Using either of the above mentioned functions from a
    preemptive context, can lead to the element being
    appended to the queue to be lost. The element loss happens
    when the k_queue_append is interrupted at a critical point,
    when the list only contains one element and k_queue_get is
    called, before the k_queue_append is allowed to complete.

    Fix:
    Move sys_sflist_peek_tail inside queue_insert(). Add additional
    bool paramenter to queue_insert(), to indicate append/prepend
    operation.
    Fixes #29257

Signed-off-by: iva kik <megatheriumiva@gmail.com>
2020-10-28 17:01:41 +01:00
Simon Guinot
6499ecb179 samples: drivers: add test sample for the PWM LED driver
This sample allows to test the led-pwm driver. The first "pwm-leds"
compatible device instance found in DT is used. For each LEDs attached
to this device (child nodes) the same test pattern (described below) is
executed. The LED API functions are used to control the LEDs.

Test pattern:

For each PWM LEDs (one after the other):

- turn on
- turn off
- increase the brightness gradually up to the maximum level
- blink (0.1 sec on, 0.1 sec off)
- blink (1 sec on, 1 sec off)
- turn off

Signed-off-by: Simon Guinot <simon.guinot@seagate.com>
2020-10-28 10:44:46 -05:00
Simon Guinot
525a588db4 drivers: led: add driver for PWM LEDs
This driver supports the PWM driven LEDs. The devices are created from
the DT nodes with a compatible property matching "pwm-leds". For each
child node a LED is created and its "pwms" phandle's node is used to
retrieve the PWM configuration: channel, period and flags. If some of
this properties are missing (it is the case for some PWM controllers),
then reasonable default values are used.

This driver implements the following LED API methods:

- led_on
- led_off
- led_blink
- led_set_brightness

Signed-off-by: Simon Guinot <simon.guinot@seagate.com>
2020-10-28 10:44:46 -05:00
Erwan Gouriou
74b0b41167 boards: stm32: Convert I2S users to dt based pinctrl config
I2S signals should now be configured using dt.

For nucleo_f411re, I2S pins were configured using SPI definitions
that pulled the same strings behind the scene as I2S would have done.
This being said, only CK and SD pins should be needed and were
documented, so I only left those.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-28 09:29:56 -05:00
Erwan Gouriou
344ff12c37 drivers/i2s: stm32: Convert to dt based pinctrl configuration
Convert STM32 I2S driver to dt based pinctrl configuration

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-28 09:29:56 -05:00
Erwan Gouriou
9f6ffccda3 dts/bindings/i2s: stm32: Add pinctrl-0 property
Aim is to enable dt based pinctrl on stm32 i2s driver

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2020-10-28 09:29:56 -05:00
Alexandre Bourdiol
d9798b9022 modules: Delete switches USE_STM32_HAL_RCC and USE_STM32_HAL_RCC_EX
With STM32Cube updates
https://github.com/zephyrproject-rtos/hal_stm32/pull/75
'..._hal_rcc.c' and '..._hal_rcc_ex.c' are now systematically
compiled, due to more and more dependencies from HAL IP on rcc.
So USE_STM32_HAL_RCC and USE_STM32_HAL_RCC_EX becomes useless.

Signed-off-by: Alexandre Bourdiol <alexandre.bourdiol@st.com>
2020-10-28 09:28:15 -05:00
Alexandre Bourdiol
65d629a8cb west.yml: update revision modules/hal/stm32/hal_stm32
Point to PR 75 of modules/hal/stm32/hal_stm32
stm32cube: update stm32f0 to version V1.11.1
stm32cube: update stm32f1 to version V1.8.2
stm32cube: update stm32f2 to version V1.9.1
stm32cube: update stm32f3 to version V1.11.1
stm32cube: update stm32f4 to version V1.25.1
stm32cube: update stm32f7 to version V1.16.0
stm32cube: update stm32g4 to version V1.3.0
stm32cube: update stm32h7 to version V1.8.0
stm32cube: update stm32l0 to version V1.11.3
stm32cube: update stm32l4 to version V1.16.0
stm32cube: update stm32l5 to version V1.3.1
stm32cube: update stm32wb to version V1.9.0

Signed-off-by: Alexandre Bourdiol <alexandre.bourdiol@st.com>
2020-10-28 09:28:15 -05:00
Peter A. Bigot
c2bac29697 boards: thingy52_nrf52832: add nodes for on-board voltage regulators
This board has a multi-level power domain hierarchy where a sensor has
its own power control that is accessed through an external GPIO
peripheral that itself has a power control.

Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2020-10-28 15:22:53 +01:00
Peter A. Bigot
977ec16451 tests: drivers: regulator: add test for fixed regulator
Basic checks on core regulator functions.

Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2020-10-28 15:22:53 +01:00
Peter Bigot
60bc206b77 doc: introduce the regulator driver API
Add a page for the regulator API and introduce it as an experimental
API.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2020-10-28 15:22:53 +01:00
Peter A. Bigot
f951566e56 drivers: regulator: add GPIO-controlled regulator driver
This provides structure for the regulator device hierarchy and a
driver for GPIO-controlled regulators along with its binding.

Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2020-10-28 15:22:53 +01:00
Peter A. Bigot
b7639551ee drivers: add infrastructure for regulator devices
This PR follows Linux in defining devicetree content for generic
voltage and current regulators, and an initial driver API for
controlling them.

A regulator itself may depend on a power source, so it needs to
support the properties that enable that power source.

Signed-off-by: Peter A. Bigot <pab@pabigot.com>
2020-10-28 15:22:53 +01:00
Peter Bigot
6d3859aece devicetree: add properties for power supply control
Provide a common set of properties for various ways of controlling
power:
* supply-gpios for a GPIO specifier acting like a switch
* vin-supply for a reference to a regulator device

Document the behavior expected when these properties are present.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2020-10-28 15:22:53 +01:00
Lingao Meng
5374245dd6 Bluetooth: Mesh: split prov.c into two separate modules
Currently all provisioning procedure into common source
files call `prov.c`, that will not compile separately.

Add `BT_MESH_NODE` to control whether nodes are supported
and device provisioning is supported, this will be used in
provisioner role.

Add more provisioner OOB authentication method.

Signed-off-by: Lingao Meng <mengabc1086@gmail.com>
2020-10-28 12:53:09 +02:00
Emil Hammarstrom
d3a856289b net: offload: fix k_timeout_t translation in net_offload
Previously blocking calls would be translated to
non-blocking calls.

Signed-off-by: Emil Hammarstrom <emil.hammarstrom@assaabloy.com>
2020-10-28 09:30:53 +02:00
Ioannis Glaropoulos
792bec2be8 boards: arm: remove non-existing doc link from partition definitions
In the flash partition definitions for ARM boards,
the link to the legacy partition macros does not
exist any more. The commit cleans up the partition
definition by removing this link.

Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
2020-10-27 15:01:19 -04:00
Eugeniy Paltsev
1ae2b7cad9 doc: add missing setup documentation for ARC MWDT toolchain
ARC MWDT toolchain setup documentation was missing on upstreaming.
Fix that.

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
2020-10-27 16:41:36 +01:00
Simon Glass
1545cebff3 doc: emulator: Add basic documentation
Add some basic documentation for Zephyr emulators. This is expanded
from https://github.com/zephyrproject-rtos/zephyr/issues/27531 and
recent commits.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
f28a98be8c tests: drivers: sensor: Test both I2C and SPI accelerometer
Now that we have a BMI160 driver and emulator pair that support both
I2C and SPI, add a test that runs over both buses.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
20116f0fdf emul: spi: bmi160: Add support for I2C
At present this emulator only supports SPI. Add support for I2C as
well.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
0b1a7d109d drivers: sensor: bmi160: Add support for I2C
At present this driver only supports SPI. Add support for I2C as well,
following the model of BME280.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
f4ef4daa8a emul: spi: bmi160: Prepare to support I2C
At present this driver only supports SPI. Refactor it so that SPI is
just one of the options. This does not change any functionality.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
fa90b5c243 emul: spi: bmi160: Move to top-level directory
This emulator currently only supports SPI. Before making it also
support I2C, move it up a directory to avoid I2C uses missing it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00
Simon Glass
0de655e371 drivers: sensor: bmi160: Prepare to support I2C
At present this driver only supports SPI. Refactor it so that SPI is
just one of the options. This does not change any functionality.

Signed-off-by: Simon Glass <sjg@chromium.org>
2020-10-27 16:41:30 +01:00