static inline void stmSpiStartDma(struct StmSpiDev *pdev, const struct StmSpiDmaCfg *dmaCfg, const void *buf, uint8_t bitsPerWord, bool minc, size_t size, DmaCallbackF callback, bool rx) { struct StmSpi *regs = pdev->cfg->regs; struct dmaMode mode; memset(&mode, 0, sizeof(mode)); if (bitsPerWord == 8) { mode.psize = DMA_SIZE_8_BITS; mode.msize = DMA_SIZE_8_BITS; } else { mode.psize = DMA_SIZE_16_BITS; mode.msize = DMA_SIZE_16_BITS; } mode.priority = DMA_PRIORITY_HIGH; mode.direction = rx ? DMA_DIRECTION_PERIPH_TO_MEM : DMA_DIRECTION_MEM_TO_PERIPH; mode.periphAddr = (uintptr_t)®s->DR; mode.minc = minc; mode.channel = dmaCfg->channel; dmaStart(pdev->cfg->dmaBus, dmaCfg->stream, buf, size, &mode, callback, pdev); }
static int halAudioHss_enable( void ) { int i; HSSL_DRV *drvp = hssCblk.drvp; HALAUDIO_TRACE("calling hss enable\n"); /* clear DMA buffer index */ hssDmaBufferIdx = 0; for( i=0; i < HSS_NUM_CHANNEL; i++ ) { dmaStart( i ); hsslEnable( drvp, i ); hsslDmaEnable( drvp, i ); } return 0; }