Commit graph zephyr/drivers
Author SHA1 Message Date
Khai Cao
ba4c5bfc48 drivers: crc: fix issue CRC16 ITU_T is not accepted
Fix issue CRC16 ITU_T is not accepted by Renesas RA driver.

Signed-off-by: Khai Cao <khai.cao.xk@renesas.com>
2026-06-30 06:48:07 -04:00
Zhaoxiang Jin
0b736efc05 drivers: otp: add NXP OTPC eFuse driver
Add a read-only Zephyr OTP driver for the NXP OTPC eFuse controller
found on MCX N SoCs. Only otp_read is implemented; fuse programming is
not supported. The OTP API is byte addressed while the controller reads
32-bit words; the driver handles unaligned offsets and lengths
internally.

Read verified on real hardware on frdm_mcxn236, frdm_mcxn947, mcxn947 evk,
and mcxn547 evk

Signed-off-by: Zhaoxiang Jin <Zhaoxiang.Jin_1@nxp.com>
2026-06-30 06:47:59 -04:00
Hongquan Li
40c00ce2c5 drivers: sdhc: ambiq: fix R2 response word ordering
Fix R2 (CID/CSD) response ordering for the Ambiq SDHC driver.

The Ambiq HAL packs 136-bit R2 responses as a big-endian 128-bit
value with bits 127:96 in ui32Resp[0].  Zephyr's SD stack expects
cmd->response[3] to hold the highest 32 bits, matching the SDHCI
register layout used by other SDHC drivers.  The existing memcpy
therefore placed the response words in reverse order, causing
sdmmc_decode_csd() to read sector_count and block_size as zero.

Replace the memcpy with a conditional copy that reverses the word
order for R2 responses and clears the unused response words for
all other response types.

Fixes #111443

Signed-off-by: Hongquan Li <hongquan.li@processmission.com>
2026-06-30 06:47:19 -04:00
Ryan McClelland
b9c925c8e6 drivers: counter: native_sim: add capture emulator
The native_sim counter driver did not implement the counter capture API,
so the capture path could not be exercised on native_sim / in CI. There
was also no software way to inject a capture edge, unlike gpio_emul which
provides gpio_emul_input_set() for emulating GPIO events.

Implement the capture API in the native_sim counter driver and add a
test-only backend, analogous to gpio_emul:

- counter_capture_emul_input_set()/_get() (+ _dt variants) in the new
  include/zephyr/drivers/counter/counter_capture_emul.h drive/read an
  emulated capture input level. On a configured, enabled and matching
  edge the capture callback is invoked synchronously with the current
  counter value, honoring single-shot vs continuous mode.
- Supported edges are declared in devicetree via rising-edge/falling-edge
  boolean properties and enforced in capture_configure(), mirroring
  GPIO_EMUL_INT_CAPS.

The counter_capture test is reworked so the edge trigger is provided by a
small "trigger source" interface (trigger_src.h) with two CMake-selected
backends: gpio_src.c (GPIO loopback on real hardware) and
counter_capture_emul_src.c (emulated input on native_sim). The test body,
edge/single-shot/continuous coverage and assertions are unchanged. A
native_sim overlay and integration platform are added so the suite runs
on native_sim.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2026-06-30 06:46:41 -04:00
Jordan Yates
deb92718cc flash: remove select FLASH_PAGE_LAYOUT from drivers
Remove `select FLASH_PAGE_LAYOUT` from any flash drivers doing so, as
this is an option to enable an API into the flash driver, not something
the flash driver itself needs.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2026-06-29 22:18:24 -04:00
Michael Zimmermann
e10af22991 tree-wide: replace usages of k_work_q thread with thread_id
The `thread` field is not initialized, if it's being animated via
k_work_queue_run instead of k_work_queue_start.

Signed-off-by: Michael Zimmermann <michael.zimmermann@sevenlab.de>
2026-06-29 22:17:45 -04:00
Fin Maaß
60f93b475d ethernet: dwc_mac: 1000: add hardware checksum offloading
add support for hardware checksum offloading for the
dwc_ether_mac10_100_1000_universal core.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-06-29 14:04:40 -05:00
Fin Maaß
0e6098bd3d drivers: ethernet: dwc_mac: 1000: frag pointer in struct dwmac_priv
put the grag pointer inside the cached struct dwmac_priv.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
2026-06-29 14:04:40 -05:00
Andrej Butok
e11ab6c65f reset: nxp_mrcc: add support for MCXL family
- The MRCC reset registers use different instance and field
  names across MCX families.
  Add a set of abstraction macros that select the correct
  names based on the SoC family,
  allowing the driver to build for the MCXL family in addition to
  the existing MCX SoCs.

- Enables the RESET driver by default on the MCXL family when an
  nxp,mrcc-reset node is enabled in devicetree.

Signed-off-by: Andrej Butok <andrey.butok@nxp.com>
2026-06-29 14:03:39 -05:00
Andrej Butok
0d1983ce3f crc: nxp_lpc: add clock control support
Add optional clock control to the NXP LPC CRC driver so the CRC
peripheral clock is enabled during initialization when a clocks
property is present in devicetree.

Signed-off-by: Andrej Butok <andrey.butok@nxp.com>
2026-06-29 14:03:39 -05:00
Philipp Steiner
01e00a5ae1 drivers: ethernet: stm32: skip HAL restart on link down
Handle PHY link-down callbacks by clearing the network carrier and
returning before changing MAC/HAL state. Keep the HAL stop/config/start
sequence for link-up events where speed or duplex may have changed.

Signed-off-by: Philipp Steiner <philipp.steiner1987@gmail.com>
2026-06-29 13:58:09 -05:00
Romain Jayles
1bcb3de8a6 soc: st: stm32wbax: add PM S2RAM support
Add STM32WBAx suspend-to-RAM support and hook the SoC-specific
implementation into the build when CONFIG_PM_S2RAM is enabled.

Select the custom S2RAM marking capability and add the STM32WBAx S2RAM
support source file.

Update the suspend-to-RAM path to clear the hardware standby flag as early
as possible after resume. Use standby_entered as a software indicator to
track whether standby was effectively entered and cleared, so resume
handling only restores radio state when needed.

Signed-off-by: Romain Jayles <romain.jayles@st.com>
2026-06-29 13:50:45 -05:00
Vincent Tardy
55d081e0e2 soc: stm32wbax: use static direct IRQ registration for radio irq
Replace runtime dynamic IRQ registration
with static direct IRQ registration.

Signed-off-by: Vincent Tardy <vincent.tardy@st.com>
2026-06-29 13:50:16 -05:00
Krzysztof Chruściński
1f81ef30d8 drivers: debug: nrf_etr: Add defensive measures
Even though overflow is detected and data is not processed until data
stream is synchronized, it is still possible that data stream is
corrupted. If system is overloaded (multiple cores writing in parallel
to the STM), it is possible that some data will be lost and it goes
unnoticed. It can be detected by decoding unexpected STP opcode
(e.g. DATA64) or if logging message is invalid.

Add defensive measures which attempts to catch such discrepancies and
drop the message and trigger re-synchronization:

- drop message if unexpected log level is used
- drop message if hexdump data flag is not aligned with a message
length
- trigger re-synchronization if unexpected STP opcode is found
- trigger re-synchronization if STP demultiplexer returns error

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2026-06-29 13:48:33 -05:00
Krzysztof Chruściński
713ecddb9a drivers: debug: nrf_etr: Improve overflow handling
Improve handling of the ETR buffer overflow. If there is a significant
number of data generated, it is possible that the ETR buffer is
multiple time overwritten. Previously, that case was not detected and
there were crashes due to corrupted data after re-synchronization.
Now, on every TBM FULL event write index is incremented. This allows
to track relation between write and read index and proper
re-synchronization.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2026-06-29 13:48:33 -05:00
Krzysztof Chruściński
e44b0026bb drivers: debug: nrf_etr: Cleanup and remove unused data
There is no need to call any handler when STP decoder is back in
sync. Removing redundant code. Additionally, do not try to
process the frame if synchronization loss was just detected.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2026-06-29 13:48:33 -05:00
Krzysztof Chruściński
bca09fa822 debug: mipi_stp_decoder: Add option to detect unexpected stream content
Extend callback to return a bool which indicates if decoded data is
valid. It may be valid from STP protocol perspective but decoded data
may be unexpected which indicates that data stream is corrupted. If
callback indicates invalid data decoder changes state to out of sync
and starts searching for ASYNC.

Adapted test and debug_nrf_etr module which is using the decoder with
stream from the ETR buffer.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2026-06-29 13:48:33 -05:00
Jacob Schloss
8911e54345 drivers: rtc: rv3032: Merge EEPROM command into burst
EEPROM command may be sent in same transaction as EEADDR and EEDATA

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Jacob Schloss
0e413744cf drivers: rtc: rv3032: Lock before read
Protect RMW operation by locking early

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Jacob Schloss
9c5505769e drivers: rtc: rv3032: Remove unused
Remove unused vars for test build failure.

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Jacob Schloss
ecc4b80a14 drivers: rtc: rv3032: Clear EEF before EERD
Clear EEF before setting EERD, so if the EEF clear fails we don't need
 to also clear EERD, just need to release the semaphore.
Clearing EEF is safe.

mfd_rv3032_enter_eerd can no longer be called more than once in a row
since it takes a lock, so don't read the status of EERD, just set it.

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Jacob Schloss
441af829e6 drivers: rtc: rv3032: Fix semaphore unlock
Fix semaphore unlock

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Jacob Schloss
2ff4bae8d8 drivers: rtc: rv3032: Initialize BSM in MFD
Refactor RV3032 initialization by configuring Vbackup config in MFD.
Assign PMU/BSM bit at init.
Move trickle-resistor-ohms / trickle-charger-mode to MFD dts node.
Add semaphore lock to mfd_rv3032_update_status since it is a RMW.
Poll EEBUSY at startup to allow for fast start when it is not a POR.
Check EEF flag after EEPROM write.
Adjust I2C poll times for all-byte update and single byte update.
Add function to write single eeprom reg to allow faster poll time.
Use single byte eeprom update for PMU and clock out to skip writing
 eeprom when current settings are correct.
Add a k_sem around eeprom operations to protect a future case where
several MFD children are accessing eeprom at same time.

Signed-off-by: Jacob Schloss <jacob.schloss@suburbanmarine.io>
2026-06-29 13:47:42 -05:00
Mathieu Choplain
79b83188a6 drivers: usb: common: stm32: gate PHY interface drivers using Kconfig
Create two Kconfig options which are used to gate compilation of the
PHY interface drivers, previously done using logic in CMake listfiles.

The first option uses the "HAS_xxx" style and is "selected" on series with
a quirk requiring turning off the ULPI clock when using the embedded FS PHY
whereas the other follows the regular driver style, but has a series gate
to prevent compilation on wrong targets (which could occur since the
compatible it checks for is vendor-agnostic).

Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
2026-06-29 13:46:32 -05:00
Marvin Gnad
eb9c31a992 drivers: spi: spi_mcux_ecspi: derive SCLK idle level from CPOL
The NXP ECSPI represents clock polarity with two separate fields:
channelConfig.polarity (SCLK_POL), the active polarity, and
channelConfig.clockInactiveState (SCLK_CTL), the level SCLK idles at
between bursts. spi_mcux_configure() set polarity from the CPOL bit but
left clockInactiveState at the kECSPI_ClockInactiveStateLow default
applied by ECSPI_MasterGetDefaultConfig().

As a result, transfers to CPOL=1 devices (SPI modes 2 and 3) ran with an
inconsistent clock: the active polarity was inverted as requested while
the idle SCLK level stayed low. Drive clockInactiveState from the same
CPOL bit so the idle level matches the configured mode.

Signed-off-by: Marvin Gnad <marvin.gnad@gmail.com>
2026-06-29 11:31:27 +02:00
Ayush Singh
86f2b3eaea drivers: rtc: ti_mspm0: Improve dow and dom writing
- Back to back writes to counter/calendar registers such as SEC, MIN,
  HOUR, DAY, MON, YEAR need to be avoided since writes to calendar
  registers take 2 to 3 RTCCLK cycles to take effect.
- The implementation here is taken from TI mspm0 sdk driverlib [0]

[0]: e66677c8c8/mspm0/source/ti/driverlib/dl_rtc_common.c (L38)

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2026-06-29 11:30:50 +02:00
Neil Chen
c589afda1c dts: arm/nxp: Update mcxa344 and mcxaxx6 pwm clock
1. Add SYSTEM_CLK support in mcux_syscon driver
2. Update mcxa344 and mcxaxx6 pwm clock to SYSTEM_CLK

Signed-off-by: Neil Chen <cheng.chen_1@nxp.com>
2026-06-29 11:30:29 +02:00
Jakub Zymelka
3cbb7c0e39 drivers: nrf_rram: hoist RRAMC write-mode programming to nrf_write()
Move the configure/de-configure pair from rram_write() up to nrf_write(),
where SYNC_LOCK guarantees exclusive access for the duration of the
whole API call. The hardware write mode is then programmed exactly
once per flash_write()/flash_erase() in the standalone (non-radio-sync)
path, regardless of how many chunks the throttling loop produces.

Behaviour for non-secure (TF-M) builds is unchanged: RRAMC config is
still programmed by TF-M at boot and never touched here.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2026-06-29 09:16:40 +02:00
Jakub Zymelka
f223f34607 drivers: flash: nrf_rram: don't advance data pointer in erase emulation
When CONFIG_SOC_FLASH_NRF_THROTTLING is enabled, the chunking loop in
rram_write() unconditionally advances the source pointer by chunk_len
at the end of every iteration. This turns the originally-NULL pointer
into chunk_len, then 2*chunk_len, ... by the start of subsequent
iterations.

The bug only triggers when:

  - CONFIG_SOC_FLASH_NRF_THROTTLING=y
  - the erase length is greater than
    CONFIG_NRF_RRAM_THROTTLING_DATA_BLOCK * 16 (default 256 B)

Guard the data pointer advance with an explicit data != NULL check so
the erase emulation path stays on the memset() branch for every
chunk.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2026-06-29 09:16:40 +02:00
Jakub Zymelka
47cf797517 drivers: flash: nrf_rram: fix commit_changes() with throttling enabled
When CONFIG_SOC_FLASH_NRF_THROTTLING is enabled, the inner chunking
loop in rram_write() decrements `len` to 0 and advances `addr` past
the end of the user buffer. The commit_changes() call that follows
then always sees `len == 0`, so the modulo-WRITE_BUFFER_MAX_SIZE
check at the top of commit_changes() returns early and the explicit
NRF_RRAMC_TASK_COMMIT_WRITEBUF is never triggered.

For sub-buffer writes (e.g. flash_write of 32 B with a 512 B buffer)
the partially-filled write buffer is then only flushed by the
READYNEXTTIMEOUT auto-commit (~4 us), which means data is not yet in
physical RRAM when the API returns. That breaks callers that rely on
write persistence on return.

Capture the original `addr` and `len` once before the throttling loop
mutates them and pass those values to commit_changes(), matching the
behaviour the non-throttled path always had.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2026-06-29 09:16:40 +02:00
Michal Chvatal
d6c509e758 drivers: i2s: mcux_flexcomm: make DMA block count configurable
Replace hardcoded NUM_DMA_BLOCKS define with Kconfig options
CONFIG_I2S_MCUX_FLEXCOMM_DMA_RX_BLOCKS and
CONFIG_I2S_MCUX_FLEXCOMM_DMA_TX_BLOCKS to allow runtime configuration
of DMA block counts for RX and TX transfers.

Refactor i2s_mcux_config_dma_blocks() to use a loop-based approach
instead of duplicated code blocks, making it more maintainable and
scalable with configurable block counts.

Align the RX start free-buffer check with the configured number of DMA
blocks so the requirement scales with
CONFIG_I2S_MCUX_FLEXCOMM_DMA_RX_BLOCKS instead of assuming two blocks.

Signed-off-by: Michal Chvatal <michal.chvatal@nxp.com>
2026-06-29 09:16:14 +02:00
Michal Chvatal
d0e57bf269 drivers: i2s: mcux_flexcomm: reformat and clean up driver
Reformat i2s_mcux_flexcomm.c to improve code consistency and
readability.

Additionally address static analysis findings on the touched code:
add a default case to the master/slave configuration switch, mirroring
the data format switch, and reduce the cognitive complexity of
i2s_mcux_trigger() by moving the START trigger handling into a dedicated
i2s_mcux_trigger_start() helper.

Signed-off-by: Michal Chvatal <michal.chvatal@nxp.com>
2026-06-29 09:16:14 +02:00
Immo Birnbaum
8194fe082b drivers: ethernet: xlnx_gem: remove legacy MDIO/PHY code
Remove the legacy MDIO and PHY support for the GEM MAC which
dates back to 2021 and doesn't use the MDIO/PHY frameworks
provided by Zephyr nowadays, as those didn't exist back then.

Signed-off-by: Immo Birnbaum <mail@birnbaum.immo>
2026-06-27 18:47:26 +02:00
Immo Birnbaum
fd9cd01ef7 drivers: ethernet: xlnx_gem: switch over to new MDIO driver
Remove all data/functions/function calls relating to the now
removed legacy MDIO/PHY support directly integrated into the
GEM device driver. Switch over to using the standard MDIO/PHY
interfaces which will now refer to the new separate MDIO
driver and the separated PHY drivers.

Consistently update the qemu_cortex_a9 board definition with
the matching MDIO and PHY nodes, qemu_cortex_a9 is currently
the only Zynq-based target where an enabled GEM instance is
specified by default.

Signed-off-by: Immo Birnbaum <mail@birnbaum.immo>
2026-06-27 18:47:26 +02:00
Immo Birnbaum
92c799f65a drivers: mdio: add MDIO driver for Xilinx GEM
Separate the MDIO functionality from the Xilinx GEM MAC driver
into a separate driver conforming with the standard MDIO API.

Signed-off-by: Immo Birnbaum <mail@birnbaum.immo>
2026-06-27 18:47:26 +02:00
Anas Nashif
96bbd46fa6 x86: loapic: make interrupt bit operations unsigned
Address MISRA integer essential-type findings in the LOAPIC and HPET
paths by making bitmask constants explicitly unsigned and by using
width-safe shifts/casts in register programming code.

The changes are mechanical and preserve behavior while avoiding signed
intermediate expressions in operations that feed uint32_t register
writes.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2026-06-26 22:30:03 -04:00
Sylvio Alves
3d898453b7 drivers: can: esp32c5: clarify twai-fd tdc/tdco comment
The data-phase timing comment conflated the controller-measured
transmitter delay (TDC) with the fixed offset (TDCO). Clarify that
only the TDCO is configured via ssp_offset, in time quanta.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-27 00:45:44 +02:00
Sylvio Alves
c14efdbe7a drivers: sdhc: esp32: enable sdmmc source clock before selecting it
Acquire the SDMMC source clock with esp_clk_tree_enable_src() before
selecting it, so the host has a clock even when the ROM left that
reference-clock gate disabled.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-27 00:44:44 +02:00
Sylvio Alves
e6cdf6ce8a drivers: sdhc: esp32: program the data-in sampling phase
sdmmc_host_set_clk_div() enabled the sample clocks via
sdmmc_ll_init_phase_delay() but never programmed the data-in sampling
phase. On SoCs where that register powers up with a value that does not
sample the data lines correctly, reads return a 0x55/0xAA pattern, the
SCR decodes wrong and the card stays in 1-bit default speed where data
transfers fail. Program the nominal phase 0 after init so reads sample
correctly and high-speed/4-bit negotiation succeeds.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-27 00:44:44 +02:00
Sylvio Alves
8a87c07b5e drivers: sdhc: esp32: support sd erase commands
The command dispatch had no entries for the SD erase sequence, so
CMD32 returned -ENOTSUP and any erase request failed. Add the three
erase opcodes: CMD32 and CMD33 as addressed commands with an R1
response, and CMD38 with R1b plus SCF_WAIT_BUSY so the driver waits
for the card to finish erasing before returning.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-27 00:44:44 +02:00
Karl Palsson
c822633dae drivers/w1/gpio: provide error code when init fails
Makes diagnosis a little easier.

Signed-off-by: Karl Palsson <karl.palsson@marel.com>
2026-06-27 00:43:50 +02:00
Tim Pambor
2382b45a66 drivers: ethernet: dwc_mac: 1000: log feature register
Add debug log for hardware feature register to
ease debugging of issues.

Signed-off-by: Tim Pambor <tim.pambor@codewrights.de>
2026-06-26 13:03:09 -04:00
Tim Pambor
58f9c84805 drivers: ethernet: dwc_mac: 1000: align version register name
Update the name of the version register to match the naming convention
used for other registers in the driver and locate based on its address.

Signed-off-by: Tim Pambor <tim.pambor@codewrights.de>
2026-06-26 13:03:09 -04:00
Mika Braunschweig
ee994a9501 driver: timer: ti_dmtimer: set device statically instead at initialization
This assigns the device pointer used for the timer during compile time
instead of assigining it at runtime during initialization. This prevents
overwriting the exception vector on Cortex-R5 cores, if a timer is used
before the kernel initialization finished.

Signed-off-by: Mika Braunschweig <mika.braunschweig@siemens.com>
2026-06-26 13:02:17 -04:00
Mika Braunschweig
8884c8721f firmware: tisci: add asserts whether required mailboxes are enabled
It is possible that TISCI is enabled but the required mailboxes are
not usable due to the mailbox driver being disabled. To provide a more
understandable build error in such cases, BUILD_ASSERT calls have been
added.

Signed-off-by: Mika Braunschweig <mika.braunschweig@siemens.com>
2026-06-26 13:02:17 -04:00
Karl Palsson
4b3d6fa041 drivers/gpio/gpio_mcux: support single ended mode when available
Add the missing open drain support for the families that support it.
Tested with the zephyr,1w-gpio driver on kinetis k66

Signed-off-by: Karl Palsson <karl.palsson@marel.com>
2026-06-26 14:24:47 +01:00
Sylvio Alves
fcb5035283 drivers: can: add espressif twai-fd driver
Add a CAN driver for the Espressif TWAI-FD controller used on the
ESP32-C5. The driver implements the full can_driver_api,
supporting Classic CAN and CAN-FD frames.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2026-06-26 14:23:58 +01:00
Dilip Raman
35cb4e769b drivers: flash: soc_flash_lpc84x_iap: enable support for lpc84x IAP
Add support for LPC84x IAP Flash driver to soc_flash_lpc84x_iap.c

Signed-off-by: Dilip Raman <dilipr@aerlync.com>
Signed-off-by: Sayooj K Karun <sayooj@aerlync.com>
2026-06-26 14:23:10 +01:00
Surya Prakash T
00787dc99e drivers: serial: add NXP LPC84x UART driver
Add UART driver support for NXP LPC84x series.

The driver supports polling and interrupt-driven modes with
runtime configuration. It integrates with Zephyr clock control
and pinctrl for device setup.

Signed-off-by: Surya Prakash T <suryat@aerlync.com>
Signed-off-by: Sayooj K Karun <sayooj@aerlync.com>
Co-authored-by: Dilip Raman <dilipr@aerlync.com>
2026-06-26 14:23:10 +01:00
Surya Prakash T
2b889c644a drivers: pinctrl: Pin control driver for LPC84x
-Added pinctrl driver for the NXP LPC84x series.
-The driver manages pin configuration via the IOCON
peripheral and dynamic pin function assignment via
the Switch Matrix (SWM).

Signed-off-by: Surya Prakash T <suryat@aerlync.com>
Signed-off-by: Sayooj K Karun <sayooj@aerlync.com>
Co-authored-by: Dilip Raman <dilipr@aerlync.com>
2026-06-26 14:23:10 +01:00