Lines Matching refs:spihost

73 static spi_slave_t *spihost[SOC_SPI_PERIPH_NUM];  variable
153 spihost[host] = malloc(sizeof(spi_slave_t)); in spi_slave_initialize()
154 if (spihost[host] == NULL) { in spi_slave_initialize()
158 memset(spihost[host], 0, sizeof(spi_slave_t)); in spi_slave_initialize()
159 memcpy(&spihost[host]->cfg, slave_config, sizeof(spi_slave_interface_config_t)); in spi_slave_initialize()
160 memcpy(&spihost[host]->bus_config, bus_config, sizeof(spi_bus_config_t)); in spi_slave_initialize()
161 spihost[host]->id = host; in spi_slave_initialize()
164 spihost[host]->dma_enabled = use_dma; in spi_slave_initialize()
172 …_initialize_io(host, bus_config, SPICOMMON_BUSFLAG_SLAVE|bus_config->flags, &spihost[host]->flags); in spi_slave_initialize()
178 spicommon_cs_initialize(host, slave_config->spics_io_num, 0, !bus_is_iomux(spihost[host])); in spi_slave_initialize()
180spihost[host]->cs_iomux = (slave_config->spics_io_num == spi_periph_signal[host].spics0_iomux_pin)… in spi_slave_initialize()
181 spihost[host]->cs_in_signal = spi_periph_signal[host].spics_in; in spi_slave_initialize()
185 if (use_dma) freeze_cs(spihost[host]); in spi_slave_initialize()
188 spihost[host]->tx_dma_chan = actual_tx_dma_chan; in spi_slave_initialize()
189 spihost[host]->rx_dma_chan = actual_rx_dma_chan; in spi_slave_initialize()
194 spihost[host]->max_transfer_sz = dma_desc_ct * SPI_MAX_DMA_LEN; in spi_slave_initialize()
197 spihost[host]->max_transfer_sz = SOC_SPI_MAXIMUM_BUFFER_SIZE; in spi_slave_initialize()
201 &spihost[host]->pm_lock); in spi_slave_initialize()
207 esp_pm_lock_acquire(spihost[host]->pm_lock); in spi_slave_initialize()
211spihost[host]->trans_queue = xQueueCreate(slave_config->queue_size, sizeof(spi_slave_transaction_t… in spi_slave_initialize()
212 if (!spihost[host]->trans_queue) { in spi_slave_initialize()
217spihost[host]->ret_queue = xQueueCreate(slave_config->queue_size, sizeof(spi_slave_transaction_t *… in spi_slave_initialize()
218 if (!spihost[host]->ret_queue) { in spi_slave_initialize()
226 spihost[host]->intr_flags = bus_config->intr_flags; in spi_slave_initialize()
229 .host = spihost[host], in spi_slave_initialize()
236 …nfig->intr_flags | ESP_INTR_FLAG_INTRDISABLED, spi_intr, (void *)spihost[host], &spihost[host]->in… in spi_slave_initialize()
243 spi_slave_hal_context_t *hal = &spihost[host]->hal; in spi_slave_initialize()
273 if (spihost[host]) { in spi_slave_initialize()
274 if (spihost[host]->trans_queue) vQueueDelete(spihost[host]->trans_queue); in spi_slave_initialize()
275 if (spihost[host]->ret_queue) vQueueDelete(spihost[host]->ret_queue); in spi_slave_initialize()
276 free(spihost[host]->hal.dmadesc_tx); in spi_slave_initialize()
277 free(spihost[host]->hal.dmadesc_rx); in spi_slave_initialize()
279 if (spihost[host]->pm_lock) { in spi_slave_initialize()
280 esp_pm_lock_release(spihost[host]->pm_lock); in spi_slave_initialize()
281 esp_pm_lock_delete(spihost[host]->pm_lock); in spi_slave_initialize()
285 spi_slave_hal_deinit(&spihost[host]->hal); in spi_slave_initialize()
286 if (spihost[host]->dma_enabled) { in spi_slave_initialize()
290 free(spihost[host]); in spi_slave_initialize()
291 spihost[host] = NULL; in spi_slave_initialize()
300 SPI_CHECK(spihost[host], "host not slave", ESP_ERR_INVALID_ARG); in spi_slave_free()
301 if (spihost[host]->trans_queue) vQueueDelete(spihost[host]->trans_queue); in spi_slave_free()
302 if (spihost[host]->ret_queue) vQueueDelete(spihost[host]->ret_queue); in spi_slave_free()
303 if (spihost[host]->dma_enabled) { in spi_slave_free()
306 spicommon_bus_free_io_cfg(&spihost[host]->bus_config); in spi_slave_free()
307 free(spihost[host]->hal.dmadesc_tx); in spi_slave_free()
308 free(spihost[host]->hal.dmadesc_rx); in spi_slave_free()
309 esp_intr_free(spihost[host]->intr); in spi_slave_free()
311 esp_pm_lock_release(spihost[host]->pm_lock); in spi_slave_free()
312 esp_pm_lock_delete(spihost[host]->pm_lock); in spi_slave_free()
314 free(spihost[host]); in spi_slave_free()
315 spihost[host] = NULL; in spi_slave_free()
337 SPI_CHECK(spihost[host], "host not slave", ESP_ERR_INVALID_ARG); in spi_slave_queue_reset()
339 esp_intr_disable(spihost[host]->intr); in spi_slave_queue_reset()
340 spi_ll_set_int_stat(spihost[host]->hal.hw); in spi_slave_queue_reset()
342 spihost[host]->cur_trans = NULL; in spi_slave_queue_reset()
343 xQueueReset(spihost[host]->trans_queue); in spi_slave_queue_reset()
351 ESP_RETURN_ON_FALSE_ISR(spihost[host], ESP_ERR_INVALID_ARG, SPI_TAG, "host not slave"); in spi_slave_queue_reset_isr()
355 while( pdFALSE == xQueueIsQueueEmptyFromISR(spihost[host]->trans_queue)) { in spi_slave_queue_reset_isr()
356 xQueueReceiveFromISR(spihost[host]->trans_queue, &trans, &do_yield); in spi_slave_queue_reset_isr()
362 spihost[host]->cur_trans = NULL; in spi_slave_queue_reset_isr()
370 SPI_CHECK(spihost[host], "host not slave", ESP_ERR_INVALID_ARG); in spi_slave_queue_trans()
371 …SPI_CHECK(spihost[host]->dma_enabled == 0 || trans_desc->tx_buffer==NULL || esp_ptr_dma_capable(tr… in spi_slave_queue_trans()
373 SPI_CHECK(spihost[host]->dma_enabled == 0 || trans_desc->rx_buffer==NULL || in spi_slave_queue_trans()
378 …SPI_CHECK(trans_desc->length <= spihost[host]->max_transfer_sz * 8, "data transfer > host maximum"… in spi_slave_queue_trans()
379 r = xQueueSend(spihost[host]->trans_queue, (void *)&trans_desc, ticks_to_wait); in spi_slave_queue_trans()
381 esp_intr_enable(spihost[host]->intr); in spi_slave_queue_trans()
390 ESP_RETURN_ON_FALSE_ISR(spihost[host], ESP_ERR_INVALID_ARG, SPI_TAG, "host not slave"); in spi_slave_queue_trans_isr()
391 …ESP_RETURN_ON_FALSE_ISR(spihost[host]->dma_enabled == 0 || trans_desc->tx_buffer==NULL || esp_ptr_… in spi_slave_queue_trans_isr()
393 ESP_RETURN_ON_FALSE_ISR(spihost[host]->dma_enabled == 0 || trans_desc->rx_buffer==NULL || in spi_slave_queue_trans_isr()
397 …ESP_RETURN_ON_FALSE_ISR(trans_desc->length <= spihost[host]->max_transfer_sz * 8, ESP_ERR_INVALID_… in spi_slave_queue_trans_isr()
399 r = xQueueSendFromISR(spihost[host]->trans_queue, (void *)&trans_desc, &do_yield); in spi_slave_queue_trans_isr()
413 SPI_CHECK(spihost[host], "host not slave", ESP_ERR_INVALID_ARG); in spi_slave_get_trans_result()
415 …SPI_CHECK(!(spihost[host]->cfg.flags & SPI_SLAVE_NO_RETURN_RESULT), "API not Supported!", ESP_ERR_… in spi_slave_get_trans_result()
417 r = xQueueReceive(spihost[host]->ret_queue, (void *)trans_desc, ticks_to_wait); in spi_slave_get_trans_result()