Пример #1
0
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)&regs->DR;
    mode.minc = minc;
    mode.channel = dmaCfg->channel;

    dmaStart(pdev->cfg->dmaBus, dmaCfg->stream, buf, size, &mode, callback,
            pdev);
}
Пример #2
0
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;
}