In case someone also need the DMA code, here it is:
volatile DMA_Type* m_pDma = DMA0;
const uint8_t m_Ch = 3;
uint16_t SrcDataBuff[2];
uint16_t DestData;
void Init_Dma()
{
//Enable clocks
SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;
SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;
m_pDma->CR |= DMA_CR_HOE(1) //DmaHaltOnErr(true)
| DMA_CR_EDBG(1) //DmaHaltOnDbg(true)
| DMA_CR_ERGA(1) //DmaSetGroupAribt(RndRobin)
| DMA_CR_ERCA(1) //DmaSetChannelAribt(RndRobin)
m_pDma->TCD[m_Ch].ATTR = DMA_ATTR_SSIZE(1) | DMA_ATTR_SMOD(0) | DMA_ATTR_DSIZE(1) | DMA_ATTR_DMOD(0);
//Here put correct source and destination address parameters.
m_pDma->TCD[m_Ch].SADDR = SrcDataBuff; //Source address
m_pDma->TCD[m_Ch].SOFF = 2; //Source offset
m_pDma->TCD[m_Ch].SLAST = -4; //Source final address adjustment.
m_pDma->TCD[m_Ch].DADDR = &DestData; //destination address
m_pDma->TCD[m_Ch].DOFF = 0;
m_pDma->TCD[m_Ch].DLAST_SGA = 0;
//number of bytes to transfer per dma request
m_pDma->TCD[m_Ch].NBYTES_MLNO = 2;
//Dma major iteration count
m_pDma->TCD[m_Ch].BITER_ELINKYES |= DMA_BITER_ELINKYES_BITER(2); //2 iterations
m_pDma->TCD[m_Ch].CITER_ELINKYES = m_pDma->TCD[m_Ch].BITER_ELINKYES
//Enable hardware trigger so that PDB can trigger DMA
m_pDma->SERQ = m_Ch; //enable hw triggering.
DMAMUX->CHCFG[m_Ch] = 0;
DMAMUX->CHCFG[m_Ch] = DMAMUX_CHCFG_ENBL(1) | DMAMUX_CHCFG_SOURCE(48); //Select PDB as hw trigger source.
//at this point you may enable DMA Interrupt.
}