diff --git a/drivers/modem/hl7800.c b/drivers/modem/hl7800.c index f72485db334..e6f31f0b772 100644 --- a/drivers/modem/hl7800.c +++ b/drivers/modem/hl7800.c @@ -5621,20 +5621,16 @@ static void mdm_reset_work_callback(struct k_work *item) { ARG_UNUSED(item); - mdm_hl7800_reset(); + hl7800_lock(); + + (void)modem_reset_and_configure(); + + hl7800_unlock(); } int32_t mdm_hl7800_reset(void) { - int ret; - - hl7800_lock(); - - ret = modem_reset_and_configure(); - - hl7800_unlock(); - - return ret; + return k_work_reschedule_for_queue(&hl7800_workq, &iface_ctx.mdm_reset_work, K_NO_WAIT); } static void mdm_power_off_work_callback(struct k_work *item) diff --git a/include/zephyr/drivers/modem/hl7800.h b/include/zephyr/drivers/modem/hl7800.h index 6cb880e6142..86800989cf4 100644 --- a/include/zephyr/drivers/modem/hl7800.h +++ b/include/zephyr/drivers/modem/hl7800.h @@ -265,7 +265,7 @@ int32_t mdm_hl7800_power_off(void); /** * @brief Reset the HL7800 (and allow it to reconfigure). * - * @return int32_t 0 for success + * @return int32_t >= 0 for success, < 0 for failure */ int32_t mdm_hl7800_reset(void);