Lines Matching refs:p_twi

139 static bool xfer_completeness_check(NRF_TWI_Type * p_twi, twi_control_block_t const * p_cb)  in xfer_completeness_check()  argument
149 nrf_twi_disable(p_twi); in xfer_completeness_check()
150 nrf_twi_enable(p_twi); in xfer_completeness_check()
164 nrf_twi_pins_set(p_instance->p_twi, p_config->scl, p_config->sda); in twi_configure()
166 nrf_twi_frequency_set(p_instance->p_twi, p_config->frequency); in twi_configure()
170 NRFX_IRQ_PRIORITY_SET(nrfx_get_irq_number(p_instance->p_twi), in twi_configure()
172 NRFX_IRQ_ENABLE(nrfx_get_irq_number(p_instance->p_twi)); in twi_configure()
203 if (nrfx_prs_acquire(p_instance->p_twi, in nrfx_twi_init()
261 nrf_twi_disable(p_instance->p_twi); in nrfx_twi_reconfigure()
264 nrf_twi_enable(p_instance->p_twi); in nrfx_twi_reconfigure()
276 NRFX_IRQ_DISABLE(nrfx_get_irq_number(p_instance->p_twi)); in nrfx_twi_uninit()
281 nrfx_prs_release(p_instance->p_twi); in nrfx_twi_uninit()
286 nrf_gpio_cfg_default(nrf_twi_scl_pin_get(p_instance->p_twi)); in nrfx_twi_uninit()
287 nrf_gpio_cfg_default(nrf_twi_sda_pin_get(p_instance->p_twi)); in nrfx_twi_uninit()
307 NRF_TWI_Type * p_twi = p_instance->p_twi; in nrfx_twi_enable() local
308 nrf_twi_enable(p_twi); in nrfx_twi_enable()
320 NRF_TWI_Type * p_twi = p_instance->p_twi; in nrfx_twi_disable() local
321 nrf_twi_int_disable(p_twi, NRF_TWI_ALL_INTS_MASK); in nrfx_twi_disable()
322 nrf_twi_shorts_disable(p_twi, NRF_TWI_ALL_SHORTS_MASK); in nrfx_twi_disable()
323 nrf_twi_disable(p_twi); in nrfx_twi_disable()
330 static bool twi_send_byte(NRF_TWI_Type * p_twi, in twi_send_byte() argument
335 nrf_twi_txd_set(p_twi, p_cb->p_curr_buf[p_cb->bytes_transferred]); in twi_send_byte()
341 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_SUSPEND); in twi_send_byte()
346 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_SUSPEND); in twi_send_byte()
352 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STOP); in twi_send_byte()
358 static bool twi_receive_byte(NRF_TWI_Type * p_twi, in twi_receive_byte() argument
363 p_cb->p_curr_buf[p_cb->bytes_transferred] = nrf_twi_rxd_get(p_twi); in twi_receive_byte()
369 nrf_twi_shorts_set(p_twi, NRF_TWI_SHORT_BB_STOP_MASK); in twi_receive_byte()
381 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_RESUME); in twi_receive_byte()
386 static bool twi_transfer(NRF_TWI_Type * p_twi, in twi_transfer() argument
390 if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_STOPPED)) in twi_transfer()
392 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_STOPPED); in twi_transfer()
405 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_transfer()
406 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_TXDSENT); in twi_transfer()
407 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_RXDREADY); in twi_transfer()
409 else if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_ERROR)) in twi_transfer()
411 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_transfer()
413 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STOP); in twi_transfer()
418 if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_TXDSENT)) in twi_transfer()
420 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_TXDSENT); in twi_transfer()
423 if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_ERROR)) in twi_transfer()
425 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_transfer()
427 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STOP); in twi_transfer()
432 if (!twi_send_byte(p_twi, p_cb)) in twi_transfer()
438 else if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_RXDREADY)) in twi_transfer()
440 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_RXDREADY); in twi_transfer()
442 if (nrf_twi_event_check(p_twi, NRF_TWI_EVENT_ERROR)) in twi_transfer()
445 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_transfer()
446 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STOP); in twi_transfer()
451 if (!twi_receive_byte(p_twi, p_cb)) in twi_transfer()
464 p_cb->error = !xfer_completeness_check(p_twi, p_cb); in twi_transfer()
472 static nrfx_err_t twi_tx_start_transfer(NRF_TWI_Type * p_twi, in twi_tx_start_transfer() argument
480 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_STOPPED); in twi_tx_start_transfer()
481 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_tx_start_transfer()
482 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_TXDSENT); in twi_tx_start_transfer()
483 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_RXDREADY); in twi_tx_start_transfer()
484 nrf_twi_shorts_set(p_twi, 0); in twi_tx_start_transfer()
490 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_RESUME); in twi_tx_start_transfer()
494 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STARTTX); in twi_tx_start_transfer()
497 (void)twi_send_byte(p_twi, p_cb); in twi_tx_start_transfer()
506 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_tx_start_transfer()
511 twi_transfer(p_twi, p_cb)) in twi_tx_start_transfer()
518 uint32_t errorsrc = nrf_twi_errorsrc_get_and_clear(p_twi); in twi_tx_start_transfer()
532 nrf_twi_disable(p_twi); in twi_tx_start_transfer()
533 nrf_twi_enable(p_twi); in twi_tx_start_transfer()
541 static nrfx_err_t twi_rx_start_transfer(NRF_TWI_Type * p_twi, in twi_rx_start_transfer() argument
549 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_STOPPED); in twi_rx_start_transfer()
550 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_ERROR); in twi_rx_start_transfer()
551 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_TXDSENT); in twi_rx_start_transfer()
552 nrf_twi_event_clear(p_twi, NRF_TWI_EVENT_RXDREADY); in twi_rx_start_transfer()
559 nrf_twi_shorts_set(p_twi, NRF_TWI_SHORT_BB_STOP_MASK); in twi_rx_start_transfer()
563 nrf_twi_shorts_set(p_twi, NRF_TWI_SHORT_BB_SUSPEND_MASK); in twi_rx_start_transfer()
566 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_RESUME); in twi_rx_start_transfer()
570 nrf_twi_task_trigger(p_twi, NRF_TWI_TASK_STARTRX); in twi_rx_start_transfer()
579 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_rx_start_transfer()
584 twi_transfer(p_twi, p_cb)) in twi_rx_start_transfer()
591 uint32_t errorsrc = nrf_twi_errorsrc_get_and_clear(p_twi); in twi_rx_start_transfer()
604 nrf_twi_disable(p_twi); in twi_rx_start_transfer()
605 nrf_twi_enable(p_twi); in twi_rx_start_transfer()
612 static nrfx_err_t twi_xfer(NRF_TWI_Type * p_twi, in twi_xfer() argument
631 nrf_twi_int_disable(p_twi, NRF_TWI_ALL_INTS_MASK); in twi_xfer()
635 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_xfer()
651 nrf_twi_address_set(p_twi, p_xfer_desc->address); in twi_xfer()
658 err_code = twi_tx_start_transfer(p_twi, p_cb); in twi_xfer()
662 err_code = twi_rx_start_transfer(p_twi, p_cb); in twi_xfer()
705 err_code = twi_xfer((NRF_TWI_Type *)p_instance->p_twi, p_cb, p_xfer_desc, flags); in nrfx_twi_xfer()
723 return nrf_twi_event_address_get(p_instance->p_twi, NRF_TWI_EVENT_STOPPED); in nrfx_twi_stopped_event_get()
726 static void irq_handler(NRF_TWI_Type * p_twi, twi_control_block_t * p_cb) in irq_handler() argument
730 if (twi_transfer(p_twi, p_cb)) in irq_handler()
747 (void)twi_tx_start_transfer(p_twi, p_cb); in irq_handler()
751 (void)twi_rx_start_transfer(p_twi, p_cb); in irq_handler()
761 uint32_t errorsrc = nrf_twi_errorsrc_get_and_clear(p_twi); in irq_handler()