Commit graph

58102 commits

Author SHA1 Message Date
Daniel Leung
5f20e31b5b lib/os: bitarray: introduce SYS_BITARRAY_DEFINE_STATIC()
This allows to declare a static bitarray struct that is local
to the source file.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-11-24 14:22:23 -05:00
Flavio Ceolin
f95370c413 pm: device: Deprecate pm_device_state_set
Deprecate pm_device_state_set in favor of pm_device_action_run.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-24 14:21:50 -05:00
Flavio Ceolin
6451626ce7 pm: Use pm_device_action_run instead of state_set
Since drivers implement a callback based on action and not the state,
we should be using the API based on the action instead of the one based
on the state.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-24 14:21:50 -05:00
Flavio Ceolin
80d26d996e drivers: led_pwm: Fix log message
The log message was using the uninitialized variable state.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-24 14:21:50 -05:00
Flavio Ceolin
9adffd620a pm: device: Add pm_device_action_run
Devices PM callback receive an action and not a state. Add a new API
that receives an action instead of a state.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-11-24 14:21:50 -05:00
Nicolas Pitre
61c300f92c net: bridge: make the orig_iface info available
The per-packet orig_iface information is available when
CONFIG_NET_ROUTING is set. It is pretty useful to have it
available with CONFIG_NET_ETHERNET_BRIDGE as well.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-11-24 14:21:32 -05:00
Sam Hurst
ffce28ad6f dts: arm: stm32u5: Add UCPD1
This commit adds UCPD1 dts bindings for stm32u5xx

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Sam Hurst
d26979b11a dts: arm: stm32l5: Add UCPD1
This commit adds UCPD1 dts bindings for stm32l5xx

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Sam Hurst
0d3caff318 dts: arm: stm32g4: Add UCPD1
This commit adds UCPD1 dts bindings
for stm32g4xx

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Sam Hurst
72c4a89570 dts: arm: stm32g0: Add UCPD1 and UCPD2
This commit adds UCPD1 and UCPD2 dts bindings
for stm32g071, stm32g081, stm32g0b1, and stm32g0c1.

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Sam Hurst
cc1cedb82e dts: bindings: Add yaml file for STM32 TCPC support to DT
Add yaml files to DT for initial support of STM32 TypeC
Port Controller (TCPC)

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Sam Hurst
55831a280c stm32: Add UCPD support to Kconfig
This commit adds UCPD HAL and LL drivers to the Kconfig system
required to enable USB Power Delivery interface (UCPD)
on STM32G0/G4/L5/U5 devices

Signed-off-by: Sam Hurst <sbh1187@gmail.com>
2021-11-24 14:21:04 -05:00
Frode van der Meeren
48f90cc2e4 bluetooth: Increase ACL packet size limit for non-Zephyr controllers
Increases the size-limit of ACL packets, to accomodate for using Zephyr
as a host for controllers which support ACL packets larger than 251
bytes.

Signed-off-by: Frode van der Meeren <frode.vandermeeren@nordicsemi.no>
2021-11-24 14:19:07 -05:00
Daniel Leung
81882fe7b8 tests: latency_measure: remove qemu_x86_64 exclusion
The latency measure test can run on qemu_x86_64 so remove it
from the platform_exclude list.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-11-24 14:16:13 -05:00
Andrzej Kuroś
288f9c0b11 ipc: use highest coop priority for IPM workqueue
The priority of workqueue responsible for rpmsg processing was too
low. Any cooperative task could cause rpmsg processing to be
slightly delayed.

Signed-off-by: Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
2021-11-24 18:59:02 +01:00
Anas Nashif
ca10f8b0a0 doc: replace buildkite with github actions
Update CI docs and the badge with links pointing to GH actions rather
than buildkite.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-11-24 12:37:30 -05:00
Gerard Marull-Paretas
f6dd3bc982 ci: doc-build: set timeout to 30 minutes
Give documentation build up to 30 minutes to finish. This should improve
the user experience when Sphinx hangs due to broken references, a
problem that needs some investigation.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-11-24 12:36:58 -05:00
Raúl Sánchez Siles
f35cdfc1e4 drivers: usb_dc_native_posix fill in data amount
Fill in received bytes in USBIP_RET_SUBMIT packet

Currently this field is unconditionally set to 0 and therefore not
filled in conveniently. This may mislead the USB host which is correctly
acknowledged that the transaction was sucessful but it cannot check the
actual received bytes.

Test application:

```python
import usb

data = (0xFF, 0xFF)
print("Opening loopback device")
device = usb.core.find(idVendor=0x2FE3, idProduct=0x0009)
print("Writing test data", data)
written = device.write(0x1, data)
print("Written", written, "bytes")
```

Before:
```
$ ./test_loopback.py
Opening loopback device
Writing test data (255, 255)
Written 0 bytes
```

After:
```
$ ./test_loopback.py
Opening loopback device
Writing test data (255, 255)
Written 2 bytes
```

Signed-off-by: Raúl Sánchez Siles <rsanchezs@k-lagan.com>
2021-11-24 17:55:04 +01:00
Jordan Yates
1d7b63d0fe net: buf: STRUCT_SECTION_ITERABLE for pool decl
Use the `STRUCT_SECTION_ITERABLE` helper macro when declaring buffer
pools instead of manually doing the same thing.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
8e99db5801 Kconfig: net: deprecate NET_BUF_USER_DATA_LEN
As user data sizes are now set on a per pool basis, this Kconfig option
has no purpose.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
70649077a0 tests: net: buf: test per-pool data lengths
Validate that per-pool user data lengths are being set correctly.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
df327eeb58 net: buf: POOL_FIXED_DEFINE explicit user data
Update the macro prototype to explicitly require the length of the
desired user data. Update all in-tree usage of this macro.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
d17e0439c2 net: buf: POOL_HEAP_DEFINE explicit user data
Update the macro prototype to explicitly require the length of the
desired user data. Update all in-tree usage of this macro.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
8236b600f7 net: buf: POOL_VAR_DEFINE explicit user data
Update the macro prototype to explicitly require the length of the
desired user data. Update all in-tree usage of this macro.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
bb780eff99 net: buf: move user_data to flexible arr member
Transition the `user_data` field in `struct net_buf` to be a flexible
array member instead of a hardcoded array. Compile-time asserts are
introduced at the location of the intermediate struct usage to ensure
that the assumptions utilised in runtime code hold true.

The primary assumptions are that the two `user_data` fields exist at the
same memory offset, and that the instantiated struct size can be
determined from the generic struct size and the length of the user data.

`net_buf_id` and `pool_get_uninit` must now use manual address
calculations as the `__bufs` type is no longer the actual size of the
instantiated variable.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
8d21e61df9 net: buf: separate net_buf array instantiation
Move the static array definition for the three pool definitions to a
common macro.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
0b5e6f1f8f tests: net: buf: validate user_data_size fields
Validate the `user_data_size` field is populated correctly.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
ef440b7e7e mgmt: mcumgr: use user_data_len member
Use the new `user_data_len` member to determine size of data to copy.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
ebe3e7d96a net: buf: store user_data size
Store the `user_data` array size on both the pool and net_buf structs.
This will enable length validation once `user_data` fields are not
globally the same size. The new variables fit inside existing padding,
and therefore do not increase the size of either structure.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
719b512d7e net: l2: ieee802154: normalize net_buf usage
Replace the statically defined net_buf with the standard mechanism of
allocating the buffer from a pool. This introduces a minor memory
overhead, but has the benefit of ensuring that standard net_buf calls
will work correctly.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Marek Pieta
a08b65ef42 bluetooth: att: Fix indication handling
Zephyr device that is not a GATT Client, should ignore indication.

An Android device may send an indication even if Zephyr
device does not support GATT Client role. In that case, the sent
error response was improperly matched to subsequent GATT request
of the Android device which caused issues.

Signed-off-by: Marek Pieta <Marek.Pieta@nordicsemi.no>
2021-11-24 13:55:47 +01:00
Johann Fischer
503b7e6f9f dts: same70: default USB HS controller to high-speed
USB HS controller is high-speed capable, default it to high-speed.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-11-24 12:28:02 +01:00
Johann Fischer
48362df588 drivers: usb_dc_sam_usbhs: default to full-speed
Use DT_INST_ENUM_IDX_OR and always default to full-speed
if CONFIG_USB_DC_HAS_HS_SUPPORT is not set or maximum-speed
property is not defined.
Remove low-speed setting since device stack does not support it.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-11-24 12:28:02 +01:00
Johann Fischer
cf8d7764da usb: fix bulk endpoint configuration for high-speed capable device
In the current USB device support, the sizes of bulk endpoint
are mostly configure through Kconfig and do not care if a device
is high-speed capable. The information if a USB device controller
supports high-speed comes from devicetree. Add a Kconfig option to
map this information and configure bulk endpoint sizes
accordingly.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-11-24 12:28:02 +01:00
Johann Fischer
73199f2c91 scripts/Kconfig: add dt_node_str_prop_equals Kconfig function
Add function to check if a property of a node
is equal to a passed string.

The motivation is that in current USB device support
the sizes of bulk endpoints are configured in Kconfig.
The information if a USB device controller supports
high-speed comes from devicetree. This information must be
mapped in controller driver Kconfig and corresponding options
in USB device stack configured must be adjusted.

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-11-24 12:28:02 +01:00
Johann Fischer
67a265b0df samples: cdc_acm: check return value of uart_fifo_read()
uart_fifo_read() can return negative values in case
it is not implemented or CONFIG_UART_INTERRUPT_DRIVEN
is not enabled. Both cases can not actually happen in the
case of CDC ACM UART, check it anyway in case behavior
of the UART API changes unnoticed.

Align the code in RX path code of both camples and
enable TX interrupt only if data was received successfully.

Fixes: #39835
Fixes: #39824
Fixes: #39809
Coverity-CID: 240667
Coverity-CID: 240679
Coverity-CID: 240697

Signed-off-by: Johann Fischer <johann.fischer@nordicsemi.no>
2021-11-24 10:50:11 +01:00
HaiLong Yang
5e035b0f4e drivers: serial: gd32 usart add interrupt support
Add interrupt support for gd32 usart driver.

Signed-off-by: HaiLong Yang <hailong.yang@brainco.cn>
2021-11-23 13:25:43 -05:00
HaiLong Yang
9418a4f763 drivers: serial: gd32 usart parity bit config
Initialize parity bit(Default NONE) from DTS.

Signed-off-by: HaiLong Yang <cameledyang@pm.me>
2021-11-23 13:25:43 -05:00
Robert Lubos
f3a9b8c83d net: l2: Add symbols for custom IEEE802154 L2
Define a custom IEEE802154 based L2. The user can then use those symbols
to implement their own 802.15.4 based L2, based on those symbols, w/o a
need to modify the Zephyr tree.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-11-23 13:25:01 -05:00
Robert Lubos
5cf235e601 drivers: ieee802154_nrf5: Add Kconfig to configure FCS inclusion policy
Some 802.15.4 L2 implementations expect that FCS length is included in
the overall packet length while others not. Allow to configure this
behavior, based on the selected upper layer.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-11-23 13:25:01 -05:00
Robert Lubos
9a319226f8 net: ieee802154: Add common config for all 802154 L2s
Introduce a common config for all 802.15.4 based L2 implementations.
This way, any custom 15.4 L2 implementation will be able to
automatically enable use 15.4 driver, w/o a need to modify the actual
Kconfig.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2021-11-23 13:25:01 -05:00
Andy Ross
4648b63661 soc/intel_adsp: Add support for legacy IDC driver for pre-2.5 hardware
The IDC driver was written for Tiger Lake era devices, but works fine
on the earlier hardware too.  Make it selectable; if you don't
configure IPM_CAVS_IDC, then you get the new driver.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
c6de46c87e soc/intel_adsp: Simplify boot ROM protocol
There was an attempt in the old code to express this as a formal
protocol with a proper field definitions, etc...  But in fact no such
protocol really exists.  This scheme is only used in one place to send
one specific message to code fixed in ROM on legacy devices that only
knows how to recognize this specific value.  And 2.5 and later
hardware are moving away from it anyway.

Just express it directly, and explain in comments.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
a7af0acfc2 soc/intel_adsp: Clean up IPM compiler guards
The CAVS_IDC_IPM driver happens to be used only on non-2.5 hardware,
but it's best to be clear in the conditional compilation when we're
talking about hardware-dependencies and when we mean software
configuration.  This was mixed up in a few spots.

Also fix a warning that creeps in on non-default drivers choices about
an undeclared ipm function.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
a3c9443c4a soc/intel_adsp: Unify linker scripts
While the linker scripts for these platforms had diverged in form, the
behavior remained compatible.  Link all cAVS devices with the same
linker script included from the common directory (it's a verbatim copy
of the cavs_v25 script).

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
73b2f5544b soc/intel_adsp: Move generated interrupt routines to common code
While technically this file can change for any instantiation of Xtensa
hardware, in practice all these devices have identical interrupts
setups.  These files were duplicates, so there's no value in keeping
them in per-sub-soc directories.  (Really we should wire it up so that
the generator gets run automatically with the build, but that will
need to wait for a rework of interrupt entry).

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
430cbf430a soc/intel_adsp: Eliminate platform configuration headers
All the in-use contents of these files have now been moved to the
intel_adsp core, and they are configured via devicetree and kconfig.
Remove the legacy headers.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
9cba8501df soc/intel_asdp: Unify misc. initialization registers
These two register blocks are defined in the platform layers, but
never change (except on 1.5 where they don't exist).  I don't want to
write a full devicetree interface for them as I can't find good docs
currently.  They are used only at system initialization, so move the
definitions to the single file where they're used.  In the longer term
we will want to move at least the GPDMA setup into a driver anyway.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
cb73032a32 soc/intel_adsp: Unify/dtsify L2 local memory control block
These registers were hardwired in the platform layer.  Move to
devicetree, via a struct interface that looks like the pre-existing
shim layer.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00
Andy Ross
73f3374764 soc/intel_adsp: Unify boot loader memory layout
These values (used to arrange the bootloader within IMR memory) are
mostly computed or fixed to values that don't chagne between
platforms.  Only the manifest address and the location of the data
section change.  Put those in kconfig, move the rest to the global
header.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-11-23 13:23:54 -05:00