Fix memory leak.

pull/107/head
xiangbingj 2019-12-13 20:25:18 +08:00
parent 1ae37ad84e
commit 4d4e333e91
3 changed files with 9 additions and 4 deletions

View File

@ -62,5 +62,6 @@ void fft_complex_uint16_dma(dmac_channel_number_t dma_send_channel_num, dmac_cha
DMAC_MSIZE_4, DMAC_TRANS_WIDTH_64, point_num >> 1);
dmac_set_single_mode(dma_send_channel_num, input, (void *)(&fft->fft_input_fifo), DMAC_ADDR_INCREMENT, DMAC_ADDR_NOCHANGE,
DMAC_MSIZE_4, DMAC_TRANS_WIDTH_64, point_num >> 1);
dmac_wait_done(dma_send_channel_num);
dmac_wait_done(dma_receive_channel_num);
}

View File

@ -320,7 +320,7 @@ int i2s_receive_data(i2s_device_number_t device_num, i2s_channel_num_t channel_n
void i2s_receive_data_dma(i2s_device_number_t device_num, uint32_t *buf,
size_t buf_len, dmac_channel_number_t channel_num)
{
dmac_wait_idle(channel_num);
dmac_wait_done(channel_num);
sysctl_dma_select((sysctl_dma_channel_t)channel_num, SYSCTL_DMA_SELECT_I2S0_RX_REQ + device_num * 2);
dmac_set_single_mode(channel_num, (void *)(&i2s[device_num]->rxdma), buf, DMAC_ADDR_NOCHANGE, DMAC_ADDR_INCREMENT,
DMAC_MSIZE_1, DMAC_TRANS_WIDTH_32, buf_len);
@ -396,7 +396,7 @@ int i2s_send_data(i2s_device_number_t device_num, i2s_channel_num_t channel_num,
void i2s_send_data_dma(i2s_device_number_t device_num, const void *buf, size_t buf_len, dmac_channel_number_t channel_num)
{
dmac_wait_idle(channel_num);
dmac_wait_done(channel_num);
sysctl_dma_select((sysctl_dma_channel_t)channel_num, SYSCTL_DMA_SELECT_I2S0_TX_REQ + device_num * 2);
dmac_set_single_mode(channel_num, buf, (void *)(&i2s[device_num]->txdma), DMAC_ADDR_INCREMENT,
DMAC_ADDR_NOCHANGE, DMAC_MSIZE_1, DMAC_TRANS_WIDTH_32, buf_len);
@ -654,7 +654,7 @@ void i2s_handle_data_dma(i2s_device_number_t device_num, i2s_data_t data, plic_i
configASSERT(data.tx_buf && data.tx_len);
if(!data.nowait_dma_idle)
{
dmac_wait_idle(data.tx_channel);
dmac_wait_done(data.tx_channel);
}
if(cb)
{
@ -676,7 +676,7 @@ void i2s_handle_data_dma(i2s_device_number_t device_num, i2s_data_t data, plic_i
configASSERT(data.rx_buf && data.rx_len);
if(!data.nowait_dma_idle)
{
dmac_wait_idle(data.rx_channel);
dmac_wait_done(data.rx_channel);
}
if(cb)
{

View File

@ -1521,7 +1521,11 @@ void spi_handle_data_dma(spi_device_num_t spi_num, spi_chip_select_t chip_select
DMAC_MSIZE_1, DMAC_TRANS_WIDTH_32, data.rx_len);
spi_handle->ser = 1U << chip_select;
if(!cb)
{
dmac_wait_done(data.tx_channel);
dmac_wait_done(data.rx_channel);
}
break;
case SPI_TMOD_TRANS_RECV:
spi_set_tmod(spi_num, SPI_TMOD_TRANS_RECV);