RTC is 24 bit width and k_timer is 64 bit. It is hard to test corner
cases but RTC hardware feature can help here. There is a task which
moves counter to 0xfffff0 which is close to overflow. However, there
is an internal driver state that also needs to be aligned to shift
the time properly. Adding optional function which triggers overflow
and updates internal state. This can be used for testing corner cases.
Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
Zephyr maps start/end of rodata section with variables
using __rodata_region namespace. The exception was Xtensa.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
Add XIP support with MWDT toolchain. To have it proper tested
add separate nsim platforms for XIP (flash + sram) and
non-XIP (sram) memory organization in addition to existing
nsim_hs platfor with CCMs (ICCM + DCCM) memory organization.
This PR also enables MPU for all nsim hs3x based platforms
(like we previously enabled it for qemu_arc_hs) to have proper
memory regions permissions.
Signed-off-by: Nikolay Agishev <agishev@synopsys.com>
The BDF values can differ on the same platform, based on e.g. BIOS
configuration, and in the case of qemu the command line parameters. It's
therefore more reliable to always look up the BDF value based on the
known Vendor and Device IDs.
This patch introduces such a framework, and allows the incremental
update of PCIe drivers to start taking advantage of it.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Rename BASS to BAP Scan Delegator and BASS Client
to BAP Broadcast Assistant. This is the first step towards
integrating the BASS with the rest of BAP.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
It was previously written as regular members of a struct, which
allows the C compiler to do things the way it wants. On ARM64, gcc
would typically write field by pairs (`STP`), which
would generate aborts.
By using `sys_write32`, we force it the right way.
Signed-off-by: Henri Xavier <datacomos@huawei.com>
Removes the global cur_mcs_inst and replace it
with lookup functionality.
This fixes an issue with bt_mcc_discover_mcs not being able
to be called more than once, as well
as streamline the implementation significantly.
This is also the first step towards not only supporting
multipe MCS instances for a single device, but also a
step towards handling multiple devices.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Zephyr has been using 128 byte frame size instead of 127.
This change only affects buffer size as Base64 encodig,
together with preamble and terminating new line character,
has been only able to use 127 bytes of frame anyway,
Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
Add zbus message bus as a Zephyr subsystem. No message bus
or communication abstraction other than the usual (message queues,
mailboxes, etc.) enabled developers to implement event-driven systems in
Zephyr quickly. Zbus would fill that gap by providing the community with
a lightweight and flexible message bus. The implementation tries to be
closest as possible to the existing ones. We use the claim/finish
approach, and the API for publishing and reading channels are similar
in message queues. Zbus is about channels, messages, and observers.
Signed-off-by: Rodrigo Peixoto <rodrigopex@gmail.com>
Consistent with the change of `pthread_t` from
`struct posix_thread` to `uint32_t`, we can now also abstract
`pthread_mutex_t` as `uint32_t` and separate `struct posix_mutex`
as an implementation detail, hidden from POSIX API consumers.
This change deprecates `PTHREAD_MUTEX_DEFINE()` in favour of the
(standardized) `PTHREAD_MUTEX_INITIALIZER`.
This change introduces `CONFIG_MAX_PTHREAD_MUTEX_COUNT`.
Signed-off-by: Chris Friedt <cfriedt@meta.com>
Right now we had a mix of int (signed) and uint32_t (fixed-width
unsigned integer). Use int32_t for all cases, both values may be either
positive/negative, and we have a defined range when using fixed-width
integers.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
The recently moved "consumer" API had multiple Doxygen issues. This
patch improves the Doxygen docs, e.g. use `@retval`, remove redundant
docs, improve parameter docs, etc.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
The previous "consumer" API was designed without API ops, meaning only a
single implementation (singleton) was possible. This was inconsistent
with all other APIs, and, a problem in systems where more than a single
PMIC IC is present.
Note that all "consumer" ops are optional, so this won't break any
existing drivers.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
In Zephyr all regulator APIs are consumer APIs. There's no point in
adding a separate header file. Our current implementation is also
inconsistent with Linux, where enable/disable are also part of the
consumer.h API.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This commit adds support for compiling in support for several different
regions/frequencies and dynamically choosing which to use in run-time.
This commit introduces no API breakages - if a prj.conf contains only a
single region Kconfig, the new function lorawan_set_region() does not
need to be called.
Signed-off-by: Benjamin Lindqvist <benjamin@eub.se>
DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL and
DT_CHOSEN_ZEPHYR_ENTROPY_LABEL were deprecated a couple of releases ago,
so it is time to remove them. Note that the zephyr/devicetree/zephyr.h
is also removed, since both macros were its last content.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
nvs_init was changed in favor of nvs_mount a couple of releases ago. It
is now time to remove it.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Improved PWM API has shipped on the last 2 Zephyr releases (3.1, 3.2),
so it is time to remove deprecated functions.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Such generic flags were replaced for vendor-specific flags. Zephyr
releases 3.1 and 3.2 have shipped with the flags deprecated, it is now
time to remove them.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
The NPCX driver did use deprecated voltage macros. Define vendor
specific flags instead.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
The devicetree_regions.h did not include any header, however, it uses
multiple APIs: DT, utils and toolchain macros.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
- Fix incorrect struct fields documentation (`@param` can't be used)
- Removed redundant `@file` entry, public APIs may be split into
multiple headers.
- Grouped and anchored options and flags, so they can be referenced.
- Guarded some internal fields with INTERNAL_HIDDEN.
- Exposed conditional struct fields, using __DOXYGEN__.
- Use `@see` in cases where used was instructed to look at other
function calls.
- Added `errno` `@retval` to all functions. In case of external
watchdogs, communication errors may be propagated.
- Other minor/typo fixes
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This moves the CMD_SET_DLF command macro to public header
so application can use it without weird include path to
include the "private" header file under drivers/serial.
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
File was including zephyr/types.h and zephyr/drivers/gpio.h for nothing,
and missed zephyr/device.h
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
- Remove redundant `@file`
- Hide driver-specific code using `INTERNAL_HIDDEN`.
- Use standard `@funcprops`
- Use `@retval` for return codes, and clarify them as well. Added -errno
case, since external regulators may propagate e.g. bus errors.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Switches to the new event callback system for the os_mgmt
functionality and removes the old code.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Switches to the new event callback system for the img_mgmt
functionality and removes the old code.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Switches to the new event callback system for the fs_mgmt
functionality and removes the old code.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Reworks the event callback system to use a linked list to allow for
chained handlers and support passing a status back to the handler to
indicate if the request should be rejected or allowed. This also
removes the old base callback functionality.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
For all STM32 series, add some defines to select the RTC clock source.
This change is necessary to be able to select the RTC clock source in
dts instead of Kconfig
Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
This fixes issues with the Bluetooth SMP transport whereby deadlocks
could arise from connection references being held in long-lasting
mcumgr command processing functions.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This commit adds an implementation of MQTT-SN v1.2.
The specification is available on oasis-open.org:
https://www.oasis-open.org/committees/download.php/66091/MQTT-SN_spec_v1.2.pdf
The following things are missing in this implementation:
- Pre-defined topic IDs
- QoS -1 - it's most useful with predefined topics
- Gateway discovery using ADVERTISE, SEARCHGW and GWINFO messages.
- Setting the will topic and message after the initial connect
- Forwarder Encapsulation
Signed-off-by: René Beckmann <rene.beckmann@grandcentrix.net>
icmsg library was implemented as a ipc_service backend. It is a simple
library with minimal feature set. To preserve its simplicity while
adding more features it is useful to introduce separated ipc_service
backends with added features. To reuse most of the icmsg code for the
simplest backend and other including more features, the core of icmsg
is separated from the simplest ipc_service to an icmsg module which
can be used by multiple backends.
Signed-off-by: Hubert Miś <hubert.mis@nordicsemi.no>
When read callbacks are used, it bypasses LwM2M engine data
handling and therefore LwM2M observation cannot work properly.
Read callbacks should be used only on special cases.
Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
If gcc compiler option -Werror is used the warning,
declared inside parameter list will not be visible outside of this
definition or declaration [-Werror]
is treated as error, for
sockets_internal.h:18:28: ‘struct net_context’
sockets_internal.h:19:32: ‘struct zsock_pollfd’
fdtable.h:108:17: ‘struct k_mutex’
Signed-off-by: Christoph Schnetzler <christoph.schnetzler@husqvarnagroup.com>
Table 6-7, in the USB PD3.1 spec, is labeled Power Data Object.
The enum that represents the table 6-7 values should be
labeled similarly.
Signed-off-by: Sam Hurst <sbh1187@gmail.com>
Since Mesh Spec and Mesh model sayes, some model no need
groups and no need keys, such as Config Server, but the
current implementation, all model use same configuration,
which cause some ram ext comsume.
So that, change to specific way, but will consume more footprint size.
Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
Add support for userspace with RTIO by making rtio and rtio_iodev
k_objects. As well as adding three syscalls for copying in submissions,
copying out completions, and starting tasks with submit.
For the small devices Zephyr typically runs on one of the most important
attributes tends to be low memory usage. To maintain the low footprint of
RTIO and its current executor implementations the rings are not shared with
userspace. Sharing the rings it turns out would require copying submissions
before working with them to avoid TOCTOU issues.
The API could still support shared rings in the future so that a
kernel thread could directly poll, copy, verify, and start the submitted
work. This would require a third executor implementation that maintains its
own copy of submissions similiar to how io_uring in Linux works.
Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
The `struct pthread` and `enum pthread_state` are actually
implementation details specific to Zephyr.
Let's limit the scope where that level of detail is visible.
Signed-off-by: Chris Friedt <cfriedt@meta.com>
Recent commit ae123c9bd1 ("toolchain: Ensure that Kconfig endianness
matches the compiler's") added an endianness check which immediately
revealed a problem when compiling with -DSPARSE=y
Finding which values were wrong was a typical pre-processor
nightmare. Avoid this nightmare to anyone in a similar situation again
by adding more tests and #error messages.
- Before:
```
west build -p -b intel_adsp_cavs25 samples/hello_world/ -- -DSPARSE=y
zephyr/toolchain.h: error: "Endiannes mismatch"
```
- Now:
```
zephyr/toolchain.h: error: "Kconfig/toolchain endianness mismatch:"
zephyr/toolchain.h: error: "CONFIG_LITTLE_ENDIAN but __ORDER_BIG_ENDIAN__"
```
Signed-off-by: Marc Herbert <marc.herbert@intel.com>