Lines Matching refs:p_instance
103 static void apply_config(nrfx_uarte_t const * p_instance, in apply_config() argument
116 nrf_uarte_baudrate_set(p_instance->p_reg, p_config->baudrate); in apply_config()
117 nrf_uarte_configure(p_instance->p_reg, &p_config->hal_cfg); in apply_config()
118 nrf_uarte_txrx_pins_set(p_instance->p_reg, p_config->pseltxd, p_config->pselrxd); in apply_config()
130 nrf_uarte_hwfc_pins_set(p_instance->p_reg, p_config->pselrts, p_config->pselcts); in apply_config()
134 static void interrupts_enable(nrfx_uarte_t const * p_instance, in interrupts_enable() argument
137 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ENDRX); in interrupts_enable()
138 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ENDTX); in interrupts_enable()
139 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ERROR); in interrupts_enable()
140 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_RXTO); in interrupts_enable()
141 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED); in interrupts_enable()
142 nrf_uarte_int_enable(p_instance->p_reg, NRF_UARTE_INT_ENDRX_MASK | in interrupts_enable()
147 NRFX_IRQ_PRIORITY_SET(nrfx_get_irq_number((void *)p_instance->p_reg), in interrupts_enable()
149 NRFX_IRQ_ENABLE(nrfx_get_irq_number((void *)p_instance->p_reg)); in interrupts_enable()
152 static void interrupts_disable(nrfx_uarte_t const * p_instance) in interrupts_disable() argument
154 nrf_uarte_int_disable(p_instance->p_reg, NRF_UARTE_INT_ENDRX_MASK | in interrupts_disable()
159 NRFX_IRQ_DISABLE(nrfx_get_irq_number((void *)p_instance->p_reg)); in interrupts_disable()
162 static void pins_to_default(nrfx_uarte_t const * p_instance) in pins_to_default() argument
170 txd = nrf_uarte_tx_pin_get(p_instance->p_reg); in pins_to_default()
171 rxd = nrf_uarte_rx_pin_get(p_instance->p_reg); in pins_to_default()
172 rts = nrf_uarte_rts_pin_get(p_instance->p_reg); in pins_to_default()
173 cts = nrf_uarte_cts_pin_get(p_instance->p_reg); in pins_to_default()
174 nrf_uarte_txrx_pins_disconnect(p_instance->p_reg); in pins_to_default()
175 nrf_uarte_hwfc_pins_disconnect(p_instance->p_reg); in pins_to_default()
195 static void apply_workaround_for_enable_anomaly(nrfx_uarte_t const * p_instance) in apply_workaround_for_enable_anomaly() argument
202 (volatile uint32_t *)(((uint32_t)p_instance->p_reg) + 0x564); in apply_workaround_for_enable_anomaly()
204 (volatile uint32_t *)(((uint32_t)p_instance->p_reg) + 0x568); in apply_workaround_for_enable_anomaly()
208 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STOPTX); in apply_workaround_for_enable_anomaly()
213 nrf_uarte_enable(p_instance->p_reg); in apply_workaround_for_enable_anomaly()
214 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STOPRX); in apply_workaround_for_enable_anomaly()
224 (void *)p_instance->p_reg); in apply_workaround_for_enable_anomaly()
227 (void)nrf_uarte_errorsrc_get_and_clear(p_instance->p_reg); in apply_workaround_for_enable_anomaly()
228 nrf_uarte_disable(p_instance->p_reg); in apply_workaround_for_enable_anomaly()
231 (void)(p_instance); in apply_workaround_for_enable_anomaly()
235 nrfx_err_t nrfx_uarte_init(nrfx_uarte_t const * p_instance, in nrfx_uarte_init() argument
240 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_init()
267 if (nrfx_prs_acquire(p_instance->p_reg, in nrfx_uarte_init()
268 irq_handlers[p_instance->drv_inst_idx]) != NRFX_SUCCESS) in nrfx_uarte_init()
278 apply_config(p_instance, p_config); in nrfx_uarte_init()
280 apply_workaround_for_enable_anomaly(p_instance); in nrfx_uarte_init()
287 interrupts_enable(p_instance, p_config->interrupt_priority); in nrfx_uarte_init()
290 nrf_uarte_enable(p_instance->p_reg); in nrfx_uarte_init()
301 void nrfx_uarte_uninit(nrfx_uarte_t const * p_instance) in nrfx_uarte_uninit() argument
303 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_uninit()
304 NRF_UARTE_Type * p_reg = p_instance->p_reg; in nrfx_uarte_uninit()
308 interrupts_disable(p_instance); in nrfx_uarte_uninit()
335 NRFX_LOG_ERROR("Failed to stop instance with base address: %p.", (void *)p_instance->p_reg); in nrfx_uarte_uninit()
339 pins_to_default(p_instance); in nrfx_uarte_uninit()
347 NRFX_LOG_INFO("Instance uninitialized: %d.", p_instance->drv_inst_idx); in nrfx_uarte_uninit()
350 nrfx_err_t nrfx_uarte_tx(nrfx_uarte_t const * p_instance, in nrfx_uarte_tx() argument
354 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_tx()
358 NRFX_ASSERT(UARTE_LENGTH_VALIDATE(p_instance->drv_inst_idx, length)); in nrfx_uarte_tx()
373 if (nrfx_uarte_tx_in_progress(p_instance)) in nrfx_uarte_tx()
391 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ENDTX); in nrfx_uarte_tx()
392 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED); in nrfx_uarte_tx()
393 nrf_uarte_tx_buffer_set(p_instance->p_reg, p_cb->p_tx_buffer, p_cb->tx_buffer_length); in nrfx_uarte_tx()
394 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STARTTX); in nrfx_uarte_tx()
402 endtx = nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_ENDTX); in nrfx_uarte_tx()
403 txstopped = nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED); in nrfx_uarte_tx()
415 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STOPTX); in nrfx_uarte_tx()
417 while (!nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED)) in nrfx_uarte_tx()
427 bool nrfx_uarte_tx_in_progress(nrfx_uarte_t const * p_instance) in nrfx_uarte_tx_in_progress() argument
429 return (m_cb[p_instance->drv_inst_idx].tx_buffer_length != 0); in nrfx_uarte_tx_in_progress()
432 nrfx_err_t nrfx_uarte_rx(nrfx_uarte_t const * p_instance, in nrfx_uarte_rx() argument
436 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_rx()
438 NRFX_ASSERT(m_cb[p_instance->drv_inst_idx].state == NRFX_DRV_STATE_INITIALIZED); in nrfx_uarte_rx()
441 NRFX_ASSERT(UARTE_LENGTH_VALIDATE(p_instance->drv_inst_idx, length)); in nrfx_uarte_rx()
460 nrf_uarte_int_disable(p_instance->p_reg, NRF_UARTE_INT_ERROR_MASK | in nrfx_uarte_rx()
469 nrf_uarte_int_enable(p_instance->p_reg, NRF_UARTE_INT_ERROR_MASK | in nrfx_uarte_rx()
497 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ENDRX); in nrfx_uarte_rx()
498 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_RXTO); in nrfx_uarte_rx()
499 nrf_uarte_rx_buffer_set(p_instance->p_reg, p_data, length); in nrfx_uarte_rx()
502 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STARTRX); in nrfx_uarte_rx()
506 nrf_uarte_shorts_enable(p_instance->p_reg, NRF_UARTE_SHORT_ENDRX_STARTRX); in nrfx_uarte_rx()
509 if (m_cb[p_instance->drv_inst_idx].handler == NULL) in nrfx_uarte_rx()
515 endrx = nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_ENDRX); in nrfx_uarte_rx()
516 rxto = nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_RXTO); in nrfx_uarte_rx()
517 error = nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_ERROR); in nrfx_uarte_rx()
520 m_cb[p_instance->drv_inst_idx].rx_buffer_length = 0; in nrfx_uarte_rx()
535 nrf_uarte_int_enable(p_instance->p_reg, NRF_UARTE_INT_ERROR_MASK | in nrfx_uarte_rx()
542 bool nrfx_uarte_rx_ready(nrfx_uarte_t const * p_instance) in nrfx_uarte_rx_ready() argument
544 return nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_ENDRX); in nrfx_uarte_rx_ready()
547 uint32_t nrfx_uarte_errorsrc_get(nrfx_uarte_t const * p_instance) in nrfx_uarte_errorsrc_get() argument
549 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_ERROR); in nrfx_uarte_errorsrc_get()
550 return nrf_uarte_errorsrc_get_and_clear(p_instance->p_reg); in nrfx_uarte_errorsrc_get()
580 void nrfx_uarte_tx_abort(nrfx_uarte_t const * p_instance) in nrfx_uarte_tx_abort() argument
582 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_tx_abort()
584 nrf_uarte_event_clear(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED); in nrfx_uarte_tx_abort()
585 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STOPTX); in nrfx_uarte_tx_abort()
588 while (!nrf_uarte_event_check(p_instance->p_reg, NRF_UARTE_EVENT_TXSTOPPED)) in nrfx_uarte_tx_abort()
594 void nrfx_uarte_rx_abort(nrfx_uarte_t const * p_instance) in nrfx_uarte_rx_abort() argument
596 uarte_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_uarte_rx_abort()
602 nrf_uarte_shorts_disable(p_instance->p_reg, NRF_UARTE_SHORT_ENDRX_STARTRX); in nrfx_uarte_rx_abort()
605 nrf_uarte_task_trigger(p_instance->p_reg, NRF_UARTE_TASK_STOPRX); in nrfx_uarte_rx_abort()