Commit graph

15409 commits

Author SHA1 Message Date
Carlo Caione
15e84cbfac dts: Move to 'zephyr,memory-attr'
Move to 'zephyr,memory-attr' and use the newly introduced helpers.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2023-07-25 11:22:10 +02:00
Carlo Caione
7483e43f0c devicetree: Add 'zephyr,memory-attr' and DT helpers
The 'zephyr,memory-region-mpu' property was addede gqas a
convenient way to create and configure MPU regions using information
coming from DT. It has been used a lot since it was introduced so I
guess we can consider it a Zephyr success story ™ .

Unfortunately it has been proved to be a bit limited and with some
important limitations:

1. It was introduced as a property of the compatible
   zephyr,memory-region that is used to create linker regions and
   sections from DT data. This means that we can actually create MPU
   regions only for DT-defined regions and sections.
2. The naming is unfortunate because it is implying that it is used only
   for MPU.
3. It is misplaced being in include/zephyr/linker/devicetree_regions.h
   and still it has nothing to do with the linker at all.
4. It is exporting a function called LINKER_DT_REGION_MPU that again has
   nothing to do with the linker.

Point (1) is also particularly limiting because it is preventing us to
characterize memory regions that are not generated using the
'zephyr,memory-region' compatible, like generic mmio-sram regions.

While we fix all the issues, we also want to extend a bit the range of
usefulness of this property. We are renaming it 'zephyr,memory-attr' and
it is now carrying information about the type of memory the property is
attached to (cacheable, non-cacheable, IO, eXecutable, etc...). The user
can use this property and the DT API coming with it to act on the memory
node it is accompanied by.

We are still providing the DT_MEMORY_ATTR_APPLY() macro that can be used
to create the MPU regions as before, but we are adding also a
DT_MEMORY_ATTR_FOREACH_NODE() macro that can be used to cycle through
the memory nodes and act on those.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2023-07-25 11:22:10 +02:00
Jonathan Rico
0a8bbbda4a Bluetooth: adv: add USE_NRPA advertising option
Allows the application to force the use of an NRPA.

This is applied regardless of any other roles running (ie scanner) or
advertising type.

Signed-off-by: Jonathan Rico <jonathan.rico@nordicsemi.no>
Co-authored-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
2023-07-25 10:47:37 +02:00
Benjamin Cabé
d379542490 bluetooth: iso: doc: Doxygen cleanup
Added several missing brief descriptions and documented some of the
fields guarded by Kconfig options.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-25 10:45:36 +02:00
Benjamin Cabé
e5d07588ae drivers: sdhc: doc: Document sdhc_host_caps
Add Doxygen comments for SD Host controller capability flags.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-25 10:45:20 +02:00
Benjamin Cabé
b88d52e98f bluetooth: doc: Improve sdp.h Doxygen doc
Grouped some defines together, documented service classes and
attributes, and fixed some missing javadoc-style comments.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-25 10:45:05 +02:00
Paul Fagerburg
6199ecba69 cbprintf: use type instead of name in sizeof
Using `arg + 0` in sizeof causes problems with `void *`, so use the
type name instead, but make sure it's at least `sizeof(int)` because
the variadic expects a minimum of `int` size. This allows deleting
the specialization for `void *`, which the linker wasn't choosing
reliably anyway.

Signed-off-by: Paul Fagerburg <pfagerburg@google.com>
2023-07-25 09:16:59 +02:00
Gerard Marull-Paretas
e4c43e4cc9 pm: power-states node needs to be a child of cpus
This again aligns with Linux.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2023-07-25 09:16:14 +02:00
Andrzej Kuros
d6567fc9e2 net: openthread: multiple cca as ieee802154 extensions interface
This commit adds extenstion interface that extends ieee802154_radio.h
New OT-specific capability, transmit mode and configuration parameter
is added.

Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2023-07-25 09:13:41 +02:00
Andrzej Kuros
a04a059ccc net: ieee802154_radio: add attribute getter API
The `attr_get` method is added to the ieee802154_radio to allow
reading of driver specific attributes of given device.

The enum `ieee802154_attr` provides common extension pattern
allowing to extend the attribute set.

Accessor function `ieee802154_radio_attr_get` is provided.

Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2023-07-25 09:13:41 +02:00
Andrzej Kuros
83ad3fdafa net: ieee802154_radio: add extension values
The ieee802154_tx_mode and ieee802154_config_type types are given
values allowing to extend these types elsewhere.

Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2023-07-25 09:13:41 +02:00
Jordan Yates
84016c1cd3 pm: device: add driver init helper
Adds a helper function for initializing devices into the expected power
state, through the devices `pm_device_action_cb_t`. This eliminates code
duplication between the init functions and the PM callback.

The expected device states in order of priority are:
 * No power applied to device, `OFF`
 * `zephyr,pm-device-runtime-auto` enabled, `SUSPEND`
 * Otherwise, `ACTIVE`

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2023-07-25 09:13:16 +02:00
Jordan Yates
bb590b5b6e init: add sub-priority to internal ordering
Add a sub-priority field to `Z_INIT_ENTRY_SECTION`, which is used to
ensure that multiple drivers running at the same init priority still
run in an order that respects their devicetree dependencies.

This is primarily useful when multiple instances of the same device are
instantiated that can depend on each other, for example power domains
and i2c muxes.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2023-07-25 09:13:16 +02:00
Jordan Yates
9b77681473 dts: gen_defines: generate _ORD_STR_SORTABLE
Generate a zero padded variant of `_ORD` that is suitable for use in
linker scripts with the `SORT` property, so that `6` is correctly placed
before `24`, and so on.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2023-07-25 09:13:16 +02:00
Nicolas Pitre
a7b3584745 subsys/zbus: move to timepoint API
Remove sys_clock_timeout_end_calc() usage as well as custom
_zbus_timeout_remainder().

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2023-07-25 09:12:26 +02:00
Nicolas Pitre
531aa5786d drivers: move to timepoint API
Remove sys_clock_timeout_end_calc() usage.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2023-07-25 09:12:26 +02:00
Nicolas Pitre
52e2f83185 kernel/timeout: introduce the timepoint API
This is meant as a substitute for sys_clock_timeout_end_calc()

Current sys_clock_timeout_end_calc() usage opens up many bug
possibilities due to the actual timeout evaluation's open-coded nature.

Issue ##50611 is one example.

- Some users store the returned value in a signed variable, others in
  an unsigned one, making the comparison with UINT64_MAX (corresponding
  to K_FOREVER) wrong in the signed case.

- Some users compute the difference and store that in a signed variable
  to compare against 0 which still doesn't work with K_FOREVER. And when
  this difference is used as a timeout argument then the K_FOREVER
  nature of the timeout is lost.

- Some users complexify their code by special-casing K_NO_WAIT and
  K_FOREVER inline which is bad for both code readability and binary
  size.

Let's introduce a better abstraction to deal with absolute timepoints
with an opaque type to be used with a well-defined API.
The word "timeout" was avoided in the naming on purpose as the timeout
namespace is quite crowded already and it is preferable to make a
distinction between relative time periods (timeouts) and absolute time
values (timepoints).

A few stacks are also adjusted as they were too tight on X86.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2023-07-25 09:12:26 +02:00
Daniel DeGrasse
7fe5ce641a drivers: dma: add DMA driver for NXP PXP engine
The NXP Pixel pipeline engine (PXP) is a 2D DMA engine capable of
accelerating display rotation, color space conversion, and limited
2D blending operations. This DMA driver only supports rotation of a
framebuffer, via a set of custom dma_slot values. Only DMA channel 0
is supported or utilized.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2023-07-25 09:10:52 +02:00
Benedikt Schmidt
44810b190c drivers: pwm: implement MAX31790
Implement a driver for the PWM controller MAX31790. This driver
also implements the RPM mode of the controller, which can
be accessed via setting pwm_flags_t accordingly to macros
defined in the driver specific header.

Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
2023-07-25 09:08:30 +02:00
Christopher Friedt
d7119b889f kernel: dynamic: declare dynamic stubs when disabled
With some of the recent work to disable unnecessary system
calls, there is a scenario where `z_impl_k_thread_stack_free()`
is not defined and an undefined symbol error occurs.

Safety was very concerned that dynamic thread stack code might
touch other code that does not malloc, so add a separate file
for the stack alloc and free stubs.

Signed-off-by: Christopher Friedt <cfriedt@meta.com>
2023-07-24 12:59:43 -04:00
Daniel Leung
90f388e9b2 linker: mark priv_stacks_noinit as NOLOAD
Currently priv_stacks_noinit is being put onto the flash waiting
to be copied into memory at boot. This is a waste of flash space
as priviledge stacks are initialized at runtime. So mark
the linker section as NOLOAD to save some flash space.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2023-07-24 11:08:50 -04:00
Qipeng Zha
078fac77fe i2c: bugfix for new added macro in header file
Fix compile failure with macro of I2C_DEVICE_DT_DEFINE

Signed-off-by: Qipeng Zha <qipeng.zha@intel.com>
2023-07-24 08:58:00 -05:00
Benedikt Schmidt
332850a367 drivers: adc: configurable acquisition time for ADS114s0x
Implement a configurable acquisition time for the ADS114s0x.

Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
2023-07-24 13:21:13 +00:00
Tom Burdick
49a97540dc rtio: Use an atomic completion counter
Rather than looking at the pool of completions for spinning use an
atomic counter of total completions ever done. The relative number of
completions being waited on by rtio_submit may then always be correctly
done.

Prior to this a race was possible, and understood, as
rtio_cqe_consumable was a likely but not guaranteed count of completions.
Sure enough on an SMP system the likely count was ahead of the actual
available completions and a race was caught by the simple test case.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2023-07-24 09:04:43 +00:00
Daniel Leung
343772213a serial: CONFIG_UART_USE_RUNTIME_CONFIGURE on API for cfg funcs
This adds the CONFIG_UART_USE_RUNTIME_CONFIGURE guard to
disable the API function pointers if the kconfig is not enabled.
Both .configure and .config_get should only be usable if runtime
(re-)configuration of UART is needed.

Ifdef guards are added to drivers previously lacking this guard.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2023-07-21 17:46:12 -04:00
Emilio Benavente
e12e026c95 dts: arm: nxp: lpc55s3x: Added DMA Nodes in dts files.
Added dts nodes for DMA support on LPC55S3X devices.

Signed-off-by: Emilio Benavente <emilio.benavente@nxp.com>
2023-07-21 08:58:27 -05:00
Benjamin Cabé
dde023fb8a lib: os: doc: Hashmap documentation fixes
Add missing documentation for SYS_HASHMAP_DEFAULT_ALLOCATOR and
sys_hashmap struct.
Fixed minor type in SYS_HASHMAP_DEFINE_STATIC_ADVANCED doc.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-21 08:54:09 -05:00
Benjamin Cabé
ea1e6b59f5 lib: os: doc: Cleanup doxygen groups
Cleaned up doxygen group for hash_map and hash_map_api
Adding brief/desc to the main group instead of the file to actually
surface them in the documentation

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-21 08:54:09 -05:00
Benjamin Cabé
1539c1c094 lib: os: doc: Show hash implementations in documentation
Added a Doxygen group for Hash implementations

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-21 08:54:09 -05:00
Benjamin Cabé
b5cf5d1f24 lib: os: doc: Show hash functions in documentation
Show hash functions under Hashmap doc entry.
Also fixed minor issue with '.' character ending @brief early.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-21 08:54:09 -05:00
Daniel DeGrasse
85a41ae88a drivers: led: added support for is31fl3733 led driver
Enabled support for is31fl3733 driver. This driver supports
the full LED API, and enables the following features of the is31fl3733:
- individual LED dimming
- individual LED enable/disable
- bulk writes of LED enabled and dimming states
- global LED current limit
- blanking (via custom API)

Signed-off-by: Daniel DeGrasse <daniel@degrasse.com>
2023-07-21 10:51:18 +00:00
Kornel Dulęba
8fc913374f include: util: Add DIV_ROUND_CLOSEST helper
It's similar to DIV_ROUND_UP, but rounds to the nearest integer.
Some basic unit tests were introduced to check that it works as
intended.

Signed-off-by: Kornel Dulęba <mindal@semihalf.com>
2023-07-21 10:49:41 +00:00
Jamie McCrae
ee5c9b2629 mgmt: mcumgr: grp: img_mgmt: Add image data written callback
Adds an optional callback upon image data being written, can be
used for syncing or timeout purposes.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2023-07-20 14:55:46 +00:00
Jamie McCrae
6c541e1af0 mgmt: mcumgr: Add event ID index callback function
Adds a function which gets the callback ID index of a given
event ID.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2023-07-20 14:55:46 +00:00
Benjamin Cabé
779636415c lib: cbprintf: doc: Doxygen cleanup
Fixed a couple typos and added @deprecated tags for deprecated macros.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 16:25:22 +02:00
Jai Arora
82f5db37d2 posix: Changes pthread_equal to regular type function
Patch changes pthread_equal function from static inline to regular
function type

Fix for issue#59942

Signed-off-by: Jai Arora <infolinesoni@gmail.com>
2023-07-20 16:24:16 +02:00
Mulin Chao
f34fff91bc driver: flash: npcx: introduce npcx flash driver
This CL attempts to implement npcx's flash driver instead of the
original one (npcx spi driver plus spi_nor flash driver).

Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
2023-07-20 16:22:47 +02:00
Benjamin Cabé
c3d515755d bluetooth: doc: Fix gap.h Doxygen documentation
Make #defines properly Doxygen-documented, add some named groups, and add a
few missing comments to some #defines.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 10:46:10 +00:00
Benjamin Cabé
9fab241991 bluetooth: doc: Reformat BT_APPEARANCE_* defines
Split the BT_APPEARANCE_* doc on two lines as several lines were
dangerously close to 100-character line limit + some constants were
misaligned.
This makes follow-up commit possible without breaking code formatting
rules.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 10:46:10 +00:00
Benjamin Cabé
abac1bcc1f bluetooth: doc: Move GAP defines to bt_gap
Moved Doxygen documentation under bt_gap group.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 10:46:10 +00:00
Benjamin Cabé
ddcceed7e8 doc: bluetooth: Spell out GAP acronym
For consistency with other groups, spell out GAP

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 10:46:10 +00:00
Jamie McCrae
ecfbabd213 mgmt: mcumgr: Make SMP version 2 to legacy error lookup extensible
Replaces the manual lookup function with a lookup function which
is provided when registering MCUmgr handlers which can be used to
find the function to translate error codes, allowing out of tree
MCUmgr handlers to provide error translation handlers.

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2023-07-20 10:35:14 +00:00
Gerard Marull-Paretas
b3fa2eec45 pm: remove dummy pm_state_set/pm_state_exit_post_ops
Dummy inline functions are useful to avoid ifdeffery in code when a
certain option is not available. pm_state_set/pm_state_exit_post_ops,
are only called from the PM subsystem, so never called if CONFIG_PM=n,
that is, never surrounded with ifdeffery.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2023-07-20 10:33:00 +00:00
Benjamin Cabé
660c5f5c98 doc: mqtt: Add missing Doxygen comments
Completed the documentation of the mqtt.h header file.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:17:04 -04:00
Benjamin Cabé
d48c3396cb fs: doc: fs_interface doxygen fixes
Fixed Doxygen docs for structs

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:05:05 -04:00
Benjamin Cabé
485ebbbebd fs: doc: Document fs.h structs and macros
Fixed Doxygen docs for structs and added missing docs for a few
macros and enums.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:05:05 -04:00
Benjamin Cabé
ae7efcade2 fs: doc: Document fs_file_system_t methods
Fully document all the methods in the File System interface structure

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:05:05 -04:00
Benjamin Cabé
5b78a386e9 fs: doc: Fix fs_file_system_t documentation
Properly document the fs_file_system_t structure

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:05:05 -04:00
Benjamin Cabé
69c3659507 fs: nvs: doc: Provide useful brief descs
Provide useful descriptions for NVS API.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-20 06:05:05 -04:00
Benjamin Cabé
5f9e698da4 canbus: isotp: doc: Document isotp_tx_callback_t
Added missing Doxygen doc for isotp_tx_callback_t

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2023-07-19 21:41:39 -04:00