Lines Matching refs:instance

125     struct at32_spi *instance = (struct at32_spi *)spi_bus->parent.user_data;  in configure()  local
132 at32_msp_spi_init(instance->config->spi_x); in configure()
160 if (instance->config->spi_x == SPI1) in configure()
240 spi_enable(instance->config->spi_x, FALSE); in configure()
242 spi_init(instance->config->spi_x, &spi_init_struct); in configure()
245 spi_enable(instance->config->spi_x, TRUE); in configure()
247 spi_crc_enable(instance->config->spi_x, FALSE); in configure()
252 static void _spi_dma_receive(struct at32_spi *instance, rt_uint8_t *buffer, rt_uint32_t size) in _spi_dma_receive() argument
254 dma_channel_type* dma_channel = instance->config->dma_rx->dma_channel; in _spi_dma_receive()
257 dma_channel->paddr = (rt_uint32_t)&(instance->config->spi_x->dt); in _spi_dma_receive()
263 spi_i2s_dma_receiver_enable(instance->config->spi_x, TRUE); in _spi_dma_receive()
266 instance->config->dma_rx->dma_done = RT_FALSE; in _spi_dma_receive()
271 static void _spi_dma_transmit(struct at32_spi *instance, rt_uint8_t *buffer, rt_uint32_t size) in _spi_dma_transmit() argument
273 dma_channel_type *dma_channel = instance->config->dma_tx->dma_channel; in _spi_dma_transmit()
276 dma_channel->paddr = (rt_uint32_t)&(instance->config->spi_x->dt); in _spi_dma_transmit()
280 spi_i2s_interrupt_enable(instance->config->spi_x, SPI_I2S_ERROR_INT, TRUE); in _spi_dma_transmit()
284 spi_i2s_dma_transmitter_enable(instance->config->spi_x, TRUE); in _spi_dma_transmit()
287 instance->config->dma_tx->dma_done = RT_FALSE; in _spi_dma_transmit()
292 static void _spi_polling_receive_transmit(struct at32_spi *instance, rt_uint8_t *recv_buf, rt_uint8… in _spi_polling_receive_transmit() argument
313 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET); in _spi_polling_receive_transmit()
315 spi_i2s_data_transmit(instance->config->spi_x, data); in _spi_polling_receive_transmit()
318 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET); in _spi_polling_receive_transmit()
320 data = spi_i2s_data_receive(instance->config->spi_x); in _spi_polling_receive_transmit()
345 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_TDBE_FLAG) == RESET); in _spi_polling_receive_transmit()
347 spi_i2s_data_transmit(instance->config->spi_x, data); in _spi_polling_receive_transmit()
350 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_RDBF_FLAG) == RESET); in _spi_polling_receive_transmit()
352 data = spi_i2s_data_receive(instance->config->spi_x); in _spi_polling_receive_transmit()
365 struct at32_spi *instance = (struct at32_spi *)at32_spi_bus->parent.user_data; in xfer() local
415 if ((instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX) && \ in xfer()
416 (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX)) in xfer()
418 _spi_dma_receive(instance, (uint8_t *)recv_buf, send_length); in xfer()
419 _spi_dma_transmit(instance, (uint8_t *)send_buf, send_length); in xfer()
421 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET); in xfer()
422 …while((instance->config->dma_tx->dma_done == RT_FALSE) || (instance->config->dma_rx->dma_done == R… in xfer()
424 spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG); in xfer()
425 spi_enable(instance->config->spi_x, FALSE); in xfer()
426 spi_enable(instance->config->spi_x, TRUE); in xfer()
430 …_spi_polling_receive_transmit(instance, (uint8_t *)recv_buf, (uint8_t *)send_buf, send_length, con… in xfer()
435 if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX) in xfer()
437 _spi_dma_transmit(instance, (uint8_t *)send_buf, send_length); in xfer()
439 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET); in xfer()
440 while(instance->config->dma_tx->dma_done == RT_FALSE); in xfer()
442 spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG); in xfer()
443 spi_enable(instance->config->spi_x, FALSE); in xfer()
444 spi_enable(instance->config->spi_x, TRUE); in xfer()
448 …_spi_polling_receive_transmit(instance, RT_NULL, (uint8_t *)send_buf, send_length, config->data_wi… in xfer()
454 spi_enable(instance->config->spi_x, FALSE); in xfer()
460 if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX) in xfer()
462 _spi_dma_receive(instance, (uint8_t *)recv_buf, send_length); in xfer()
463 _spi_dma_transmit(instance, (uint8_t *)recv_buf, send_length); in xfer()
465 while(spi_i2s_flag_get(instance->config->spi_x, SPI_I2S_BF_FLAG) != RESET); in xfer()
466 …while((instance->config->dma_tx->dma_done == RT_FALSE) || (instance->config->dma_rx->dma_done == R… in xfer()
468 spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG); in xfer()
469 spi_enable(instance->config->spi_x, FALSE); in xfer()
470 spi_enable(instance->config->spi_x, TRUE); in xfer()
475 spi_i2s_flag_clear(instance->config->spi_x, SPI_I2S_ROERR_FLAG); in xfer()
476 …_spi_polling_receive_transmit(instance, (uint8_t *)recv_buf, (uint8_t *)recv_buf, send_length, con… in xfer()
491 static void _dma_base_channel_check(struct at32_spi *instance) in _dma_base_channel_check() argument
493 dma_channel_type *rx_channel = instance->config->dma_rx->dma_channel; in _dma_base_channel_check()
494 dma_channel_type *tx_channel = instance->config->dma_tx->dma_channel; in _dma_base_channel_check()
496 if(instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX) in _dma_base_channel_check()
498 instance->config->dma_rx->dma_done = RT_TRUE; in _dma_base_channel_check()
499 instance->config->dma_rx->dma_x = (dma_type *)((rt_uint32_t)rx_channel & ~0xFF); in _dma_base_channel_check()
500instance->config->dma_rx->channel_index = ((((rt_uint32_t)rx_channel & 0xFF) - 8) / 0x14) + 1; in _dma_base_channel_check()
503 if(instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX) in _dma_base_channel_check()
505 instance->config->dma_tx->dma_done = RT_TRUE; in _dma_base_channel_check()
506 instance->config->dma_tx->dma_x = (dma_type *)((rt_uint32_t)tx_channel & ~0xFF); in _dma_base_channel_check()
507instance->config->dma_tx->channel_index = ((((rt_uint32_t)tx_channel & 0xFF) - 8) / 0x14) + 1; in _dma_base_channel_check()
511 static void at32_spi_dma_init(struct at32_spi *instance) in at32_spi_dma_init() argument
516 _dma_base_channel_check(instance); in at32_spi_dma_init()
527 if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX) in at32_spi_dma_init()
529 crm_periph_clock_enable(instance->config->dma_rx->dma_clock, TRUE); in at32_spi_dma_init()
532 dma_reset(instance->config->dma_rx->dma_channel); in at32_spi_dma_init()
533 dma_init(instance->config->dma_rx->dma_channel, &dma_init_struct); in at32_spi_dma_init()
535 … dma_flexible_config(instance->config->dma_rx->dma_x, instance->config->dma_rx->flex_channel, \ in at32_spi_dma_init()
536 (dma_flexible_request_type)instance->config->dma_rx->request_id); in at32_spi_dma_init()
544 dmamux_enable(instance->config->dma_rx->dma_x, TRUE); in at32_spi_dma_init()
545 …dmamux_init(instance->config->dma_rx->dmamux_channel, (dmamux_requst_id_sel_type)instance->config-… in at32_spi_dma_init()
548 nvic_irq_enable(instance->config->dma_rx->dma_irqn, 0, 1); in at32_spi_dma_init()
551 if (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX) in at32_spi_dma_init()
553 crm_periph_clock_enable(instance->config->dma_tx->dma_clock, TRUE); in at32_spi_dma_init()
556 dma_reset(instance->config->dma_tx->dma_channel); in at32_spi_dma_init()
557 dma_init(instance->config->dma_tx->dma_channel, &dma_init_struct); in at32_spi_dma_init()
559 … dma_flexible_config(instance->config->dma_tx->dma_x, instance->config->dma_tx->flex_channel, \ in at32_spi_dma_init()
560 (dma_flexible_request_type)instance->config->dma_tx->request_id); in at32_spi_dma_init()
568 dmamux_enable(instance->config->dma_tx->dma_x, TRUE); in at32_spi_dma_init()
569 …dmamux_init(instance->config->dma_tx->dmamux_channel, (dmamux_requst_id_sel_type)instance->config-… in at32_spi_dma_init()
572 nvic_irq_enable(instance->config->dma_tx->dma_irqn, 0, 1); in at32_spi_dma_init()
575 if((instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_TX) || \ in at32_spi_dma_init()
576 (instance->config->spi_dma_flag & RT_DEVICE_FLAG_DMA_RX)) in at32_spi_dma_init()
578 nvic_irq_enable(instance->config->irqn, 0, 0); in at32_spi_dma_init()