Move related modem status fields into dedicated sub-structures.
Group signal, band, restart, and KCELLMEAS state instead of keeping
these fields directly in struct modem_status. This reduces the size of
the flat status namespace and makes future status updates easier to
review.
No functional behavior is changed.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Move delayable work items and semaphores into dedicated sub-structures
in the HL78xx driver data.
This reduces the number of top-level fields in struct hl78xx_data and
makes the purpose of each synchronization or work item easier to
understand from its access path.
No functional behavior is changed.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Move HL78xx related device pointers under the devices sub-structure.
Replace direct uses of the modem, GNSS, and offload device pointers
with the corresponding data->devices members. This keeps device
references grouped with the rest of the driver runtime state and
prepares the code for further structure cleanup.
No functional behavior is changed.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Introduce grouped state structures for the HL78xx driver to reduce
the number of flat fields in the main driver data and status objects.
Add dedicated containers for signal, band, restart, KCELLMEAS, low
power, work, semaphore, device, and runtime band state. This prepares
the driver for follow-up mechanical moves and makes ownership of each
piece of state clearer.
No functional behavior is changed.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Fix CESQ_RSRP and CESQ_RSRQ conversion macros in hl78xx_gnss_parsers.c:
the previous formulas were shifted by one RSRP/RSRQ step, producing
off-by-one signal values.
Add HL78XX_CESQ_RSRP_BASE, HL78XX_CESQ_RSRP_STEP, and equivalent
RSRQ constants to hl78xx_apis.h so callers can apply the same
conversion without duplicating magic numbers.
Add the AT error-code encoding constants HL78XX_MODEM_AT_ERROR,
HL78XX_MODEM_AT_CME_ERROR, and HL78XX_MODEM_AT_CMS_ERROR alongside
the hl78xx_modem_at_printf(), hl78xx_modem_at_scanf(), and
hl78xx_modem_at_cmd() public inline wrappers in hl78xx_apis.h.
Add hl78xx_sim_slot, hl78xx_modem_restart_mode, and
hl78xx_power_down_response enums to hl78xx_apis.h. Add
HL78XX_VGPIO_LOW, HL78XX_VGPIO_HIGH, HL78XX_GPIO6_LOW, and
HL78XX_GPIO6_HIGH event types. Add public declarations for
hl78xx_restart_modem(), hl78xx_set_wake_pin_low(),
hl78xx_set_wake_pin_high(), hl78xx_set_active_sim(), and the
hl78xx_power_down_trigger/cancel/respond/confirm() API.
Add HL78XX_RAT_MODE_NONE initializer constant to hl78xx_apis.h and
use it in the hello_hl78xx sample to make the initial RAT mode
explicit rather than relying on zero-initialisation.
Add HL78XX_LOG_HEXDUMP_DBG macro to hl78xx.h for optional verbose
hex dump logging.
Change the post-restart AT command timeout in hl78xx_chat.h from a
short constant to HL78XX_CMD_TIMEOUT_LONG so commands sent
immediately after modem restart have adequate time to complete.
Guard the KEDRXCFG command in the PMC init script with
CONFIG_MODEM_HL78XX_RAT_NBNTN so the NB-NTN eDRX parameter is only
applied on builds that include NTN support.
Add MODEM_HL78XX_AT_SHELL depends on SHELL to Kconfig.hl78xx to
prevent a Kconfig warning when the shell subsystem is disabled.
Port hl78xx_hl7800.c to the updated signal-quality API: replace
direct field access with the new CESQ helper macros.
Port hl78xx_hl7800.c signal-quality path and hl78xx_gnss_parsers.c
CESQ parsing to the corrected RSRP/RSRQ formulas.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Add hl78xx_at_cmd_capture_ctx to track the terminal result (OK,
ERROR, CME ERROR, CMS ERROR) and any captured response text for a
dynamic command in flight. Allocate hl78xx_at_cmd_terminal_result
and hl78xx_at_cmd_error_type enums in hl78xx.h alongside the context
struct. Add hl78xx_at_cmd_capture_ctx at_cmd_capture and
hl78xx_at_cmd_capture_ctx at_cmd_capture fields to hl78xx_data.
Add hl78xx_dynamic_cmd_prepare_matches() to normalise a caller-
supplied match array into data->buffers.dynamic_matches before each
command, injecting default ok/error/cme/cms callbacks where the
caller left callback = NULL. Wire it into
hl78xx_dynamic_cmd_prepare_script() and switch
modem_chat_script_chat_set_response_matches() to use the normalised
pointers. Introduce hl78xx_dynamic_cmd_reset_terminal_result() and
call it at the top of hl78xx_dynamic_cmd_send_impl().
Change hl78xx_dynamic_cmd_send_impl() tx_lock acquisition to use a
calculated k_timeout_t (response_timeout or HL78XX_CMD_TIMEOUT_SHORT
for synchronous calls; K_NO_WAIT for async). Log a warning with the
command text when the mutex times out. Propagate the exact errno
through all early-exit paths instead of returning -1. After a
successful script run, check terminal_result and return -EIO if the
modem replied with an error response.
Add hl78xx_at_cmd_execute() as the single internal executor used by
both hl78xx_send_cmd() (no capture) and the new public AT helpers.
Add hl78xx_modem_at_exec(), hl78xx_modem_at_printf_va(),
hl78xx_modem_at_cmd_va(), and hl78xx_modem_at_scanf_va() in
hl78xx_apis.c as the implementations backing the inlines in
hl78xx_apis.h. Add hl78xx_modem_at_encode_error() to translate a
capture error type + code into the packed HL78XX_MODEM_AT_* encoding.
Add struct kband_syntax active_band to modem_status and
hl78xx_on_kbnd() to populate it from AT+KBND? URC responses.
Add hl78xx_runtime_band_provider_t, runtime_band_provider, and
runtime_band_provider_user_data to hl78xx_data. Add
hl78xx_get_runtime_band_override(), hl78xx_band_bitmap_from_single_
band(), and hl78xx_get_expected_band_config_for_rat() to
hl78xx_cfg.c. Switch hl78xx_band_cfg() to call
hl78xx_get_expected_band_config_for_rat() instead of
hl78xx_get_band_default_config_for_rat() so a runtime provider can
override the configured band at runtime.
Fix hl78xx_api_func_modem_dynamic_cmd_send() null-pointer check and
hl78xx_api_func_get_modem_info_standard() argument validation to
guard dev and dev->data before dereferencing.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Add a two-stage power-down flow. hl78xx_power_down_work_handler()
notifies the application via HL78XX_POWER_DOWN_UPDATE and arms a
confirmation timer (CONFIG_MODEM_HL78XX_POWER_DOWN_CONFIRM_TIMEOUT_S).
hl78xx_power_down_shutdown_fn() fires when the timer expires and enters
MODEM_HL78XX_STATE_INIT_POWER_OFF. Add hl78xx_power_down_trigger(),
hl78xx_power_down_cancel(), hl78xx_power_down_respond(), and
hl78xx_power_down_confirm() as the public API surface. Guard
hl78xx_power_down_feed_timer() against calls when feeding is
suppressed or no timer is pending.
Add hl78xx_suspend_uart() and hl78xx_resume_uart() helpers. Use them
in the sleep BUS_CLOSED handler, the sleep DEVICE_AWAKE handler, the
idle BUS_CLOSED handler, and the idle SUSPEND handler. Move
k_sem_give() from hl78xx_on_idle_state_enter() to
hl78xx_idle_event_handler(BUS_CLOSED) so the semaphore is released
only after the bus is closed and the UART is suspended. Add
k_sem_take(K_NO_WAIT) before delegating SUSPEND in
hl78xx_driver_pm_action() to drain any stale count.
Add MODEM_HL78XX_STATE_SOFT_RESET with enter/leave/event handlers.
hl78xx_on_soft_reset_state_enter() sends AT+CFUN=4,1 and waits for
MDM_RESTART; on timeout it falls back via
hl78xx_enter_restart_fallback_state(). Add
MODEM_HL78XX_EVENT_RESTART_REQUESTED and
hl78xx_handle_restart_requested_event() as a pre-dispatch global
handler that routes to SOFT_RESET or RESET_PULSE based on restart
mode. Add hl78xx_api_func_restart() / hl78xx_restart_modem() as the
public restart API. Reset at_cmd_ready_sent in the restart path so
AT_CMD_READY fires once per boot cycle.
Add VGPIO debounce: hl78xx_dispatch_vgpio_state(),
hl78xx_vgpio_debounce_work_handler(), and k_work_init_delayable() in
hl78xx_init(). ISR now schedules the debounce work when
vgpio_debounce_ms > 0; direct dispatch otherwise. Set
HL7812_VGPIO_DEBOUNCE_MS = 300 and assign vgpio_debounce_ms in
hl78xx_variant_ops_hl7812.
Add HL78XX_VGPIO_LOW / HL78XX_VGPIO_HIGH event types.
Add unconditional HL78XX_GPIO6_LOW and HL78XX_GPIO6_HIGH dispatches
in hl78xx_hl7812_gpio6_handle_low/high(). Guard gpio6_handle_low()
against transitions during a config restart. Simplify power-down
state tracking: drop the conditional POWER_DOWN_UPDATE dispatch from
GPIO6 ISR; the new two-stage flow takes that responsibility.
Call hl78xx_invalidate_socket_contexts() from
hl78xx_hl7812_on_ksup_lpm() on unexpected restart.
Guard hl78xx_on_run_init_script_state_enter() and
hl78xx_on_soft_reset_state_enter() to assert the WAKE pin high before
running scripts. Add hl78xx_on_await_power_on_state_enter() call to
hl78xx_power_down_allow_feeding() and resume_uart on TIMEOUT.
Manage config_restart_pending across rat_cfg and pmc_cfg states so
the TIMEOUT handler waits for MDM_RESTART rather than triggering a
second restart. Add MDM_RESTART handling in pmc_cfg to enter
RUN_INIT_SCRIPT directly.
Add hl78xx_set_wake_pin_low(), hl78xx_set_wake_pin_high(),
hl78xx_set_active_sim(), and hl78xx_power_down_trigger/cancel/
respond/confirm() to the public API.
Fix mdm_gpio_sim_switch DT macro: use mdm_sim_switch_gpios instead
of mdm_sim_select_gpios. Fix sim_switch GPIO direction: GPIO_OUTPUT
not GPIO_INPUT.
Add hl78xx_sim_slot, hl78xx_modem_restart_mode, and
hl78xx_power_down_response enums plus VGPIO/GPIO6 event types to
hl78xx_apis.h.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Add hl78xx_on_kcell() to parse +KCELL=0 serving-cell responses for
GSM/HL7812. hl78xx_signal_quality_check_uses_kcell() selects between
AT+KCELL=0 (GSM) and AT+KCELLMEAS=1 (LTE/NB) at runtime.
Add hl78xx_signal_quality_ready() to centralize the socket-readiness
logic previously open-coded in hl78xx_on_kcellmeas(). Add
hl78xx_schedule_signal_quality_retry() to reschedule the 2-second
retry from hl78xx_on_kcellmeas() and hl78xx_on_kcell().
Store SINR from AT+KCELLMEAS in modem_status.sinr and expose it via
struct hl78xx_network_info (HL78XX_NETWORK_INFO_SINR).
Add struct hl78xx_gsm_kcell_status to modem_status for GSM cell data.
Add hl78xx_on_ctzeu() behind CONFIG_MODEM_HL78XX_HAS_CTZEU_URC (HL7812
only). Move AT+CTZU=1 and AT+CTZR=3 into the init script and relocate
AT+KCELLMEAS? outside the LOW_POWER_MODE guard so it always runs.
Dispatch HL78XX_LTE_PHONE_FUNCTIONALITY_UPDATE from hl78xx_on_cfun(),
HL78XX_LTE_AT_CMD_READY once per boot cycle from both
hl78xx_on_await_registered_state_enter() and
hl78xx_airplane_mode_event_handler(), and HL78XX_LTE_DNS_READY from
hl78xx_carrier_on_timeout_handler().
Add MODEM_HL78XX_EVENT_AUTORAT_RAT_CHANGED and handle it in
hl78xx_await_registered_event_handler() to call
cfg_apply_rat_post_select() when AUTORAT switches RAT.
Add HL78XX_NETWORK_INFO_SINR + RSRQ validity threshold
(CONFIG_MODEM_MIN_ALLOWED_SIGNAL_QUALITY) and SINR threshold
(CONFIG_MODEM_MIN_ALLOWED_SINR).
Fix hl78xx_enable_lte_coverage_urc(): remove the spurious
LOW_POWER_MODE guard on the KCELLMEAS=1,<timeout> path.
Update hl78xx_hl7812_on_kstatev_urc() to delegate
AUTORAT_RAT_CHANGED after a RAT transition.
Add gnss_init_status reset on GNSS init entry and guard the
SCRIPT_SUCCESS handler against double-trigger.
Add LTE_RESTORE_REQUESTED handling in GNSS search and airplane-mode
states.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Add a menuconfig MODEM_HL78XX_KNWSCANCFG that lets the user tune the
AT+KNWSCANCFG out-of-coverage and initial-scan backoff parameters at
build time.
Two sub-options are exposed:
MODEM_HL78XX_KNWSCANCFG_OOC (mode 0) - controls how quickly the
modem retries after losing coverage. Supports linear and exponential
backoff with configurable min, max, and step values.
MODEM_HL78XX_KNWSCANCFG_INITIAL_SCAN (mode 1) - controls the scan
interval on first boot or after a restart. Same linear/exponential
scheme selection.
Build-time #error guards in hl78xx_chat.h catch a max < min
misconfiguration before the AT string is composed with STRINGIFY.
The matching AT+KNWSCANCFG command strings are injected into the modem
init chat script via conditional MODEM_CHAT_SCRIPT_CMD_RESP entries.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Replace the per-variant cxreg_try_parse_rat_mode callback with a
single hl78xx_parse_cereg_info() that decodes all CEREG/CREG fields
(TAC, cell ID, AcT, reject cause, timer strings) into the new public
struct hl78xx_cxreg_status.
Move kselacq_syntax and hl78xx_kselacq_rat to the public API header
so application code can set a preferred RAT list without including
driver-internal headers.
Add struct hl78xx_network_info and enum hl78xx_network_info_type to
replace the removed HL78XX_MODEM_INFO_APN, CURRENT_RAT, and
NETWORK_OPERATOR entries from hl78xx_modem_info_type. The new
hl78xx_get_network_info() returns cached values for APN, RAT,
operator (all formats), MCC, MNC, TAC, cell ID, IP, DNS, active band,
and SINR.
Add hl78xx_parse_plmn() to extract MCC and MNC from the numeric
operator string returned by AT+COPS.
Add hl78xx_set_prl_internal() to send AT+KSELACQ from within the
driver and keep the cached PRL in sync.
Update hl78xx_on_cxreg() to use the new parser and gate registration
events on init_sequence_completed. Update hl78xx_on_cops() to
populate network_info.operator. Update hl78xx_on_kselacq() to use
HL78XX_KSELACQ_RAT_CLEAR.
Update hello_hl78xx sample to call hl78xx_get_network_info() for
APN, RAT, and operator queries.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
Improve TCP socket reliability by tracking per-socket error state
and surfacing NO_CARRIER as a clean connection-loss signal.
Add enum hl78xx_tcp_state_check_reason and per-socket fields
tcp_state_check_pending, tcp_state_check_reason, and
tcp_pending_err_code[] to defer and coalesce KTCP_NOTIF error
events until the socket read buffer is drained.
Add hl78xx_tcp_notif_to_errno() that maps all documented
KTCP_NOTIF codes to POSIX errnos. Add helper functions
hl78xx_mark_tcp_socket_error(), hl78xx_defer_tcp_socket_error(),
hl78xx_apply_pending_tcp_socket_error_if_drained(), and
hl78xx_wake_socket_waiters() to apply pending errors atomically.
Replace the single ktcp_state_match with a two-entry
ktcp_state_matches array: a partial=true match for the
+KTCPSTAT: line that invokes hl78xx_on_ktcpstat(), followed by a
plain OK terminator. This lets the driver read the full TCP state
response in one script step.
Add NO_CARRIER_STRING to connect_matches and kudpind_allow_match
so a NO CARRIER response during connect or UDP socket setup is
detected and the script terminates cleanly. Add
hl78xx_sockets_allow_matches (OK, NO_CARRIER, CME, ERROR) and
wire it through hl78xx_get_sockets_allow_matches() to replace the
generic hl78xx_allow_match for socket-level commands.
Signed-off-by: Zafer SEN <zafersn93@gmail.com>
The eSPI creator, Intel has a proposal for a new eSPI driver where
the eSPI driver is a transport layer for events and data. The application
will handle all interpretation of command and data. We expect a clean,
from scratch implementation of the new driver architecture not based
on this driver.
This driver has been heavily modified as follows:
1. Try to meet the latest Zephyr coding standards.
2. Break up the massive and unmaintable register structure into smaller
structures based on specific hardware functions.
3. Move VWire IRQ handlers into the driver so any changes to VWire
ordering is more easily handled. We also plan to defeature the GIRQ
interrupt driver since MEC/XEC GIRQ hardwar is not a real interrupt
controller.
4. Move Serial-IRQ configuration out of the main part of the driver into
the peripheral channel device initialization routines. Serial-IRQ and
BARs are held in reset by nPLTRST active (low). Once the Host
de-asserts nPLTRST VWire the driver calls functions from a table of
peripheral channel devices.
5. Some peripheral channel devices have Kconfig's specifying the Host I/O
address for accessing the peripheral. For most of these if the Kconfig
is not defined we get the addrees from device tree.
6. A subset of peripheral channel devices can also be mapped to Host
memory space. If a device tree property exists specifying the address
we will program the appropriate memory BAR. Be aware this does allow
both I/O and memory BARs to both be enabled.
Signed-off-by: Manimaran A <manimaran.a@microchip.com>
Transition the driver over to one-shot operation by default unless
`CONFIG_LPS22HH_TRIGGER` is enabled to actually make use of periodic
measurements. By using one-shot mode and polling on the status register,
this fixes the following code flow, which is currently broken due to
no periodic samples being available immediately after resuming.
```
pm_device_runtime_get(dev);
sensor_sample_fetch(dev);
sensor_channel_get(dev, ...);
pm_device_runtime_put(dev);
```
Signed-off-by: Jordan Yates <jordan@embeint.com>
Add the driver for TI's interrupt based AM654 SD Host Controller that can
be used with both eMMC and SD cards.
Signed-off-by: Amneesh Singh <amneesh@ti.com>
Some STM32 series (e.g. WB0) do not provide all LL_TIM_TS_ITRx macros,
causing build failures when the timer is configured in disabled slave
mode. Introduce PWM_SLAVE_TRIGGER() which conditionally expands to the
LL_TIM_TS_* token only when slave mode is actually enabled, and falls
back to 0 otherwise.
Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
Make the max3421e driver work with multiple max3421e nodes present in the
dts.
Previously, one thread stack was defined, and the driver defaulted to the
device 0.
Now, each instance in dts with status okay gets its own thread, driver
data, and config.
Signed-off-by: Benjamin Jurewicz <bjurewicz@internships.antmicro.com>
When shell is used then log_output_func may be called with a
buf argument which is not the log_output buffer. In that case
buffer may not be word aligned and optimized copying cannot
be used. Add additional check for alignment before using
double word copying.
Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
The IBI work node free-list uses a sys_slist_t which has no built-in
locking. Since the enqueue functions are called from ISR context
and the work handler returns nodes from the workqueue thread, this
is a data race on the shared list.
Add a k_spinlock around all sys_slist_get and sys_slist_append
operations on the free-list to ensure safe access from both ISR
and thread contexts.
Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
The MCXAXX7 series (e.g. MCXA577) changed the signature of
CLOCK_GetI3CFClkFreq() to take an instance id argument, unlike
the earlier MCXA1xx/MCXA2xx families where the function takes no
arguments. Guard the MCXAXX7 case before the generic
CONFIG_SOC_FAMILY_MCXA fallback so the I3C clock rate is queried
correctly on MCXA577.
Signed-off-by: Peter Wang <chaoyi.wang@nxp.com>
Add a counter driver for the NXP Time Stamp Timer (TSTMR), a 56-bit
free-running, read-only up-counter. The driver exposes it through the
Zephyr counter API (get_value/get_value_64 and get_freq); start/stop,
alarm, and top-value operations are unsupported as the hardware is
free-running with no compare or interrupt capability.
The frequency is SoC-specific and taken from the clock-frequency
devicetree property. A coherent 56-bit read is obtained by sampling the
low/high registers twice under an IRQ lock and handling low-word
rollover.
Add the binding, Kconfig, and build glue.
Signed-off-by: Holt Sun <holt.sun@nxp.com>
Implement the BBRAM check_invalid() API for IT8XXX2 devices.
The API reports VBAT power rail failures by returning -EFAULT
when a VBAT reset event is detected.
Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
Moves a semaphore I added to lock the SPI bus during VCOM inversion
commands down one line in three places, so that we can ensure the
bus is ready before allowing display writes to be attempted.
Co-authored-by: snoyer <noyer.stephane@gmail.com>
Signed-off-by: Eden Uhde <eden@rainbowtree.house>
siwx91x_send() incorrectly unrefs a caller-owned TX net_pkt after
transmit. In the TX path, the packet is owned by the networking/L2
stack, while the driver only borrows it long enough to read or copy the
frame data.
As a result, the packet may be returned to the pool prematurely while
upper layers still consider it valid. Once released, the same memory can
be reused for a different allocation, creating a packet lifetime bug
similar to a use-after-free condition. This memory reuse can lead to
unexpected behavior and explain hangs in the transmit path.
Signed-off-by: Swamidas Nampalli <Swami.Das@silabs.com>
- According to the zephyr rtc_time struct docs:
tm_mon = MON - 1
tm_year = YEAR - 1900
- MSPM0 RTC registers expect the actual month (1 to 12) and year (0 to
4095)
- So perform the expected conversion on both sides.
- Fixes test_y2k in `tests/drivers/rtc/rtc_api`.
Signed-off-by: Ayush Singh <ayush@beagleboard.org>
Fix a potential underflow bug in npcx_itim_evt_elapsed_cyc32() that
occurs when cyc_evt_timeout is 1. The timer register is programmed with
MAX(cyc_evt_timeout - 1, 1), but the elapsed calculation used
cyc_evt_timeout - cnt2 - 1, causing an off-by-one mismatch.
When cyc_evt_timeout=1:
- Register is set to MAX(0, 1) = 1
- If read before first tick (cnt=1), elapsed = 1 - 1 - 1 = -1
- This underflows to 0xffffffff (~36 hours worth of cycles)
This can trigger a watchdog reset: the massive elapsed value causes
sys_clock_announce() to run all scheduled tasks in a tight loop,
starving the watchdog feeder.
Fix by mirroring the same MAX(cyc_evt_timeout - 1, 1) logic used when
programming the timer, ensuring the elapsed calculation matches the
actual start value.
Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
Add interrupt-driven API support to the esp32 lp_uart driver and make
RTS/CTS hardware flow control optional, enabled only when the device
tree sets hw-flow-control. Add a loopback property that ties TX to RX
inside the peripheral for self-test without external wiring.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Extend the esp32 lp_uart driver to the esp32c5 and esp32p4. On the
esp32p4 the LP UART signals are routed through the LP GPIO matrix and
the controller is clocked from the precise XTAL_D2 source instead of
the uncalibrated RC_FAST, so the baud-rate framing is reliable.
Relax the fixed-pin bindings, describe the lp_uart node pins on the
c5/c6/p4 HP and LP cores, and extend the echo_ulp sample. Update
hal_espressif for the esp32p4 LP GPIO matrix and clock-tree helpers.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
align the devicetree structure
with the recently added more generic
Synopsys ethernet driver, as the esp32
also uses the same IP from Synopsys, so we
can add support for the esp32 in that driver
easier.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
This commit adds physical destination mode for IOAPIC interrupt delivery
on x2APIC platforms. Without this, interrupts were not routed to the
correct APIC ID, causing failures on platforms with non-zero APIC IDs.
On x2APIC platforms, the default RTE destination broadcasts to all
CPUs, but LDR is read-only and uses the cluster model, so interrupts
are not correctly delivered when the physical APIC ID is non-zero,
causing drivers to fail.
Under CONFIG_X2APIC, use runtime APIC ID detection to route interrupts
directly to the current CPU. The existing xAPIC code remains unchanged.
Signed-off-by: S Swetha <s.swetha@intel.com>
Adapt the driver to support Ethernet controller multi instances.
This adaptation is aligned with Zephyr method used for other
drivers.
Now, for each MAC node in DT targetting this driver, a probe
will be processed while a single one was done before.
Signed-off-by: Erwan SZYMANSKI <erwan.szymanski@st.com>
The STM32 ETH HAL for STM32MP13 will be corrected in the following PR:
https://github.com/zephyrproject-rtos/hal_stm32/pull/366
As we want to have a "instance agnostic" approach on each Ethernet
controller device reference, we need to avoid to point on ETH1, ETH2
or more generally ETHx registers. This is up to the HAL to handle it.
Signed-off-by: Erwan SZYMANSKI <erwan.szymanski@st.com>
To prepare the multi instances implementation of eth_stm32_hal
drivers, singletons implementations are cleaned.
Removes this portion of code handling the
zephyr,random-mac-address DT property because it is unused and
managed directly in the framework now.
Signed-off-by: Erwan SZYMANSKI <erwan.szymanski@st.com>
To prepare the support of the second Ethernet port, need to
remove some static declarations of phy_dev, dma_buf or dma_desc
present in the original code.
The best option here is to pass more elements in
eth_stm32_hal_dev_cfg and eth_stm32_hal_dev_data to better
handle it in v1 and v2 APIs.
When multi instance will be completed, we will have to get
the ressources owned by each eth device reference, this is the
reason of this implementation.
Important: for SoC reference supporting multiple Ethernet ports
(this is the case for the STM32MP13), some HAL functions
prototypes differs. This is what is managed in the original
driver by using STM32_ETH_ARGS macro. We complete this by
implementing ETH_STM32_HAL_GET_CB_DEVDATA macro. The goal of
this one is to point either on the right dev_data reference
in multi instance API case, or to point on a static dev_data
reference if singleton API is used.
Signed-off-by: Erwan SZYMANSKI <erwan.szymanski@st.com>
Correct serial memory qspi init to skip serial memory setup
when not explicitly needed, to avoid SMIF init in XIP mode.
The full fix for this issue will be finalized with issue 112066.
Signed-off-by: Laura Carlesso <laura.carlesso@infineon.com>
Signed-off-by: Davide Di Lello <Davide.Dilello@Infineon.com>
In streaming mode the application does not supply a buffer in the
adc_sequence; sample data is written into a buffer allocated from the
RTIO mempool inside the ISR. Skip the sequence buffer size validation
in start_read() when CONFIG_ADC_STREAM is enabled, which otherwise
fails with a spurious -ENOMEM "Provided buffer is too small" error.
Signed-off-by: Fabrice DJIATSA <fabrice.djiatsa-ext@st.com>
Remove the assertion in eth_stm32_hal_v1.c recently introduce between byte
array sizes storing MAC address value. It was useless since both byte
array sizes are based on NET_ETH_ADDR_LEN macro. Moreover the assertion
may produce a build warning as reported (and fixed) in eth_stm32_hal_v2.c
by commit 0ee22dc998 ("drivers: ethernet: stm32: fix clang error").
Factorize the 2 build assertions in eth_stm32_hal2.c with an explicit
comment why it's used.
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Use <> operator to include a Zephyr header file instead of "" that
is intended to local header files, not header files relative to
specifically defined search paths.
This change was made running the sed shell command below:
$ sed -i -E 's/#include "zephyr\/([^"]+)\.h"/#include <zephyr\/\1.h>/g' \
`grep -rsl "#include \"zephyr/" drivers/`
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
This commit deploys a workaround for errata 2.21.3 from ES0491 (and similar
for other H7 SoCs).
This prevent the SPI interrupt to fire when SPI is disabled, by disabling
the EOT and TXP interrupt before disabling the SPI.
Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
Update to use the device instance's private message queue instead
of the singleton global message queue.
Signed-off-by: The.Thanh Nguyen <the.nguyen.yf@renesas.com>