Lines Matching refs:p_twim
134 static bool xfer_completeness_check(NRF_TWIM_Type * p_twim, twim_control_block_t const * p_cb) in xfer_completeness_check() argument
150 (nrfy_twim_txd_amount_get(p_twim) != p_cb->xfer_desc_primary.length)) || in xfer_completeness_check()
152 (nrfy_twim_txd_amount_get(p_twim) != p_cb->xfer_desc_secondary.length))) in xfer_completeness_check()
158 if ((nrfy_twim_txd_amount_get(p_twim) != p_cb->xfer_desc_primary.length) || in xfer_completeness_check()
159 (nrfy_twim_rxd_amount_get(p_twim) != p_cb->xfer_desc_secondary.length)) in xfer_completeness_check()
165 if (nrfy_twim_txd_amount_get(p_twim) != p_cb->xfer_desc_primary.length) in xfer_completeness_check()
171 if (nrfy_twim_rxd_amount_get(p_twim) != p_cb->xfer_desc_primary.length) in xfer_completeness_check()
182 nrfy_twim_disable(p_twim); in xfer_completeness_check()
183 nrfy_twim_enable(p_twim); in xfer_completeness_check()
202 nrfy_twim_periph_configure(p_instance->p_twim, &nrfy_config); in twim_configure()
205 nrfy_twim_int_init(p_instance->p_twim, 0, p_config->interrupt_priority, false); in twim_configure()
290 if (nrfx_prs_acquire(p_instance->p_twim, in nrfx_twim_init()
313 nrfx_prs_release(p_instance->p_twim); in nrfx_twim_init()
350 nrfy_twim_disable(p_instance->p_twim); in nrfx_twim_reconfigure()
359 nrfy_twim_enable(p_instance->p_twim); in nrfx_twim_reconfigure()
369 nrfy_twim_int_uninit(p_instance->p_twim); in nrfx_twim_uninit()
373 nrfx_prs_release(p_instance->p_twim); in nrfx_twim_uninit()
380 nrfy_twim_pins_get(p_instance->p_twim, &pins); in nrfx_twim_uninit()
401 nrfy_twim_enable(p_instance->p_twim); in nrfx_twim_enable()
414 nrfy_twim_stop(p_instance->p_twim); in nrfx_twim_disable()
427 NRF_TWIM_Type * p_twim, in twim_xfer() argument
467 nrfy_twim_int_disable(p_twim, NRF_TWIM_ALL_INTS_MASK); in twim_xfer()
470 nrfy_twim_int_enable(p_twim, p_cb->int_mask); in twim_xfer()
491 nrfy_twim_address_set(p_twim, p_xfer_desc->address); in twim_xfer()
493 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_LASTTX); in twim_xfer()
494 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_SUSPENDED); in twim_xfer()
495 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_ERROR); in twim_xfer()
496 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_STOPPED); in twim_xfer()
499 nrfy_twim_tx_list_set(p_twim, NRFX_TWIM_FLAG_TX_POSTINC & flags); in twim_xfer()
500 nrfy_twim_rx_list_set(p_twim, NRFX_TWIM_FLAG_RX_POSTINC & flags); in twim_xfer()
508 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTTX_SUSPEND_MASK); in twim_xfer()
509 nrfy_twim_tx_buffer_set(p_twim, &p_cb->xfer_desc_primary); in twim_xfer()
510 nrfy_twim_tx_start(p_twim, NULL); in twim_xfer()
511 while (nrfy_twim_events_process(p_twim, in twim_xfer()
515 nrfy_twim_tx_buffer_set(p_twim, &p_cb->xfer_desc_secondary); in twim_xfer()
520 nrfy_twim_tx_buffer_set(p_twim, &p_cb->xfer_desc_primary); in twim_xfer()
521 nrfy_twim_rx_buffer_set(p_twim, &p_cb->xfer_desc_secondary); in twim_xfer()
522 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTTX_STARTRX_MASK | in twim_xfer()
524 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME); in twim_xfer()
528 nrfy_twim_tx_buffer_set(p_twim, &p_cb->xfer_desc_primary); in twim_xfer()
531 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTTX_SUSPEND_MASK); in twim_xfer()
536 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTTX_STOP_MASK); in twim_xfer()
539 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME); in twim_xfer()
542 nrfy_twim_rx_buffer_set(p_twim, &p_cb->xfer_desc_primary); in twim_xfer()
543 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTRX_STOP_MASK); in twim_xfer()
544 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME); in twim_xfer()
556 nrfy_twim_rx_start(p_twim, p_cb->handler ? NULL : &p_cb->xfer_desc_primary); in twim_xfer()
560 nrfy_twim_tx_start(p_twim, p_cb->handler ? NULL : &p_cb->xfer_desc_primary); in twim_xfer()
568 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_STOP); in twim_xfer()
586 nrfy_twim_int_enable(p_twim, p_cb->int_mask); in twim_xfer()
591 nrfy_twim_tx_list_set(p_twim, false); in twim_xfer()
592 nrfy_twim_rx_list_set(p_twim, false); in twim_xfer()
593 p_twim->FREQUENCY = 0; in twim_xfer()
594 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_TXSTARTED); in twim_xfer()
595 nrfy_twim_int_enable(p_twim, NRF_TWIM_INT_TXSTARTED_MASK); in twim_xfer()
599 nrfy_twim_frequency_set(p_twim, p_cb->bus_frequency); in twim_xfer()
605 uint32_t errorsrc = nrfy_twim_errorsrc_get_and_clear(p_twim); in twim_xfer()
616 !xfer_completeness_check(p_twim, p_cb)) in twim_xfer()
659 return twim_xfer(p_cb, p_instance->p_twim, p_xfer_desc, flags); in nrfx_twim_xfer()
667 return nrfy_twim_task_address_get(p_instance->p_twim, in nrfx_twim_start_task_address_get()
675 return nrfy_twim_event_address_get(p_instance->p_twim, NRF_TWIM_EVENT_STOPPED); in nrfx_twim_stopped_event_address_get()
678 static void irq_handler(NRF_TWIM_Type * p_twim, twim_control_block_t * p_cb) in irq_handler() argument
684 if (nrfy_twim_events_process(p_twim, in irq_handler()
688 nrfy_twim_int_disable(p_twim, NRF_TWIM_INT_TXSTARTED_MASK); in irq_handler()
689 if (p_twim->FREQUENCY == 0) in irq_handler()
692 nrfy_twim_disable(p_twim); in irq_handler()
693 nrfy_twim_enable(p_twim); in irq_handler()
696 nrfy_twim_frequency_set(p_twim, p_cb->bus_frequency); in irq_handler()
697 nrfy_twim_tx_list_set(p_twim, NRFX_TWIM_FLAG_TX_POSTINC & p_cb->flags); in irq_handler()
698 nrfy_twim_rx_list_set(p_twim, NRFX_TWIM_FLAG_RX_POSTINC & p_cb->flags); in irq_handler()
700 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_STARTTX); in irq_handler()
707 bool stopped = nrfy_twim_events_process(p_twim, in irq_handler()
711 if (nrfy_twim_events_process(p_twim, in irq_handler()
718 nrfy_twim_int_disable(p_twim, p_cb->int_mask); in irq_handler()
720 nrfy_twim_int_enable(p_twim, p_cb->int_mask); in irq_handler()
722 if (!(nrfy_twim_events_process(p_twim, in irq_handler()
725 (nrfy_twim_shorts_get(p_twim) & NRF_TWIM_SHORT_LASTTX_STOP_MASK))) in irq_handler()
727 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME); in irq_handler()
728 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_STOP); in irq_handler()
744 p_cb->error = !xfer_completeness_check(p_twim, p_cb); in irq_handler()
751 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_LASTTX); in irq_handler()
752 nrfy_twim_event_clear(p_twim, NRF_TWIM_EVENT_LASTRX); in irq_handler()
755 nrfy_twim_shorts_set(p_twim, 0); in irq_handler()
757 nrfy_twim_int_disable(p_twim, NRF_TWIM_ALL_INTS_MASK); in irq_handler()
764 NRFY_IRQ_PENDING_CLEAR(nrfx_get_irq_number(p_twim)); in irq_handler()
779 nrfy_twim_tx_list_set(p_twim, false); in irq_handler()
780 nrfy_twim_rx_list_set(p_twim, false); in irq_handler()
781 nrfy_twim_frequency_set(p_twim, (nrf_twim_frequency_t)0); in irq_handler()
782 nrfy_twim_int_enable(p_twim, NRF_TWIM_INT_TXSTARTED_MASK); in irq_handler()
788 (void)nrfy_twim_events_process(p_twim, in irq_handler()
796 nrfy_twim_shorts_set(p_twim, 0); in irq_handler()
798 nrfy_twim_int_disable(p_twim, NRF_TWIM_ALL_INTS_MASK); in irq_handler()
805 NRFY_IRQ_PENDING_CLEAR(nrfx_get_irq_number(p_twim)); in irq_handler()
817 nrfy_twim_shorts_set(p_twim, NRF_TWIM_SHORT_LASTTX_STOP_MASK); in irq_handler()
819 nrfy_twim_int_disable(p_twim, NRF_TWIM_ALL_INTS_MASK); in irq_handler()
820 nrfy_twim_int_enable(p_twim, p_cb->int_mask); in irq_handler()
821 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_STARTTX); in irq_handler()
822 nrfy_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME); in irq_handler()
827 uint32_t errorsrc = nrfy_twim_errorsrc_get_and_clear(p_twim); in irq_handler()