Commit graph

23353 commits

Author SHA1 Message Date
Tomasz Moń
8b212d80fd drivers: udc_dwc2: Fix isochronous endpoint disable
The NAKSts bit may be set on isochronous OUT endpoints when incomplete
ISO OUT interrupt is raised. The code would then assume that endpoint is
already disabled and would not perform the endpoint disable procedure.
This in turn was essentially halting any transmission on the isochronous
endpoint, abruptly terminating the data stream.

Fix the issue by always following full endpoint disable procedure on
isochronous endpoints.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-11-30 09:36:17 +01:00
Pieter De Gendt
190e3b9fe1 drivers: ethphy: Place API into iterable section
Add wrapper DEVICE_API macro to all ethphy_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-30 01:04:49 +01:00
Pieter De Gendt
0c75641c98 drivers: fpga: Place API into iterable section
Add wrapper DEVICE_API macro to all fpga_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-30 01:04:37 +01:00
Pieter De Gendt
b51c8cbe5b drivers: gnss: Place API into iterable section
Add wrapper DEVICE_API macro to all gnss_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-30 01:04:26 +01:00
Flavio Ceolin
11aeddbbfa serial: uart_hostlink: Use __noinline macro
Use Zephy's toolchain definition instead of re-define here.

Signed-off-by: Flavio Ceolin <flavio.ceolin@gmail.com>
2024-11-30 01:04:11 +01:00
Przemyslaw Bida
e0f94f8823 drivers: ieee802154: New API for modulated carrier wave transmission.
Added new API function to start modulated carrier wave transmission

Signed-off-by: Przemyslaw Bida <przemyslaw.bida@nordicsemi.no>
2024-11-29 21:46:46 +01:00
Pieter De Gendt
c25e31512c drivers: clock_control: Place API into iterable section
Add wrapper DEVICE_API macro to all clock_control_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 21:46:34 +01:00
Trung Hieu Le
ecd6c616f5 drivers: video: ov5640: Fix bug out-of-bound buffer read
Fix the out of bound buffer read by checking the lower-bound index
in the ov5640_enum_frmival function.

Signed-off-by: Trung Hieu Le <trunghieu.le@nxp.com>
2024-11-29 21:46:24 +01:00
Pieter De Gendt
401a8a29f4 drivers: counter: Place API into iterable section
Add wrapper DEVICE_API macro to all counter_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 21:46:15 +01:00
Alberto Escolar Piedras
fedda6d25c drivers serial nrfx: Apply workaround also for bsim targets
Or more precisely, do not remove the workaround for them.
The current HW models are accurate enough in this area for the
workaround to work properly.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-11-29 15:30:11 +01:00
Pieter De Gendt
8442b6a83f drivers: adc: Place API into iterable section
Move all adc driver api structs into an iterable section, this allows us
to verify if an api pointer is located in compatible linker section.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 14:50:40 +01:00
Pieter De Gendt
b6253be8e1 drivers: adc: adc_emul: const API structure
Do not update the ref_internal value in the API structure.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 14:50:40 +01:00
Pieter De Gendt
8ee7b429a3 drivers: auxdisplay: Place API into iterable section
Add wrapper DEVICE_API macro to all auxdisplay_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 14:50:02 +01:00
Pieter De Gendt
e9e64bab35 drivers: bluetooth: hci: Place API into iterable section
Add wrapper DEVICE_API macro to all bt_hci_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-11-29 14:49:53 +01:00
James Roy
5df9611dc9 drivers: sensor: st: Fix uninitialized variable in lsm6dsv16x
Fix uninitialized val variables scanned by Coverity.

Signed-off-by: James Roy <rruuaanng@outlook.com>
2024-11-29 11:45:32 +01:00
Chew Zeh Yang
0d02cdca46 drivers: udc_ambiq: defer enqueue event if the endpoint is stalled
Ambiq USB HAL do not expect endpoint transaction request when an
endpoint is stalled. This commit addresses this behavior in shim driver
by checking for endpoint's stall status when enqueue request is
received, and defer it until endpoint stall is cleared.

Signed-off-by: Chew Zeh Yang <zeon.chew@ambiq.com>
2024-11-29 11:45:10 +01:00
Tomasz Moń
df36b162bd drivers: udc_dwc2: Wait for USBHS clock start
Accessing DWC2 otg core registers before the clock starts results in
complete system hang. Add a 1 us busy wait to make sure that software
won't access registers before the clock is started.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-11-29 11:44:26 +01:00
Armando Visconti
b7ffb3d59d sensor/st: lsm6dsv16x: Fix lsm6dsv16x_attr_get() API
Fix a couple of typos when getting the accelerometer configuration.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-11-29 09:21:03 +01:00
Gerard Marull-Paretas
4f6de0169c drivers: microchip xec: select PINCTRL
All drivers using the pinctrl API must select the PINCTRL option.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-11-29 05:41:53 +01:00
Gerard Marull-Paretas
55cdc5a93e drivers: lora: sx12xx: select SPI and GPIO
Instead of depending on SPI/GPIO. This allows to just enable
CONFIG_LORA=y + DT node in the application layer. The same
pattern is nowadays followed by most drivers.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-11-28 20:53:11 +01:00
Andy Ross
fe5c11db05 boards/mediatek: Add mt8196_adsp
Add Zephyr support for the Audio DSP on the MT8196 SOC.  This is a
very similar device to previous designs.  Most of this patch is just
DTS.

The biggest delta is the more complicated second level interrupt
controller, though it is still able to be represented using some
vaguely clever DTS config over the older intc_mtk_adsp driver.

Also the memory layout is slightly different, requiring a little
indirection to set the initial boot stack address and log output
buffer.  And the timer "irq_ack" register bits moved.

Signed-off-by: Andy Ross <andyross@google.com>
2024-11-28 20:51:50 +01:00
Jan Kuliga
8ba134cea6 drivers: auxdisplay: hd44780: implement busy-flag polling mechanism
HD44780 controller can indicate via busy flag whether it's finished
processing current command. This allows for faster completion of HD44780
commands as seen from MCU perspective, as the MCU doesn't have to wait
for fixed long period of time. Implement this functionality.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Jan Kuliga
1b784f9892 drivers: auxdisplay: hd44780: rework the initialization procedure
If proper power supply is used to power the hd44780, it initializes
correctly on a reset condition all by itself. However,
if the power supply is below its expectations (e.g. some 3.3V Nucleo
board), it won't initialize properly on its own, and the MCU
has to carry out the initialization as listed in the reference manual.
Since we cannot determine it properly in the runtime,
always carry out the initialization procedure.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Jan Kuliga
91a14dcc50 drivers: auxdisplay: hd44780: add rs-line-delay dt parameter
In order for the driver to be compliant with the timing sequence
diagrams presented in the reference manual, the MCU has to wait
for some additional period of time while setting both the rs and rw
lines.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Jan Kuliga
55de1c9719 drivers: auxdisplay: hd44780: get rid of excessive delays
Express delay values in nanoseconds. Set the default delay time values
as specified in the HD44780 reference manual.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Jan Kuliga
537182a96a drivers: auxdisplay: hd44780: rework auxdisplay_hd44780_command()
Make this function more concise in order to introduce busy-flag polling
mechanism later on.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Jan Kuliga
e8dc0c6f42 drivers: auxdisplay: hd44780: set rw_gpio line value only once
There's no need to set this line every single time a command is sent
to the HD44780. Set it only once, so that one can save some cpu cycles.

Signed-off-by: Jan Kuliga <jtkuliga@gmail.com>
2024-11-28 20:51:39 +01:00
Benedikt Schmidt
760210f39d drivers: fpga: separate drivers of iCE40 for SPI and GPIO bitbang
Separate the current driver for the FPGA iCE40 into two different ones.
One implements only the SPI load mode, the other one only the GPIO
bitbang mode.

Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
2024-11-28 15:39:33 +00:00
Sylvio Alves
a7a978a946 drivers: bluetooth: esp32: enable entropy generator by default
As BT now uses PSA crypto API instead of TinyCrypt, entropy generator
is now needed for a proper bluetooth operation.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2024-11-28 15:39:08 +00:00
Ian Morris
8e51ebf499 drivers: bluetooth: hci: add hardware reset for da1453x
Add ability to perform a hardware reset of the DA1453x during setup of
the HCI transport.

Signed-off-by: Ian Morris <ian.d.morris@outlook.com>
2024-11-28 12:52:01 +01:00
Declan Snyder
7271000fe5 drivers: spi_mcux_lpspi: Clean up DMA path
Clean up DMA path of code.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
2c884a9274 drivers: spi_mcux_lpspi: Optimize dma callback
Optimize DMA callback by cleaning up the code and storing less debug
logging strings.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
5dbe322c9b drivers: spi_mcux_lpspi: Clean up configure func
Do all input validation etc BEFORE setting up configuration,
instead of mixing these things everywhere. Also condense the formatting
of the code.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
b7c35fb569 drivers: spi_mcux_lpspi: Remove rtio prepare_start
Remove unneeded prepare_start function since all uses of it are paired
with the start function. Also, probably should not mess with chip select
before deciding to do the transfer. And just return on some error like
the rest of the driver does instead of assert.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
d6a6b11aac drivers: spi_mcux_lpspi: ErrLog dev in iodev_start
Log the device name and status if the transfer could not start,
same way as in non-RTIO path.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
47115e3afe drivers: spi_mcux_lpspi: Macro for master cfg flag
All the master transfer seemed to use the same config flags,
reuse with a macro.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
561b4347d7 drivers: spi_mcux_lpspi: Clean up next_packet func
Next packet function is way more complicated than it needs to be. Clean
it up by simplifying the code and making readable helper functions.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
af3c25a1f8 drivers: spi_mcux_lpspi: Remove commented code
Remove lines of code that are commented out.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
fa82ec0602 drivers: spi_mcux_lpspi: Remove duplicate bufsetup
This line doesn't need to be in multiple places.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
830c0a9e3c drivers: spi_mcux_lpspi: clean up transceive calls
Move transceive funtions next to each other and clean up the wrapping of
functions to eliminate the ifdefs.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
810b563ea7 drivers: spi_mcux_lpspi: Group API functions
Group the actual API functions to be next to each other.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
595e16caf6 drivers: spi_mcux_lpspi: Consolidate IRQ handle
Small change to consolidate the amount of lines of code in
the spi_mcux_isr by making a macro for the argument and removing
a line of code that was commented out.

Also move the ISR to be the first function in the file which is
common in many other drivers, instead of randomly in the middle of the
file. And move the isr callback to be next to the isr.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
e21bf37f13 drivers: spi_mcux_lpspi: Minor RTIO cleanup
Add closing comment for #ifdef and remove unnecessary
indentation of an else block. Also move the transcieve_rtio
function to be near the other rtio functions. And move function
prototypes to top of file.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
5d081c98fb drivers: spi_mcux_lpspi: Create DMA dev helpers
Create helper functions for duplicated code related to
checking for DMA devices, with readable names.

Also remove unneeded function prototype.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
d76ccdbdea drivers: spi_mcux_lpspi: Clean up init function
Do initializations in a more logical order,
remove unnecessarily duplicated code,
reorder stack variables to be in reverse christmas tree order.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
5a0d9831b1 drivers: spi_mcux_lpspi: Move init to end of file
Move init function to bottom of file by custom.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
0727566c4a drivers: spi_mcux_lpspi: Remove parent_dev field
Remove parent_dev from config struct, and simplify code for the
definition and use of the irq config function.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Declan Snyder
6607976a55 drivers: spi_mcux_lpspi: Organize top of file
Organize #includes and #defines for less redundancy
and more readability.

Shorten some macros to avoid multi line statements.

Add some comments.

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
2024-11-27 22:54:09 -05:00
Aksel Skauge Mellbye
6d38b24d32 drivers: pinctrl: gecko: Remove cases now handled by DBUS driver
Remove implementation of pin configuration for Series 2 devices.
The silabs,dbus-pinctrl driver should be used instead.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2024-11-27 22:51:55 -05:00
Aksel Skauge Mellbye
f3246cda17 drivers: pinctrl: silabs: Add pinctrl driver for digital bus
Silicon Labs Series 2 and newer devices do alternate function
configuration fundamentally differently from Series 0 and 1. Pin routing
is done in a centralized fashion in the GPIO peripheral, as opposed to
having ROUTE registers in every peripheral. The concept of alternate
function location numbers also does not exist, functions are directly
assigned to GPIOs by their port and pin number.

This commit adds a new pinctrl driver for devices that use DBUS. It fully
makes use of pinctrl design principles as outlined in the Zephyr
documentation. The previous driver hard-codes pin properties such as filter
and pull-up/down in the driver itself, while the new driver leaves this up
to the user as configurable DeviceTree properties. The previous driver has
hard-coded support for UART, SPI and I2C, while the new driver has generic
support for all DBUS signals.

Signed-off-by: Aksel Skauge Mellbye <aksel.mellbye@silabs.com>
2024-11-27 22:51:55 -05:00