Lines Matching refs:pair

54 static void gdma_release_pair_handle(gdma_pair_t *pair);
72 gdma_pair_t *pair = NULL; in gdma_new_channel() local
90 pair = config->sibling_chan->pair; in gdma_new_channel()
91 ESP_GOTO_ON_FALSE(pair, ESP_ERR_INVALID_ARG, err, TAG, "invalid sibling channel"); in gdma_new_channel()
93 group = pair->group; in gdma_new_channel()
95 group->pair_ref_counts[pair->pair_id]++; // channel obtains a reference to pair in gdma_new_channel()
104 pair = gdma_acquire_pair_handle(group, j); in gdma_new_channel()
105 ESP_GOTO_ON_FALSE(pair, ESP_ERR_NO_MEM, err, TAG, "no mem for pair(%d,%d)", i, j); in gdma_new_channel()
106 portENTER_CRITICAL(&pair->spinlock); in gdma_new_channel()
107 … if (!(search_code & pair->occupy_code)) { // pair has suitable position for acquired channel(s) in gdma_new_channel()
108 pair->occupy_code |= search_code; in gdma_new_channel()
111 portEXIT_CRITICAL(&pair->spinlock); in gdma_new_channel()
113 gdma_release_pair_handle(pair); in gdma_new_channel()
114 pair = NULL; in gdma_new_channel()
123 assert(pair && group); // pair and group handle shouldn't be NULL in gdma_new_channel()
127 pair->tx_chan = alloc_tx_channel; in gdma_new_channel()
128 alloc_tx_channel->base.pair = pair; in gdma_new_channel()
137 pair->rx_chan = alloc_rx_channel; in gdma_new_channel()
138 alloc_rx_channel->base.pair = pair; in gdma_new_channel()
147 group->group_id, pair->pair_id, *ret_chan); in gdma_new_channel()
157 if (pair) { in gdma_new_channel()
158 gdma_release_pair_handle(pair); in gdma_new_channel()
180 gdma_pair_t *pair = NULL; in gdma_get_channel_id() local
182 pair = dma_chan->pair; in gdma_get_channel_id()
183 *channel_id = pair->pair_id; in gdma_get_channel_id()
190 gdma_pair_t *pair = NULL; in gdma_connect() local
194 pair = dma_chan->pair; in gdma_connect()
195 group = pair->group; in gdma_connect()
209 gdma_ll_tx_reset_channel(group->hal.dev, pair->pair_id); // reset channel in gdma_connect()
210 …gdma_ll_tx_connect_to_periph(group->hal.dev, pair->pair_id, trig_periph.periph, trig_periph.instan… in gdma_connect()
223 gdma_ll_rx_reset_channel(group->hal.dev, pair->pair_id); // reset channel in gdma_connect()
224 …gdma_ll_rx_connect_to_periph(group->hal.dev, pair->pair_id, trig_periph.periph, trig_periph.instan… in gdma_connect()
235 gdma_pair_t *pair = NULL; in gdma_disconnect() local
240 pair = dma_chan->pair; in gdma_disconnect()
241 group = pair->group; in gdma_disconnect()
250 gdma_ll_tx_disconnect_from_periph(group->hal.dev, pair->pair_id); in gdma_disconnect()
257 gdma_ll_rx_disconnect_from_periph(group->hal.dev, pair->pair_id); in gdma_disconnect()
266 gdma_pair_t *pair = NULL; in gdma_get_free_m2m_trig_id_mask() local
271 pair = dma_chan->pair; in gdma_get_free_m2m_trig_id_mask()
272 group = pair->group; in gdma_get_free_m2m_trig_id_mask()
286 gdma_pair_t *pair = NULL; in gdma_set_transfer_ability() local
290 pair = dma_chan->pair; in gdma_set_transfer_ability()
291 group = pair->group; in gdma_set_transfer_ability()
323 gdma_ll_tx_enable_data_burst(group->hal.dev, pair->pair_id, true); in gdma_set_transfer_ability()
324 gdma_ll_tx_enable_descriptor_burst(group->hal.dev, pair->pair_id, true); in gdma_set_transfer_ability()
326 gdma_ll_tx_set_block_size_psram(group->hal.dev, pair->pair_id, block_size_index); in gdma_set_transfer_ability()
331 gdma_ll_rx_enable_data_burst(group->hal.dev, pair->pair_id, en_burst); in gdma_set_transfer_ability()
332 gdma_ll_rx_enable_descriptor_burst(group->hal.dev, pair->pair_id, en_burst); in gdma_set_transfer_ability()
334 gdma_ll_rx_set_block_size_psram(group->hal.dev, pair->pair_id, block_size_index); in gdma_set_transfer_ability()
341 …group->group_id, pair->pair_id, sram_alignment, psram_alignment, en_burst ? "enabled" : "disabled"… in gdma_set_transfer_ability()
349 gdma_pair_t *pair = NULL; in gdma_apply_strategy() local
352 pair = dma_chan->pair; in gdma_apply_strategy()
353 group = pair->group; in gdma_apply_strategy()
356 gdma_ll_tx_enable_owner_check(group->hal.dev, pair->pair_id, config->owner_check); in gdma_apply_strategy()
357 gdma_ll_tx_enable_auto_write_back(group->hal.dev, pair->pair_id, config->auto_update_desc); in gdma_apply_strategy()
359 gdma_ll_rx_enable_owner_check(group->hal.dev, pair->pair_id, config->owner_check); in gdma_apply_strategy()
368 gdma_pair_t *pair = NULL; in gdma_set_priority() local
371 pair = dma_chan->pair; in gdma_set_priority()
372 group = pair->group; in gdma_set_priority()
375 gdma_ll_tx_set_priority(group->hal.dev, pair->pair_id, priority); in gdma_set_priority()
377 gdma_ll_rx_set_priority(group->hal.dev, pair->pair_id, priority); in gdma_set_priority()
387 gdma_pair_t *pair = NULL; in gdma_register_tx_event_callbacks() local
390 pair = dma_chan->pair; in gdma_register_tx_event_callbacks()
391 group = pair->group; in gdma_register_tx_event_callbacks()
407 portENTER_CRITICAL(&pair->spinlock); in gdma_register_tx_event_callbacks()
408 …gdma_ll_tx_enable_interrupt(group->hal.dev, pair->pair_id, GDMA_LL_EVENT_TX_EOF, cbs->on_trans_eof… in gdma_register_tx_event_callbacks()
409 portEXIT_CRITICAL(&pair->spinlock); in gdma_register_tx_event_callbacks()
423 gdma_pair_t *pair = NULL; in gdma_register_rx_event_callbacks() local
426 pair = dma_chan->pair; in gdma_register_rx_event_callbacks()
427 group = pair->group; in gdma_register_rx_event_callbacks()
443 portENTER_CRITICAL(&pair->spinlock); in gdma_register_rx_event_callbacks()
444 …gdma_ll_rx_enable_interrupt(group->hal.dev, pair->pair_id, GDMA_LL_EVENT_RX_SUC_EOF, cbs->on_recv_… in gdma_register_rx_event_callbacks()
445 portEXIT_CRITICAL(&pair->spinlock); in gdma_register_rx_event_callbacks()
458 gdma_pair_t *pair = NULL; in gdma_start() local
462 pair = dma_chan->pair; in gdma_start()
463 group = pair->group; in gdma_start()
467 gdma_ll_rx_set_desc_addr(group->hal.dev, pair->pair_id, desc_base_addr); in gdma_start()
468 gdma_ll_rx_start(group->hal.dev, pair->pair_id); in gdma_start()
470 gdma_ll_tx_set_desc_addr(group->hal.dev, pair->pair_id, desc_base_addr); in gdma_start()
471 gdma_ll_tx_start(group->hal.dev, pair->pair_id); in gdma_start()
480 gdma_pair_t *pair = NULL; in gdma_stop() local
484 pair = dma_chan->pair; in gdma_stop()
485 group = pair->group; in gdma_stop()
489 gdma_ll_rx_stop(group->hal.dev, pair->pair_id); in gdma_stop()
491 gdma_ll_tx_stop(group->hal.dev, pair->pair_id); in gdma_stop()
501 gdma_pair_t *pair = NULL; in gdma_append() local
504 pair = dma_chan->pair; in gdma_append()
505 group = pair->group; in gdma_append()
509 gdma_ll_rx_restart(group->hal.dev, pair->pair_id); in gdma_append()
511 gdma_ll_tx_restart(group->hal.dev, pair->pair_id); in gdma_append()
522 gdma_pair_t *pair = NULL; in gdma_reset() local
525 pair = dma_chan->pair; in gdma_reset()
526 group = pair->group; in gdma_reset()
530 gdma_ll_rx_reset_channel(group->hal.dev, pair->pair_id); in gdma_reset()
532 gdma_ll_tx_reset_channel(group->hal.dev, pair->pair_id); in gdma_reset()
596 static void gdma_release_pair_handle(gdma_pair_t *pair) in gdma_release_pair_handle() argument
598 gdma_group_t *group = pair->group; in gdma_release_pair_handle()
599 int pair_id = pair->pair_id; in gdma_release_pair_handle()
612 free(pair); in gdma_release_pair_handle()
624 gdma_pair_t *pair = NULL; in gdma_acquire_pair_handle() local
632 pair = pre_alloc_pair; in gdma_acquire_pair_handle()
633 group->pairs[pair_id] = pair; // register to group in gdma_acquire_pair_handle()
634 pair->group = group; in gdma_acquire_pair_handle()
635 pair->pair_id = pair_id; in gdma_acquire_pair_handle()
636 pair->spinlock = (portMUX_TYPE)portMUX_INITIALIZER_UNLOCKED; in gdma_acquire_pair_handle()
638 pair = group->pairs[pair_id]; in gdma_acquire_pair_handle()
650 gdma_sleep_retention_init(group->group_id, pair->pair_id); in gdma_acquire_pair_handle()
652 ESP_LOGD(TAG, "new pair (%d,%d) at %p", group->group_id, pair->pair_id, pair); in gdma_acquire_pair_handle()
657 return pair; in gdma_acquire_pair_handle()
662 gdma_pair_t *pair = dma_channel->pair; in gdma_del_tx_channel() local
663 gdma_group_t *group = pair->group; in gdma_del_tx_channel()
664 int pair_id = pair->pair_id; in gdma_del_tx_channel()
667 portENTER_CRITICAL(&pair->spinlock); in gdma_del_tx_channel()
668 pair->tx_chan = NULL; in gdma_del_tx_channel()
669 pair->occupy_code &= ~SEARCH_REQUEST_TX_CHANNEL; in gdma_del_tx_channel()
670 portEXIT_CRITICAL(&pair->spinlock); in gdma_del_tx_channel()
674 portENTER_CRITICAL(&pair->spinlock); in gdma_del_tx_channel()
677 portEXIT_CRITICAL(&pair->spinlock); in gdma_del_tx_channel()
686 gdma_release_pair_handle(pair); in gdma_del_tx_channel()
692 gdma_pair_t *pair = dma_channel->pair; in gdma_del_rx_channel() local
693 gdma_group_t *group = pair->group; in gdma_del_rx_channel()
694 int pair_id = pair->pair_id; in gdma_del_rx_channel()
697 portENTER_CRITICAL(&pair->spinlock); in gdma_del_rx_channel()
698 pair->rx_chan = NULL; in gdma_del_rx_channel()
699 pair->occupy_code &= ~SEARCH_REQUEST_RX_CHANNEL; in gdma_del_rx_channel()
700 portEXIT_CRITICAL(&pair->spinlock); in gdma_del_rx_channel()
704 portENTER_CRITICAL(&pair->spinlock); in gdma_del_rx_channel()
707 portEXIT_CRITICAL(&pair->spinlock); in gdma_del_rx_channel()
715 gdma_release_pair_handle(pair); in gdma_del_rx_channel()
722 gdma_pair_t *pair = rx_chan->base.pair; in gdma_default_rx_isr() local
723 gdma_group_t *group = pair->group; in gdma_default_rx_isr()
726 uint32_t intr_status = gdma_ll_rx_get_interrupt_status(group->hal.dev, pair->pair_id); in gdma_default_rx_isr()
727 gdma_ll_rx_clear_interrupt_status(group->hal.dev, pair->pair_id, intr_status); in gdma_default_rx_isr()
731 uint32_t eof_addr = gdma_ll_rx_get_success_eof_desc_addr(group->hal.dev, pair->pair_id); in gdma_default_rx_isr()
749 gdma_pair_t *pair = tx_chan->base.pair; in gdma_default_tx_isr() local
750 gdma_group_t *group = pair->group; in gdma_default_tx_isr()
753 uint32_t intr_status = gdma_ll_tx_get_interrupt_status(group->hal.dev, pair->pair_id); in gdma_default_tx_isr()
754 gdma_ll_tx_clear_interrupt_status(group->hal.dev, pair->pair_id, intr_status); in gdma_default_tx_isr()
758 uint32_t eof_addr = gdma_ll_tx_get_eof_desc_addr(group->hal.dev, pair->pair_id); in gdma_default_tx_isr()
776 gdma_pair_t *pair = rx_chan->base.pair; in gdma_install_rx_interrupt() local
777 gdma_group_t *group = pair->group; in gdma_install_rx_interrupt()
784 …ret = esp_intr_alloc_intrstatus(gdma_periph_signals.groups[group->group_id].pairs[pair->pair_id].r… in gdma_install_rx_interrupt()
785 …(uint32_t)gdma_ll_rx_get_interrupt_status_reg(group->hal.dev, pair->pair_id), GDMA_LL_RX_EVENT_MAS… in gdma_install_rx_interrupt()
790 portENTER_CRITICAL(&pair->spinlock); in gdma_install_rx_interrupt()
791 …gdma_ll_rx_enable_interrupt(group->hal.dev, pair->pair_id, UINT32_MAX, false); // disable all inte… in gdma_install_rx_interrupt()
792 …gdma_ll_rx_clear_interrupt_status(group->hal.dev, pair->pair_id, UINT32_MAX); // clear all pendin… in gdma_install_rx_interrupt()
793 portEXIT_CRITICAL(&pair->spinlock); in gdma_install_rx_interrupt()
794 … ESP_LOGD(TAG, "install interrupt service for rx channel (%d,%d)", group->group_id, pair->pair_id); in gdma_install_rx_interrupt()
803 gdma_pair_t *pair = tx_chan->base.pair; in gdma_install_tx_interrupt() local
804 gdma_group_t *group = pair->group; in gdma_install_tx_interrupt()
811 …ret = esp_intr_alloc_intrstatus(gdma_periph_signals.groups[group->group_id].pairs[pair->pair_id].t… in gdma_install_tx_interrupt()
812 …(uint32_t)gdma_ll_tx_get_interrupt_status_reg(group->hal.dev, pair->pair_id), GDMA_LL_TX_EVENT_MAS… in gdma_install_tx_interrupt()
817 portENTER_CRITICAL(&pair->spinlock); in gdma_install_tx_interrupt()
818 …gdma_ll_tx_enable_interrupt(group->hal.dev, pair->pair_id, UINT32_MAX, false); // disable all inte… in gdma_install_tx_interrupt()
819 …gdma_ll_tx_clear_interrupt_status(group->hal.dev, pair->pair_id, UINT32_MAX); // clear all pendin… in gdma_install_tx_interrupt()
820 portEXIT_CRITICAL(&pair->spinlock); in gdma_install_tx_interrupt()
821 … ESP_LOGD(TAG, "install interrupt service for tx channel (%d,%d)", group->group_id, pair->pair_id); in gdma_install_tx_interrupt()