Commit graph

85,247 commits

Author SHA1 Message Date
Maureen Helm
fd204f31d4 samples: rtio: Add sensor batch processing sample application
Adds a new sample application that demonstrates using the RTIO subsystem
to read periodic sensor data directly into buffers allocated by the
application, asynchronously process batches of data with an algorithm,
and recycle buffers back for reading additional sensor data.

The sensor iodev in this application is an timer-driven device that
executes one read request per timer period. It doesn't actually send any
transactions to a real I2C/SPI bus or read any real data into the
application-provided buffers. This timer-driven behavior mimics how a
real sensor periodically triggers a GPIO interrupt when new data is
ready.

The sensor iodev currently uses an internal message queue to store
pending requests from the time they are submitted until the next timer
expiration. At least one pending request needs to be stored by the iodev
to ensure that it has a buffer available to read data into. However,
any more than that should probably be handled by the application, since
it's the application that determines how often it can submit new
requests and therefore how deep the queue needs to be.

The sensor iodev is implemented to support multiple instances with
devicetree, but additional work remains to enable and use more than one
in the application.

Tested on native_posix and frdm_k64f.

Signed-off-by: Maureen Helm <maureen.helm@intel.com>
2022-06-28 13:53:13 -04:00
Tom Burdick
121462b129 rtio: Low (Memory) Cost Concurrent scheduler
Schedules I/O chains in the same order as they arrive providing a fixed
amount of concurrency. The low memory cost comes at the cost of some
computational cost that is likely to be acceptable with small amounts
of concurrency.

The code cost is about 4x higher than the simple linear executor
which isn't entirely unexpected as the logic requirements are quite a bit
more than doing the next thing in the queue.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2022-06-28 13:53:13 -04:00
Tom Burdick
3d2ead38cb rtio: Real-Time Input/Output Stream
A DMA friendly Stream API for zephyr. Based on ideas from io_uring
and iio, a queue based API for I/O operations.

Provides a pair of fixed length ringbuffer backed queues for submitting
I/O requests and recieving I/O completions. The requests may be chained
together to ensure the next operation does not start until the current
one is complete.

Requests target an abstract rtio_iodev which is expected to wrap all
the hardware particulars of how to perform the operation. For example
with a SPI bus device, a description of what a read, and write mean
can be decided by the iodev wrapping a particular device
hanging off of a SPI controller.

The queue pair are submitted to an executor which may be a simple
inplace looping executor done in the callers execution context
(thread/stack) but other executors are expected. A threadpool executor
might for example allow for concurrent request chains to execute in
parallel. A DMA executor, in conjunction with DMA aware iodevs
would allow for hardware offloading of operations going so far as to
schedule with priority using hardware arbitration.

Both the iodev and executor are definable by a particular
SoC, meaning they can work in conjuction to perform IO operations
using a particular DMA controller or methodology if desired.

The application decides entirely how large the queues are, where
the buffers to read/write come from (some executors
may have particular demands!), and which executor to submit
requests to.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2022-06-28 13:53:13 -04:00
Eugene Cohen
2656113190 tracing: add additional user tracing thread calls
Add additional user tracing calls for thread states, names
and priorities.

add the following user tracing calls:

sys_trace_thread_create_user
sys_trace_thread_abort_user
sys_trace_thread_suspend_user
sys_trace_thread_resume_user
sys_trace_thread_name_set_user
sys_trace_thread_info_user
sys_trace_thread_priority_set_user
sys_trace_thread_sched_ready_user
sys_trace_thread_pend_user

Signed-off-by: Eugene Cohen <quic_egmc@quicinc.com>
2022-06-28 13:52:21 -04:00
Andrei Emeltchenko
d85db8b254 boards: ehl_crb: Add llvm to supported toolchains
Adding llvm allows to use twister testing.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
2022-06-28 13:50:19 -04:00
Reto Schneider
19b241a321 settings: Remove outdated comment
Starting with Zephyr 2.1, the back-end must filter out all old entities
and call the callback with only the newest entity.

Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com>
2022-06-28 18:25:24 +02:00
Aymeric Aillet
9a7040303a drivers: clock: rcar: Rename global includes file
Rename r-car clock driver global include file
in order to match other files names.

Signed-off-by: Aymeric Aillet <aymeric.aillet@iot.bzh>
2022-06-28 18:11:44 +02:00
Aymeric Aillet
14ff2b1f88 drivers: clock: rcar: Deploy a driver for each soc
This commit rewrite renesas R-Car clock driver in order
to be able to support any new SoC easier.

This work is so creating a clock driver per soc alongside a
common driver for all reneasas r-car boars.

- drivers: create a driver per soc
  - create a common driver
  - create a common header used by soc & common driver
  - create a soc specific driver calling for common driver

- dts: use new compatible
  - use old yaml as common yaml
  - create a new "child" yaml to define the new compatible field
  - change compatible in device tree

As in Linux, the driver can support both r8a77951 and r8a77950
SoC's so we decided to name the new driver as in Linux with Zephyr
prefix : "clock_control_r8a7795_cpg_mssr.c".

Signed-off-by: Aymeric Aillet <aymeric.aillet@iot.bzh>
2022-06-28 18:11:44 +02:00
Aymeric Aillet
d8f66b7343 dts: rcar: Rework clock definition
This commit is reworking clock definition in
order to match linux filetree and definition
as much as possible.

- dt-bindings: rework renesas clocks dt-bindings
  - regroup renesas related dt-bindings in a folder
  - rename renesas rcar common dt-binding to match linux name
  - add soc specific dt-binding matching linux name
  - soc dt-bindings are defining clocks matching linux names

- dts: use new clocks names
  - move clocks definitions in SoC layer for each core clock entry

- driver: use new clocks names

As seen in this commit, we are declaring clocks for "R8A7795" SoC
to match linux names.
Linux is not declaring "R8A77951" SoC specific files because
its also supporting the first H3 SoC version numbered "R8A77950".

Signed-off-by: Aymeric Aillet <aymeric.aillet@iot.bzh>
2022-06-28 18:11:44 +02:00
Julien D'Ascenzio
fdf5dc384d usb: cdc_acm: fix bug on transmission
In the function tx_work_handler, a pointer to ring buffer data is given
to usb_transfer then the ring_buf_get_finish is called. So, the data is
mark as read (by ring_buf_get_finish) while the data are not yet
transferred to usb. If later a user send data, the pointer hold by usb
stack could be rewrite.

Signed-off-by: Julien D'Ascenzio <julien.dascenzio@paratronic.fr>
2022-06-28 16:58:51 +02:00
Jeppe Odgaard
f49cbc98f9 samples: drivers: led_ws2812: use compatible based filter
Replace 'platform_allow' with 'filter' based on ws2812 compatible
being enabled. This will allow, for example, to run the sample on
mimxrt1050_evk and mimxrt1050_evk_qspi boards.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2022-06-28 16:50:26 +02:00
Jeppe Odgaard
33f942a887 samples: drivers: led_ws2812: add mimxrt1050 boards
Allow mimxrt1050_evk and mimxrt1050_evk_qspi boards to use ws2812.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2022-06-28 16:50:26 +02:00
Jeppe Odgaard
8d71e8f5de drivers: led_strip: ws2812: allow settings cpol and cpha
Some boards require settings cpol and/or cpha.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>

Fixes https://github.com/zephyrproject-rtos/zephyr/issues/44980
2022-06-28 16:50:26 +02:00
Gerard Marull-Paretas
88f9039747 drivers: pwm: b91: fix non-local headers include
pwm.h and clock.h are HAL headers, so use <> instead of "" (for locals).

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 16:17:46 +02:00
Gerard Marull-Paretas
4324974281 drivers: pwm: b91: fix multi-instance support
Driver was in a weird state: it made use of
DT_INST_FOREACH_STATUS_OKAY, however, it had an assertion to support a
single instance and used instance 0 properties.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 16:17:46 +02:00
Archie Atkinson
6cd8ef479f doc: change key properties from italic to bold
This is to keep it inline with the reset of the kernel docs

Signed-off-by: Archie Atkinson <archie.atkinson@chiaro.co.uk>
2022-06-28 16:17:32 +02:00
Aleksandar Markovic
e36fccbbf9 doc: Reword and reformat a sentence on review time
Move the sentence to the end of the section on labels applicable to
PRs only, reword it and convert to a note, indicating that the note
is for all labels in this section.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
641d2285b8 doc: Enhance subsection on "Security Review" label
Sync the text of description with what is seen in Github.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
4cdbdefb6d doc: Enhance subsection on "Maintainer" label
Sync the text of description with what is seen in Github.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
6e975769dd doc: Enhance subsection on "Hotfix" label
Sync the text of description with what is seen in Github.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
0836f71d3c doc: Enhance subsection on "Stable API Change" label
Remove part that it is not appropriate.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
60caee3a2f doc: Enhance description on "area: *" label
Use full label names for examples in the description, and other minor
enhancements.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
35e021d855 doc: Split and enhance subsections on "dev-review" and "TSC" labels
Split the explanation on dev-review and TSC labels into two separate ones,
and slightly reword both. For both, amend corresponding link to point to
the more relevant place in the online page on Zephyr meetings. Add
explanation for acronym "TSC".

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
3f20163cdd doc: Remove reference to now non-existant ext subdirectory
Directory <Zephyr-root>/ext does not exist anymore. Remove the
reference to it from the documentation.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
ada4195834 doc: Move subsection on "Stale" label to the right place
Label "Stale" is used for both issues and pull requests. It is currenly
listed as applicaple to pull requests only, however. Move it to the
right place.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
02040834d9 doc: Fix label names to be in sync with Github label names
Some label names in the documentation do not match with what is
seen in Github interface. Fix it by syncing with Github.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Aleksandar Markovic
3f1e43b9c7 doc: Rearrange content of section "Labeling issues and pull requests"
Mostly due to limited support for tables in rst format, information on
labels used for Zephyr issues and pull requests in Github is hard to
navigate and is visually not pleasing. Rearange the content of the
section so that bullets are mainly utilized rather than tables. Format
label names as 'emphasis', rather that 'monospace' (which should be
used primarily for code snippets, and Github labels are not code).
Also, group the information according to applicability (taking into
account if a label is applicable to:

  * issues only;
  * pull requests only;
  * both issues and pull requests.

Label names and decriptions are otherwise left 'as is' in this commit.

Signed-off-by: Aleksandar Markovic <aleksandar.markovic.sa@gmail.com>
2022-06-28 15:55:21 +02:00
Gerard Marull-Paretas
166d013311 modules: lvgl: disable for CPU_CORTEX_M0/M0PLUS
There is a compiler bug in the current Zephyr SDK (GCC 10.3.0) that
prevents using LVGL on ARM Cortex M0/M0+. Disable LVGL on such CPU until
the next SDK is deployed (GCC 12.1), as the issues does not appear
anymore.

Ref. https://github.com/lvgl/lvgl/issues/3425

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
ccca2aa81b boards: arm: bl5340_dvk: enable SPI if CONFIG_DISPLAY=y
ILI9341 display requires SPI bus, enable it if CONFIG_DISPLAY=y

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
69fc9a3d0a boards: esp_wrover_kit: enable SPI if CONFIG_DISPLAY=y
If we enable DISPLAY=y, ILI9341 will be selected automatically if all of
its dependencies are met as well (SPI), let's add this to the board
defconfig.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
aeb7475920 samples: display: lvgl: add min_flash/min_ram
LVGL eats a considerable amount of flash, so tests may fail on platforms
that meet all requirements but that have a low amount of flash, e.g.
nucleo_g071rb. Set min_flash for all cases to 250K (result of some quick
experimentation). Also update minimum ram to exclude platforms that
cannot run Zephyr + LVGL (e.g. those with just 16K).

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
062e2998b4 samples: display: lvgl: filter by zephyr,display chosen
Sample can be built on any board that defines a zephyr,display and has
it enabled.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
df7c156996 samples: display: lvgl: adjust harness field
'display' harness doesn't exist, so replace it with 'none' to make
things more clear. It is required so that test is not run e.g. on CI,
test would timeout because the GUI is left ON forever.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Gerard Marull-Paretas
d87a37fd76 samples: display: lvgl: remove extra samples
Simplify sample.yaml by just adding a single test case. In future
commits, test case will be refined to be based on DT filters so that it
is made more generic.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-06-28 15:53:10 +02:00
Steffen Jahnke
396a751549 boards: Add PAN1780 evaluation board
The PAN1780 evaluation board is a development tool for the nRF52840
from Nordic Semiconductor.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
a572b386d8 boards: Add PAN1781 evaluation board
The PAN1781 evaluation board is a development tool for the nRF52820
from Nordic Semiconductor.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
04cc9cb6c9 boards: Add PAN1782 evaluation board
The PAN1782 evaluation board is a development tool for the nRF52833
from Nordic Semiconductor.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
6ade2a169c boards: Add PAN1770 evaluation board
The PAN1770 evaluation board is a development tool for the nRF52840
from Nordic Semiconductor.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
185e723ccb boards: Add board config defines to adc test
The test_adc.c still have hardcoded information on a board basis,
that need to be added manually.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
612b9247e4 boards: Exclude boards from shield samples
Some of the Panasonic's evaluation boards have limited amount of pins.
So not all arduino pins can be occupied and not all shields are
compatible.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Steffen Jahnke
6968ffb851 boards: Add Panasonic header gpio binding
Panasonic's reduced Arduino header is based on the Arduino UNO layout.
The main difference is that some pins are not available due to the
lack of pins on the Panasonic module.

Signed-off-by: Steffen Jahnke <steffen.jahnke@eu.panasonic.com>
2022-06-28 15:51:55 +02:00
Kumar Gala
97f0570c67 drivers: sensor: vcnl4040: Update driver to use gpio_dt_spec
Move driver to use gpio_dt_spec for GPIO interrupt handling.

Added check to vcnl4040_trigger_set to handle case of trigger
mode enabled but the devicetree doesn't have an int_gpios property.

Also, moved up the checking/handling of gpio port device in
vcnl4040_trigger_init so that if we error out its before we
setup any threads and such.

Signed-off-by: Kumar Gala <galak@kernel.org>
2022-06-28 08:22:24 -05:00
Kumar Gala
a31c6070de drivers: sensor: vcnl4040: Update driver to use i2c_dt_spec
Move driver to use i2c_dt_spec for I2C bus access.

Signed-off-by: Kumar Gala <galak@kernel.org>
2022-06-28 08:22:24 -05:00
Kumar Gala
14d0bd677e samples: vcnl4040: Convert sample to use DEVICE_DT_GET_ONE
Move to use DEVICE_DT_GET_ONE instead of device_get_binding as we
work on phasing out use of DTS 'label' property.

Signed-off-by: Kumar Gala <galak@kernel.org>
2022-06-28 08:22:24 -05:00
Anas Nashif
c56ceacc9f tracing: fix duplicate systemview id
Fix duplicate ID for systemview. Remove k_timer_user_data_set as it is
not being tracing and uses a duplicate ID like k_sem_reset.

Fixes #46541

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-06-28 14:51:40 +02:00
Emil Gydesen
2e145a3109 doc: Bluetooth: Upstream existing LE Audio shell rsts
Upstream the LE Audio shell rsts that briefly describe
how some of the LE Audio modules work.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2022-06-28 14:50:11 +02:00
Khor Swee Aun
04b7e8ed15 drivers: serial: uart_altera_jtag: Fix wrong register address used
Fix wrong control register address used in uart_altera_jtag_init
function which caused memory corruption.

Signed-off-by: Khor Swee Aun <swee.aun.khor@intel.com>
2022-06-28 07:34:29 -04:00
Carlo Caione
f943ae1156 arch: Use a more sane ALIGN value
By default ARCH_IRQ_VECTOR_TABLE_ALIGN and ARCH_SW_ISR_TABLE_ALIGN are
set to 0. Use a more proper value.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2022-06-28 12:29:42 +02:00
Carlo Caione
c817b2661f test: arm_irq_vector_table: Fix when !CONFIG_GEN_IRQ_VECTOR_TABLE
This test is based on the wrong assumption that the IRQ vector table
symbols are always placed by the linker script also when
CONFIG_GEN_IRQ_VECTOR_TABLE is not actually set.

This is of course broken with the reworked mechanism of the IRQ vector
table placement.

Fix the test by reintroducing the old behaviour by forcefully
reinstating the symbols in the linker script.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2022-06-28 12:29:42 +02:00
Carlo Caione
219d5b5adb arm: vector_table: Automatically place the IRQ vector table
Instead of using a custom linker script, rely on the automatic placement
of the IRQ vector table.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2022-06-28 12:29:42 +02:00